summaryrefslogtreecommitdiffstats
path: root/pywrap
diff options
context:
space:
mode:
Diffstat (limited to 'pywrap')
-rw-r--r--pywrap/CMakeLists.txt6
-rw-r--r--pywrap/html_server.py197
-rw-r--r--pywrap/pcipywrap.c382
-rw-r--r--pywrap/pcipywrap.h83
-rw-r--r--pywrap/pcipywrap.i5
-rw-r--r--pywrap/server.py539
-rw-r--r--pywrap/static/codebase/dhtmlx.css9
-rw-r--r--pywrap/static/codebase/dhtmlx.js9
-rw-r--r--pywrap/static/codebase/dhtmlx_deprecated.js9
-rw-r--r--pywrap/static/codebase/ext/dhxupload.xapbin23436 -> 0 bytes
-rw-r--r--pywrap/static/codebase/ext/swfobject.js777
-rw-r--r--pywrap/static/codebase/ext/uploader.swfbin3646 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/blank.gifbin56 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/but_cut.gifbin87 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/folderClosed.gifbin579 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/folderOpen.gifbin571 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gifbin155 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gifbin155 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gifbin155 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gifbin92 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gifbin878 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/leaf.gifbin361 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line.gifbin79 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line1.gifbin79 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gifbin79 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line2.gifbin74 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gifbin76 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line3.gifbin81 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gifbin81 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line4.gifbin67 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gifbin69 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/lock.gifbin208 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus.gifbin107 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus1.gifbin107 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus2.gifbin119 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gifbin121 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus3.gifbin125 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gifbin125 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus4.gifbin117 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gifbin117 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus5.gifbin111 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gifbin111 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus.gifbin111 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus1.gifbin111 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus2.gifbin123 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gifbin124 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus3.gifbin128 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gifbin128 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus4.gifbin120 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gifbin119 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus5.gifbin114 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gifbin113 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/radio_off.gifbin213 -> 0 bytes
-rw-r--r--pywrap/static/codebase/imgs/dhxtree_skyblue/radio_on.gifbin223 -> 0 bytes
-rw-r--r--pywrap/static/codebase/thirdparty/excanvas/AUTHORS10
-rw-r--r--pywrap/static/codebase/thirdparty/excanvas/COPYING202
-rw-r--r--pywrap/static/codebase/thirdparty/excanvas/README22
-rw-r--r--pywrap/static/codebase/thirdparty/excanvas/excanvas.js927
-rw-r--r--pywrap/static/jquery-2.2.1.js9831
-rw-r--r--pywrap/templates/base.html347
-rw-r--r--pywrap/templates/property_info.html91
-rw-r--r--pywrap/templates/register_info.html106
-rw-r--r--pywrap/templates/registers_list.html26
-rw-r--r--pywrap/test_pcipywrap.py4
64 files changed, 321 insertions, 13261 deletions
diff --git a/pywrap/CMakeLists.txt b/pywrap/CMakeLists.txt
index 75a9bed..8f14e4f 100644
--- a/pywrap/CMakeLists.txt
+++ b/pywrap/CMakeLists.txt
@@ -17,15 +17,9 @@ set(CMAKE_SWIG_FLAGS "")
swig_add_module(pcipywrap python pcipywrap.i pcipywrap.c)
swig_link_libraries(pcipywrap ${PYTHON_LIBRARIES} pcilib)
-
install(TARGETS ${SWIG_MODULE_pcipywrap_REAL_NAME} DESTINATION ${PYTHON_INSTALL_DIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pcipywrap.py DESTINATION ${PYTHON_INSTALL_DIR})
if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/server.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test_pcipywrap.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
-
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/templates DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/static DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/html_server.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
diff --git a/pywrap/html_server.py b/pywrap/html_server.py
deleted file mode 100644
index 76d132a..0000000
--- a/pywrap/html_server.py
+++ /dev/null
@@ -1,197 +0,0 @@
-import pcipywrap
-import json
-from optparse import OptionParser
-
-#import flask elements
-from flask import render_template
-from flask import Flask
-from flask import request
-from flask import url_for
-from flask import redirect
-from flask import send_from_directory
-
-app = Flask(__name__)
-pcilib = 0;
-device = '/dev/fpga0'
-model = 'test_pywrap'
-
-# property json api
-@app.route("/property_info_json")
-def get_property_list_json():
- branch = request.args.get('branch')
- if not branch is None:
- branch = str(branch)
-
- prop_info = 0
- try:
- prop_info = pcilib.get_property_list(branch)
- return json.dumps(prop_info)
- except Exception as e:
- return json.dumps({'error': str(e)})
-
-@app.route('/get_property_json')
-def get_property_json():
- prop = request.args.get('prop')
-
- try:
- val = pcilib.get_property(str(prop))
- return json.dumps({'value': val})
- except Exception as e:
- return json.dumps({'error': str(e)})
-
-@app.route('/set_property_json')
-def set_property_json():
- val = request.args.get('val')
- prop = request.args.get('prop')
-
- try:
- pcilib.set_property(float(val), str(prop))
- return json.dumps({'status': 'ok'})
- except Exception as e:
- return json.dumps({'error': str(e)})
-
-# register json api
-@app.route("/registers_list_json")
-def get_registers_list_json():
- reg_list = 0
- try:
- reg_list = pcilib.get_registers_list()
- return json.dumps(reg_list)
- except Exception as e:
- return json.dumps({'error': str(e)})
-
-@app.route('/read_register_json')
-def read_register_json():
- name = request.args.get('name')
- bank = request.args.get('bank')
-
- try:
- value = pcilib.read_register(str(name), str(bank))
- return json.dumps({'value': value})
- except Exception as e:
- return json.dumps({'error': str(e)})
-
-@app.route('/write_register_json')
-def write_register_json():
- val = request.args.get('val')
- name = request.args.get('name')
- bank = request.args.get('bank')
-
- try:
- pcilib.write_register(float(val), str(name), str(bank))
- return json.dumps({'status': 'ok'})
- except Exception as e:
- return json.dumps({'error': str(e)})
-
-#html api
-@app.route('/set_property')
-def set_property():
- val = request.args.get('val')
- prop = request.args.get('prop')
-
- try:
- pcilib.set_property(float(val), str(prop))
- return redirect(url_for('get_property_list', branch=prop))
- except Exception as e:
- return str(e)
-
-@app.route('/write_register')
-def write_register():
- val = request.args.get('val')
- name = request.args.get('name')
- bank = request.args.get('bank')
-
- try:
- pcilib.write_register(float(val), str(name), str(bank))
- return redirect(url_for('get_register_info', name=name, bank=bank))
- except Exception as e:
- return str(e)
-
-@app.route('/register_info')
-def get_register_info():
- name = request.args.get('name')
- bank = request.args.get('bank')
-
- reg_info = 0
- value = 0
- try:
- reg_info = pcilib.get_register_info(str(name), str(bank))
- value = pcilib.read_register(str(name), str(bank))
- except Exception as e:
- return str(e)
- return render_template('register_info.html',
- register=reg_info,
- value=value)
-
-@app.route("/registers_list")
-def get_registers_list():
- reg_list = 0
- try:
- reg_list = pcilib.get_registers_list()
- except Exception as e:
- return str(e)
-
- return render_template('registers_list.html',
- registers=reg_list,
- )
-
-@app.route("/property_info")
-def get_property_list():
- branch = request.args.get('branch')
- if not branch is None:
- branch = str(branch)
-
- prop_info = 0
- try:
- prop_info = pcilib.get_property_list(branch)
- except Exception as e:
- return str(e)
-
- value = -1
- if (len(prop_info) == 1) and not ('childs' in (prop_info[0])['flags']):
- try:
- branch = (prop_info[0])['path']
- value = pcilib.get_property(branch)
- except Exception as e:
- return str(e)
-
- return render_template('property_info.html',
- value = value,
- branch = branch,
- properties = prop_info,
- json = json
- )
-
-@app.route("/")
-def greet():
- return render_template('base.html',
- device = device,
- model = model)
-
-@app.route('/<path:path>')
-def send_file(path):
- return send_from_directory('static', path)
-
-if __name__ == "__main__":
- #parce command line options
- parser = OptionParser()
- parser.add_option("-p", "--port", action="store",
- type="int", dest="port", default=5000,
- help="Set server port (5000)")
- parser.add_option("-d", "--device", action="store",
- type="string", dest="device", default=str('/dev/fpga0'),
- help="FPGA device (/dev/fpga0)")
- parser.add_option("-m", "--model", action="store",
- type="string", dest="model", default=None,
- help="Memory model (autodetected)")
- opts = parser.parse_args()[0]
-
- HOST_NAME = '0.0.0.0'
- PORT_NUMBER = opts.port
-
- device = opts.device
- model = opts.model
-
- pcilib = pcipywrap.Pcipywrap(device, model)
- pcipywrap.__redirect_logs_to_exeption()
- app.run(host = HOST_NAME, port = PORT_NUMBER)
diff --git a/pywrap/pcipywrap.c b/pywrap/pcipywrap.c
index ceb0835..9113d40 100644
--- a/pywrap/pcipywrap.c
+++ b/pywrap/pcipywrap.c
@@ -1,6 +1,9 @@
#include "pcipywrap.h"
#include "locking.h"
+#include <dirent.h>
+#include <strings.h>
+
char* full_log = NULL;
/*!
@@ -94,34 +97,13 @@ void set_python_exception(const char* msg, ...)
}
-void __redirect_logs_to_exeption()
+void redirect_logs_to_exeption()
{
pcilib_set_logger(pcilib_get_log_level(),
pcilib_print_error_to_py,
pcilib_get_logger_context());
}
-/*!
- * \brief Wrap for PyDict_SetItem, with decrease reference counting after set.
- */
-void pcilib_pydict_set_item(PyObject* dict, PyObject* name, PyObject* value)
-{
- PyDict_SetItem(dict,
- name,
- value);
- Py_XDECREF(name);
- Py_XDECREF(value);
-}
-
-/*!
- * \brief Wrap for PyList_Append, with decrease reference counting after append.
- */
-void pcilib_pylist_append(PyObject* list, PyObject* value)
-{
- PyList_Append(list, value);
- Py_XDECREF(value);
-}
-
void add_pcilib_value_to_dict(pcilib_t* ctx, PyObject* dict, pcilib_value_t* val, const char *name)
{
PyObject *py_val = (PyObject*)pcilib_get_value_as_pyobject(ctx, val, NULL);
@@ -215,126 +197,198 @@ PyObject * pcilib_convert_property_info_to_pyobject(pcilib_t* ctx, pcilib_proper
PyObject * pcilib_convert_register_info_to_pyobject(pcilib_t* ctx, pcilib_register_info_t listItem)
{
- PyObject* pylistItem = PyDict_New();
-
- if(listItem.name)
- pcilib_pydict_set_item(pylistItem,
- PyString_FromString("name"),
- PyString_FromString(listItem.name));
-
- if(listItem.description)
- pcilib_pydict_set_item(pylistItem,
- PyString_FromString("description"),
- PyString_FromString(listItem.description));
-
- if(listItem.bank)
- pcilib_pydict_set_item(pylistItem,
- PyString_FromString("bank"),
- PyString_FromString(listItem.bank));
-
-
- //serialize modes
- PyObject* modes = PyList_New(0);
-
- if((listItem.mode & PCILIB_REGISTER_R) == PCILIB_REGISTER_R)
- pcilib_pylist_append(modes, PyString_FromString("R"));
- if((listItem.mode & PCILIB_REGISTER_W) == PCILIB_REGISTER_W)
- pcilib_pylist_append(modes, PyString_FromString("W"));
- if((listItem.mode & PCILIB_REGISTER_RW) == PCILIB_REGISTER_RW)
- pcilib_pylist_append(modes, PyString_FromString("RW"));
- if((listItem.mode & PCILIB_REGISTER_W1C) == PCILIB_REGISTER_W1C)
- pcilib_pylist_append(modes, PyString_FromString("W1C"));
- if((listItem.mode & PCILIB_REGISTER_RW1C) == PCILIB_REGISTER_RW1C)
- pcilib_pylist_append(modes, PyString_FromString("RW1C"));
- if((listItem.mode & PCILIB_REGISTER_W1I) == PCILIB_REGISTER_W1I)
- pcilib_pylist_append(modes, PyString_FromString("W1I"));
- if((listItem.mode & PCILIB_REGISTER_RW1I) == PCILIB_REGISTER_RW1I)
- pcilib_pylist_append(modes, PyString_FromString("RW1I"));
- if((listItem.mode & PCILIB_REGISTER_INCONSISTENT) == PCILIB_REGISTER_INCONSISTENT)
- pcilib_pylist_append(modes, PyString_FromString("NO_CHK"));
-
- pcilib_pydict_set_item(pylistItem,
- PyString_FromString("mode"),
- modes);
-
- pcilib_value_t defval = {0};
- pcilib_set_value_from_register_value(ctx, &defval, listItem.defvalue);
- add_pcilib_value_to_dict(ctx, pylistItem, &defval, "defvalue");
-
- if(listItem.range)
- {
- pcilib_value_t minval = {0};
- pcilib_set_value_from_register_value(ctx, &minval, listItem.range->min);
-
- pcilib_value_t maxval = {0};
- pcilib_set_value_from_register_value(ctx, &maxval, listItem.range->max);
-
- PyObject* range = PyDict_New();
- add_pcilib_value_to_dict(ctx, range, &minval, "min");
- add_pcilib_value_to_dict(ctx, range, &maxval, "max");
- pcilib_pydict_set_item(pylistItem,
- PyString_FromString("range"),
- range);
- }
-
- if(listItem.values)
- {
-
- PyObject* values = PyList_New(0);
-
- for (int j = 0; listItem.values[j].name; j++)
- {
- PyObject* valuesItem = PyDict_New();
-
- pcilib_value_t val = {0};
- pcilib_set_value_from_register_value(ctx, &val, listItem.values[j].value);
-
- pcilib_value_t min = {0};
- pcilib_set_value_from_register_value(ctx, &min, listItem.values[j].min);
-
- pcilib_value_t max = {0};
- pcilib_set_value_from_register_value(ctx, &max, listItem.values[j].max);
-
- add_pcilib_value_to_dict(ctx, valuesItem, &val, "value");
- add_pcilib_value_to_dict(ctx, valuesItem, &min, "min");
- add_pcilib_value_to_dict(ctx, valuesItem, &max, "max");
-
- if(listItem.values[j].name)
- pcilib_pydict_set_item(valuesItem,
- PyString_FromString("name"),
- PyString_FromString(listItem.values[j].name));
- if(listItem.values[j].description)
- {
- pcilib_pydict_set_item(valuesItem,
- PyString_FromString("description"),
- PyString_FromString(listItem.values[j].description));
-
- }
- pcilib_pylist_append(values, valuesItem);
- }
-
- pcilib_pydict_set_item(pylistItem,
- PyString_FromString("values"),
- values);
- }
-
- return pylistItem;
-
+ PyObject* pylistItem = PyDict_New();
+
+ if(listItem.name)
+ pcilib_pydict_set_item(pylistItem,
+ PyString_FromString("name"),
+ PyString_FromString(listItem.name));
+
+ if(listItem.description)
+ pcilib_pydict_set_item(pylistItem,
+ PyString_FromString("description"),
+ PyString_FromString(listItem.description));
+
+ if(listItem.bank)
+ pcilib_pydict_set_item(pylistItem,
+ PyString_FromString("bank"),
+ PyString_FromString(listItem.bank));
+
+
+ //serialize modes
+ PyObject* modes = PyList_New(0);
+
+ if((listItem.mode & PCILIB_REGISTER_R) == PCILIB_REGISTER_R)
+ pcilib_pylist_append(modes, PyString_FromString("R"));
+ if((listItem.mode & PCILIB_REGISTER_W) == PCILIB_REGISTER_W)
+ pcilib_pylist_append(modes, PyString_FromString("W"));
+ if((listItem.mode & PCILIB_REGISTER_RW) == PCILIB_REGISTER_RW)
+ pcilib_pylist_append(modes, PyString_FromString("RW"));
+ if((listItem.mode & PCILIB_REGISTER_W1C) == PCILIB_REGISTER_W1C)
+ pcilib_pylist_append(modes, PyString_FromString("W1C"));
+ if((listItem.mode & PCILIB_REGISTER_RW1C) == PCILIB_REGISTER_RW1C)
+ pcilib_pylist_append(modes, PyString_FromString("RW1C"));
+ if((listItem.mode & PCILIB_REGISTER_W1I) == PCILIB_REGISTER_W1I)
+ pcilib_pylist_append(modes, PyString_FromString("W1I"));
+ if((listItem.mode & PCILIB_REGISTER_RW1I) == PCILIB_REGISTER_RW1I)
+ pcilib_pylist_append(modes, PyString_FromString("RW1I"));
+ if((listItem.mode & PCILIB_REGISTER_INCONSISTENT) == PCILIB_REGISTER_INCONSISTENT)
+ pcilib_pylist_append(modes, PyString_FromString("NO_CHK"));
+
+ pcilib_pydict_set_item(pylistItem,
+ PyString_FromString("mode"),
+ modes);
+
+ pcilib_value_t defval = {0};
+ pcilib_set_value_from_register_value(ctx, &defval, listItem.defvalue);
+ add_pcilib_value_to_dict(ctx, pylistItem, &defval, "defvalue");
+
+ if(listItem.range)
+ {
+ pcilib_value_t minval = {0};
+ pcilib_set_value_from_register_value(ctx, &minval, listItem.range->min);
+
+ pcilib_value_t maxval = {0};
+ pcilib_set_value_from_register_value(ctx, &maxval, listItem.range->max);
+
+ PyObject* range = PyDict_New();
+ add_pcilib_value_to_dict(ctx, range, &minval, "min");
+ add_pcilib_value_to_dict(ctx, range, &maxval, "max");
+ pcilib_pydict_set_item(pylistItem,
+ PyString_FromString("range"),
+ range);
+ }
+
+ if(listItem.values)
+ {
+
+ PyObject* values = PyList_New(0);
+
+ for (int j = 0; listItem.values[j].name; j++)
+ {
+ PyObject* valuesItem = PyDict_New();
+
+ pcilib_value_t val = {0};
+ pcilib_set_value_from_register_value(ctx, &val, listItem.values[j].value);
+
+ pcilib_value_t min = {0};
+ pcilib_set_value_from_register_value(ctx, &min, listItem.values[j].min);
+
+ pcilib_value_t max = {0};
+ pcilib_set_value_from_register_value(ctx, &max, listItem.values[j].max);
+
+ add_pcilib_value_to_dict(ctx, valuesItem, &val, "value");
+ add_pcilib_value_to_dict(ctx, valuesItem, &min, "min");
+ add_pcilib_value_to_dict(ctx, valuesItem, &max, "max");
+
+ if(listItem.values[j].name)
+ pcilib_pydict_set_item(valuesItem,
+ PyString_FromString("name"),
+ PyString_FromString(listItem.values[j].name));
+ if(listItem.values[j].description)
+ {
+ pcilib_pydict_set_item(valuesItem,
+ PyString_FromString("description"),
+ PyString_FromString(listItem.values[j].description));
+
+ }
+ pcilib_pylist_append(values, valuesItem);
+ }
+
+ pcilib_pydict_set_item(pylistItem,
+ PyString_FromString("values"),
+ values);
+ }
+
+ return pylistItem;
}
+
Pcipywrap *new_Pcipywrap(const char* fpga_device, const char* model)
{
//opening device
pcilib_t* ctx = pcilib_open(fpga_device, model);
- if(!ctx)
- {
+ if(!ctx) {
set_python_exception("Failed pcilib_open(%s, %s)", fpga_device, model);
return NULL;
}
+
Pcipywrap *self;
self = (Pcipywrap *) malloc(sizeof(Pcipywrap));
+ if(!self) {
+ pcilib_close(ctx);
+ return (Pcipywrap *)PyExc_MemoryError;
+ }
self->shared = 0;
self->ctx = ctx;
+ self->py = NULL;
+ self->names = NULL;
+ self->names_size = 0;
+
+
+ //processing pcilib scrips
+ const char *scripts_dir = getenv("PCILIB_SCRIPTS_DIR");
+ if(scripts_dir) {
+ int err = 0;
+
+ self->py = pcilib_init_py_ctx(ctx->py, &err);
+ if(err) {
+ delete_Pcipywrap(self);
+ set_python_exception("Failed pcilib_py_s_clone (%i)", err);
+ return NULL;
+ }
+
+ //add scripts directory to Python path
+ err = pcilib_py_ctx_add_script_dir(self->py, scripts_dir);
+ if(err) {
+ delete_Pcipywrap(self);
+ set_python_exception("Failed pcilib_py_add_dir (%i)", err);
+ return NULL;
+ }
+
+ //load scripts in PCILIB_SCRIPTS_DIR
+ self->names = malloc(++(self->names_size) * sizeof(char*));
+ self->names[self->names_size - 1] = NULL;
+
+ DIR *dir;
+ struct dirent *script_path;
+ dir = opendir(scripts_dir);
+ if (dir) {
+ while ((script_path = readdir(dir)) != NULL) {
+
+ char *py = strrchr(script_path->d_name, '.');
+ if ((!py)||(strcasecmp(py, ".py"))) {
+ continue;
+ }
+
+ char *name = malloc(strlen(script_path->d_name));
+ if(!name) {
+ delete_Pcipywrap(self);
+ return (Pcipywrap *)PyExc_MemoryError;
+ }
+
+ strcpy(name, script_path->d_name);
+
+ err = pcilib_py_ctx_load_script(self->py, name);
+
+ if(err) {
+ delete_Pcipywrap(self);
+ set_python_exception("pcilib_py_ctx_load_script (%i)", err);
+ return NULL;
+ }
+
+ self->names = realloc(self->names, ++(self->names_size));
+ if(!self->names) {
+ delete_Pcipywrap(self);
+ return (Pcipywrap *)PyExc_MemoryError;
+ }
+ self->names[self->names_size - 1] = NULL;
+ self->names[self->names_size - 2] = name;
+ }
+ closedir(dir);
+ }
+ }
+
return self;
}
@@ -350,14 +404,27 @@ Pcipywrap *create_Pcipywrap(PyObject* ctx)
self = (Pcipywrap *) malloc(sizeof(Pcipywrap));
self->shared = 1;
self->ctx = PyCObject_AsVoidPtr(ctx);
+ self->py = NULL;
+ self->names = NULL;
+ self->names_size = 0;
return self;
}
void delete_Pcipywrap(Pcipywrap *self) {
- if(!self->shared)
- pcilib_close(self->ctx);
-
- free(self);
+ if(!self->shared)
+ pcilib_close(self->ctx);
+
+ pcilib_free_py_ctx(self->py);
+
+ if(self->names) {
+ for(int i = 0; self->names[i]; i++)
+ free(self->names[i]);
+ free(self->names);
+ self->names = NULL;
+ self->names_size = 0;
+ }
+
+ free(self);
}
PyObject* Pcipywrap_read_register(Pcipywrap *self, const char *regname, const char *bank)
@@ -458,17 +525,22 @@ PyObject* Pcipywrap_set_property(Pcipywrap *self, PyObject* val, const char *pro
PyObject* Pcipywrap_get_registers_list(Pcipywrap *self, const char *bank)
{
- pcilib_register_info_t *list = pcilib_get_register_list(self->ctx, bank, PCILIB_LIST_FLAGS_DEFAULT);
- PyObject* pyList = PyList_New(0);
- for(int i = 0; i < ((pcilib_t*)self->ctx)->num_reg; i++)
- {
- //serialize item attributes
- PyObject* pylistItem = pcilib_convert_register_info_to_pyobject(self->ctx, list[i]);
- pcilib_pylist_append(pyList, pylistItem);
- //Py_DECREF(pylistItem);
- }
- pcilib_free_register_info(self->ctx, list);
- return pyList;
+ pcilib_register_info_t *list = pcilib_get_register_list(self->ctx, bank, PCILIB_LIST_FLAGS_DEFAULT);
+
+ if(!list) {
+ set_python_exception("pcilib_get_register_list return NULL");
+ return NULL;
+ }
+
+ PyObject* pyList = PyList_New(0);
+ for(int i = 0; list[i].name; i++)
+ {
+ //serialize item attributes
+ PyObject* pylistItem = pcilib_convert_register_info_to_pyobject(self->ctx, list[i]);
+ pcilib_pylist_append(pyList, pylistItem);
+ }
+ pcilib_free_register_info(self->ctx, list);
+ return pyList;
}
PyObject* Pcipywrap_get_register_info(Pcipywrap *self, const char* reg,const char *bank)
@@ -549,7 +621,7 @@ void Pcipywrap_unlock_global(Pcipywrap *self)
PyObject* Pcipywrap_lock(Pcipywrap *self, const char *lock_id)
{
pcilib_lock_t* lock = pcilib_get_lock(self->ctx,
- PCILIB_LOCK_FLAGS_DEFAULT,
+ PCILIB_LOCK_FLAG_PERSISTENT,
lock_id);
if(!lock)
{
@@ -571,7 +643,7 @@ PyObject* Pcipywrap_lock(Pcipywrap *self, const char *lock_id)
PyObject* Pcipywrap_try_lock(Pcipywrap *self, const char *lock_id)
{
pcilib_lock_t* lock = pcilib_get_lock(self->ctx,
- PCILIB_LOCK_FLAGS_DEFAULT,
+ PCILIB_LOCK_FLAG_PERSISTENT,
lock_id);
if(!lock)
{
@@ -592,7 +664,7 @@ PyObject* Pcipywrap_try_lock(Pcipywrap *self, const char *lock_id)
PyObject* Pcipywrap_unlock(Pcipywrap *self, const char *lock_id)
{
pcilib_lock_t* lock = pcilib_get_lock(self->ctx,
- PCILIB_LOCK_FLAGS_DEFAULT,
+ PCILIB_LOCK_FLAG_PERSISTENT,
lock_id);
if(!lock)
{
@@ -604,4 +676,20 @@ PyObject* Pcipywrap_unlock(Pcipywrap *self, const char *lock_id)
return PyInt_FromLong((long)1);
}
+PyObject* Pcipywrap_get_scripts_list(Pcipywrap *self)
+{
+ return pcilib_py_ctx_get_scripts_info(self->py);
+}
+PyObject* Pcipywrap_run_script(Pcipywrap *self, const char* script_name, PyObject* value)
+{
+ int err = 0;
+ PyObject* value_out = pcilib_py_ctx_eval_func(self->py, script_name, "run", value, &err);
+
+ if(err) {
+ set_python_exception("Failed pcilib_py_ctx_eval_func (%i)", err);
+ return NULL;
+ }
+
+ return value_out;
+}
diff --git a/pywrap/pcipywrap.h b/pywrap/pcipywrap.h
index 5876a06..fa7e4f4 100644
--- a/pywrap/pcipywrap.h
+++ b/pywrap/pcipywrap.h
@@ -5,18 +5,30 @@
#include "error.h"
#include <Python.h>
+#include "config.h"
+#include "py.h"
+
+#include "pci.h"
+#include "pcilib.h"
+
+
typedef struct {
+ char** names;
+ int names_size;
+
void* ctx;
+ struct pcilib_py_s *py;
int shared;
} Pcipywrap;
+
/*!
* \brief Redirect pcilib standart log stream to exeption text.
* Logger will accumulate errors untill get message, starts with "#E".
* After that, logger will write last error, and all accumulated errors
* to Python exeption text
*/
-void __redirect_logs_to_exeption();
+void redirect_logs_to_exeption();
/*!
* \brief Wraps for pcilib_open function.
@@ -61,26 +73,91 @@ PyObject* Pcipywrap_get_property(Pcipywrap *self, const char *prop);
* \return 1, serialized to PyObject or NULL with exeption text, if failed.
*/
PyObject* Pcipywrap_set_property(Pcipywrap *self, PyObject* val, const char *prop);
+
+
+/*!
+ * \brief Wrap for pcilib_get_register_list function.
+ * \param bank [in] bank - if set, only register within the specified bank will be returned
+ * \return list of registers, serialized to Python object
+ */
PyObject* Pcipywrap_get_registers_list(Pcipywrap *self, const char *bank);
+
+/*!
+ * \brief Returns the information about the specified register. Wrap for pcilib_get_register_info
+ * \param[in] reg the name of the register
+ * \param[in] bank indicates the bank where to look for register, autodetected if NULL is passed
+ * \return information about the specified register, serialized to Python object
+ */
PyObject* Pcipywrap_get_register_info(Pcipywrap *self, const char* reg,const char *bank);
+
+/*!
+ * \brief Returns the list of properties available under the specified path. Wrap for pcilib_get_property_list
+ * \param[in] branch path or NULL to return the top-level properties
+ * \return the list of the properties, serialized to Python object
+ */
PyObject* Pcipywrap_get_property_list(Pcipywrap *self, const char* branch);
+/*!
+ * \brief Reads data from DMA until timeout is hit, a full DMA packet is read, or the specified number of bytes are read.
+ * Wrap for pcilib_read_dma.
+ * \param dma ID of DMA engine
+ * \param size specifies how many bytes should be read
+ * \return DMA data, serialierd to Python bytearray
+ * \warning This function has not been tested.
+ * \todo Test this fucntion
+ */
PyObject* Pcipywrap_read_dma(Pcipywrap *self, unsigned char dma, size_t size);
+/*!
+ * \brief Wrap for pcilib_lock_global
+ * \return 1, serialized to PyObject or NULL with exeption text, if failed.
+ */
PyObject* Pcipywrap_lock_global(Pcipywrap *self);
+
+/*!
+ * \brief Wrap for pcilib_unlock_global
+ */
void Pcipywrap_unlock_global(Pcipywrap *self);
/*!
* \brief Wrap for pcilib_lock
- * \param lock_id lock identificator
+ * \param[in] lock_id lock identificator
* \warning This function should be called only under Python standart threading lock.
- * Otherwise it will stuck with more than 1 threads. See /xml/test_pywrap/test_prop_mt.py
+ * Otherwise it will stuck with more than 1 threads. See /xml/test/test_prop_mt.py
* for example.
* \return 1, serialized to PyObject or NULL with exeption text, if failed.
*/
PyObject* Pcipywrap_lock(Pcipywrap *self, const char *lock_id);
+/*!
+ * \brief This function will try to take a lock for the mutex pointed by
+ * lockfunction to acquire a lock, but that returns immediatly if the lock can't be
+ * acquired on first try. Wrap for pcilib_try_lock.
+ * \param[in] lock_id lock id
+ * \return 1, serialized to PyObject or NULL with exeption text, if failed.
+ */
PyObject* Pcipywrap_try_lock(Pcipywrap *self, const char *lock_id);
+
+/*!
+ * \brief This function unlocks the lock with specified id. Wrap for pcilib_unlock.
+ * \param[in] lock_id lock id
+ * \return 1, serialized to PyObject or NULL with exeption text, if failed.
+ */
PyObject* Pcipywrap_unlock(Pcipywrap *self, const char *lock_id);
+/*!
+ * \brief Returns list with information about aviable scripts
+ * \return list with information about scripts, aviable in model
+ */
+PyObject* Pcipywrap_get_scripts_list(Pcipywrap *self);
+
+/*!
+ * \brief Runs script with specified name
+ * \param script_name script name (with extension); name could be found by
+ * Pcipywrap_get_scripts_list fucntion
+ * \param[in] value input value
+ * \return value returned by script
+ */
+PyObject* Pcipywrap_run_script(Pcipywrap *self, const char* script_name, PyObject* value);
+
#endif /* PCIPYWRAP_H */
diff --git a/pywrap/pcipywrap.i b/pywrap/pcipywrap.i
index f08ceb7..697820d 100644
--- a/pywrap/pcipywrap.i
+++ b/pywrap/pcipywrap.i
@@ -4,7 +4,7 @@
#include "pcipywrap.h"
%}
-extern void __redirect_logs_to_exeption();
+extern void redirect_logs_to_exeption();
typedef struct {
%extend {
@@ -29,5 +29,8 @@ typedef struct {
PyObject* lock(const char *lock_id);
PyObject* try_lock(const char *lock_id);
PyObject* unlock(const char *lock_id);
+
+ PyObject* get_scripts_list();
+ PyObject* run_script(const char* script_name, PyObject* value);
}
} Pcipywrap;
diff --git a/pywrap/server.py b/pywrap/server.py
deleted file mode 100644
index b59ae55..0000000
--- a/pywrap/server.py
+++ /dev/null
@@ -1,539 +0,0 @@
-import time
-import os
-import pcipywrap
-import json
-import sys
-from optparse import OptionParser
-
-from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
-from SocketServer import ThreadingMixIn
-import threading
-
-pcilib = None
-
-class MultiThreadedHTTPServer(ThreadingMixIn, HTTPServer):
- pass
-
-class PcilibServerHandler(BaseHTTPRequestHandler):
- locks = list()
- lock_global = 0
-
- #def __init__(s, pcilib, *args):
- # s.pcilib = pcilib
- # BaseHTTPRequestHandler.__init__(s, *args)
-
- def do_HEAD(s):
- s.send_response(200)
- s.send_header('content-type', 'application/json')
- s.end_headers()
-
- def do_GET(s):
- length = int(s.headers['Content-Length'])
-
- #deserialize input data
- data = json.loads(s.rfile.read(length).decode('utf-8'))
-
- if 'command' in data:
- command = data['command']
- if(command == 'help'):
- s.help(data)
-
-
-
- #elif(command == 'open'):
- # #check required arguments
- # if not 'device' in data:
- # s.error('message doesnt contains "device" field, '
- # 'which is required for "open" command', data)
- # return
- # #parse command arguments and convert them to string
- # device = str(data.get('device', None))
- # model = data.get('model', None)
- # if not model is None:
- # model = str(model)
- #
- # try:
- # s.openPcilibInstance(device, model)
- # except Exception as e:
- # s.error(str(e), data)
- # return
- #
- # #Success! Create and send reply
- # out = dict()
- # out['status'] = 'ok'
- # s.wrapMessageAndSend(out, data)
-
-
-
- elif(command == 'get_registers_list'):
- #parse command arguments and convert them to string
- bank = data.get('bank', None)
- if not bank is None:
- bank = str(bank)
-
- registers = dict()
- try:
- registers = pcilib.get_registers_list(bank)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- out = dict()
- out['status'] = 'ok'
- out['registers'] = registers
- s.wrapMessageAndSend(out, data)
-
-
-
- elif(command == 'get_register_info'):
- #check required arguments
- if not 'reg' in data:
- s.error('message doesnt contains "reg" field, '
- 'which is required for "get_register_info" command', data)
- return
-
- #parse command arguments and convert them to string
- reg = str(data.get('reg', None))
- bank = data.get('bank', None)
- if not bank is None:
- bank = str(bank)
-
- register = dict()
- try:
- register = pcilib.get_register_info(reg, bank)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- s.wrapMessageAndSend({'status': 'ok', 'register': register}, data)
-
-
-
- elif(command == 'get_property_list'):
- #parse command arguments and convert them to string
- branch = data.get('branch', None)
- if not branch is None:
- branch = str(branch)
-
- properties = dict()
- try:
- properties = pcilib.get_property_list(branch)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- out = dict()
- out['status'] = 'ok'
- out['properties'] = properties
- s.wrapMessageAndSend(out, data)
-
-
-
- elif(command == 'read_register'):
- #check required arguments
- if not 'reg' in data:
- s.error('message doesnt contains "reg" field, '
- 'which is required for "read_register" command', data)
- return
-
- #parse command arguments and convert them to string
- reg = str(data.get('reg', None))
- bank = data.get('bank', None)
- if not bank is None:
- bank = str(bank)
-
- value = 0
- try:
- value = pcilib.read_register(reg, bank)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- out = dict()
- out['status'] = 'ok'
- out['value'] = value
- s.wrapMessageAndSend(out, data)
-
-
-
- elif(command == 'write_register'):
- #check required arguments
- if not 'reg' in data:
- s.error('message doesnt contains "reg" field, '
- 'which is required for "write_register" command', data)
- return
-
- if not 'value' in data:
- s.error('message doesnt contains "value" field, '
- 'which is required for "write_register" command', data)
- return
-
- #parse command arguments and convert them to string
- reg = str(data.get('reg', None))
- value = str(data.get('value', None))
- bank = data.get('bank', None)
- if not bank is None:
- bank = str(bank)
-
- try:
- pcilib.write_register(value, reg, bank)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- elif(command == 'get_property'):
- #check required arguments
- if not 'prop' in data:
- s.error('message doesnt contains "prop" field, '
- 'which is required for "get_property" command', data)
- return
-
- #parse command arguments and convert them to string
- prop = str(data.get('prop', None))
-
- value = 0
- try:
- value = pcilib.get_property(prop)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- out = dict()
- out['status'] = 'ok'
- out['value'] = value
- s.wrapMessageAndSend(out, data)
-
-
-
- elif(command == 'set_property'):
- #check required arguments
- if not 'prop' in data:
- s.error('message doesnt contains "prop" field, '
- 'which is required for "set_property" command', data)
- return
-
- if not 'value' in data:
- s.error('message doesnt contains "value" field, '
- 'which is required for "set_property" command', data)
- return
-
- #parse command arguments and convert them to string
- prop = str(data.get('prop', None))
- value = str(data.get('value', None))
-
- try:
- pcilib.set_property(value, prop)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- elif(command == 'lock'):
- #check required arguments
- if not 'lock_id' in data:
- s.error('message doesnt contains "lock_id" field, '
- 'which is required for "lock" command', data)
- return
-
- #parse command arguments and convert them to string
- lock_id = str(data.get('lock_id'))
-
- #check if lock already setted
- #if lock_id in PcilibServerHandler.locks:
- # s.error('Lock with id: ' + lock_id +
- # 'already setted by this server',
- # data)
- # return
-
- try:
- pcilib.lock(lock_id)
- except Exception as e:
- s.error(str(e), data)
- return
-
- PcilibServerHandler.locks.append(lock_id)
-
- #Success! Create and send reply
- s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- elif(command == 'try_lock'):
- #check required arguments
- if not 'lock_id' in data:
- s.error('message doesnt contains "lock_id" field, '
- 'which is required for "try_lock" command', data)
- return
-
- #parse command arguments and convert them to string
- lock_id = str(data.get('lock_id'))
-
- try:
- pcilib.try_lock(lock_id)
- except Exception as e:
- s.error(str(e), data)
- return
-
- #Success! Create and send reply
- s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- elif(command == 'unlock'):
- #check required arguments
- #if not 'lock_id' in data:
- # s.error('message doesnt contains "lock_id" field, '
- # 'which is required for "unlock" command', data)
- # return
-
- #parse command arguments and convert them to string
- #lock_id = str(data.get('lock_id'))
-
- #try:
- # pcilib.unlock(lock_id)
- #except Exception as e:
- # s.error(str(e), data)
- # return
- #
- #remove lock from locks list
- #if lock_id in PcilibServerHandler.locks:
- # PcilibServerHandler.locks.remove(lock_id)
- time.sleep(20)
- #Success! Create and send reply
- s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- #elif(command == 'lock_global'):
- # #check if global_lock already setted by server
- # print 'aaa'
- # if PcilibServerHandler.lock_global:
- #
- # s.error('global lock already setted by this server', data)
- # return
- #
- # try:
- # pcilib.lock_global()
- # except Exception as e:
- # s.error(str(e), data)
- # return
- #
- # PcilibServerHandler.lock_global = 1
- #
- # #Success! Create and send reply
- # s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- #elif(command == 'unlock_global'):
- # try:
- # pcilib.unlock_global()
- # except Exception as e:
- # s.error(str(e), data)
- # return
- #
- # PcilibServerHandler.lock_global = 0
- #
- # #Success! Create and send reply
- # s.wrapMessageAndSend({'status': 'ok'}, data)
-
-
-
- else:
- s.error('command "' + command + '" undefined', data)
- return
- else:
- s.error('message doesnt contains "command" field, which is required', data)
- return
-
-
- #print str(s.headers['content-type'])
- #print post_data['some']
-
- #"""open device context """
- #def openPcilibInstance(s, device, model):
- # pcilib = pcipywrap.create_pcilib_instance(device, model)
-
- """Send help message"""
- def help(s, received_message = None):
- usage = str('Usage:\n'
- ' Server receive commands via http GET with json packet.\n'
- ' content-type should have value "application/json"\n'
- ' Server could handle only commands. to set command, you\n'
- ' should specify field "command" in packet with command name\n'
- ' List of commands:\n'
- '\n'
- ' command: help - Get help. This will return usage\n'
- '\n'
-
- ' command: open - Opens context of device. It will be reopened if already open.\n'
- ' required fields\n'
- ' device: - path to the device file [/dev/fpga0]\n'
- ' optional fields\n'
- ' model: - specifies the model of hardware, autodetected if doesnt exists\n'
- '\n'
-
- ' command: get_registers_list - Returns the list of registers provided by the hardware model.\n'
- ' optional fields\n'
- ' bank: - if set, only register within the specified bank will be returned\n'
- '\n'
-
- ' command: get_register_info - Returns the information about the specified register.\n'
- ' required fields\n'
- ' reg: - the name of the register\n'
- ' optional fields\n'
- ' bank: - if set, only register within the specified bank will be returned\n'
- '\n'
-
- ' command: get_property_list - Returns the list of properties available under the specified path.\n'
- ' optional fields\n'
- ' branch: - Path. If not set, will return the top-level properties\n'
- '\n'
-
- ' command: read_register - Reads the specified register.\n'
- ' required fields\n'
- ' reg: - the name of the register\n'
- ' optional fields\n'
- ' bank: - if set, only register within the specified bank will be processed\n'
- '\n'
-
- ' command: write_register - Writes to specified register.\n'
- ' required fields\n'
- ' reg: - the name of the register\n'
- ' value: - the register value to write. Should be int, float or string (with number)\n'
- ' optional fields\n'
- ' bank: - if set, only register within the specified bank will be processed\n'
- '\n'
-
- ' command: get_property - Reads / computes the property value.\n'
- ' required fields\n'
- ' prop: - full name including path\n'
- '\n'
-
- ' command: set_property - Writes the property value or executes the code associated with property.\n'
- ' required fields\n'
- ' prop: - full name including path\n'
- ' value: - the property value to write. Should be int, float or string (with number)\n'
- '\n'
-
- ' command: lock - function to acquire a lock, and wait till the lock can be acquire.\n'
- ' required fields\n'
- ' lock_id: - lock id\n'
- '\n'
-
- ' command: try_lock - this function will try to take a lock for the mutex pointed by \n'
- ' lockfunction to acquire a lock, but that returns immediatly if the\n'
- ' lock can\'t be acquired on first try\n'
- ' lock_id: - lock id\n'
- '\n'
-
- ' command: unlock - this function unlocks the lock.\n'
- ' required fields\n'
- ' lock_id: - lock id\n'
- '\n'
-
- '\n')
- out = {'status': 'ok', 'usage' : usage}
- s.wrapMessageAndSend(out, received_message)
-
- """Send error message with text description"""
- def error(s, info, received_message = None):
- out = dict()
-
- out['status'] = 'error'
- out['description'] = info
- out['note'] = 'send {"command" : "help"} to get help'
- s.wrapMessageAndSend(out, received_message, 400)
-
- def wrapMessageAndSend(s, message, received_message = None, response = 200):
- s.send_response(response)
- s.send_header('content-type', 'application/json')
- s.end_headers()
- if not received_message is None:
- message['received_message'] = received_message
- message['thread'] = threading.currentThread().getName()
- s.wfile.write(json.dumps(message))
-
-if __name__ == '__main__':
-
- #parce command line options
- parser = OptionParser()
- parser.add_option("-p", "--port", action="store",
- type="int", dest="port", default=9000,
- help="Set server port (9000)")
- parser.add_option("-d", "--device", action="store",
- type="string", dest="device", default=str('/dev/fpga0'),
- help="FPGA device (/dev/fpga0)")
- parser.add_option("-m", "--model", action="store",
- type="string", dest="model", default=None,
- help="Memory model (autodetected)")
- opts = parser.parse_args()[0]
-
- HOST_NAME = ''
- PORT_NUMBER = opts.port
- MODEL = opts.model
- DEVICE = opts.device
-
-
-
- #Set enviroment variables, if it not setted already
- if not 'APP_PATH' in os.environ:
- APP_PATH = ''
- file_dir = os.path.dirname(os.path.abspath(__file__))
- APP_PATH = str(os.path.abspath(file_dir + '/../..'))
- os.environ["APP_PATH"] = APP_PATH
-
- if not 'PCILIB_MODEL_DIR' in os.environ:
- os.environ['PCILIB_MODEL_DIR'] = os.environ["APP_PATH"] + "/xml"
-
- if not 'LD_LIBRARY_PATH' in os.environ:
- os.environ['LD_LIBRARY_PATH'] = os.environ["APP_PATH"] + "/pcilib"
-
-
-
- #redirect logs to exeption
- pcipywrap.__redirect_logs_to_exeption()
-
- #pass Pcipywrap to to server handler
- global pcilib
- pcilib = pcipywrap.Pcipywrap(DEVICE, MODEL)
- #def handler(*args):
- # PcilibServerHandler(lib, *args)
-
- #start server
- httpd = MultiThreadedHTTPServer((HOST_NAME, PORT_NUMBER), PcilibServerHandler)
-
- print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER)
- try:
- httpd.serve_forever()
- except KeyboardInterrupt:
- #unlocking global lock
- if PcilibServerHandler.lock_global:
- lib.unlock_global()
- PcilibServerHandler.lock_global = False
-
- #delete created locks
- for lock in PcilibServerHandler.locks:
- lib.unlock(lock)
- del PcilibServerHandler.locks[:]
- pass
-
-
-
-
- httpd.server_close()
- print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)
diff --git a/pywrap/static/codebase/dhtmlx.css b/pywrap/static/codebase/dhtmlx.css
deleted file mode 100644
index 9b89ec5..0000000
--- a/pywrap/static/codebase/dhtmlx.css
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
-Product Name: dhtmlxSuite
-Version: 4.6
-Edition: Standard
-License: content of this file is covered by GPL. Usage outside GPL terms is prohibited. To obtain Commercial or Enterprise license contact sales@dhtmlx.com
-Copyright UAB Dinamenta http://www.dhtmlx.com
-*/
-
-.dhtmlxcalendar_ifr{position:absolute;overflow:hidden;background-color:white;}.dhtmlxcalendar_dhx_skyblue{position:absolute;display:block;background-color:white;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhtmlxcalendar_dhx_skyblue ul.dhtmlxcalendar_line{position:relative;display:block;clear:both;margin:0;padding:0;overflow:hidden;width:211px;}.dhtmlxcalendar_dhx_skyblue ul.dhtmlxcalendar_line li{float:left;position:relative;list-style-type:none;list-style-image:none;text-align:center;vertical-align:middle;cursor:default;overflow:hidden;margin:0;padding:0;}.dhtmlxcalendar_dhx_skyblue.dhtmlxcalendar_in_input{box-shadow:0 0 6px rgba(0,0,0,0.25);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont{position:relative;display:block;width:211px;height:25px;margin:0;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);border:1px solid #a4bed4;overflow:hidden;color:black;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr{width:211px;height:25px;line-height:25px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow{position:absolute;top:0;width:18px;height:25px;text-align:center;color:inherit;background-position:center center;background-repeat:no-repeat;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_left{left:4px;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif");opacity:.8;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_left_hover{left:4px;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif");opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_right{right:4px;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif");opacity:.8;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_right_hover{right:4px;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif");opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr span.dhtmlxcalendar_month_label_month,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr span.dhtmlxcalendar_month_label_year{position:relative;font-weight:bold;color:#34404b;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_today,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_clear{display:none;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_today{float:right;margin-right:8px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_clear{float:right;margin-right:74px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_today,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_clear{float:right;margin-right:8px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_days_cont{position:relative;display:block;width:211px;margin:0;padding-bottom:1px;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #cbd9e4;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text;overflow:hidden;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line{border-top:1px solid white;padding-left:1px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li{width:29px;height:19px;line-height:19px;margin-right:1px;font-size:9px;background-color:#ecf4ff;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_day_weekday_cell,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_day_weekday_cell_first{color:#c66200;background-color:#ffe6ae;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont{position:relative;display:block;width:211px;margin:0;padding-bottom:1px;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow:hidden;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line{border-top:1px solid white;padding-left:1px;height:26px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li{color:#909090;background-color:white;border:1px solid white;width:27px;height:24px;line-height:23px;margin-right:1px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li div.dhtmlxcalendar_label{width:100%;height:100%;text-align:center;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend{border-color:#ccc;background-color:#f7f7f7;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_dis{color:#b2b2b2;background-color:#f0f0f0;border-color:#f0f0f0;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_holiday,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_holiday{color:red;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_holiday,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_holiday{color:red;border-color:#ccc;background-color:#f7f7f7;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_holiday_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_holiday_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_holiday_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_holiday_dis{color:red;background-color:#f0f0f0;border-color:#f0f0f0;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_hover,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_hover,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_hover,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_hover{border-color:#ccc;background-color:#f7f7f7;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_holiday_hover,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_holiday_hover,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_holiday_hover,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_holiday_hover{color:red;border-color:#ccc;background-color:#f7f7f7;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month{color:black;background-color:#ecf4ff;border-color:#ecf4ff;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend{color:#c66200;background-color:#fff0d2;border-color:#fff0d2;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date{color:black;background-color:#b5deff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend{color:#c66200;background-color:#ffdc90;border-color:#ffce65;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_dis{color:#b2b2b2;background-color:#f0f0f0;border-color:#f0f0f0;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_holiday{color:red;background-color:#ecf4ff;border-color:#ecf4ff;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_holiday{color:red;background-color:#fff0d2;border-color:#fff0d2;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_holiday{color:red;background-color:#b5deff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_holiday{color:red;background-color:#ffdc90;border-color:#ffce65;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_holiday_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_holiday_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_holiday_dis,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_holiday_dis{color:red;background-color:#f0f0f0;border-color:#f0f0f0;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_hover{color:black;background-color:#d9eeff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_hover{color:#c66200;background-color:#ffe9bb;border-color:#ffce65;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_hover{color:black;background-color:#b5deff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_hover{color:#c66200;background-color:#ffdc90;border-color:#ffce65;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_holiday_hover{color:red;background-color:#d9eeff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_holiday_hover{color:red;background-color:#ffe9bb;border-color:#ffce65;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_holiday_hover{color:red;background-color:#b5deff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_holiday_hover{color:red;background-color:#ffdc90;border-color:#ffce65;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line div.dhtmlxcalendar_label.dhtmlxcalendar_label_title{background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_mark.gif");background-position:top right;background-repeat:no-repeat;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont{position:relative;display:block;width:211px;height:25px;margin:0;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow:hidden;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li{width:211px;height:25px;line-height:24px;color:#34404b;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr{text-align:left;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li div.dhtmlxcalendar_time_img{position:absolute;left:8px;top:6px;width:13px;height:13px;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_clock.gif");background-position:center center;background-repeat:no-repeat;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_hours{margin-left:26px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time ul.dhtmlxcalendar_line li div.dhtmlxcalendar_time_img{left:70px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr{text-align:center;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_time ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_hours{margin-left:0;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr div.dhtmlxcalendar_time_img,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_hours,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_minutes,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_time_cont.dhtmlxcalendar_mode_today ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_colon{display:none;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_cover{position:absolute;left:1px;background-color:white;opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj{position:absolute;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_selector_obj_arrow{position:absolute;bottom:auto;top:0;left:0;width:100%;height:9px;overflow:hidden;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_selector_top.gif");background-position:top center;background-repeat:no-repeat;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours div.dhtmlxcalendar_selector_obj_arrow{background-position:-15px top;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 div.dhtmlxcalendar_selector_obj_arrow{background-position:-57px top;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_selector_obj_arrow{background-position:-53px top;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table{border:1px solid #a4bed4;background-color:white;border-top:none;margin-top:9px;box-shadow:0 0 3px rgba(0,0,0,0.35);}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left{width:17px;text-align:center;border-top:1px solid white;padding:0;margin:0;background-color:#ecf4ff;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif");background-position:center center;background-repeat:no-repeat;cursor:default;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left.dhtmlxcalendar_selector_cell_left_hover{background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif");}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle{border-top:white 1px solid;border-width:1px 0 0 0;cursor:default;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{width:17px;text-align:center;border-top:1px solid white;border-width:1px 0 0 0;background-color:#ecf4ff;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif");background-position:center center;background-repeat:no-repeat;cursor:default;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right.dhtmlxcalendar_selector_cell_right_hover{background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif");}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul{display:block;clear:both;margin:0 0 0 1px;padding:0;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul li{float:left;font-family:Tahoma,Helvetica;font-size:10px;color:black;list-style-type:none;list-style-image:none;text-align:center;vertical-align:middle;margin:0 1px 0 0;padding:0;background-color:#e9f3ff;border:1px solid #e9f3ff;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul li.dhtmlxcalendar_selector_cell_active{background-color:#b5deff;border-color:#a1ceed;color:black;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul li.dhtmlxcalendar_selector_cell_hover{background-color:#d9eeff;border-color:#a1ceed;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_month table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_month table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{display:none;width:0;border:0 solid white;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line{height:22px;border-top:none;border-bottom:1px solid white;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell{width:33px;height:20px;line-height:19px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours div.dhtmlxcalendar_selector_obj_arrow,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 div.dhtmlxcalendar_selector_obj_arrow,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_selector_obj_arrow{top:auto;bottom:0;background-image:url("imgs/dhxcalendar_skyblue/dhxcalendar_selector_bottom.gif");}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line{height:19px;border-top:none;border-bottom:1px solid white;}.dhtmlxcalendar_dhx_skyblue 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_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell{width:21px;height:17px;line-height:16px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{display:none;width:0;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 table.dhtmlxcalendar_selector_table,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table{margin-top:0;margin-bottom:9px;border-top:1px solid #a4bed4;border-bottom:none;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_month,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_year,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_hours,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_hours2,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_minutes,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_minutes4,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_minutes5{display:none;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_month div.dhtmlxcalendar_area_selector_month,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_year div.dhtmlxcalendar_area_selector_year,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours div.dhtmlxcalendar_area_selector_hours,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours2 div.dhtmlxcalendar_area_selector_hours,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_area_selector_minutes,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_area_selector_minutes4,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_area_selector_minutes5{display:block;}.dhtmlxcalendar_dhx_skyblue span.dhtmlxcalendar_label_minutes span.dhtmlxcalendar_selected_date{border-bottom:2px solid red;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_wn,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_wn{display:none;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_wn div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell{width:26px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_wn div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell{width:24px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_wn div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_first,.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_wn div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell{width:26px;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_wn div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_wn{display:block;width:21px;color:#638eb1;background-color:#d9eaff;}.dhtmlxcalendar_dhx_skyblue div.dhtmlxcalendar_wn div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_wn{display:block;width:19px;color:#638eb1;background-color:#d9eaff;border-color:#d9eaff;font-size:10px;}div.dhtmlxcalendar_skin_detect{position:absolute;display:block;visibility:hidden;left:-100px;top:0;width:10px;height:10px;margin:0;padding:0;border:none;overflow:hidden;}div.dhxcombo_dhx_skyblue{position:relative;border:1px solid #a4bed4;overflow:hidden;vertical-align:middle;background-color:white;font-size:1px;height:22px;-webkit-tap-highlight-color:rgba(0,0,0,0);}div.dhxcombo_dhx_skyblue input.dhxcombo_input{position:relative;top:0;left:1px;height:22px;line-height:21px;*height:20px;*line-height:19px;border:0 solid white;outline:0 solid white;padding:0;margin:0 0 0 2px;background-color:white;font-family:Tahoma,Helvetica;font-size:12px;color:black;vertical-align:middle;}div.dhxcombo_dhx_skyblue input.dhxcombo_input::-ms-clear{display:none;}div.dhxcombo_dhx_skyblue div.dhxcombo_select_button{position:absolute;width:18px;height:18px;top:1px;right:1px;font-size:1px;border:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);border-radius:2px;cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow:hidden;}div.dhxcombo_dhx_skyblue div.dhxcombo_select_button div.dhxcombo_select_img{position:relative;width:100%;height:100%;background-image:url("imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif");background-repeat:no-repeat;background-position:center center;}div.dhxcombo_dhx_skyblue div.dhxcombo_top_image{position:absolute;left:0;top:0;width:26px;height:22px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow:hidden;cursor:default;}div.dhxcombolist_dhx_skyblue{position:absolute;font-family:Tahoma,Helvetica;font-size:12px;color:black;border:1px solid #a4bed4;box-shadow:0 2px 3px #ccc;background-color:#e7f1ff;border-bottom-left-radius:2px;border-bottom-right-radius:2px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow-x:none;overflow-y:auto;-moz-transition:height .15s ease 0s;-webkit-tap-highlight-color:rgba(0,0,0,0);}div.dhxcombolist_dhx_skyblue div.dhxcombo_option{position:relative;font-size:inherit;height:20px;line-height:19px;border-top:1px solid #e7f1ff;border-bottom:1px solid #e7f1ff;vertical-align:middle;overflow:hidden;cursor:default;}div.dhxcombolist_dhx_skyblue div.dhxcombo_option.dhxcombo_option_selected{background-color:#b5deff!important;border-top:1px solid #a1ceed!important;border-bottom:1px solid #a1ceed!important;color:black;}div.dhxcombolist_dhx_skyblue div.dhxcombo_option div.dhxcombo_option_text{position:relative;padding:0 4px;white-space:nowrap;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}div.dhxcombolist_dhx_skyblue div.dhxcombo_option div.dhxcombo_option_text.dhxcombo_option_text_chbx{position:relative;padding:0 4px 0 4px;margin-left:20px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;white-space:nowrap;}div.dhxcombolist_dhx_skyblue div.dhxcombo_option div.dhxcombo_checkbox{position:absolute;left:1px;top:1px;width:20px;height:20px;background-image:url("imgs/dhxcombo_skyblue/dhxcombo_chbx.gif");background-repeat:no-repeat;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow:hidden;cursor:default;}div.dhxcombolist_dhx_skyblue div.dhxcombo_option div.dhxcombo_checkbox.dhxcombo_chbx_0{background-position:0 0;}div.dhxcombolist_dhx_skyblue .dhxcombo_option div.dhxcombo_checkbox.dhxcombo_chbx_1{background-position:-18px 0;}div.dhxcombolist_dhx_skyblue div.dhxcombo_option div.dhxcombo_option_text.dhxcombo_option_text_image{position:relative;padding:0 4px 0 4px;margin-left:20px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;white-space:nowrap;}div.dhxcombo_dhx_skyblue div.dhxcombo_top_image div.dhxcombo_image,div.dhxcombolist_dhx_skyblue div.dhxcombo_option div.dhxcombo_image{position:absolute;left:3px;top:1px;width:20px;height:20px;background-repeat:no-repeat;background-position:center center;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow:hidden;cursor:default;}div.dhxcombo_dhx_skyblue.dhxcombo_disabled{border:1px solid #ccc;background-color:#fafafa;}div.dhxcombo_dhx_skyblue.dhxcombo_disabled input.dhxcombo_input{color:#b2b2b2;background-color:#fafafa;}div.dhxcombo_dhx_skyblue.dhxcombo_disabled div.dhxcombo_select_button{border-color:#ccc;background-color:#fefefe;background:linear-gradient(#fefefe,#f4f4f4);background:-webkit-linear-gradient(#fefefe,#f4f4f4);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#fefefe,endColorStr=#f4f4f4) progid:DXImageTransform.Microsoft.Alpha(opacity=100);cursor:default;}div.dhxcombo_dhx_skyblue.dhxcombo_disabled div.dhxcombo_select_button div.dhxcombo_select_img{background-image:url("imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif");}.dhxgrid_combo_icon{position:absolute;top:0;right:0;z-index:1;}div.dhxcombo_in_grid_parent{position:relative;height:100%;top:0;}div.dhxcombo_in_grid_parent div.dhxcombo_dhx_skyblue{position:absolute;top:0;left:-4px;*top:-2px;*height:23px;}div.dhxcombo_in_grid_parent input.dhxcombo_input{border-left:2px solid white;font-family:Arial;font-size:12px;*margin-top:-3px;*height:18px;*line-height:17px;}div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr{border-bottom-width:0;height:27px;line-height:27px;box-shadow:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr div.dhxcombo_hdrtext{position:relative;padding:0;white-space:nowrap;cursor:default;font-family:Tahoma,Helvetica;font-size:11px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr div.dhxcombo_hdrtext div.dhxcombo_hdrcell,div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr div.dhxcombo_hdrtext div.dhxcombo_hdrcell_first{float:left;white-space:nowrap;overflow:hidden;position:relative;z-index:2;border-left:1px solid #a4bed4;padding:0;margin:0;}div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr div.dhxcombo_hdrtext div.dhxcombo_hdrcell_first,div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr div.dhxcombo_hdrtext div.dhxcombo_hdrcell:first-child{border-left-width:0;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option{height:24px;line-height:24px;margin-top:-1px;z-index:0;border-top:1px solid #d3e7ff;border-bottom:1px solid #d3e7ff;background-color:white;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option:last-child{border-bottom-color:white;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option div.dhxcombo_option_text{padding:0;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option div.dhxcombo_cell,div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option div.dhxcombo_cell_first{float:left;white-space:nowrap;overflow:hidden;position:relative;border-left:1px solid #d3e7ff;padding:0;margin:0;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option div.dhxcombo_cell_first,div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option div.dhxcombo_cell:first-child{border-left-width:0;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option.dhxcombo_option_selected{z-index:1;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option.dhxcombo_option_selected div.dhxcombo_cell{border-left-color:#b5deff;}div.dhxcombolist_dhx_skyblue.dhxcombolist_multicolumn div.dhxcombo_option div.dhxcombo_cell_text,div.dhxcombolist_dhx_skyblue.dhxcombolist_hdr div.dhxcombo_hdrtext div.dhxcombo_hdrcell_text{position:relative;margin:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto;}.dhxcombo_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxcolorpicker_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhtmlxcp_dhx_skyblue .dhxcp_g_area{position:absolute;width:254px;height:272px;border:1px solid #a4bed4;background-color:#e7f1ff;}.dhtmlxcp_dhx_skyblue .dhxcp_add_memory{height:317px!important;}.dhtmlxcp_dhx_skyblue .dhxcp_sub_area{margin:1px;width:252px;height:270px;background-color:#e7f1ff;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxcp_dhx_skyblue .dhxcp_add_memory .dhxcp_sub_area{height:229px!important;}.dhtmlxcp_dhx_skyblue .dhxcp_g_color_area{padding:10px;width:232px;height:122px;margin:0;}.dhtmlxcp_dhx_skyblue .dhxcp_color_selector{position:absolute;width:210px;height:120px;background-image:url("imgs/dhxcp_skyblue/dhxcp_colors.png");background-repeat:no-repeat;border:1px solid #a4bed4;cursor:pointer;float:left;}.dhtmlxcp_dhx_skyblue .dhxcp_contrast_area{border:1px solid #a4bed4;position:relative;height:120px;width:10px;cursor:pointer;float:right;}.dhtmlxcp_dhx_skyblue .dhxcp_ie_gradient{height:120px;width:10px;margin:0;}.dhtmlxcp_dhx_skyblue .dhxcp_color_selector .dhxcp_v_line{position:absolute;width:0;height:120px;border-left:1px solid #fff;cursor:pointer;overflow:hidden;}.dhtmlxcp_dhx_skyblue .dhxcp_color_selector .dhxcp_h_line,.dhtmlxcp_dhx_skyblue .dhxcp_contrast_area .dhxcp_h_line{position:absolute;height:0;border-top:1px solid #fff;cursor:pointer;overflow:hidden;}.dhtmlxcp_dhx_skyblue .dhxcp_color_selector .dhxcp_h_line{width:210px;}.dhtmlxcp_dhx_skyblue .dhxcp_contrast_area .dhxcp_h_line{width:10px;}.dhtmlxcp_dhx_skyblue .dhxcp_g_input_area{padding:0 10px;width:232px;height:78px;margin:0;}.dhtmlxcp_dhx_skyblue .dhxcp_value_cont{width:60px;height:82px;float:left;}.dhtmlxcp_dhx_skyblue .dhxcp_value_color{width:56px;height:30px;border:1px solid #a4bed4;}.dhtmlxcp_dhx_skyblue .dhxcp_value{width:49px;height:20px;border:1px solid #a4bed4;border-radius:0;background-color:white;margin:5px 0 0 0;padding:1px 3px;font-family:Tahoma,Helvetica;font-size:11px;color:black;text-align:left;}.dhtmlxcp_dhx_skyblue .dhxcp_inputs_cont{border:none;border-spacing:0;width:161px;height:78px;float:right;}.dhtmlxcp_dhx_skyblue .dhxcp_label_hsl,.dhtmlxcp_dhx_skyblue .dhxcp_label_rgb{font-family:Tahoma,Helvetica;font-size:11px;color:black;text-align:right;padding:0 3px 0 0;}.dhtmlxcp_dhx_skyblue td.dhxcp_input_hsl,.dhtmlxcp_dhx_skyblue td.dhxcp_input_rgb{width:27px;border:none;padding:3px 0;margin:0;}.dhtmlxcp_dhx_skyblue input.dhxcp_input_hsl,.dhtmlxcp_dhx_skyblue input.dhxcp_input_rgb{width:25px;height:19px;border:1px solid #a4bed4;border-radius:0;background-color:white;font-family:Tahoma,Helvetica;font-size:11px;color:black;text-align:right;padding:0 3px;line-height:18px;}.dhtmlxcp_dhx_skyblue .dhxcp_g_memory_area{width:232px;height:0;overflow:hidden;border-top:1px solid #fff;margin:10px;}.dhtmlxcp_dhx_skyblue .dhxcp_memory_button_cont{width:232px;margin:0;height:24px;}.dhtmlxcp_dhx_skyblue button{outline:none;border-radius:2px;border:1px solid #a4bed4;font-family:Tahoma,Helvetica;font-size:11px;color:black;padding:0;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhtmlxcp_dhx_skyblue button:hover{background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);background:-webkit-linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhtmlxcp_dhx_skyblue button:active{background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 3px #ccc inset;}.dhtmlxcp_dhx_skyblue .dhxcp_save_to_memory{width:232px;height:24px;}.dhtmlxcp_dhx_skyblue .dhxcp_save_to_memory .dhxcp_label_bm{background-image:url("imgs/dhxcp_skyblue/dhxcp_icon_save.png");background-repeat:no-repeat;display:inherit;padding-left:15px;background-position:0 4px;height:18px;line-height:18px;width:80px;margin:1px auto;white-space:nowrap;text-align:left;}.dhtmlxcp_dhx_skyblue .dhxcp_memory_els_cont{width:232px;height:25px;margin-top:3px;text-align:center;}.dhtmlxcp_dhx_skyblue .dhxcp_memory_el{width:24px;height:24px;background-color:#fff;border:1px solid #a4bed4;display:inline-block;margin:0 1px;}.dhtmlxcp_dhx_skyblue .dhxcp_memory_el_select{border:1px dashed black!important;}.dhtmlxcp_dhx_skyblue .dhxcp_memory_el_next{border:1px dashed red!important;}.dhtmlxcp_dhx_skyblue .dhxcp_add_memory .dhxcp_g_memory_area{height:55px!important;border-top:none!important;margin:5px 10px 5px 10px;}.dhtmlxcp_dhx_skyblue .dhxcp_buttons_area{padding:0 10px;width:232px;height:26px;text-align:right;margin:0;}.dhtmlxcp_dhx_skyblue .dhx_button_save,.dhtmlxcp_dhx_skyblue .dhx_button_cancel{padding:2px 10px;margin:1px;height:24px;line-height:12px;overflow:hidden;text-align:center;}.dhxcp_colorBox{float:right;}.dhxcp_colorInput{float:left;}.dhxcp_frm{position:absolute;background-color:white;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);width:256px;height:274px;}.dhtmlxcp_dhx_skyblue.dhtmlxcp_in_form .dhxcp_g_area{padding:5px;border:1px solid #a4bed4;box-shadow:0 0 9px rgba(0,0,0,0.35);}.dhtmlxslider_dhx_skyblue{z-index:0;}.dhtmlxslider_dhx_skyblue .dhxsl_hidden{display:none;}.dhtmlxslider_dhx_skyblue .dhxsl_container{position:relative;float:left;clear:left;margin:0;padding:1px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhtmlxslider_dhx_skyblue .dhxsl_container.dhxsl_cont_hr{margin-top:6px;}.dhtmlxslider_dhx_skyblue .dhxsl_container.dhxsl_cont_vr{margin-left:6px;}.dhtmlxslider_dhx_skyblue .dhxsl_runner{position:absolute;width:16px;height:16px;margin:0;padding:0;overflow:hidden;border:1px solid #a4bed4;background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);background:-webkit-linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);border-radius:2px;-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;z-index:1;}.dhtmlxslider_dhx_skyblue .dhxsl_runner.dhxsl_runner_actv{background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);z-index:2;}.dhtmlxslider_dhx_skyblue .dhxsl_runner_dis{border-color:#c9c9c9;background-color:#e8e8e8;background:linear-gradient(#e8e8e8,#dedede);background:-webkit-linear-gradient(#e8e8e8,#dedede);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e8e8e8,endColorStr=#dedede) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhtmlxslider_dhx_skyblue .dhxsl_track{margin:0;padding:0;overflow:hidden;border:1px solid #a4bed4;position:relative;border-radius:2px;background-color:white;-webkit-touch-callout:none;-webkit-user-select:none;-ms-touch-action:none;}.dhtmlxslider_dhx_skyblue .dhxsl_track div.dhxsl_track_bg{position:absolute;background-color:#e7f1ff;font-size:1px;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxslider_dhx_skyblue .dhxsl_cont_vr .dhxsl_track{height:100%;width:3px;}.dhtmlxslider_dhx_skyblue .dhxsl_cont_vr .dhxsl_track div.dhxsl_track_bg{left:0;width:100%;}.dhtmlxslider_dhx_skyblue .dhxsl_cont_hr .dhxsl_track{width:100%;height:3px;}.dhtmlxslider_dhx_skyblue .dhxsl_cont_hr .dhxsl_track div.dhxsl_track_bg{top:0;height:100%;}.dhtmlxslider_dhx_skyblue .dhxsl_track_dis{border:1px solid #c9c9c9;background-color:#f0f0f0;}.dhtmlxslider_dhx_skyblue .dhxsl_track_dis div.dhxsl_track_bg{position:absolute;background-color:#d0d0d0;}.dhxslider_skin_detect{position:absolute;left:0;top:-100px;border:0 solid white;width:10px;height:10px;margin:0;padding:0;overflow:hidden;}div.dhx_popup_dhx_skyblue{-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;}div.dhx_popup_dhx_skyblue div.dhx_popup_area{position:relative;margin:10px;padding:3px 0;border:1px solid #a4bed4;box-shadow:0 0 3px #ccc;background-color:#e7f1ff;border-radius:2px;}div.dhx_popup_dhx_skyblue div.dhx_popup_area td.dhx_popup_td{font-family:Tahoma,Helvetica;font-size:11px;color:black;text-align:left;vertical-align:middle;padding:0 8px;height:24px;line-height:23px;border-top:1px solid #e7f1ff;border-bottom:1px solid #e7f1ff;white-space:nowrap;cursor:default;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}div.dhx_popup_dhx_skyblue div.dhx_popup_area td.dhx_popup_td div.dhtmlxcalendar_dhx_skyblue{position:relative;float:left;}div.dhx_popup_dhx_skyblue div.dhx_popup_area td.dhx_popup_td *{white-space:normal;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhx_popup_sep td.dhx_popup_sep{font-size:1px;padding:2px 0;position:relative;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhx_popup_sep td.dhx_popup_sep div.dhx_popup_sep{position:relative;font-size:1px;line-height:1px;height:0;width:100%;border-top:1px solid #a4bed5;overflow:hidden;}div.dhx_popup_dhx_skyblue div.dhx_popup_area td.dhx_popup_td:first-child{padding-left:16px;}div.dhx_popup_dhx_skyblue div.dhx_popup_area td.dhx_popup_td:last-child{padding-right:16px;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr:hover td.dhx_popup_td{background-color:#b5d8ff;border-top:1px solid #8dcef4;border-bottom:1px solid #8dcef4;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode:hover td.dhx_popup_td{background:none;border-top:1px solid #e7f1ff;border-bottom:1px solid #e7f1ff;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td{padding-top:8px!important;padding-bottom:8px!important;height:auto;line-height:inherit;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td .dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue{position:relative!important;background-image:none;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td div.dhxtree_dhx_skyblue{background:none;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td div.dhxeditor_dhx_skyblue{border:1px solid #a4bed4;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td .dhxform_obj_dhx_skyblue div.dhxeditor_dhx_skyblue{border-width:0;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td div.dhtmlxcp_dhx_skyblue div.dhxcp_g_area{position:relative;background-color:#e7f1ff;border:0 solid white;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td div.dhtmlxcp_dhx_skyblue div.dhxcp_g_area div.dhxcp_sub_area{background:#e7f1ff;}div.dhx_popup_dhx_skyblue div.dhx_popup_area tr.dhxnode td.dhx_popup_td div.dhxcarousel_cont{background-color:#e7f1ff;}div.dhx_popup_dhx_skyblue div.dhx_popup_area.dhx_popup_area_ie{box-shadow:0 0 6px #ccc;}div.dhx_popup_dhx_skyblue div.dhx_popup_area.dhx_popup_area_ie tr.dhxnode td.dhx_popup_td{height:1em;line-height:1em;}div.dhx_popup_dhx_skyblue div.dhx_popup_area.dhx_popup_area_ie td.dhx_popup_td.dhx_popup_td_single{padding-left:16px;padding-right:16px;}div.dhx_popup_dhx_skyblue div.dhx_popup_area.dhx_popup_area_ie td.dhx_popup_td.dhx_popup_td_first{padding-left:16px;}div.dhx_popup_dhx_skyblue div.dhx_popup_area.dhx_popup_area_ie td.dhx_popup_td.dhx_popup_td_last{padding-right:16px;}div.dhx_popup_dhx_skyblue div.dhx_popup_area.dhx_popup_area_ie tr.tr_hover td.dhx_popup_td{background-color:#b5d8ff;border-top:1px solid #8dcef4;border-bottom:1px solid #8dcef4;}div.dhx_popup_dhx_skyblue div.dhx_popup_arrow{position:absolute;background-repeat:no-repeat;}div.dhx_popup_dhx_skyblue div.dhx_popup_arrow.dhx_popup_arrow_bottom{width:19px;height:16px;background-image:url("imgs/dhxpopup_skyblue/dhxpopup_arrow_bottom.gif");background-position:top center;}div.dhx_popup_dhx_skyblue div.dhx_popup_arrow.dhx_popup_arrow_top{width:19px;height:16px;background-image:url("imgs/dhxpopup_skyblue/dhxpopup_arrow_top.gif");background-position:bottom center;}div.dhx_popup_dhx_skyblue div.dhx_popup_arrow.dhx_popup_arrow_right{width:16px;height:19px;background-image:url("imgs/dhxpopup_skyblue/dhxpopup_arrow_right.gif");background-position:center left;}div.dhx_popup_dhx_skyblue div.dhx_popup_arrow.dhx_popup_arrow_left{width:16px;height:19px;background-image:url("imgs/dhxpopup_skyblue/dhxpopup_arrow_left.gif");background-position:center right;}div.dhx_popup_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxmenu_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhtmlxMenu_dhx_skyblue_Middle{position:relative;height:30px;border:none;overflow:hidden;background-color:#ebebeb;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxMenu_dhx_skyblue_Middle div.top_sep{float:left;position:relative;height:22px;width:0;border-left:1px solid #ddd;margin:4px 2px 0 0;line-height:1px;font-size:1px;overflow:hidden;cursor:default;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxMenu_dhx_skyblue_Middle img.dhtmlxMenu_TopLevel_Item_Icon{float:left;margin:2px 3px 0 3px;width:18px;height:18px;}.dhtmlxMenu_dhx_skyblue_Middle div.dhtmlxMenu_TopLevel_Text_right{position:absolute;top:8px;left:none;right:8px;font-family:Tahoma,Helvetica;font-size:11px;color:black;cursor:default;}.dhtmlxMenu_dhx_skyblue_Middle div.dhtmlxMenu_TopLevel_Text_left{position:absolute;top:8px;right:none;left:8px;font-family:Tahoma,Helvetica;font-size:11px;color:black;cursor:default;}.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,Helvetica;font-size:11px;color:black;cursor:default;white-space:nowrap;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;height:22px;line-height:22px;vertical-align:middle;margin:3px 2px 0 0;padding:0 3px;}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:0 3px;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Normal,div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Disabled{border:1px solid #ebebeb;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Disabled{color:#999!important;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Selected{border:1px solid #a1ceed;background-color:#b5deff;color:black;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon{position:absolute;border:1px solid #a4bed4;box-shadow:0 0 3px #ccc;padding:3px 0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px;background-color:#e7f1ff;overflow:hidden;cursor:default;line-height:normal;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td{font-family:Tahoma,Helvetica;font-size:11px;color:black;line-height:normal;padding:0 3px;border-top:1px solid #e7f1ff;border-bottom:1px solid #e7f1ff;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_selected td{background-color:#b5deff;border-top:1px solid #a1ceed;border-bottom:1px solid #a1ceed;color:black;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_selected div.sub_item_hk{color:#333!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_icon{width:18px;text-align:center;vertical-align:middle;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_icon img.sub_icon{float:left;margin:0;width:18px;height:18px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_item_text{padding:0 12px 0 1px;height:22px;line-height:21px;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,Helvetica;font-size:10px;color:#4d4d4d;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:#9b9b9b!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.complex_arrow{width:4px;margin:0 2px 0 5px;height:22px;background-image:url("imgs/dhxmenu_skyblue/dhxmenu_subar.gif");background-repeat:no-repeat;background-position:0 0;overflow:hidden;font-size:1px;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_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.complex_arrow_loading{width:11px;height:22px;background-position:center center;background-repeat:no-repeat;background-image:url("imgs/dhxmenu_skyblue/dhxmenu_loader.gif");float:right;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_icon{float:left;margin:0;width:18px;height:18px;background-position:top right;background-repeat:no-repeat;background-image:url("imgs/dhxmenu_skyblue/dhxmenu_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;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon tr.sub_sep td{padding:2px 0;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon div.sub_sep{position:static;font-size:1px;line-height:1px;height:1px;width:100%;border-top:1px solid #a4bed4;}iframe.dhtmlxMenu_IE6CoverFix_dhx_skyblue{position:absolute;border:none;background:#000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Over,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Disabled{position:relative;font-size:1px;border-bottom:1px solid #a4bed4;background-image:url("imgs/dhxmenu_skyblue/dhxmenu_arrow_up.gif");background-repeat:no-repeat;background-position:center center;padding:8px 0;margin-bottom:3px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Disabled{background-image:url("imgs/dhxmenu_skyblue/dhxmenu_arrow_up_dis.gif");}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Over,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Disabled{position:relative;font-size:1px;border-top:1px solid #a4bed4;background-image:url("imgs/dhxmenu_skyblue/dhxmenu_arrow_down.gif");background-repeat:no-repeat;background-position:center center;padding:8px 0;margin-top:3px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Disabled{background-image:url("imgs/dhxmenu_skyblue/dhxmenu_arrow_down_dis.gif");}.dhtmlxribbon_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{background-color:#fff;border:1px solid #a4bed4;}.dhtmlxribbon_dhx_skyblue{overflow:hidden;width:100%;background-color:#e7f1ff;}.dhtmlxribbon_dhx_skyblue .dhxrb_background_area{height:115px;background-color:#e7f1ff;margin:1px;}.dhtmlxribbon_dhx_skyblue .dhxrb_with_tabbar{height:145px;}.dhtmlxribbon_dhx_skyblue div.dhx_cell_tabbar{background-color:#e7f1ff!important;}.dhtmlxribbon_dhx_skyblue .dhxrb_g_area{height:115px;float:left;clear:left;overflow:hidden;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_base{margin:3px;float:left;border:1px solid #a4bed4;background-color:#ddebff;border-radius:2px;height:106px;overflow:hidden;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_base .dhxrb_block_items{height:84px;float:left;padding:2px 0;overflow:hidden;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_base>.dhxrb_block_label{height:18px;line-height:17px;*height:auto;*line-height:1em;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_base .dhxrb_block_label{text-align:center;clear:left;font-family:Tahoma,Helvetica;font-size:11px;color:#5f85bb;background-color:#d3e7ff;*padding:1px 3px 4px;*font-size:11px;*font-family:Tahoma,FreeSans;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button{margin:0 2px 5px;float:left;text-align:center;padding:4px 6px;height:72px;border-radius:2px;border:1px solid #ddebff;font-family:Tahoma,Helvetica;font-size:11px;color:black;background-color:#ddebff;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button .dhxrb_image{width:48px;height:48px;border:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button .dhxrb_label_button{margin:0 auto;cursor:default;font-family:Tahoma,Helvetica;font-size:11px;color:black;line-height:10px;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button .dhxrb_invisible{visibility:hidden;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_block{float:left;margin:0 2px 5px;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_block .dhxrb_invisible{display:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_button{height:21px;margin:1px 3px;float:left;clear:left;padding:3px 4px 0 4px;border-radius:2px;border:1px solid #ddebff;font-family:Tahoma,Helvetica;font-size:11px;color:black;background-color:#ddebff;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_row{height:20px;margin:1px 3px;float:left;padding:3px 4px 1px;white-space:nowrap;overflow:hidden;border-radius:2px;border:1px solid #ddebff;font-family:Tahoma,Helvetica;font-size:11px;color:black;background-color:#ddebff;}.dhtmlxribbon_dhx_skyblue .dhxrb_group .dhxrb_buttoncombo_cont{height:22px;padding:0 2px!important;overflow:hidden;white-space:nowrap;float:left;}.dhtmlxribbon_dhx_skyblue .dhxrb_buttoncombo_cont{height:24px;padding:1px 2px!important;}.dhtmlxribbon_dhx_skyblue .dhxrb_buttoncombo{float:left;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_row .dhxrb_slider,.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_button .dhxrb_slider{float:left;margin-right:5px;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_row center,.dhtmlxribbon_dhx_skyblue .dhxrb_in_group center,.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_button center{float:left;margin:0;padding:0;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_group .dhxrb_slider{float:left;margin-right:5px;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button .dhxrb_slider{width:16px;margin:2px 0;height:50px;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_group{height:19px;float:left;padding:2px 4px 1px;border:1px solid #fff;}.dhtmlxribbon_dhx_skyblue .dhxrb_input{float:left;border:1px solid #a4bed4;height:14px;width:80px;font-family:Tahoma,Helvetica;font-size:11px;color:black;padding:1px 2px;}.dhtmlxribbon_dhx_skyblue .dhxrb_input:disabled{border:1px solid #ccc;background-color:#fafafa;color:#b2b2b2;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_button .dhxrb_image,.dhtmlxribbon_dhx_skyblue .dhxrb_in_row .dhxrb_image,.dhtmlxribbon_dhx_skyblue .dhxrb_in_group .dhxrb_image{width:18px;height:18px;float:left;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_button .dhxrb_label_button,.dhtmlxribbon_dhx_skyblue .dhxrb_in_row .dhxrb_label_button,.dhtmlxribbon_dhx_skyblue .dhxrb_in_group .dhxrb_label_button{float:left;cursor:default;margin:2px 4px 2px 6px;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhtmlxribbon_dhx_skyblue .dhxrb_buttoncombo_cont .dhxrb_label_button{float:left;margin-left:3px;height:18px;line-height:18px;cursor:default;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhtmlxribbon_dhx_skyblue .dhxrb_label_checkbox{float:left;margin:2px 4px;cursor:default;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhtmlxribbon_dhx_skyblue .dhxrb_disable_text_style,.dhtmlxribbon_dhx_skyblue .dhxrb_item_disable .dhxrb_label_checkbox{color:#999!important;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_highlight0{border:1px solid #a4bed4;background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);background:-webkit-linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_highlight1{border:1px solid #a4bed4;background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 3px #afc1d4 inset;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_group .dhxrb_highlight0{border:1px solid #ddedff;}.dhtmlxribbon_dhx_skyblue .dhxrb_group .dhxrb_highlight1{background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 3px #afc1d4 inset;border:0;padding:3px 5px 2px 5px;}.dhtmlxribbon_dhx_skyblue .dhxrb_item_hide{display:none!important;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_rows{float:left;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_row{float:left;clear:left;margin:0 2px;height:28px;overflow:hidden;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_arrow{padding:0 5px;margin-left:2px;background:url("imgs/dhxribbon_skyblue/dhxribbon_arrow.gif") no-repeat 50%;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_block .dhxrb_group{border:1px solid #a4bed4;background:#e7f1ff;height:24px;border-radius:2px;float:left;clear:left;margin:1px 3px;overflow:hidden;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_block_row .dhxrb_group{border:1px solid #a4bed4;background:#e7f1ff;height:24px;border-radius:2px;float:left;margin:1px 3px;overflow:hidden;position:relative;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_group .dhxrb_label_hide{display:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_separator_groupp{height:24px;width:0;border-left:1px solid #c4deff;overflow:hidden;float:left;}.dhtmlxribbon_dhx_skyblue .dhxrb_checked.dhxrb_item_disable>.dhxrb_checkbox{background-image:url("imgs/dhxribbon_skyblue/dhxribbon_checked_dis.gif");background-repeat:no-repeat;}.dhtmlxribbon_dhx_skyblue .dhxrb_checked .dhxrb_checkbox{background-image:url("imgs/dhxribbon_skyblue/dhxribbon_checked.gif");background-repeat:no-repeat;}.dhtmlxribbon_dhx_skyblue .dhxrb_item_disable .dhxrb_checkbox{border:1px solid #aaa;background-color:#eee;}.dhtmlxribbon_dhx_skyblue .dhxrb_checkbox{border:1px solid #a4bed4;background-color:#fff;float:left;width:12px;height:12px;margin-top:2px;overflow:hidden;}.dhtmlxribbon_dhx_skyblue .dhxrb_item_text{font-family:Tahoma,Helvetica;font-size:13px;color:#256488;}.dhtmlxribbon_dhx_skyblue .dhxrb_in_group .dhxrb_item_text{height:19px;line-height:18px;*float:left;*clear:left;}.dhtmlxribbon_dhx_skyblue .dhxrb_3rows_button .dhxrb_item_text,.dhtmlxribbon_dhx_skyblue .dhxrb_in_row .dhxrb_item_text{font-family:Tahoma,Helvetica;font-size:14px;color:#256488;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button .dhxrb_item_text{font-family:Tahoma,Helvetica;font-size:30px;color:#256488;line-height:72px;height:72px;float:left;clear:left;}.dhxtoolbar_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhx_toolbar_dhx_skyblue{border:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);position:relative;padding:0 5px;height:30px;line-height:normal;cursor:default;overflow:hidden;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhx_toolbar_dhx_skyblue div.dhxtoolbar_float_left{float:left;}.dhx_toolbar_dhx_skyblue div.dhxtoolbar_float_right{float:right;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw{position:relative;float:left;margin-top:2px;padding:2px 3px;*padding-bottom:4px;margin-right:1px;line-height:normal;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;height:22px;*height:20px;overflow:hidden;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_dis,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw.dhxtoolbar_btn_dis{color:#999;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_over,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw.dhxtoolbar_btn_over{border:1px solid #a4bed4;border-radius:2px;padding:1px 2px;*padding-bottom:3px;background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);background:-webkit-linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_pres,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw.dhxtoolbar_btn_pres{border:1px solid #a4bed4;border-radius:2px;padding:1px 2px;*padding-bottom:3px;background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 5px rgba(127,127,127,0.15) inset;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_pres_dis{color:#999;border:1px solid #c9c9c9;border-radius:2px;padding:1px 2px;*padding-bottom:3px;background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 5px rgba(127,127,127,0.15) inset;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn img{float:left;margin:2px;width:18px;height:18px;cursor:default;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn .dhxtoolbar_input{position:relative;float:left;border:1px solid #a4bed4;background-color:white;margin:1px;padding:2px 4px 3px 4px;font-family:Tahoma,Helvetica;font-size:11px;color:black;line-height:normal;direction:ltr;outline:none;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn .dhxtoolbar_input:disabled{background-color:#e7eef8;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn div.dhxtoolbar_text,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw div.arwimg{float:left;font:inherit;height:18px;line-height:17px;margin:2px 4px;padding:0;cursor:default;overflow:hidden;white-space:nowrap;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw{margin-left:-3px;z-index:1;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw div.arwimg{margin:2px 0;padding:0 3px;background-image:url("imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow.gif");background-position:center center;background-repeat:no-repeat;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_arw.dhxtoolbar_btn_dis div.arwimg{background-image:url("imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow_dis.gif");}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_sep{float:left;border-left:1px solid #c0d9ec;height:20px;margin:5px 6px 0 5px;overflow:hidden;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_text{float:left;vertical-align:middle;margin-top:3px;padding:3px 5px;line-height:17px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_bg_l,.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_bg_m,.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_bg_r{float:left;height:5px;line-height:1px;margin:8px 0 6px 0;padding:0;width:2px;font-size:1px;border-top:1px solid #a4bed5;border-bottom:1px solid #a4bed5;background-color:#e7f1ff;overflow:hidden;}.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_bg_l{margin-left:4px;border-left:1px solid #a4bed5;border-top-left-radius:2px;border-bottom-left-radius:2px;}.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_bg_r{margin-right:4px;border-right:1px solid #a4bed5;border-top-right-radius:2px;border-bottom-right-radius:2px;}.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_pen,.dhx_toolbar_dhx_skyblue div.dhxtoolbar_sl_pen.dhxtoolbar_over{position:absolute;top:5px;width:7px;height:14px;border:1px solid #a4bed4;background-color:#e1eeff;background:linear-gradient(#e1eeff,#d4e7ff);background:-webkit-linear-gradient(#e1eeff,#d4e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e1eeff,endColorStr=#d4e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);border-radius:1px;cursor:default;font-size:1px;line-height:1px;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_dis div.dhxtoolbar_sl_pen{border-color:#c9c9c9;background-color:#e5e5e5;background:linear-gradient(#e5e5e5,#e0e0e0);background:-webkit-linear-gradient(#e5e5e5,#e0e0e0);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e5e5e5,endColorStr=#e0e0e0) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_dis div.dhxtoolbar_sl_bg_l,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_dis div.dhxtoolbar_sl_bg_m,.dhx_toolbar_dhx_skyblue div.dhx_toolbar_btn.dhxtoolbar_btn_dis div.dhxtoolbar_sl_bg_r{border-color:#c9c9c9;background-color:#e9e9e9;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24{height:36px!important;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_btn,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_arw{height:28px;*height:26px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_btn img{width:24px;height:24px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_btn div.dhxtoolbar_text,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_arw div.arwimg{height:24px;line-height:23px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_text{padding-top:6px;padding-bottom:6px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_sep{height:26px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhxtoolbar_sl_bg_l,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhxtoolbar_sl_bg_m,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhxtoolbar_sl_bg_r{margin-top:11px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhxtoolbar_sl_pen{top:8px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_24 div.dhx_toolbar_btn .dhxtoolbar_input{margin-top:4px;margin-bottom:4px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32{height:44px!important;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_btn,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_arw{height:36px;*height:34px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_btn img{width:32px;height:32px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_btn div.dhxtoolbar_text,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_arw div.arwimg{height:32px;line-height:31px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_text{padding-top:10px;padding-bottom:10px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_sep{height:34px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhxtoolbar_sl_bg_l,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhxtoolbar_sl_bg_m,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhxtoolbar_sl_bg_r{margin-top:15px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhxtoolbar_sl_pen{top:12px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_32 div.dhx_toolbar_btn .dhxtoolbar_input{margin-top:8px;margin-bottom:8px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48{height:60px!important;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_btn,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_arw{height:52px;*height:50px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_btn img{width:48px;height:48px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_btn div.dhxtoolbar_text,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_arw div.arwimg{height:48px;line-height:47px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_text{padding-top:18px;padding-bottom:18px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_sep{height:50px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhxtoolbar_sl_bg_l,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhxtoolbar_sl_bg_m,.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhxtoolbar_sl_bg_r{margin-top:23px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhxtoolbar_sl_pen{top:20px;}.dhx_toolbar_dhx_skyblue.dhxtoolbar_icons_48 div.dhx_toolbar_btn .dhxtoolbar_input{margin-top:16px;margin-bottom:16px;}div.dhx_toolbar_poly_dhx_skyblue{position:absolute;border:1px solid #a4bed4;box-shadow:0 0 3px #ccc;padding:3px 0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-right-radius:2px;background-color:#e7f1ff;overflow:hidden;cursor:default;line-height:normal;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);}div.dhx_toolbar_poly_dhx_skyblue td{font-family:Tahoma,Helvetica;font-size:11px;color:black;line-height:normal;padding:0 3px;border-top:1px solid #e7f1ff;border-bottom:1px solid #e7f1ff;}div.dhx_toolbar_poly_dhx_skyblue .tr_btn_over td,div.dhx_toolbar_poly_dhx_skyblue .tr_btn_selected td{background-color:#b5deff;border-top:1px solid #a1cef4;border-bottom:1px solid #a1cef4;}div.dhx_toolbar_poly_dhx_skyblue .tr_btn_disabled td{color:#999;}div.dhx_toolbar_poly_dhx_skyblue td.td_btn_img{width:18px;text-align:center;}div.dhx_toolbar_poly_dhx_skyblue td.td_btn_img img.btn_sel_img{width:18px;height:18px;}div.dhx_toolbar_poly_dhx_skyblue td.td_btn_txt div.btn_sel_text{padding:0 12px 0 1px;height:22px;line-height:21px;overflow:hidden;}div.dhx_toolbar_poly_dhx_skyblue tr.tr_sep td{padding:2px 0;}div.dhx_toolbar_poly_dhx_skyblue div.btn_sep{position:relative;font-size:1px;line-height:1px;height:0;width:100%;border-top:1px solid #a4bed5;}div.dhx_toolbar_slider_label_dhx_skyblue{position:absolute;border:1px solid #a4bed4;box-shadow:0 0 3px #ccc;background-color:#e7f1ff;padding:5px 8px;border-radius:2px;overflow:hidden;cursor:default;line-height:normal;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.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;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging,.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging,.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging{position:relative;height:32px;line-height:31px;margin-top:-1px;overflow:hidden;white-space:nowrap;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging{margin-top:0;height:31px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging{position:relative;height:32px;line-height:31px;margin-top:3px;overflow:hidden;white-space:nowrap;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging .dhx_toolbar_dhx_skyblue,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_statusbar_def div.dhx_cell_statusbar_paging .dhx_toolbar_dhx_skyblue{border-width:0;background-image:none;}.dhxeditor_dhx_skyblue{position:relative;}.dhxeditor_dhx_skyblue iframe.dhxeditor_mainiframe{position:absolute;overflow:hidden;top:0;left:0;width:100%;height:100%;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb{position:relative;height:30px;padding:0 5px;border-bottom:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb div.dhx_cell_stb_button{float:left;position:relative;width:18px;height:18px;font-size:2px;margin-left:5px;margin-top:7px;cursor:pointer;background-image:url("imgs/dhxeditor_skyblue/buttons.gif");opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb div.dhx_cell_stb_button.btn_bold{margin-left:5px;background-position:0 0;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb div.dhx_cell_stb_button.btn_italic{background-position:-18px 0;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb div.dhx_cell_stb_button.btn_underline{background-position:-36px 0;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb div.dhx_cell_stb_button.btn_clearformat{background-position:-54px 0;}.dhxeditor_dhx_skyblue div.dhx_cell_editor{position:absolute;background-color:white;margin:0;padding:0;overflow:hidden;cursor:default;z-index:0;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_cont_editor{position:absolute;overflow:hidden;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_toolbar_def{position:relative;overflow:hidden;}.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;border-left-width:0;border-right-width:0;}div.dhxform_item_template div.dhx_cell_editor div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-left-width:1px;border-right-width:1px;border-top-width:1px;}.dhxwins_vp_dhx_skyblue div.dhx_cell_cont_wins div.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb,.dhxwins_vp_dhx_skyblue div.dhx_cell_cont_wins div.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;}.dhxwins_vp_dhx_skyblue div.dhx_cell_cont_wins div.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_cont_editor{border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;}.dhxwins_vp_dhx_skyblue div.dhx_cell_cont_wins div.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_toolbar_def{padding:0;}.dhxeditor_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhx_tooltip{display:none;position:absolute;font-family:Tahoma,Helvetica;color:#626262;font-size:11px;z-index:10000;padding:4px 10px 4px 10px;border:1px solid #fff;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-moz-box-shadow:0 0 3px #d9d9d9;-webkit-box-shadow:0 0 3px #d9d9d9;text-shadow:0 1px 1px #fff;box-shadow:0 0 5px #d9d9d9;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#efefef),color-stop(0.5,#f6f6f6),color-stop(1,#efefef));background:-o-linear-gradient(#efefef 0,#f6f6f6 50%,#efefef 100%);background:-ms-linear-gradient(#efefef 0,#f6f6f6 50%,#efefef 100%);background:-moz-linear-gradient(#efefef 0,#f6f6f6 50%,#efefef 100%);background:#efefef;}.dhx_chart{position:relative;font-family:Tahoma,Helvetica;font-size:11px;color:black;overflow:hidden;z-index:0;}.dhx_chart canvas{position:absolute;left:0;top:0;}.dhx_canvas_text{position:absolute;text-align:center;overflow:hidden;white-space:nowrap;z-index:1000;}.dhx_map_img{width:100%;height:100%;position:absolute;top:0;left:0;border:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);opacity:0;}.dhx_axis_item_y{position:absolute;height:18px;line-height:18px;margin-top:-4px;text-align:right;}.dhx_axis_title_x{text-align:center;}.dhx_axis_title_y{text-align:center;font-family:Tahoma,Helvetica;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);height:18px;line-height:18px;font-size:11px;}.dhx_ie_filter{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);zoom:1;font-family:serif;}.dhx_chart_legend{position:absolute;z-index:1000;}.dhx_chart_legend_item{height:18px;line-height:18px;padding:2px;cursor:pointer;}.dhx_chart_legend_item.hidden{color:#aaa;}.dhx_axis_item_y.dhx_radar{color:#666;font-size:12px;padding-right:3px;height:13px;line-height:13px;margin-top:0;}.dhx_canvas_text.dhx_axis_radar_title{margin-top:0;padding-top:0;}.dhx_axis_item_y,.dhx_axis_item_x{color:#666;}.dhx_axis_item_x{padding-top:2px;}.dhx_tooltip{display:none;position:absolute;font-family:Tahoma,Helvetica;color:#626262;font-size:11px;z-index:10000;padding:4px 10px 4px 10px;border:1px solid #fff;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;-moz-box-shadow:0 0 3px #d9d9d9;-webkit-box-shadow:0 0 3px #d9d9d9;text-shadow:0 1px 1px #fff;box-shadow:0 0 5px #d9d9d9;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#efefef),color-stop(0.5,#f6f6f6),color-stop(1,#efefef));background:-o-linear-gradient(#efefef 0,#f6f6f6 50%,#efefef 100%);background:-ms-linear-gradient(#efefef 0,#f6f6f6 50%,#efefef 100%);background:-moz-linear-gradient(#efefef 0,#f6f6f6 50%,#efefef 100%);background:#efefef;}.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;-webkit-overflow-scrolling:touch;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:#fff;}.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:#a1ceed;color:#b5deff;border-color:#a1ceed;background-repeat:repeat-x;}.dhx_dataview_item{font-family:Tahoma,Helvetica;font-size:11px;color:black;}.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/dhxdataview_skyblue/marker.png");background-repeat:repeat-x;}.dhx_pager_item,.dhx_pager_item_selected{float:left;text-align:center;height:16px;font-family:Tahoma,Helvetica;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;}.dhx_list{overflow-y:auto;-webkit-overflow-scrolling:touch;overflow-x:hidden;-moz-user-select:none;-moz-user-select:-moz-none;-khtml-select:none;}.dhx_list_default_item,.dhx_list_default_item_selected{cursor:pointer;background-color:#fff;}.dhx_list .dhx_list_default_item,.dhx_list .dhx_list_default_item_selected{border-right:1px solid #a4bed4;border-bottom:1px dotted #a4bed4;}.dhx_list_default_item_selected{background-color:#a1ceed;color:#b5deff;border-color:#a1ceed;background-repeat:repeat-x;}.dhx_list_item{font-family:Tahoma,Helvetica;font-size:11px;color:black;box-sizing:border-box;}.dhx_list_item textarea{resize:none;margin-top:-8px;}.dhx_list_item .dhx_strong{font-weight:bold;display:block;padding-bottom:6px;}.dhx_list_default_item_selected .dhx_light{color:#C3C3C3;}.dhx_list_item .dhx_light{color:#919191;}.defaultTreeTable{margin:0;padding:0;border:0;}.containerTableStyle{overflow:auto;-webkit-overflow-scrolling:touch;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:Tahoma,Helvetica;font-size:12px;-moz-user-select:none;}.selectedTreeRow{background-color:navy;color:white;font-family:Tahoma,Helvetica;font-size:12px;-moz-user-select:none;}.dragAndDropRow{background-color:navy;color:white;}.standartTreeRow_lor{text-decoration:underline;background-color:#fff;font-family:Tahoma,Helvetica;font-size:12px;-moz-user-select:none;}.selectedTreeRow_lor{text-decoration:underline;background-color:navy;color:white;font-family:Tahoma,Helvetica;font-size:12px;-moz-user-select:none;}.standartTreeImage{height:24px;overflow:hidden;border:0;padding:0;margin:0;font-size:1px;}.standartTreeImage img{width:18px;height:24px;background-position:center center;background-repeat:no-repeat;border:0;padding:0;margin:0;font-size:1px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.hiddenRow{width:1px;overflow:hidden;}.dragSpanDiv,.dragSpanDiv td{font-family:Tahoma,Helvetica;font-size:12px;background-color:#fff;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;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhx_bg_img_fix{width:18px;height:24px;background-repeat:no-repeat;background-position:center;background-position-x:center;background-position-y:center;}.dhxtree_dhx_skyblue{background-color:#fff;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,Helvetica;font-size:12px;overflow:hidden;padding:0;}.dhxtree_dhx_skyblue .selectedTreeRow_lor,.dhxtree_dhx_skyblue .selectedTreeRow{background-color:#b5deff;background-repeat:repeat-x;border:1px solid #a1ceed;color:black;line-height:17px;font-family:Tahoma,Helvetica;font-size:12px;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;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;padding-top:0;box-sizing:border-box;line-height:12px;height:13px;}.dhxtree_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}div.gridbox{overflow:hidden;text-align:left;}.dhx_sub_row{background-color:#fff;}div.gridbox table.obj{height:1px;}div.gridbox table.hdr td{line-height:normal;border:1px solid;border-color:#fff Gray Gray #fff;text-align:center;margin:0;padding:7px 0 7px 0;font-weight:normal;overflow:hidden;empty-cells:show;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}div.gridbox table.hdr td div.hdrcell{overflow:hidden;}div.gridbox table.obj td{border:1px solid;border-color:#fff Gray Gray #fff;overflow:hidden;padding-top:0;padding-bottom:0;empty-cells:show;white-space:normal;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}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:#fff;position:relative;-webkit-overflow-scrolling:touch;}div.gridbox table.obj td span.space,div.gridbox table.obj td img.space{width:18px;}div.gridbox table.obj td.editable{-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;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-family:Tahoma,Helvetica;font-size:12px;border:1px gray solid;background-color:#fff;z-index:999;}.dhx_combo_select{border:1px solid;border-color:black silver silver black;background-color:#fff;overflow:auto;cursor:default;position:absolute;height:auto;z-index:600;}.dhx_combo_edit{width:100%;border:0;padding:0;padding-right:1px!ie;margin:0;overflow:hidden;}.gridbox_dhx_skyblue textarea.dhx_combo_edit{margin-bottom:-6px;}.dhx_textarea{border:1px solid;border-color:black silver silver black;position:absolute;height:100px;z-index:600;}.dhx_clist{background-color:#fff;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 .pagingCurrentPage{font-weight:bold;cursor:default;}div.pagingBlock .pagingPage{cursor:pointer;text-decoration:underline;}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{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);background-color:yellow;border:1px dotted black;}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;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{background-color:#D4D0C8;border:1px solid;border-color:#fff Gray Gray #fff;text-align:center;margin:0;padding:5px 20px 5px 20px;font-weight:normal;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);}.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.gridboxgridbox_dhx_skyblue div.ftr td{text-align:right;color:black;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);border-color:#a4bed4;}div.gridbox td.filter input,div.gridbox td.filter select{width:90%;font-size:8pt;font-family:Tahoma;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text;}div.gridbox .filter input::-ms-clear{display:none;}div.gridbox_dhx_skyblue.gridbox .ftr,div.gridbox_dhx_skyblue.gridbox .xhdr{color:black;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}div.gridbox_dhx_skyblue.isModern table.hdr tr td{color:black;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}div.gridbox_dhx_skyblue.isIE table.hdr tr{color:black;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}div.gridbox_dhx_skyblue.gridbox table.obj tr td{border-width:0;padding-right:4px;padding-left:4px;}div.gridbox_dhx_skyblue.gridbox table.hdr td div.hdrcell{padding-left:10px;width:auto;}div.gridbox_dhx_skyblue.gridbox table.hdr td{border-width:1px 1px 1px 1px;border-color:#e7f1ff #a4bed4 #a4bed4 #e7f1ff;background-color:transparent;font-family:Tahoma,Helvetica;font-size:12px;color:black;vertical-align:top;text-align:left;position:relative;}div.gridbox_dhx_skyblue.gridbox{border:1px solid #a4bed4;}div.gridbox_dhx_skyblue.gridbox table.obj{font-family:Tahoma,Helvetica;font-size:12px;color:black;}div.gridbox_dhx_skyblue.gridbox table.obj tr td{padding-top:3px;padding-bottom:3.2px;}* html .gridbox_dhx_skyblue.gridbox .obj td{height:auto;padding-top:3px;padding-bottom:3px;}div.gridbox_dhx_skyblue.gridbox table.obj.row20px tr td{height:23px;}div.gridbox_dhx_skyblue.gridbox table.obj tr td{padding-top:1px;padding-bottom:1px;border-right:1px solid #fff;border-top:1px solid #fff;border-bottom:1px solid #fff;}div.gridbox_dhx_skyblue.isModern table.obj.row20px tr td{line-height:23px;}div.gridbox_dhx_skyblue table.obj.row20px tr td.editable{height:21px;line-height:21px;}div.gridbox_dhx_skyblue table.obj.row20px tr td.editable .treegrid_cell{margin-top:-2px;height:21px;}div.gridbox_dhx_skyblue.gridbox table.obj tr td.editable div.treegrid_cell{padding:1px 4px!important;}div.gridbox_dhx_skyblue.gridbox table.obj tr.rowselected{background-color:#b5deff;}div.gridbox_dhx_skyblue.gridbox table.obj tr.rowselected td{background-color:#b5deff;color:black;}div.gridbox_dhx_skyblue.gridbox table.obj tr.rowselected td,div.gridbox_dhx_skyblue.gridbox table.obj tr.odd_dhx_skyblue.rowselected td{background-color:#b5deff;border-top:1px solid #a1ceed;border-bottom:1px solid #a1ceed;border-right:1px solid #b5deff;}div.gridbox_dhx_skyblue.gridbox table.obj tr td.cellselected{background-color:#b5deff;}div.gridbox_dhx_skyblue.gridbox table.obj tr.odd_dhx_skyblue{background:#ebf3ff;border-top:1px solid #ebf3ff;border-bottom:1px solid #ebf3ff;}div.gridbox_dhx_skyblue.gridbox table.obj tr.odd_dhx_skyblue{background:#ebf3ff;}.dhx_combo_select,.gridbox_dhx_skyblue.gridbox .dhx_combo_edit,.gridbox_dhx_skyblue.gridbox .dhx_textarea,dhx_dragColDiv,div.gridbox div.ftr td,div.pagingBlock,span.recordsInfoBlock{font-family:Tahoma,Helvetica;font-size:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;}.gridbox_dhx_skyblue .dhx_combo_edit{padding:1px 0 1px 1px;}.gridbox_dhx_skyblue.isIE .dhx_combo_edit{padding:0 0 0 1px;}.gridbox_dhx_skyblue.gridbox .dhx_sub_row{background-color:transparent;}.dhx_header_cmenu{background-color:#fff;border:2px outset silver;z-index:2;}.dhx_header_cmenu_item{white-space:nowrap;}.dhx_pbox{margin-top:3px;border:1px solid #D4D0C8;border-top:0;font-size:10px;}.dhx_pline{background-color:white;margin:-15px 10px 10px 10px;padding:0 5px 0 5px;float:left;}.dhx_page,.dhx_pager_info{margin:3px;text-align:center;font-family:tahoma;font-size:12px;float:left;cursor:pointer;color:black;background-color:gray;padding:1px;}.dhx_pager_info{white-space:nowrap;background-color:white;margin:-8px 10px 10px 10px;padding:0 5px 0 5px;cursor:default;}.dhx_page div{background-color:white;width:16px;height:17px;vertical-align:middle;}div.dhx_page_active{font-weight:bold;background-color:lightgrey;cursor:default;color:white;}.dhx_pbox_modern{margin-top:3px;border:1px solid #D6D6D6;border-top:0;font-size:10px;}.dhx_pline_modern{background-color:white;margin:-15px 10px 10px 10px;padding:0 5px 0 5px;float:left;}.dhx_page_modern,.dhx_pager_info_modern{margin:3px;text-align:center;font-family:tahoma;font-size:12px;float:left;cursor:pointer;color:#055A78;background-color:#D6D6D6;padding:1px;}.dhx_pager_info_modern{white-space:nowrap;background-color:white;margin:-8px 10px 10px 10px;padding:0 5px 0 5px;cursor:default;}.dhx_page_modern div{background-color:white;width:16px;height:17px;vertical-align:middle;}div.dhx_page_active_modern{font-weight:bold;background-color:#055A78;cursor:default;color:white;}.dhx_pbox_light{margin-top:3px;border:1px solid #C2D5DC;border-top:0;font-size:10px;}.dhx_pline_light{background-color:white;margin:-15px 10px 10px 10px;padding:0 5px 0 5px;float:left;}.dhx_page_light,.dhx_pager_info_light{margin:3px;text-align:center;font-family:tahoma;font-size:12px;float:left;cursor:pointer;color:#055A78;background-color:#93AFBA;padding:1px;}.dhx_pager_info_light{white-space:nowrap;background-color:white;margin:-8px 10px 10px 10px;padding:0 5px 0 5px;cursor:default;}.dhx_page_light div{background-color:white;width:16px;height:17px;vertical-align:middle;}div.dhx_page_active_light{font-weight:bold;background-color:#D1DFE3;cursor:default;color:white;}.dhx_pbox_skyblue{margin-top:3px;border:1px solid #C2D5DC;border-top:0;font-size:10px;}.dhx_pline_skyblue{background-color:white;margin:-15px 10px 10px 10px;padding:0 5px 0 5px;float:left;}.dhx_page_skyblue,.dhx_pager_info_skyblue{margin:3px;text-align:center;font-family:tahoma;font-size:12px;float:left;cursor:pointer;color:#055A78;background-color:#93AFBA;padding:1px;}.dhx_pager_info_skyblue{white-space:nowrap;background-color:white;margin:-8px 10px 10px 10px;padding:0 5px 0 5px;cursor:default;}.dhx_page_skyblue div{background-color:white;width:16px;height:17px;vertical-align:middle;}div.dhx_page_active_skyblue{font-weight:bold;color:black;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);border:1px solid #a4bed4;padding:0;cursor:default;}div.dhx_page_active_skyblue div.dhx_page_active_skyblue{border:0 solid #a4bed4;}.calcTable{width:100px;background-color:silver;border:1px black solid;}.calcButton{height:20px;cursor:pointer;text-align:center;background-color:gray;color:white;font-size:10px;font-weight:bold;border-top:1px solid silver;border-right:1px solid silver;}.calcPressed{height:20px;cursor:pointer;text-align:center;background-color:gray;color:white;font-size:10px;font-weight:bold;border-top:1px solid black;border-right:1px solid black;}.calcInput{background-color:white;font-size:10px;font-weight:bold;font-family:Tahoma,Helvetica;}.calkSubmit{padding:2px;cursor:pointer;text-align:center;background-color:silver;color:white;font-size:10px;font-weight:bold;border-top:1px solid white;border-right:1px solid white;}.dhxgrid_sort_desc,.dhxgrid_sort_asc{width:9px;height:8px;background-image:url("imgs/dhxgrid_skyblue/sort_desc.gif");background-repeat:no-repeat;z-index:10;}.dhxgrid_sort_asc{background-image:url("imgs/dhxgrid_skyblue/sort_asc.gif");background-repeat:no-repeat;}.dhxgrid_rh_dhx_skyblue{position:absolute;top:-20px;left:-24px;width:23px;height:10px;margin:0;padding:0;border-width:0;font-size:1px;overflow:hidden;}.dhxgrid_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}div.gridbox_dhx_skyblue.gridbox table.obj.row20px tr td img{display:block;}div.gridbox_dhx_skyblue.gridbox table.obj.row20px tr td.group_row img,div.gridbox_dhx_skyblue.gridbox table.obj.row20px tr td .treegrid_cell img{display:inline;}.dhxform_obj_dhx_skyblue{font-family:Tahoma,Helvetica;float:left;line-height:normal;}.dhxform_obj_dhx_skyblue div.dhxform_base{position:relative;float:left;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_base{float:right;}.dhxform_obj_dhx_skyblue div.dhxform_base_nested{padding:0;clear:both;*display:inline-block;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_base_nested{padding:0;}.dhxform_obj_dhx_skyblue.dhxform_block{clear:both;}.dhxform_obj_dhx_skyblue div.block_dhxform_item_label_left{display:block;clear:both;*clear:none;}.dhxform_obj_dhx_skyblue div.dhxform_label div.dhxform_label_nav_link,.dhxform_obj_dhx_skyblue div.dhxform_label div.dhxform_label_nav_link:visited,.dhxform_obj_dhx_skyblue div.dhxform_label div.dhxform_label_nav_link:active,.dhxform_obj_dhx_skyblue div.dhxform_label div.dhxform_label_nav_link:hover{outline:none;text-decoration:none;color:inherit;cursor:default;overflow:hidden;white-space:normal;}.dhxform_obj_dhx_skyblue div.dhxform_label div.dhxform_label_nav_link:focus{color:#305f87;}.dhxform_obj_dhx_skyblue div.disabled span.nav_link{color:inherit;}.dhxform_obj_dhx_skyblue div.dhxform_img,.dhxform_obj_dhx_skyblue div.dhxform_actv_c,.dhxform_obj_dhx_skyblue div.dhxform_actv_r{width:18px;height:18px;font-size:1px;}.dhxform_obj_dhx_skyblue div.dhxform_img.chbx0,.dhxform_obj_dhx_skyblue div.dhxform_img.chbx1,.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.chbx0,.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.chbx1,.dhxform_obj_dhx_skyblue div.dhxform_img.rdbt0,.dhxform_obj_dhx_skyblue div.dhxform_img.rdbt1,.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.rdbt0,.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.rdbt1,.dhxform_obj_dhx_skyblue div.dhxform_actv_c.chbx0,.dhxform_obj_dhx_skyblue div.dhxform_actv_c.chbx1,.dhxform_obj_dhx_skyblue div.dhxform_actv_r.rdbt0,.dhxform_obj_dhx_skyblue div.dhxform_actv_r.rdbt1{background-image:url("imgs/dhxform_skyblue/dhxform_chbxrd.gif");background-repeat:no-repeat;}.dhxform_obj_dhx_skyblue div.dhxform_actv_c.chbx0{background-position:-162px 0;}.dhxform_obj_dhx_skyblue div.dhxform_actv_c.chbx1{background-position:-144px 0;}.dhxform_obj_dhx_skyblue div.dhxform_actv_r.rdbt0{background-position:-198px 0;}.dhxform_obj_dhx_skyblue div.dhxform_actv_r.rdbt1{background-position:-180px 0;}.dhxform_obj_dhx_skyblue div.dhxform_img.chbx0{background-position:-18px 0;}.dhxform_obj_dhx_skyblue div.dhxform_img.chbx1{background-position:0 0;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.chbx0{background-position:-54px 0;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.chbx1{background-position:-36px 0;}.dhxform_obj_dhx_skyblue div.dhxform_img.rdbt0{background-position:-90px 0;}.dhxform_obj_dhx_skyblue div.dhxform_img.rdbt1{background-position:-72px 0;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.rdbt0{background-position:-126px 0;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_img.rdbt1{background-position:-108px 0;}.dhxform_obj_dhx_skyblue div.dhxform_label{font-family:inherit;font-size:inherit;color:black;overflow-x:hidden;overflow:hidden;white-space:normal;}.dhxform_obj_dhx_skyblue div.dhxform_label.dhxform_label_align_left{text-align:left;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_label.dhxform_label_align_left{text-align:right;}.dhxform_obj_dhx_skyblue div.dhxform_label.dhxform_label_align_center{text-align:center;}.dhxform_obj_dhx_skyblue div.dhxform_label.dhxform_label_align_right{text-align:right;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_label.dhxform_label_align_right{text-align:left;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_label,.dhxform_obj_dhx_skyblue div.disabled div.dhxform_label div.dhxform_label_nav_link,.dhxform_obj_dhx_skyblue div.disabled div.dhxform_label span.dhxform_item_required{color:#b2b2b2;}.dhxform_obj_dhx_skyblue div.dhxform_label span.dhxform_item_required{margin-left:5px;margin-right:0;color:red;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_label span.dhxform_item_required{margin-left:0;margin-right:5px;}.dhxform_obj_dhx_skyblue input.dhxform_textarea{padding:4px 3px!important;margin:0;font-size:1em;}.dhxform_obj_dhx_skyblue textarea.dhxform_textarea{padding:4px 3px!important;}.dhxform_obj_dhx_skyblue input.dhxform_textarea::-ms-clear,.dhxform_obj_dhx_skyblue textarea.dhxform_textarea::-ms-clear{display:none;}.dhxform_obj_dhx_skyblue .dhxform_textarea{border:1px solid #a4bed4;font-family:Tahoma,Helvetica;font-size:1em;color:black;resize:none;}.dhxform_obj_dhx_skyblue div.disabled .dhxform_textarea{color:#b2b2b2;background-color:white;border:1px solid #c2d0dd;}.dhxform_obj_dhx_skyblue.dhxform_rtl .dhxform_textarea{text-align:right;direction:rtl;}.dhxform_obj_dhx_skyblue div.dhxform_control.dhxform_img_node{position:relative;}.dhxform_obj_dhx_skyblue div.dhxform_control.dhxform_img_node .dhxform_textarea{border:1px solid white;background-color:white;color:white;visibility:hidden;*height:1px;*line-height:1px;*display:inline;}.dhxform_obj_dhx_skyblue div.dhxform_control.dhxform_img_node div.dhxform_img,.dhxform_obj_dhx_skyblue div.dhxform_control.dhxform_img_node div.dhxform_actv_c,.dhxform_obj_dhx_skyblue div.dhxform_control.dhxform_img_node div.dhxform_actv_r{float:none;top:2px;left:2px;position:absolute;margin:0;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_control.dhxform_img_node div.dhxform_img{float:none;top:2px;left:0;position:absolute;margin:0;}.dhxform_obj_dhx_skyblue .dhxform_select{border:1px solid #a4bed4;background-color:#fff;margin:0;padding:3px 2px 3px 0;font-family:Tahoma,Helvetica;font-size:1em;color:black;}.dhxform_obj_dhx_skyblue .dhxform_select option{padding-left:2px;}.dhxform_obj_dhx_skyblue div.disabled .dhxform_select{color:#b2b2b2;background-color:#fff;border:1px solid #c2d0dd;}.dhxform_obj_dhx_skyblue.dhxform_rtl select,.dhxform_obj_dhx_skyblue.dhxform_rtl option{direction:rtl;}.dhxform_obj_dhx_skyblue div.fs_dhxform_item_label_left,.dhxform_obj_dhx_skyblue div.fs_dhxform_item_label_right{padding:5px 0 5px 0;}.dhxform_obj_dhx_skyblue div.fs_dhxform_item_label_left fieldset.dhxform_fs div.dhxform_base_nested.dhxform_fs_nested,.dhxform_obj_dhx_skyblue div.fs_dhxform_item_label_right fieldset.dhxform_fs div.dhxform_base_nested.dhxform_fs_nested{margin-right:19px;margin-left:5px;}.dhxform_obj_dhx_skyblue fieldset.dhxform_fs{border:1px solid #a4bed4;margin:0;padding:5px 0 12px 0;clear:left;width:100%;}.dhxform_obj_dhx_skyblue div.disabled fieldset.dhxform_fs{border:1px solid #c2d0dd;}.dhxform_obj_dhx_skyblue fieldset.dhxform_fs legend.fs_legend{font-family:Tahoma,Helvetica;font-size:inherit;color:#7099bb;font-weight:normal;padding:0 4px 1px 4px;margin-left:5px;text-align:left;}.dhxform_obj_dhx_skyblue.dhxform_rtl fieldset.dhxform_fs legend.fs_legend{text-align:right;}.dhxform_obj_dhx_skyblue div.disabled fieldset.dhxform_fs legend.fs_legend{color:#b2b2b2;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_right{clear:both;padding-top:6px;cursor:default;*display:inline-block;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_right div.dhxform_img,.dhxform_obj_dhx_skyblue div.dhxform_item_label_right div.dhxform_actv_c,.dhxform_obj_dhx_skyblue div.dhxform_item_label_right div.dhxform_actv_r{float:left;margin:0;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_right div.dhxform_img{float:right;margin:0;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_right div.dhxform_label{float:left;padding:2px 0 2px 0;margin:2px 0 2px 0;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_right div.dhxform_label{float:right;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_right div.dhxform_control{float:left;margin-right:3px;margin-left:0;*display:inline;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_right div.dhxform_control{float:right;margin-right:0;margin-left:3px;*display:inline;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_left{clear:both;padding-top:6px;cursor:default;*display:inline-block;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_left div.dhxform_img,.dhxform_obj_dhx_skyblue div.dhxform_item_label_left div.dhxform_actv_c,.dhxform_obj_dhx_skyblue div.dhxform_item_label_left div.dhxform_actv_r{float:right;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_left div.dhxform_img{float:left;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_left div.dhxform_label{float:left;padding:2px 0 2px 0;margin:2px 0 2px 0;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_left div.dhxform_label{float:right;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_left div.dhxform_control{float:left;padding-left:4px;padding-right:0;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_left div.dhxform_control{float:right;padding-right:4px;padding-left:0;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_top{clear:both;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_top div.dhxform_label{float:none;margin-bottom:5px;margin-top:8px;}.dhxform_obj_dhx_skyblue div.dhxform_item_label_top div.dhxform_control{float:none;margin-left:0;margin-bottom:5px;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_top div.dhxform_control{float:none;margin-right:0;}.dhxform_obj_dhx_skyblue div.dhxform_item_absolute{position:absolute;left:0;top:0;cursor:default;}.dhxform_obj_dhx_skyblue div.item_absolute div.dhxform_img,.dhxform_obj_dhx_skyblue div.item_absolute div.dhxform_actv_c,.dhxform_obj_dhx_skyblue div.item_absolute div.dhxform_actv_r{position:absolute;}.dhxform_obj_dhx_skyblue div.dhxform_item_absolute div.dhxform_control,.dhxform_obj_dhx_skyblue div.dhxform_item_absolute div.dhxform_label,.dhxform_obj_dhx_skyblue div.dhxform_item_absolute div.dhxform_control.dhxform_img_node,.dhxform_obj_dhx_skyblue div.dhxform_item_absolute div.dhxform_txt_label2,.dhxform_obj_dhx_skyblue div.dhxform_item_absolute div.dhxform_btn,.dhxform_obj_dhx_skyblue div.block_item_absolute div.dhxform_block{position:absolute;}.dhxform_obj_dhx_skyblue div.dhxform_txt_label2{font-family:Tahoma,Helvetica;font-size:inherit;color:#7099bb;font-weight:bold;margin:0 3px;padding:5px 0;cursor:default;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_txt_label2{color:#b2b8bc;}.dhxform_obj_dhx_skyblue div.dhxform_btn{font-family:Tahoma,Helvetica;font-size:inherit;color:black;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;border:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);margin:5px 2px;border-radius:2px;float:left;cursor:default;clear:both;position:relative;overflow:hidden;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_btn{float:right;}.dhxform_obj_dhx_skyblue div.dhxform_btn.dhxform_btn_over{background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);background:-webkit-linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxform_obj_dhx_skyblue div.dhxform_btn.dhxform_btn_pressed{background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 5px rgba(127,127,127,0.15) inset;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_btn{border-color:#ccc;background-color:#f9f9f9;background:linear-gradient(#f9f9f9,#f1f1f1);background:-webkit-linear-gradient(#f9f9f9,#f1f1f1);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f9f9f9,endColorStr=#f1f1f1) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 5px rgba(127,127,127,0.15) inset;}.dhxform_obj_dhx_skyblue div.dhxform_btn div.dhxform_btn_txt{float:left;margin:0 20px;height:24px;line-height:23px;text-align:center;vertical-align:middle;overflow:hidden;white-space:nowrap;*display:inline;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxform_obj_dhx_skyblue div.dhxform_btn div.dhxform_btn_txt.dhxform_btn_txt_autowidth{width:100%;margin:0;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_btn div.dhxform_btn_txt{color:#999!important;}.dhxform_obj_dhx_skyblue div.dhxform_btn:focus{outline:1px dotted #909090;}.dhxform_obj_dhx_skyblue div.dhxform_btn div.dhxform_btn_filler{position:absolute;display:inline-block;width:100%;height:100px;left:0;top:0;background-color:white;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxform_obj_dhx_skyblue div.dhxform_control div.dhxform_note{font-family:Tahoma,Helvetica;font-size:.8em;color:#808080;padding-bottom:3px;white-space:normal;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_control div.dhxform_note{color:#b2b2b2;}.dhxform_obj_dhx_skyblue div.dhxform_label span.dhxform_info{font-family:Tahoma,Helvetica;font-size:.6em;color:#808080;margin-left:3px;padding-bottom:2px;line-height:100%;vertical-align:middle;cursor:pointer;}.dhxform_obj_dhx_skyblue .validate_error .dhxform_label,.dhxform_obj_dhx_skyblue .validate_error .dhxform_textarea,.dhxform_obj_dhx_skyblue .validate_error .dhxform_select,.dhxform_obj_dhx_skyblue .validate_error div.dhxform_label_nav_link,.dhxform_obj_dhx_skyblue .validate_error div.dhxform_label div.dhxform_label_nav_link:focus{color:red;}.dhxform_obj_dhx_skyblue div.disabled .dhx_combo_box.dhx_skyblue{border:1px solid #c2d0dd;}.dhxform_obj_dhx_skyblue div.disabled .dhx_combo_box.dhx_skyblue .dhx_combo_input{color:#b2b2b2;background-color:#fff;}.dhxform_obj_dhx_skyblue div.dhxform_item_template.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_stb{border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;}.dhxform_obj_dhx_skyblue div.dhxform_item_template.dhxeditor_dhx_skyblue div.dhx_cell_editor div.dhx_cell_cont_editor{border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;}.dhxform_obj_dhx_skyblue div.dhxform_item_template.dhxeditor_dhx_skyblue div.dhxcont_content_blocker{display:none;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_item_template.dhxeditor_dhx_skyblue div.dhxcont_content_blocker{display:inline;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fefefe;opacity:.7;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);}.dhxform_obj_dhx_skyblue .dhx_file_uploader{position:relative;width:100%;margin-bottom:4px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls{position:relative;width:100%;height:35px;font-size:2px;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_uploader_button{position:absolute;width:19px;height:19px;top:8px;background-image:url("imgs/dhxform_skyblue/dhxform_upload_buttons.gif");background-repeat:no-repeat;font-size:2px;cursor:pointer;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);z-index:1;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_uploader_button.button_info{display:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_uploader_button.button_browse{background-position:0 0;right:108px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_uploader_button.button_upload{background-position:-19px 0;right:79px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_uploader_button.button_cancel{background-position:-57px 0;right:79px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_uploader_button.button_clear{background-position:-38px 0;right:50px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls .dhx_uploader_input{position:absolute;left:-1000px;top:0;visibility:hidden;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_form_cont{position:absolute;width:19px;height:19px;left:0;top:0;cursor:pointer;overflow:hidden;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_form_cont form.dhx_file_form{position:absolute;top:0;right:0;cursor:pointer;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls div.dhx_file_form_cont form.dhx_file_form .dhx_file_input{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);cursor:pointer;outline:none;height:19px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files{position:relative;width:100%;left:0;top:0;overflow:auto;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file{position:relative;width:100%;height:25px;overflow:hidden;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file.dhx_file_added,.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file.dhx_file_uploading{color:black;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file.dhx_file_uploaded{color:#30678a;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file.dhx_file_fail{color:#e94a4a;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file_param{position:absolute;font-family:inherit;font-size:inherit;color:inherit;top:0;height:25px;line-height:25px;vertical-align:middle;overflow:hidden;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file_param.dhx_file_name{left:20px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file_param.dhx_file_progress{right:50px;width:38px;text-align:right;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file_param.dhx_file_delete{right:30px;width:11px;background-image:url("imgs/dhxform_skyblue/dhxform_upload_buttons.gif");background-position:-76px 0;background-repeat:no-repeat;cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files div.dhx_file_param.dhx_file_uploading{right:50px;width:38px;text-align:right;background-image:url("imgs/dhxform_skyblue/dhxform_upload_uploading.gif");background-position:center center;background-repeat:no-repeat;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls{height:60px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_files{display:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_uploader_button.button_info{display:inline;background-image:none;font-family:Tahoma,Helvetica;font-size:13px;color:#a1a1a1;height:auto;top:0;left:35px;vertical-align:top;padding-top:6px;line-height:20px;cursor:default;filter:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_uploader_button.button_browse{top:0;width:54px;height:54px;right:35px;background-image:url("imgs/dhxform_skyblue/dhxform_upload_buttons.gif");background-position:0 -38px;background-repeat:no-repeat;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_uploader_button.button_upload,.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_uploader_button.button_cancel,.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_uploader_button.button_clear{display:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_form_cont{width:54px;height:54px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls div.dhx_file_form_cont form.dhx_file_form .dhx_file_input{height:54px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button.button_info,.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files.dhx_uploader_dis div.dhx_file.dhx_file_added,.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files.dhx_uploader_dis div.dhx_file.dhx_file_uploading,.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files.dhx_uploader_dis div.dhx_file.dhx_file_uploaded,.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files.dhx_uploader_dis div.dhx_file.dhx_file_fail{color:#b2b2b2;}.dhxform_obj_dhx_skyblue .dhx_file_uploader.dhx_file_uploader_title div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button.button_browse{background-position:-54px -38px;cursor:default;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_form_cont{display:none;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button{cursor:default;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button.button_browse{background-position:0 -19px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button.button_upload{background-position:-19px -19px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button.button_cancel{background-position:-57px -19px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_controls.dhx_uploader_dis div.dhx_file_uploader_button.button_clear{background-position:-38px -19px;}.dhxform_obj_dhx_skyblue .dhx_file_uploader div.dhx_upload_files.dhx_uploader_dis div.dhx_file_param.dhx_file_delete{background-position:-87px 0;cursor:default;}.dhxform_obj_dhx_skyblue div.dhxform_image{position:relative;overflow:hidden;border:1px solid #a4bed4;}.dhxform_obj_dhx_skyblue div.dhxform_image img.dhxform_image_img{position:absolute;}.dhxform_obj_dhx_skyblue div.dhxform_image div.dhxform_image_wrap{position:absolute;background-color:white;left:0;top:0;width:100%;height:100%;overflow:hidden;*border:1px solid white;*height:1000px;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-transition:opacity .6s;-moz-transition:opacity .6s;-ms-transition:opacity .6s;-o-transition:opacity .6s;transition:opacity .6s;}.dhxform_obj_dhx_skyblue div.dhxform_image div.dhxform_image_wrap.dhxform_image_in_progress{background-image:url("imgs/dhxform_skyblue/dhxform_image_uploading.gif");background-position:center center;background-repeat:no-repeat;*border-width:0;*height:100%;opacity:.85;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=85);-webkit-transition:opacity .1s;-moz-transition:opacity .1s;-ms-transition:opacity .1s;-o-transition:opacity .1s;transition:opacity .1s;}.dhxform_obj_dhx_skyblue div.dhxform_image div.dhxform_image_wrap.dhxform_image_in_progress form.dhxform_image_form{display:none;}.dhxform_obj_dhx_skyblue div.dhxform_image div.dhxform_image_wrap form.dhxform_image_form{position:absolute;top:0;right:0;cursor:pointer;}.dhxform_obj_dhx_skyblue div.dhxform_image div.dhxform_image_wrap form.dhxform_image_form input.dhxform_image_input{cursor:pointer;outline:none;height:1000px;font-size:100px;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_image{border-color:#c2d0dd;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_image img.dhxform_image_img{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_image div.dhxform_image_wrap{cursor:default;}.dhxform_obj_dhx_skyblue div.disabled div.dhxform_image form.dhxform_image_form{display:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_body_inner .dhxform_obj_dhx_skyblue{background-color:white;}.dhxform_obj_dhx_skyblue div.dhxform_control .dhx_combo_box.dhx_skyblue .dhx_combo_input,.dhx_combo_list.dhx_skyblue_list div{font-size:1em!important;}div.dhx_form_skin_detect{position:absolute;display:block;visibility:hidden;left:-100px;top:0;width:10px;height:10px;margin:0;padding:0;border:none;overflow:hidden;}.dhxacc_base_dhx_skyblue{background-color:#ebebeb;position:relative;cursor:default;}.dhxacc_base_dhx_skyblue .dhxacc_cont{position:absolute;overflow:hidden;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc{position:relative;background-color:#fff;margin:0;padding:0;overflow:hidden;cursor:default;box-shadow:0 0 3px #e0e0e0;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_cont_acc{position:absolute;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;border-top:0 solid white;overflow:hidden;z-index:0;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_cont_acc.dhx_cell_cont_no_borders{border-width:0;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_cover{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;padding:0;font-size:1px;background-color:white;overflow:hidden;z-index:1;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_hdr{position:relative;height:27px;line-height:26px;overflow:hidden;font-family:Tahoma,Helvetica;font-size:11px;color:#34404b;font-weight:bold;border:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);cursor:default;z-index:3;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_hdr.dhx_cell_hdr_hidden{border-width:1px 0 0 0;height:0;line-height:0;overflow:hidden;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_hdr div.dhx_cell_hdr_text{position:relative;margin:0 26px 0 5px;overflow:hidden;white-space:nowrap;cursor:default;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_icon{margin-left:24px!important;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_hdr img.dhx_cell_hdr_icon{position:absolute;top:5px;left:4px;width:16px;height:16px;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_hdr div.dhx_cell_hdr_arrow{position:absolute;top:6px;right:4px;width:16px;height:16px;background-image:url("imgs/dhxacc_skyblue/dhxacc_btns.gif");background-repeat:no-repeat;background-position:0 0;overflow:hidden;cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc.dhx_cell_closed div.dhx_cell_hdr div.dhx_cell_hdr_arrow{background-position:-16px 0;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc.acc_cell_dragged{box-shadow:0 0 5px #829cb2;z-index:5!important;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_menu_def{position:relative;overflow:hidden;border-width:0 1px 1px 1px;border-color:#a4bed4;border-style:solid;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_toolbar_def{position:relative;overflow:hidden;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_ribbon_def div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;width:auto;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top-width:0;width:auto;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;background-color:#ddecff;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{position:relative;padding:0 4px;height:21px;line-height:21px;border-bottom:1px solid #a4bed4;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;white-space:nowrap;overflow:hidden;}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_progress_bar{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:5;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);}.dhxacc_base_dhx_skyblue .dhxacc_cont div.dhx_cell_acc div.dhx_cell_progress_img{position:absolute;left:0;top:0;border:1px solid #a4bed4;background-position:center 55%;background-image:url('imgs/dhxacc_skyblue/dhxacc_cell_progress.gif');background-repeat:no-repeat;cursor:progress;z-index:6;}.dhxacc_base_dhx_skyblue div.dhxcelltop_progress{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:3;opacity:.55;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);}.dhxacc_base_dhx_skyblue div.dhxcelltop_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs/dhxacc_skyblue/dhxacc_cell_progress.gif');background-position:center center;background-repeat:no-repeat;z-index:4;}.dhxacc_base_dhx_skyblue div.dhxcelltop_hdr{position:relative;}.dhxacc_base_dhx_skyblue div.dhxcelltop_ftr{position:absolute;}.dhxacc_base_dhx_skyblue div.dhxcelltop_menu{position:relative;overflow:hidden;}.dhxacc_base_dhx_skyblue div.dhxcelltop_toolbar{position:relative;background-color:#ebebeb;padding-bottom:4px;overflow:hidden;}.dhxacc_base_dhx_skyblue div.dhxcelltop_ribbon{padding-bottom:4px;position:relative;}.dhxacc_base_dhx_skyblue div.dhxcelltop_ribbon div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxacc_base_dhx_skyblue div.dhxcelltop_statusbar{position:absolute;bottom:0;width:100%;background-color:#ebebeb;overflow:hidden;}.dhxacc_base_dhx_skyblue div.dhxcelltop_statusbar div.dhxcont_statusbar{position:relative;margin-top:4px;border:1px solid #a4bed4;background-color:#ddecff;padding:7px 6px;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxacc_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxlayout_base_dhx_skyblue{background-color:#ebebeb;position:relative;cursor:default;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont{position:absolute;overflow:hidden;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout{position:absolute;background-color:#fff;margin:0;padding:0;overflow:hidden;cursor:default;z-index:0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_cover{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;padding:0;font-size:1px;background-color:white;overflow:hidden;z-index:1;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_cont_layout{position:absolute;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;border-top:0 solid #fff;overflow:hidden;z-index:0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_cont_layout.dhx_cell_cont_no_borders{border-width:0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_cont_layout,.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_cont_layout{display:none;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr{position:relative;height:27px;line-height:26px;overflow:hidden;font-family:Tahoma,Helvetica;font-size:11px;color:#34404b;font-weight:bold;border:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);cursor:default;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr.dhx_cell_hdr_hidden{height:0;line-height:0;border-bottom-width:0;overflow:hidden;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr.dhx_cell_hdr_hidden_no_borders{height:0;line-height:0;border-width:0;overflow:hidden;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr div.dhx_cell_hdr_text{position:relative;margin:0 26px 0 5px;overflow:hidden;white-space:nowrap;cursor:default;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow{position:absolute;right:4px;top:6px;width:16px;height:16px;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_cell_btns.gif');background-repeat:no-repeat;cursor:pointer;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_va{background-position:-16px 0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_vb{background-position:-48px 0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_ha{background-position:-32px 0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_hb{background-position:0 0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_hdr{height:18px;line-height:17px;color:#3a4854;font-weight:normal;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_ha{background-position:0 -5px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_hb{background-position:-32px -4px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr{width:18px;background:-moz-linear-gradient(left,#e2efff,#d3e7ff);background:-webkit-linear-gradient(left,#e2efff,#d3e7ff);background:-o-linear-gradient(left,#e2efff,#d3e7ff);background:-ms-linear-gradient(left,#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=1,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text{position:absolute;left:3px;bottom:0;transform:rotate(270deg);-ms-transform:rotate(270deg);transform-origin:left center;color:#3a4854;font-weight:normal;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie6{left:-5px;line-height:17px;padding-bottom:10px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie6 span{float:left;filter:progid:DXImageTransform.Microsoft.Matrix(M11='6.123031769111886e-17', M12='1', M21='-1', M22='6.123031769111886e-17', sizingMethod='auto expand');}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie7{left:-5px;line-height:17px;padding-bottom:10px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie7 span{float:left;filter:progid:DXImageTransform.Microsoft.Matrix(M11='6.123031769111886e-17', M12='1', M21='-1', M22='6.123031769111886e-17', sizingMethod='auto expand');}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie8{left:-5px;line-height:17px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie8 span{float:left;filter:progid:DXImageTransform.Microsoft.Matrix(M11='6.123031769111886e-17', M12='1', M21='-1', M22='6.123031769111886e-17', sizingMethod='auto expand');margin-bottom:95%;padding-right:8px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie9{left:0;line-height:17px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_ie9 span{float:left;filter:none;margin-bottom:95%;padding-right:8px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_text_chrome{left:5px;-webkit-transform:rotate(270deg);-webkit-transform-origin:left center;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_va{background-position:-45px 0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_vb{background-position:-13px 0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhxlayout_sep{position:absolute;background-color:#ebebeb;font-size:1px;margin:0;padding:0;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;background-repeat:no-repeat;background-position:center center;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:none;touch-action:none;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhxlayout_sep.dhxlayout_sep_resize_v{cursor:w-resize;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif');}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhxlayout_sep.dhxlayout_sep_resize_h{cursor:n-resize;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif');}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhxlayout_sep.dhxlayout_sep_resize_actv{background-color:#dedede;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhxlayout_resize_area{position:absolute;background-color:#a4bed4;opacity:.15;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=15);z-index:1;border:2px dashed black;cursor:inherit;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhxlayout_resize_sep{position:absolute;background-color:#a4bed4;overflow:hidden;display:block;opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);z-index:2;cursor:inherit;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_menu_def{position:relative;overflow:hidden;border-width:0 1px 1px 1px;border-color:#a4bed4;border-style:solid;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_toolbar_def{position:relative;overflow:hidden;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_ribbon_def div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;width:auto;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top-width:0;width:auto;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;background-color:#ddecff;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{position:relative;padding:0 4px;height:21px;line-height:21px;border-bottom:1px solid #a4bed4;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;white-space:nowrap;overflow:hidden;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_progress_bar{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:5;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_progress_img{position:absolute;left:0;top:0;border:1px solid #a4bed4;background-position:center 55%;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif');background-repeat:no-repeat;cursor:progress;z-index:6;}.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_statusbar_def,.dhxlayout_base_dhx_skyblue .dhxlayout_cont div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_statusbar_def{display:none;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_progress{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:3;opacity:.55;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);}.dhxlayout_base_dhx_skyblue div.dhxcelltop_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif');background-position:center center;background-repeat:no-repeat;z-index:4;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_hdr{position:relative;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_ftr{position:absolute;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_menu{position:relative;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_toolbar{position:relative;background-color:#ebebeb;padding-bottom:4px;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_ribbon{padding-bottom:4px;position:relative;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_ribbon div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_statusbar{position:absolute;bottom:0;width:100%;background-color:#ebebeb;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhxcelltop_statusbar div.dhxcont_statusbar{position:relative;margin-top:4px;border:1px solid #a4bed4;background-color:#ddecff;padding:7px 6px;font-family:Tahoma,Helvetica;font-size:11px;color:black;}body.dhxlayout_resize_v *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:w-resize!important;}body.dhxlayout_resize_h *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:n-resize!important;}div.dhxlayout_sep_sw_dhx_skyblue{position:absolute;left:0;top:-100px;width:5px;height:1px;font-size:1px;margin:0;padding:0;overflow:hidden;}.dhxlayout_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxtabbar_base_dhx_skyblue{background-color:#ebebeb;position:relative;cursor:default;}.dhxtabbar_base_dhx_skyblue .dhxtabbar_cont{position:absolute;*overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs{position:absolute;bottom:auto;height:28px;overflow:hidden;white-space:nowrap;border:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);z-index:2;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs{top:auto;bottom:0;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base{position:absolute;top:0;height:28px;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_cont_left,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_cont_right{position:absolute;width:5000px;height:28px;margin:0 1px;top:0;-webkit-transform:translate3d(0px,0px,0px);-moz-transform:translate3d(0px,0px,0px);-ms-transform:translate3d(0px,0px,0px);-o-transform:translate3d(0px,0px,0px);transform:translate3d(0px,0px,0px);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_cont_left.safari_517_fix,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_cont_left.safari_517_fix div.dhxtabbar_tab,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_cont_right.safari_517_fix,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_cont_right.safari_517_fix div.dhxtabbar_tab{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important;transform:none!important;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_line{position:absolute;left:0;bottom:0;top:none;width:100%;height:4px;overflow:hidden;z-index:2;border-top:1px solid #a4bed4;border-bottom:0 solid white;background-color:#d3e7ff;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_ar_left{position:absolute;left:0;top:0;width:15px;height:100%;background-color:#fffeff;background:linear-gradient(#fffeff,#d3e7ff);background:-webkit-linear-gradient(#fffeff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#fffeff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer;z-index:4;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_ar_left.dhxtabbar_tabs_ar_hidden{display:none;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_ar_left div.dhxtabbar_arrow_img{position:relative;height:100%;border-right:1px solid #a4bed4;background-image:url("imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif");background-position:0 11px;background-repeat:no-repeat;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_ar_right{position:absolute;right:0;top:0;width:15px;height:100%;background-color:#fffeff;background:linear-gradient(#fffeff,#d3e7ff);background:-webkit-linear-gradient(#fffeff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#fffeff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:pointer;z-index:4;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_ar_right.dhxtabbar_tabs_ar_hidden{display:none;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_ar_right div.dhxtabbar_arrow_img{position:relative;height:100%;border-left:1px solid #a4bed4;background-image:url("imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif");background-position:-14px 11px;background-repeat:no-repeat;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar{position:absolute;background-color:white;margin:0;padding:0;overflow:hidden;cursor:default;z-index:0;background-image:none!important;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_cover{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;padding:0;font-size:1px;background-color:white;overflow:hidden;z-index:1;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_cont_tabbar{position:absolute;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;border-top:0 solid white;overflow:hidden;z-index:0;-webkit-transform:rotateX(0);}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_cont_tabbar.dhx_cell_cont_no_borders{border:0 solid white!important;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab{position:relative;height:24px;background-color:white;font-family:Tahoma,Helvetica;font-size:11px;color:#34404b;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;z-index:1;cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_cont_left div.dhxtabbar_tab{float:left;margin-left:-1px;margin-right:0;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tabs_cont_right div.dhxtabbar_tab{float:right;margin-left:0;margin-right:-1px;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_dis{background-color:#ecf5ff;background:linear-gradient(#ecf5ff,#d3e7ff);background:-webkit-linear-gradient(#ecf5ff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#ecf5ff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv_dis{z-index:3;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_hidden{border:none;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab div.dhxtabbar_tab_text{position:relative;height:23px;line-height:22px;vertical-align:middle;top:0;border-top:1px solid #fff;color:#34404b;text-align:center;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab div.dhxtabbar_tab_text.dhxtabbar_tab_text_close{padding-right:9px;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv div.dhxtabbar_tab_text,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv_dis div.dhxtabbar_tab_text{border-left:1px solid #fff;border-right:1px solid #fff;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv div.dhxtabbar_tab_text{color:#34404b;font-weight:bold;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv_dis div.dhxtabbar_tab_text{font-weight:bold;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_dis div.dhxtabbar_tab_text,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv_dis div.dhxtabbar_tab_text{color:#999;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab div.dhxtabbar_tab_close{position:absolute;top:6px;right:5px;width:11px;height:11px;border:1px solid #b4d3ff;border-radius:2px;background-image:url("imgs/dhxtabbar_skyblue/dhxtabbar_button_close.gif");background-position:0 0;background-repeat:no-repeat;line-height:1px;overflow:hidden;z-index:1;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv div.dhxtabbar_tab_close{border:1px solid #a4bed4;background-position:-11px 0;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_dis div.dhxtabbar_tab_close,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv_dis div.dhxtabbar_tab_close{border:1px solid #a4bed4;background-position:-22px 0;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhx_cell_tabbar div.dhx_cell_cont_tabbar{border-top:1px solid #a4bed4;border-bottom:0 solid white;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhx_cell_tabbar div.dhx_toolbar_dhx_skyblue{border-bottom-width:0;border-top-width:1px;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs div.dhxtabbar_tab{margin-top:4px;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv,.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs div.dhxtabbar_tab.dhxtabbar_tab_actv_dis{z-index:3;font-weight:bold;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs div.dhxtabbar_tab div.dhxtabbar_tab_text{top:0;border-top:0 solid white;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs div.dhxtabbar_tab div.dhxtabbar_tab_close{top:auto;bottom:5px;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhxtabbar_tabs div.dhxtabbar_tabs_base div.dhxtabbar_tabs_line{top:0;bottom:none;border-bottom:1px solid #a4bed4;border-top:0 solid white;background-color:#e2efff;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_menu_def{position:relative;overflow:hidden;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;border-top:0 solid white;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhx_cell_tabbar div.dhx_cell_menu_def{border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;border-bottom:0 solid white;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_toolbar_dhx_skyblue{border-bottom-width:1px;border-top-width:0;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top:0 solid white;width:auto;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;font-family:Tahoma,Helvetica;font-size:11px;color:black;background-color:#ddecff;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{position:relative;padding:0 4px;height:21px;line-height:21px;border-top:0 solid white;border-bottom:1px solid #a4bed4;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;white-space:nowrap;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxtabbar_tabs_bottom div.dhx_cell_tabbar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{border-top:1px solid #a4bed4;border-bottom:0 solid white;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_progress_bar{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);z-index:1;}.dhxtabbar_base_dhx_skyblue div.dhx_cell_tabbar div.dhx_cell_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url("imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif");background-position:center center;background-repeat:no-repeat;z-index:2;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_progress{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:3;opacity:.55;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif');background-position:center center;background-repeat:no-repeat;z-index:4;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_hdr{position:relative;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_ftr{position:absolute;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_menu{position:relative;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_toolbar{position:relative;background-color:#ebebeb;padding-bottom:4px;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_ribbon{padding-bottom:4px;position:relative;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_ribbon div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_statusbar{position:absolute;bottom:0;width:100%;background-color:#ebebeb;overflow:hidden;}.dhxtabbar_base_dhx_skyblue div.dhxcelltop_statusbar div.dhxcont_statusbar{position:relative;margin-top:4px;border:1px solid #a4bed4;background-color:#ddecff;padding:7px 6px;font-family:Tahoma,Helvetica;font-size:11px;color:black;}span.dhxtabbar_tabs_text_test_dhx_skyblue{position:absolute;visibility:hidden;right:0;top:0;font-weight:bold;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxtabbar_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxsidebar_base_dhx_skyblue{position:relative;cursor:default;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont{position:absolute;cursor:default;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side{position:absolute;left:0;top:0;background-color:#f5f5f5;border-style:solid;border-color:#a4bed4;border-width:1px 1px 0 1px;overflow:hidden;z-index:5;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items{position:absolute;width:100%;overflow:hidden;-ms-touch-action:none;-webkit-transition:top .2s;-moz-transition:top .2s;-ms-transition:top .2s;-o-transition:top .2s;transition:top .2s;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item{position:relative;padding:0 10px;z-index:1;cursor:default;margin:1px 2px;border:1px solid #f5f5f5;background-color:#f5f5f5;overflow:hidden;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);font-family:Tahoma,Helvetica;font-size:11px;color:black;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-touch-callout:none;-ms-touch-action:none;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item.dhxsidebar_item_hidden{height:0!important;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item:hover{background-color:#f1f7ff;border-color:#b9cdde;z-index:2;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item.dhxsidebar_item_selected{z-index:3;border-color:#a4bed4;background-color:#b5deff;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item img.dhxsidebar_item_icon{position:absolute;left:9px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_item_text{position:absolute;left:0;top:0;height:inherit;line-height:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_bubble{position:absolute;width:15px;height:15px;line-height:14px;right:5px;top:2px;border-radius:10px;background-color:#f22;border:2px solid #f5f5f5;font-family:Tahoma;font-size:10px;text-align:center;font-weight:bold;color:white;cursor:default;overflow:hidden;z-index:1;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item:hover div.dhxsidebar_bubble{border-color:#f1f7ff;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_item.dhxsidebar_item_selected div.dhxsidebar_bubble{border-color:white;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side div.dhxsidebar_side_items div.dhxsidebar_sep{position:relative;height:1px;margin:5px 14px;overflow:hidden;background:#ccc;background:-moz-linear-gradient(left,#ebebeb 0,#ccc 50%,#ebebeb 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0%,#ebebeb),color-stop(50%,#ccc),color-stop(100%,#ebebeb));background:-webkit-linear-gradient(left,#ebebeb 0,#ccc 50%,#ebebeb 100%);background:-o-linear-gradient(left,#ebebeb 0,#ccc 50%,#ebebeb 100%);background:-ms-linear-gradient(left,#ebebeb 0,#ccc 50%,#ebebeb 100%);background:linear-gradient(to right,#ebebeb 0,#ccc 50%,#ebebeb 100%);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_touch div.dhxsidebar_side_items div.dhxsidebar_item:hover{border-color:#f5f5f5;background-color:#f5f5f5;z-index:1;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_touch div.dhxsidebar_side_items div.dhxsidebar_item.dhxsidebar_item_selected{z-index:3;border-color:#a4bed4;background-color:#b5deff;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_details div.dhxsidebar_side_items div.dhxsidebar_item{height:23px;line-height:23px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_details div.dhxsidebar_side_items div.dhxsidebar_item img.dhxsidebar_item_icon{top:3px;width:16px;height:16px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_details div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_item_text{padding-left:34px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_details div.dhxsidebar_side_items div.dhxsidebar_sep{margin-top:2px;margin-bottom:2px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_tiles div.dhxsidebar_side_items div.dhxsidebar_item{height:43px;line-height:43px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_tiles div.dhxsidebar_side_items div.dhxsidebar_item img.dhxsidebar_item_icon{top:5px;width:32px;height:32px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_tiles div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_item_text{padding-left:50px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_tiles div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_bubble{top:12px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons div.dhxsidebar_side_items div.dhxsidebar_item{height:43px;line-height:43px;text-align:center;padding-left:4px;padding-right:4px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons div.dhxsidebar_side_items div.dhxsidebar_item img.dhxsidebar_item_icon{position:relative;display:inline;left:0;top:5px;width:32px;height:32px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons div.dhxsidebar_side_items div.dhxsidebar_sep{margin:3px 6px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons_text div.dhxsidebar_side_items div.dhxsidebar_item{height:62px;line-height:1em;text-align:center;padding-left:4px;padding-right:4px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons_text div.dhxsidebar_side_items div.dhxsidebar_item img.dhxsidebar_item_icon{position:relative;display:inline;left:0;top:4px;width:32px;height:32px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons_text div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_item_text{position:relative;display:block;height:16px;margin-top:10px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_icons_text div.dhxsidebar_side_items div.dhxsidebar_sep{margin:3px 6px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_text div.dhxsidebar_side_items div.dhxsidebar_item{height:23px;line-height:23px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_text div.dhxsidebar_side_items div.dhxsidebar_item div.dhxsidebar_item_text{padding-left:14px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side.dhxsidebar_tpl_text div.dhxsidebar_side_items div.dhxsidebar_sep{margin-top:2px;margin-bottom:2px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar{position:absolute;background-color:white;margin:0;padding:0;overflow:hidden;cursor:default;z-index:0;background-image:none!important;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_cont_sidebar{position:absolute;border-left:0 solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;border-top:1px solid #a4bed4;overflow:hidden;z-index:0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_cont_sidebar.dhx_cell_cont_no_borders{border-width:0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_sidebar_hdr{position:relative;height:27px;line-height:26px;overflow:hidden;font-weight:bold;border-color:#a4bed4;border-style:solid;border-width:1px 1px 0 0;cursor:default;z-index:1;font-family:Tahoma,Helvetica;font-size:11px;color:#34404b;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_sidebar_hdr.dhx_cell_sidebar_hdr_hidden{border-width:0;height:0;line-height:0;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_sidebar_hdr div.dhx_cell_sidebar_hdr_text{position:relative;margin:0 10px;overflow:hidden;white-space:nowrap;cursor:default;text-align:left;height:100%;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_sidebar_hdr div.dhx_cell_sidebar_hdr_text.dhx_cell_sidebar_hdr_text_icon{margin-left:34px!important;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_sidebar_hdr div.dhx_cell_sidebar_hdr_icon{position:absolute;top:0;left:10px;width:16px;height:100%;background-image:url("imgs/dhxsidebar_skyblue/dhxsidebar_side_icon.gif");background-position:center center;background-repeat:no-repeat;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_menu_def{position:relative;overflow:hidden;border-width:0 1px 1px 1px;border-color:#a4bed4;border-style:solid;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_toolbar_def{position:relative;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_ribbon_def div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;width:auto;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top-width:0;width:auto;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;background-color:#ddecff;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{position:relative;padding:0 4px;height:21px;line-height:21px;border-bottom:1px solid #a4bed4;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;white-space:nowrap;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_progress_bar{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:5;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_progress_img{position:absolute;left:0;top:0;border:1px solid #a4bed4;background-position:center 55%;background-image:url('imgs/dhxsidebar_skyblue/dhxsidebar_cell_progress.gif');background-repeat:no-repeat;cursor:progress;z-index:6;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_menu_def{border-width:1px 1px 0 0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-width:1px 1px 0 0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_ribbon_def div.dhxrb_with_itembar.dhxtabbar_base_dhx_skyblue{margin-left:-1px;margin-bottom:-1px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-width:1px 1px 0 0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{border-left-width:0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhx_cell_sidebar div.dhx_cell_progress_img{border-left-width:0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhx_cell_sidebar div.dhx_cell_cont_sidebar,.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhx_cell_sidebar div.dhx_cell_sidebar_hdr,.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhx_cell_sidebar div.dhx_cell_menu_def,.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhx_cell_sidebar div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue,.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhx_cell_sidebar div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar,.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhx_cell_sidebar div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{border-left-width:1px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide{overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhxsidebar_side{transition:left .2s;box-shadow:0 2px 8px rgba(127,127,127,0.4);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont.dhxsidebar_autohide div.dhxsidebar_arrows{transition:left .2s;box-shadow:0 4px 6px rgba(127,127,127,0.4);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side_cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background-color:#fff;z-index:3;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s;opacity:.0001;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_side_cover.dhxsidebar_side_cover_actv{opacity:.6;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=60);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows{position:absolute;left:0;bottom:0;height:24px;border-color:#a4bed4;border-style:solid;border-width:1px 1px 1px 1px;font-size:1px;overflow:hidden;z-index:6;-webkit-tap-highlight-color:rgba(0,0,0,0);-ms-touch-action:none;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows.dhxsidebar_arrows_hidden{height:0;border-width:0 1px 1px 1px;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow{position:absolute;width:50%;height:100%;top:0;font-size:1px;overflow:hidden;z-index:1;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow.dhxsidebar_arrow_left{left:0;border-right:1px solid #a4bed4;z-index:2;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow.dhxsidebar_arrow_left div.dhxsidebar_arrow_image{background-image:url("imgs/dhxsidebar_skyblue/dhxsidebar_arrow_up.gif");}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow.dhxsidebar_arrow_right{right:0;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow.dhxsidebar_arrow_right div.dhxsidebar_arrow_image{background-image:url("imgs/dhxsidebar_skyblue/dhxsidebar_arrow_down.gif");}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow div.dhxsidebar_arrow_image{position:absolute;left:0;top:0;width:100%;height:100%;background-repeat:no-repeat;background-position:center center;font-size:1px;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxsidebar_cont div.dhxsidebar_arrows div.dhxsidebar_arrow:active{background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 5px rgba(127,127,127,0.15) inset;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_progress{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:3;opacity:.55;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs/dhxsidebar_skyblue/dhxsidebar_cell_progress.gif');background-position:center center;background-repeat:no-repeat;z-index:4;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_hdr{position:relative;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_ftr{position:absolute;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_menu{position:relative;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_toolbar{position:relative;background-color:#ebebeb;padding-bottom:4px;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_ribbon{padding-bottom:4px;position:relative;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_ribbon div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_statusbar{position:absolute;bottom:0;width:100%;background-color:#ebebeb;overflow:hidden;}.dhxsidebar_base_dhx_skyblue div.dhxcelltop_statusbar div.dhxcont_statusbar{position:relative;margin-top:4px;border:1px solid #a4bed4;background-color:#ddecff;padding:7px 6px;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxsidebar_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxcarousel_base_dhx_skyblue{background-color:white;position:relative;cursor:default;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area{position:relative;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area.dhxcarousel_area_flip{perspective:900px;-webkit-perspective:900;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel{position:absolute;background-color:#fff;margin:0;padding:0;overflow:hidden;cursor:default;z-index:0;-webkit-transform-style:preserve-3d;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_cover{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;padding:0;font-size:1px;background-color:white;overflow:hidden;z-index:1;opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_cont_carousel{position:absolute;border:1px solid #a4bed4;overflow:hidden;z-index:0;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_cont_carousel.dhx_cell_cont_no_borders{border-width:0;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_menu_def{position:relative;overflow:hidden;border-width:0 1px 1px 1px;border-color:#a4bed4;border-style:solid;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_toolbar_def{position:relative;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_ribbon_def div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;width:auto;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top-width:0;width:auto;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;background-color:#ddecff;font-family:Tahoma,Helvetica;font-size:11px;color:black;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{position:relative;padding:0 4px;height:21px;line-height:21px;border-bottom:1px solid #a4bed4;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;white-space:nowrap;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_progress_bar{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:5;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_progress_img{position:absolute;left:0;top:0;border:1px solid #a4bed4;background-position:center 55%;background-image:url('imgs/dhxcarousel_skyblue/dhxcarousel_cell_progress.gif');background-repeat:no-repeat;cursor:progress;z-index:6;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_menu_def{border-top-width:1px;border-bottom-width:0;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:1px;border-bottom-width:0;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhxcarousel_area div.dhx_cell_carousel div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top-width:1px;border-bottom-width:0;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls{position:absolute;width:100%;height:30px;bottom:0;left:0;z-index:3;overflow:visible;border-top:1px solid #a4bed4;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn{position:absolute;bottom:0;width:38px;height:100%;overflow:hidden;font-family:Arial;font-size:14px;color:#5f8db3;border:0 solid #a4bed4;text-align:center;line-height:29px;z-index:2;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;background-color:#e2efff;background:linear-gradient(#e2efff,#d3e7ff);background:-webkit-linear-gradient(#e2efff,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e2efff,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev:hover,.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next:hover{background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);background:-webkit-linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev:active,.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next:active{background-color:#d2e7fe;background:linear-gradient(#d2e7fe,#d3e7ff);background:-webkit-linear-gradient(#d2e7fe,#d3e7ff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#d2e7fe,endColorStr=#d3e7ff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);box-shadow:0 0 5px rgba(127,127,127,0.15) inset;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev,.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev_dis{left:0;border-right-width:1px;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next,.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next_dis{right:0;border-left-width:1px;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev_dis,.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next_dis{color:#999;background:#f2f2f2;z-index:1;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_bars{position:absolute;top:9px;text-align:center;font-size:1px;line-height:32px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_bars div.dhx_carousel_onebar{float:left;position:relative;margin:0 2px;width:12px;height:12px;border:1px solid #5f8db3;border-radius:12px;background-color:white;font-size:1px;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_bars div.dhx_carousel_onebar div.dhx_carousel_barcore{display:none;}.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_bars div.dhx_carousel_onebar.dhx_carousel_baractv div.dhx_carousel_barcore{position:absolute;display:block;font-size:1px;margin:0;padding:0;width:6px;height:6px;top:2px;left:2px;border:1px solid #5f8db3;border-radius:12px;background-color:#5f8db3;overflow:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_progress{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;z-index:3;opacity:.55;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs/dhxcarousel_skyblue/dhxcarousel_cell_progress.gif');background-position:center center;background-repeat:no-repeat;z-index:4;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_hdr{position:relative;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_ftr{position:absolute;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_menu{position:relative;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_toolbar{position:relative;background-color:#ebebeb;padding-bottom:4px;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_ribbon{padding-bottom:4px;position:relative;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_ribbon div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_statusbar{position:absolute;bottom:0;width:100%;background-color:#ebebeb;overflow:hidden;}.dhxcarousel_base_dhx_skyblue div.dhxcelltop_statusbar div.dhxcont_statusbar{position:relative;margin-top:4px;border:1px solid #a4bed4;background-color:#ddecff;padding:7px 6px;font-family:Tahoma,Helvetica;font-size:11px;color:black;}div.dhx_popup_dhx_skyblue td.dhx_popup_td div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls,.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls{border-bottom:1px solid #a4bed4;}div.dhx_popup_dhx_skyblue td.dhx_popup_td div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev,div.dhx_popup_dhx_skyblue td.dhx_popup_td div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev_dis,.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev,.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev_dis,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_prev_dis{border-left-width:1px;}div.dhx_popup_dhx_skyblue td.dhx_popup_td div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next,div.dhx_popup_dhx_skyblue td.dhx_popup_td div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next_dis,.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next,.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next_dis,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhxcarousel_base_dhx_skyblue div.dhxcarousel_cont div.dhx_carousel_controls div.dhx_carousel_btn.dhx_carousel_btn_next_dis{border-right-width:1px;}.dhxcarousel_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxwins_vp_dhx_skyblue{overflow:hidden;position:relative;cursor:default;}.dhxwins_vp_dhx_skyblue div.dhxwin_active{position:absolute;overflow:hidden;border:1px solid #a4bed4;box-shadow:0 0 3px #cecece;border-radius:3px;background:white;cursor:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxwins_vp_dhx_skyblue div.dhxwin_inactive{position:absolute;overflow:hidden;border:1px solid #c1d1de;box-shadow:0 0 3px #dedede;border-radius:3px;background:white;cursor:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);}.dhxwins_vp_dhx_skyblue div.dhxwin_brd{position:absolute;border-left:5px solid #d3e6fe;border-right:5px solid #d3e6fe;border-bottom:5px solid #d3e6fe;border-bottom-left-radius:2px;border-bottom-right-radius:2px;background:white;z-index:0;}.dhxwins_vp_dhx_skyblue div.dhxwin_brd.dhxwin_hdr_hidden{border-top:5px solid #d3e6fe;border-top-left-radius:2px;border-top-right-radius:2px;}.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhxwin_brd{opacity:.8;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);}.dhxwins_vp_dhx_skyblue div.dhxwin_fr_cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;background-color:white;z-index:1;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxwins_vp_dhx_skyblue div.dhxwin_fr_cover .dhxwin_fr_cover_inner{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhxwin_fr_cover{display:none;}.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhxwin_fr_cover{z-index:4;opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhxwin_fr_cover.dhxwin_fr_cover_dnd,.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhxwin_fr_cover.dhxwin_fr_cover_resize{display:block;}.dhxwins_vp_dhx_skyblue iframe.dhxwin_main_fr_cover{position:absolute;background-color:white;border-radius:2px;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr{position:relative;height:30px;line-height:30px;margin:0;padding:0;font-weight:bold;border-top:1px solid white;border-left:1px solid white;border-right:1px solid white;border-top-left-radius:2px;border-top-right-radius:2px;background-color:#e5f0fd;background:linear-gradient(#e5f0fd,#d3e6fe);background:-webkit-linear-gradient(#e5f0fd,#d3e6fe);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e5f0fd,endColorStr=#d3e6fe) progid:DXImageTransform.Microsoft.Alpha(opacity=100);font-family:Tahoma,Helvetica;font-size:11px;color:#34404b;cursor:inherit;overflow:hidden;z-index:3;-ms-touch-action:none;touch-action:none;}.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhxwin_hdr{color:#777;opacity:.8;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e5f0fd,endColorStr=#d3e6fe);}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr.dhxwin_hdr_parked{border-bottom:1px solid white;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr.dhxwin_hdr_hidden{visibility:hidden;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_icon{position:absolute;left:7px;top:7px;width:18px;height:18px;cursor:default;overflow:hidden;background-image:url("imgs/dhxwins_skyblue/dhxwins_icon.gif");background-position:center center;background-repeat:no-repeat;cursor:inherit;z-index:2;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhxwin_hdr div.dhxwin_icon{opacity:.6;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=60);}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_text{position:relative;padding:0;margin:0;overflow:hidden;white-space:nowrap;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:inherit;z-index:1;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_text div.dhxwin_text_inside{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns{position:absolute;right:7px;top:6px;height:18px;cursor:default;overflow:hidden;cursor:inherit;z-index:2;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhxwin_hdr div.dhxwin_btns{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button,.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis{position:relative;float:left;width:15px;height:15px;margin-left:1px;margin-top:2px;border-radius:2px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;background-image:url("imgs/dhxwins_skyblue/dhxwins_buttons.gif");background-repeat:no-repeat;background-position:0 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button:hover{background-color:white;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_close{background-position:-15px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_close_dis{background-position:-15px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_minmax{background-position:-30px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_minmax_dis{background-position:-30px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_minmaxed{background-position:-45px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_minmaxed_dis{background-position:-45px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_park{background-position:-60px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_park_dis{background-position:-60px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_stick{background-position:-75px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_stick_dis{background-position:-75px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_sticked{background-position:-90px 0;background-color:#a4bed4!important;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_sticked_dis{background-position:-90px -15px;background-color:#f0f0f0!important;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_help{background-position:-105px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_help_dis{background-position:-105px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button.dhxwin_button_dock{background-position:-120px 0;}.dhxwins_vp_dhx_skyblue div.dhxwin_hdr div.dhxwin_btns div.dhxwin_button_dis.dhxwin_button_dock_dis{background-position:-120px -15px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active.dhxwin_dnd_touch,.dhxwins_vp_dhx_skyblue div.dhxwin_active.dhxwin_dnd{box-shadow:0 0 3px #cececf;}.dhxwins_vp_dhx_skyblue div.dhxwin_active.dhxwin_dnd_touch{border-color:#6c94b4;box-shadow:0 0 14px #a4b9cb;-webkit-touch-callout:none;-webkit-user-select:none;}.dhxwins_vp_dhx_skyblue.dhxwins_vp_dnd{cursor:move!important;}.dhxwins_vp_dhx_skyblue div.dhxwin_resize{position:absolute;background-color:#d3e6fe;border-radius:3px;opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);}.dhxwins_vp_dhx_skyblue iframe.dhxwin_resize_fr_cover{position:absolute;background-color:white;border-radius:3px;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxwins_vp_dhx_skyblue div.dhxwins_mcover{position:absolute;background-color:#e5f0fd;left:0;top:0;width:100%;height:100%;opacity:.53;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=53);}.dhxwins_vp_dhx_skyblue iframe.dhxwins_mcover{position:absolute;background-color:white;left:0;top:0;width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins{position:absolute;background-color:#fff;margin:0;padding:0;overflow:hidden;cursor:default;visibility:visible;z-index:1;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins.dhxwin_parked,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins.dhxwin_parked{visibility:hidden;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_cover,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_cover{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;padding:0;font-size:1px;background-color:white;overflow:hidden;z-index:1;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_cont_wins,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_cont_wins{position:absolute;border:1px solid #fff;background-color:#fff;overflow:hidden;z-index:0;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_cont_wins.dhx_cell_cont_no_borders,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_cont_wins.dhx_cell_cont_no_borders{border:0 solid #fff!important;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_menu_def,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_menu_def{position:relative;overflow:hidden;border-bottom:1px solid #d3e6fe;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_toolbar_def,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_toolbar_def{position:relative;overflow:hidden;padding:1px 1px 0 1px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{position:relative;border-top-width:1px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_toolbar_no_borders div.dhx_toolbar_dhx_skyblue,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_toolbar_no_borders div.dhx_toolbar_dhx_skyblue{position:relative;border-top-width:1px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_ribbon_def,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_ribbon_def{padding:1px 1px 0 1px;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_statusbar_def,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;font-family:Tahoma,Helvetica;font-size:11px;color:black;background-color:#d3e6fe;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_statusbar_def div.dhx_cell_statusbar_text{position:relative;padding:0 4px;height:21px;line-height:21px;white-space:nowrap;overflow:hidden;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_cont_wins.dhx_cell_statusbar_attached,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_cont_wins.dhx_cell_statusbar_attached{border-radius:0;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_progress_bar,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_progress_bar{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#fff;opacity:.75;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);z-index:1;}.dhxwins_vp_dhx_skyblue div.dhxwin_active div.dhx_cell_wins div.dhx_cell_progress_img,.dhxwins_vp_dhx_skyblue div.dhxwin_inactive div.dhx_cell_wins div.dhx_cell_progress_img{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url("imgs/dhxwins_skyblue/dhxwins_progress.gif");background-position:center center;background-repeat:no-repeat;z-index:2;}.dhxwins_vp_auto{overflow:auto!important;}.dhxwins_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}div.dhxwins_vp_dhx_skyblue.dhxwins_vp_fs{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;}.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000;padding:0;}.dhtmlx-info{color:#444;border-radius:4px;min-width:120px;padding:10px 10px 10px 20px;background-color:#FFC;font-size:12px;font-family:Tahoma;z-index:10000;margin:0 5px 5px 5px;border:1px solid #d3d3d3;box-shadow:0 0 5px #ccc;-webkit-transition:all .5s ease;-moz-transition:all .5s ease;-o-transition:all .5s ease;transition:all .5s ease;}.dhtmlx-info.hidden{height:0;padding-bottom:0;padding-top:0;border-width:0;margin-top:0;margin-bottom:0;overflow:hidden;}.dhtmlx-error{background-color:#f17373;color:#fff;}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background-color:#fff;z-index:20000;-moz-box-shadow:0 0 5px #AAA;-webkit-box-shadow:0 0 0 #AAA;box-shadow:0 0 5px #AAA;border:1px solid #a4bed4;border-radius:6px;}.dhtmlx_popup_title{padding:5px 0;font-size:12px;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px;border-radius-top-right:6px;line-height:16px;font-family:Tahoma;font-weight:bold;}.dhtmlx-info,.dhtmlx_popup_title,.dhtmlx_popup_button{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;-moz-user-select:-moz-none;cursor:pointer;}.dhtmlx_popup_text{font-size:13px;font-family:Tahoma;color:#444;min-height:30px;padding:20px 10px 10px 10px!important;overflow:hidden;}.dhtmlx_popup_controls{font-family:Tahoma;font-weight:bold;padding:10px 10px 17px 10px!important;}.dhtmlx_popup_button{font-size:12px;font-family:Tahoma;font-weight:bold;min-width:120px;width:120px;height:20px;display:inline-block;margin:0 5px;border-radius:4px;}.dhtmlx_popup_button div{line-height:20px;}div.dhx_modal_cover{background-color:#000;cursor:default;opacity:.2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1;}.dhtmlx_popup_button{color:#2e3947;text-shadow:0 1px 0 #fff;border:1px solid #a4bed4;background-color:#d5e6fc;background-image:-moz-linear-gradient(center bottom,#e1eeff 0,#cce2fe 12%,#ecf2f7 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0.00,#ecf2f7),color-stop(0.88,#cce2fe),color-stop(1.00,#e1eeff));background:-o-linear-gradient(top,#e1eeff,#cce2fe 12%,#ecf2f7);background:linear-gradient(top,#e1eeff,#cce2fe 12%,#ecf2f7);background:-ms-linear-gradient(top,#e1eeff 0,#cce2fe 12%,#ecf2f7 100%);}.dhtmlx_popup_button:active,.dhtmlx_popup_button:focus{box-shadow:inset 0 0 2px #aaa;background:#bdd9fc;background:-moz-linear-gradient(top,#C4DDFF 0,#bdd9fc 88%,#deeaf4 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#C4DDFF),color-stop(88%,#bdd9fc),color-stop(100%,#deeaf4));background:-o-linear-gradient(top,#C4DDFF 0,#bdd9fc 88%,#deeaf4 100%);background:-ms-linear-gradient(top,#C4DDFF 0,#bdd9fc 88%,#deeaf4 100%);background:linear-gradient(top,#C4DDFF 0,#bdd9fc 88%,#deeaf4 100%);}.dhtmlx_popup_title{box-shadow:inset 0 0 2px #fff;display:block;}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{color:white;border:1px solid #f17373;background:#f17373;background:-webkit-linear-gradient(top,#ff7c7c,#f17373 88%,#ff7361);background:-moz-linear-gradient(top,#ff7c7c,#f17373 88%,#ff7361);background:-o-linear-gradient(top,#ff7c7c,#f17373 88%,#ff7361);background:linear-gradient(top,#ff7c7c,#f17373 88%,#ff7361);background:-ms-linear-gradient(top,#ff7c7c 0,#f17373 88%,#ffbc75 100%);}.dhtmlx-alert-error.dhtmlx_modal_box,.dhtmlx-confirm-error.dhtmlx_modal_box{border:1px solid #f17373;}.dhtmlx-alert-warning .dhtmlx_popup_title,.dhtmlx-confirm-warning .dhtmlx_popup_title{color:#000;border:1px solid #d2b07f;background:#ff9f37;background:-webkit-linear-gradient(top,#ffc786,#ff9523 88%,#ffbc75);background:-moz-linear-gradient(top,#ffc786,#ff9523 88%,#ffbc75);background:-o-linear-gradient(top,#ffc786,#ff9523 88%,#ffbc75);background:linear-gradient(top,#ffc786,#ff9523 88%,#ffbc75);background:-ms-linear-gradient(top,#ffc786 0,#ff9523 88%,#ffbc75 100%);}.dhtmlx-alert-warning .dhtmlx_popup_controls,.dhtmlx-confirm-warning .dhtmlx_popup_controls{border:1px solid #d5d5d5;border-width:0 1px 1px 1px;}.dhtmlx-alert-warning .dhtmlx_popup_text,.dhtmlx-confirm-warning .dhtmlx_popup_text{border:1px solid #d5d5d5;border-width:0 1px 0 1px;}.dhtmlx-alert .dhtmlx_popup_title,.dhtmlx-confirm .dhtmlx_popup_title{color:#000;border:1px solid #a4bed4;background:#d5e6fc;background:-moz-linear-gradient(center bottom,#e1eeff 0,#cce2fe 12%,#ecf2f7 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0.00,#ecf2f7),color-stop(0.88,#cce2fe),color-stop(1.00,#e1eeff));background:-o-linear-gradient(top,#e1eeff,#cce2fe 12%,#ecf2f7);background:linear-gradient(top,#e1eeff,#cce2fe 12%,#ecf2f7);background:-ms-linear-gradient(top,#e1eeff 0,#cce2fe 12%,#ecf2f7 100%);}.dhtmlx-alert .dhtmlx_popup_controls,.dhtmlx-confirm .dhtmlx_popup_controls{border:1px solid #d5d5d5;border-width:0 1px 1px 1px;}.dhtmlx-alert .dhtmlx_popup_text,.dhtmlx-confirm .dhtmlx_popup_text{border:1px solid #d5d5d5;border-width:0 1px 0 1px;} \ No newline at end of file
diff --git a/pywrap/static/codebase/dhtmlx.js b/pywrap/static/codebase/dhtmlx.js
deleted file mode 100644
index 5e560b1..0000000
--- a/pywrap/static/codebase/dhtmlx.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
-Product Name: dhtmlxSuite
-Version: 4.6
-Edition: Standard
-License: content of this file is covered by GPL. Usage outside GPL terms is prohibited. To obtain Commercial or Enterprise license contact sales@dhtmlx.com
-Copyright UAB Dinamenta http://www.dhtmlx.com
-*/
-
-if(typeof(window.dhx4)=="undefined"){window.dhx4={version:"4.6",skin:null,skinDetect:function(a){return{10:"dhx_skyblue",20:"dhx_web",30:"dhx_terrace"}[this.readFromCss(a+"_skin_detect")]||null},readFromCss:function(e,g){var c=document.createElement("DIV");c.className=e;if(document.body.firstChild!=null){document.body.insertBefore(c,document.body.firstChild)}else{document.body.appendChild(c)}var a=c[g||"offsetWidth"];c.parentNode.removeChild(c);c=null;return a},lastId:1,newId:function(){return this.lastId++},zim:{data:{},step:5,first:function(){return 100},last:function(){var e=this.first();for(var c in this.data){e=Math.max(e,this.data[c])}return e},reserve:function(a){this.data[a]=this.last()+this.step;return this.data[a]},clear:function(a){if(this.data[a]!=null){this.data[a]=null;delete this.data[a]}}},s2b:function(a){if(typeof(a)=="string"){a=a.toLowerCase()}return(a==true||a==1||a=="true"||a=="1"||a=="yes"||a=="y"||a=="on")},s2j:function(s){var obj=null;dhx4.temp=null;try{eval("dhx4.temp="+s)}catch(e){dhx4.temp=null}obj=dhx4.temp;dhx4.temp=null;return obj},absLeft:function(a){if(typeof(a)=="string"){a=document.getElementById(a)}return this.getOffset(a).left},absTop:function(a){if(typeof(a)=="string"){a=document.getElementById(a)}return this.getOffset(a).top},_aOfs:function(a){var e=0,c=0;while(a){e=e+parseInt(a.offsetTop);c=c+parseInt(a.offsetLeft);a=a.offsetParent}return{top:e,left:c}},_aOfsRect:function(g){var l=g.getBoundingClientRect();var m=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||m.scrollTop;var h=window.pageXOffset||c.scrollLeft||m.scrollLeft;var j=c.clientTop||m.clientTop||0;var n=c.clientLeft||m.clientLeft||0;var o=l.top+a-j;var e=l.left+h-n;return{top:Math.round(o),left:Math.round(e)}},getOffset:function(a){if(a.getBoundingClientRect){return this._aOfsRect(a)}else{return this._aOfs(a)}},_isObj:function(a){return(a!=null&&typeof(a)=="object"&&typeof(a.length)=="undefined")},_copyObj:function(g){if(this._isObj(g)){var e={};for(var c in g){if(typeof(g[c])=="object"&&g[c]!=null){e[c]=this._copyObj(g[c])}else{e[c]=g[c]}}}else{var e=[];for(var c=0;c<g.length;c++){if(typeof(g[c])=="object"&&g[c]!=null){e[c]=this._copyObj(g[c])}else{e[c]=g[c]}}}return e},screenDim:function(){var a=(navigator.userAgent.indexOf("MSIE")>=0);var c={};c.left=document.body.scrollLeft;c.right=c.left+(window.innerWidth||document.body.clientWidth);c.top=Math.max((a?document.documentElement:document.getElementsByTagName("html")[0]).scrollTop,document.body.scrollTop);c.bottom=c.top+(a?Math.max(document.documentElement.clientHeight||0,document.documentElement.offsetHeight||0):window.innerHeight);return c},selectTextRange:function(h,l,c){h=(typeof(h)=="string"?document.getElementById(h):h);var a=h.value.length;l=Math.max(Math.min(l,a),0);c=Math.min(c,a);if(h.setSelectionRange){try{h.setSelectionRange(l,c)}catch(j){}}else{if(h.createTextRange){var g=h.createTextRange();g.moveStart("character",l);g.moveEnd("character",c-a);try{g.select()}catch(j){}}}},transData:null,transDetect:function(){if(this.transData==null){this.transData={transProp:false,transEv:null};var e={MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd",OTransition:"oTransitionEnd",msTransition:"transitionend",transition:"transitionend"};for(var c in e){if(this.transData.transProp==false&&document.documentElement.style[c]!=null){this.transData.transProp=c;this.transData.transEv=e[c]}}e=null}return this.transData},_xmlNodeValue:function(a){var e="";for(var c=0;c<a.childNodes.length;c++){e+=(a.childNodes[c].nodeValue!=null?a.childNodes[c].nodeValue.toString().replace(/^[\n\r\s]{0,}/,"").replace(/[\n\r\s]{0,}$/,""):"")}return e}};window.dhx4.isIE=(navigator.userAgent.indexOf("MSIE")>=0||navigator.userAgent.indexOf("Trident")>=0);window.dhx4.isIE6=(window.XMLHttpRequest==null&&navigator.userAgent.indexOf("MSIE")>=0);window.dhx4.isIE7=(navigator.userAgent.indexOf("MSIE 7.0")>=0&&navigator.userAgent.indexOf("Trident")<0);window.dhx4.isIE8=(navigator.userAgent.indexOf("MSIE 8.0")>=0&&navigator.userAgent.indexOf("Trident")>=0);window.dhx4.isIE9=(navigator.userAgent.indexOf("MSIE 9.0")>=0&&navigator.userAgent.indexOf("Trident")>=0);window.dhx4.isIE10=(navigator.userAgent.indexOf("MSIE 10.0")>=0&&navigator.userAgent.indexOf("Trident")>=0&&window.navigator.pointerEnabled!=true);window.dhx4.isIE11=(navigator.userAgent.indexOf("Trident")>=0&&window.navigator.pointerEnabled==true);window.dhx4.isEdge=(navigator.userAgent.indexOf("Edge")>=0);window.dhx4.isOpera=(navigator.userAgent.indexOf("Opera")>=0);window.dhx4.isChrome=(navigator.userAgent.indexOf("Chrome")>=0)&&!window.dhx4.isEdge;window.dhx4.isKHTML=(navigator.userAgent.indexOf("Safari")>=0||navigator.userAgent.indexOf("Konqueror")>=0)&&!window.dhx4.isEdge;window.dhx4.isFF=(navigator.userAgent.indexOf("Firefox")>=0);window.dhx4.isIPad=(navigator.userAgent.search(/iPad/gi)>=0);window.dhx4.dnd={evs:{},p_en:((window.dhx4.isIE||window.dhx4.isEdge)&&(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)),_mTouch:function(a){return(window.dhx4.isIE10&&a.pointerType==a.MSPOINTER_TYPE_MOUSE||window.dhx4.isIE11&&a.pointerType=="mouse"||window.dhx4.isEdge&&a.pointerType=="mouse")},_touchOn:function(a){if(a==null){a=document.body}a.style.touchAction=a.style.msTouchAction="";a=null},_touchOff:function(a){if(a==null){a=document.body}a.style.touchAction=a.style.msTouchAction="none";a=null}};if(window.navigator.pointerEnabled==true){window.dhx4.dnd.evs={start:"pointerdown",move:"pointermove",end:"pointerup"}}else{if(window.navigator.msPointerEnabled==true){window.dhx4.dnd.evs={start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}}else{if(typeof(window.addEventListener)!="undefined"){window.dhx4.dnd.evs={start:"touchstart",move:"touchmove",end:"touchend"}}}}}if(typeof(window.dhx4.template)=="undefined"){window.dhx4.trim=function(a){return String(a).replace(/^\s{1,}/,"").replace(/\s{1,}$/,"")};window.dhx4.template=function(c,e,a){return c.replace(/#([a-z0-9_-]{1,})(\|([^#]*))?#/gi,function(){var l=arguments[1];var j=window.dhx4.trim(arguments[3]);var m=null;var h=[e[l]];if(j.length>0){j=j.split(":");var g=[];for(var n=0;n<j.length;n++){if(n>0&&g[g.length-1].match(/\\$/)!=null){g[g.length-1]=g[g.length-1].replace(/\\$/,"")+":"+j[n]}else{g.push(j[n])}}m=g[0];for(var n=1;n<g.length;n++){h.push(g[n])}}if(typeof(m)=="string"&&typeof(window.dhx4.template[m])=="function"){return window.dhx4.template[m].apply(window.dhx4.template,h)}if(l.length>0&&typeof(e[l])!="undefined"){if(a==true){return window.dhx4.trim(e[l])}return String(e[l])}return""})};window.dhx4.template.date=function(a,c){if(a!=null){if(a instanceof Date){return window.dhx4.date2str(a,c)}else{a=a.toString();if(a.match(/^\d*$/)!=null){return window.dhx4.date2str(new Date(parseInt(a)),c)}return a}}return""};window.dhx4.template.maxlength=function(c,a){return String(c).substr(0,a)};window.dhx4.template.number_format=function(g,h,e,a){var c=window.dhx4.template._parseFmt(h,e,a);if(c==false){return g}return window.dhx4.template._getFmtValue(g,c)};window.dhx4.template.lowercase=function(a){if(typeof(a)=="undefined"||a==null){a=""}return String(a).toLowerCase()};window.dhx4.template.uppercase=function(a){if(typeof(a)=="undefined"||a==null){a=""}return String(a).toUpperCase()};window.dhx4.template._parseFmt=function(l,e,a){var g=l.match(/^([^\.\,0-9]*)([0\.\,]*)([^\.\,0-9]*)/);if(g==null||g.length!=4){return false}var c={i_len:false,i_sep:(typeof(e)=="string"?e:","),d_len:false,d_sep:(typeof(a)=="string"?a:"."),s_bef:(typeof(g[1])=="string"?g[1]:""),s_aft:(typeof(g[3])=="string"?g[3]:"")};var j=g[2].split(".");if(j[1]!=null){c.d_len=j[1].length}var h=j[0].split(",");if(h.length>1){c.i_len=h[h.length-1].length}return c};window.dhx4.template._getFmtValue=function(value,fmt){var r=String(value).match(/^(-)?([0-9]{1,})(\.([0-9]{1,}))?$/);if(r!=null&&r.length==5){var v0="";if(r[1]!=null){v0+=r[1]}v0+=fmt.s_bef;if(fmt.i_len!==false){var i=0;var v1="";for(var q=r[2].length-1;q>=0;q--){v1=""+r[2].charAt(q)+v1;if(++i==fmt.i_len&&q>0){v1=fmt.i_sep+v1;i=0}}v0+=v1}else{v0+=r[2]}if(fmt.d_len!==false){if(r[4]==null){r[4]=""}while(r[4].length<fmt.d_len){r[4]+="0"}eval("dhx4.temp = new RegExp(/\\d{"+fmt.d_len+"}/);");var t1=(r[4]).match(dhx4.temp);if(t1!=null){v0+=fmt.d_sep+t1}dhx4.temp=t1=null}v0+=fmt.s_aft;return v0}return value}}if(typeof(window.dhx4.dateLang)=="undefined"){window.dhx4.dateLang="en";window.dhx4.dateStrings={en:{monthFullName:["January","February","March","April","May","June","July","August","September","October","November","December"],monthShortName:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayFullName:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayShortName:["Su","Mo","Tu","We","Th","Fr","Sa"]}};window.dhx4.dateFormat={en:"%Y-%m-%d"};window.dhx4.date2str=function(j,g,a){if(g==null||typeof(g)=="undefined"){g=window.dhx4.dateFormat[window.dhx4.dateLang]}if(a==null||typeof(a)=="undefined"){a=window.dhx4.dateStrings[window.dhx4.dateLang]}if(j instanceof Date){var h=function(l){return(String(l).length==1?"0"+String(l):l)};var c=function(n){switch(n){case"%d":return h(j.getDate());case"%j":return j.getDate();case"%D":return a.dayShortName[j.getDay()];case"%l":return a.dayFullName[j.getDay()];case"%m":return h(j.getMonth()+1);case"%n":return j.getMonth()+1;case"%M":return a.monthShortName[j.getMonth()];case"%F":return a.monthFullName[j.getMonth()];case"%y":return h(j.getYear()%100);case"%Y":return j.getFullYear();case"%g":return(j.getHours()+11)%12+1;case"%h":return h((j.getHours()+11)%12+1);case"%G":return j.getHours();case"%H":return h(j.getHours());case"%i":return h(j.getMinutes());case"%s":return h(j.getSeconds());case"%a":return(j.getHours()>11?"pm":"am");case"%A":return(j.getHours()>11?"PM":"AM");case"%%":return"%";case"%u":return j.getMilliseconds();case"%P":if(window.dhx4.temp_calendar!=null&&window.dhx4.temp_calendar.tz!=null){return window.dhx4.temp_calendar.tz}var r=j.getTimezoneOffset();var o=Math.abs(Math.floor(r/60));var l=Math.abs(r)-o*60;return(r>0?"-":"+")+h(o)+":"+h(l);default:return n}};var e=String(g||window.dhx4.dateFormat).replace(/%[a-zA-Z]/g,c)}return(e||String(j))};window.dhx4.str2date=function(j,y,D){if(y==null||typeof(y)=="undefined"){y=window.dhx4.dateFormat[window.dhx4.dateLang]}if(D==null||typeof(D)=="undefined"){D=window.dhx4.dateStrings[window.dhx4.dateLang]}y=y.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\\:|]/g,"\\$&");var C=[];var n=[];y=y.replace(/%[a-z]/gi,function(e){switch(e){case"%d":case"%m":case"%y":case"%h":case"%H":case"%i":case"%s":n.push(e);return"(\\d{2})";case"%D":case"%l":case"%M":case"%F":n.push(e);return"([a-zéûä\u0430-\u044F\u0451]{1,})";case"%j":case"%n":case"%g":case"%G":n.push(e);return"(\\d{1,2})";case"%Y":n.push(e);return"(\\d{4})";case"%a":n.push(e);return"([a|p]m)";case"%A":n.push(e);return"([A|P]M)";case"%u":n.push(e);return"(\\d{1,6})";case"%P":n.push(e);return"([+-]\\d{1,2}:\\d{1,2})"}return e});var E=new RegExp(y,"i");var o=j.match(E);if(o==null||o.length-1!=n.length){return"Invalid Date"}for(var c=1;c<o.length;c++){C.push(o[c])}var g={"%y":1,"%Y":1,"%n":2,"%m":2,"%M":2,"%F":2,"%d":3,"%j":3,"%a":4,"%A":4,"%H":5,"%G":5,"%h":5,"%g":5,"%i":6,"%s":7,"%u":7,"%P":7};var s={};var m={};for(var c=0;c<n.length;c++){if(typeof(g[n[c]])!="undefined"){var h=g[n[c]];if(!s[h]){s[h]=[];m[h]=[]}s[h].push(C[c]);m[h].push(n[c])}}C=[];n=[];for(var c=1;c<=7;c++){if(s[c]!=null){for(var x=0;x<s[c].length;x++){C.push(s[c][x]);n.push(m[c][x])}}}var a=new Date();a.setDate(1);a.setHours(0);a.setMinutes(0);a.setSeconds(0);a.setMilliseconds(0);var u=function(v,e){for(var r=0;r<e.length;r++){if(e[r].toLowerCase()==v){return r}}return -1};for(var c=0;c<C.length;c++){switch(n[c]){case"%d":case"%j":case"%n":case"%m":case"%Y":case"%H":case"%G":case"%i":case"%s":case"%u":if(!isNaN(C[c])){a[{"%d":"setDate","%j":"setDate","%n":"setMonth","%m":"setMonth","%Y":"setFullYear","%H":"setHours","%G":"setHours","%i":"setMinutes","%s":"setSeconds","%u":"setMilliseconds"}[n[c]]](Number(C[c])+(n[c]=="%m"||n[c]=="%n"?-1:0))}break;case"%M":case"%F":var l=u(C[c].toLowerCase(),D[{"%M":"monthShortName","%F":"monthFullName"}[n[c]]]);if(l>=0){a.setMonth(l)}break;case"%y":if(!isNaN(C[c])){var A=Number(C[c]);a.setFullYear(A+(A>50?1900:2000))}break;case"%g":case"%h":if(!isNaN(C[c])){var A=Number(C[c]);if(A<=12&&A>=0){a.setHours(A+(u("pm",C)>=0?(A==12?0:12):(A==12?-12:0)))}}break;case"%P":if(window.dhx4.temp_calendar!=null){window.dhx4.temp_calendar.tz=C[c]}break}}return a}}if(typeof(window.dhx4.ajax)=="undefined"){window.dhx4.ajax={cache:false,method:"get",parse:function(a){if(typeof a!=="string"){return a}a=a.replace(/^[\s]+/,"");if(window.DOMParser&&!dhx4.isIE){var c=(new window.DOMParser()).parseFromString(a,"text/xml")}else{if(window.ActiveXObject!==window.undefined){var c=new window.ActiveXObject("Microsoft.XMLDOM");c.async="false";c.loadXML(a)}}return c},xmltop:function(a,h,g){if(typeof h.status=="undefined"||h.status<400){xml=(!h.responseXML)?dhx4.ajax.parse(h.responseText||h):(h.responseXML||h);if(xml&&xml.documentElement!==null){try{if(!xml.getElementsByTagName("parsererror").length){return xml.getElementsByTagName(a)[0]}}catch(c){}}}if(g!==-1){dhx4.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],g])}return document.createElement("DIV")},xpath:function(g,a){if(!a.nodeName){a=a.responseXML||a}if(dhx4.isIE){try{return a.selectNodes(g)||[]}catch(j){return[]}}else{var h=[];var l;var c=(a.ownerDocument||a).evaluate(g,a,null,XPathResult.ANY_TYPE,null);while(l=c.iterateNext()){h.push(l)}return h}},query:function(a){dhx4.ajax._call((a.method||"GET"),a.url,a.data||"",(a.async||true),a.callback,null,a.headers)},get:function(a,c){return this._call("GET",a,null,true,c)},getSync:function(a){return this._call("GET",a,null,false)},put:function(c,a,e){return this._call("PUT",c,a,true,e)},del:function(c,a,e){return this._call("DELETE",c,a,true,e)},post:function(c,a,e){if(arguments.length==1){a=""}else{if(arguments.length==2&&(typeof(a)=="function"||typeof(window[a])=="function")){e=a;a=""}else{a=String(a)}}return this._call("POST",c,a,true,e)},postSync:function(c,a){a=(a==null?"":String(a));return this._call("POST",c,a,false)},getLong:function(a,c){this._call("GET",a,null,true,c,{url:a})},postLong:function(c,a,e){if(arguments.length==2&&(typeof(a)=="function"||typeof(window[a]))){e=a;a=""}this._call("POST",c,a,true,e,{url:c,postData:a})},_call:function(a,c,e,h,l,o,g){var n=(window.XMLHttpRequest&&!dhx4.isIE?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));var j=(navigator.userAgent.match(/AppleWebKit/)!=null&&navigator.userAgent.match(/Qt/)!=null&&navigator.userAgent.match(/Safari/)!=null);if(h==true){n.onreadystatechange=function(){if((n.readyState==4)||(j==true&&n.readyState==3)){if(n.status!=200||n.responseText==""){if(!dhx4.callEvent("onAjaxError",[{xmlDoc:n,filePath:c,async:h}])){return}}window.setTimeout(function(){if(typeof(l)=="function"){l.apply(window,[{xmlDoc:n,filePath:c,async:h}])}if(o!=null){if(typeof(o.postData)!="undefined"){dhx4.ajax.postLong(o.url,o.postData,l)}else{dhx4.ajax.getLong(o.url,l)}}l=null;n=null},1)}}}if(a=="GET"){c+=this._dhxr(c)}n.open(a,c,h);if(g!=null){for(var m in g){n.setRequestHeader(m,g[m])}}else{if(a=="POST"||a=="PUT"||a=="DELETE"){n.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}else{if(a=="GET"){e=null}}}n.setRequestHeader("X-Requested-With","XMLHttpRequest");n.send(e);if(h!=true){if((n.readyState==4)||(j==true&&n.readyState==3)){if(n.status!=200||n.responseText==""){dhx4.callEvent("onAjaxError",[{xmlDoc:n,filePath:c,async:h}])}}}return{xmlDoc:n,filePath:c,async:h}},_dhxr:function(a,c){if(this.cache!=true){if(a.match(/^[\?\&]$/)==null){a=(a.indexOf("?")>=0?"&":"?")}if(typeof(c)=="undefined"){c=true}return a+"dhxr"+new Date().getTime()+(c==true?"=1":"")}return""}}}if(typeof(window.dhx4._enableDataLoading)=="undefined"){window.dhx4._enableDataLoading=function(l,e,j,h,m){if(m=="clear"){for(var c in l._dhxdataload){l._dhxdataload[c]=null;delete l._dhxdataload[c]}l._loadData=null;l._dhxdataload=null;l.load=null;l.loadStruct=null;l=null;return}l._dhxdataload={initObj:e,xmlToJson:j,xmlRootTag:h,onBeforeXLS:null};l._loadData=function(u,v,w){if(arguments.length==2){w=v;v=null}var s=null;if(arguments.length==3){w=arguments[2]}if(typeof(u)=="string"){var r=u.replace(/^\s{1,}/,"").replace(/\s{1,}$/,"");var A=new RegExp("^<"+this._dhxdataload.xmlRootTag);if(A.test(r.replace(/^<\?xml[^\?]*\?>\s*/,""))){s=dhx4.ajax.parse(u);if(s!=null){s=this[this._dhxdataload.xmlToJson].apply(this,[s])}}if(s==null&&(r.match(/^[\s\S]*{[.\s\S]*}[\s\S]*$/)!=null||r.match(/^[\s\S]*\[[.\s\S]*\][\s\S]*$/)!=null)){s=dhx4.s2j(r)}if(s==null){this.callEvent("onXLS",[]);var o=[];if(typeof(this._dhxdataload.onBeforeXLS)=="function"){var r=this._dhxdataload.onBeforeXLS.apply(this,[u]);if(r!=null&&typeof(r)=="object"){if(r.url!=null){u=r.url}if(r.params!=null){for(var x in r.params){o.push(x+"="+encodeURIComponent(r.params[x]))}}}}var y=this;var n=function(a){var C=null;if((a.xmlDoc.getResponseHeader("Content-Type")||"").search(/xml/gi)>=0||(a.xmlDoc.responseText.replace(/^\s{1,}/,"")).match(/^</)!=null){C=y[y._dhxdataload.xmlToJson].apply(y,[a.xmlDoc.responseXML])}else{C=dhx4.s2j(a.xmlDoc.responseText)}if(C!=null){y[y._dhxdataload.initObj].apply(y,[C,u])}y.callEvent("onXLE",[]);if(w!=null){if(typeof(w)=="function"){w.apply(y,[])}else{if(typeof(window[w])=="function"){window[w].apply(y,[])}}}n=w=null;C=a=y=null};o=o.join("&")+(typeof(v)=="string"?"&"+v:"");if(dhx4.ajax.method=="post"){dhx4.ajax.post(u,o,n)}else{if(dhx4.ajax.method=="get"){dhx4.ajax.get(u+(o.length>0?(u.indexOf("?")>0?"&":"?")+o:""),n)}}return}}else{if(typeof(u.documentElement)=="object"||(typeof(u.tagName)!="undefined"&&typeof(u.getElementsByTagName)!="undefined"&&u.getElementsByTagName(this._dhxdataload.xmlRootTag).length>0)){s=this[this._dhxdataload.xmlToJson].apply(this,[u])}else{s=window.dhx4._copyObj(u)}}if(s!=null){this[this._dhxdataload.initObj].apply(this,[s])}if(w!=null){if(typeof(w)=="function"){w.apply(this,[])}else{if(typeof(window[w])=="function"){window[w].apply(this,[])}}w=null}};if(m!=null){var g={struct:"loadStruct",data:"load"};for(var c in m){if(m[c]==true){l[g[c]]=function(){return this._loadData.apply(this,arguments)}}}}l=null}}if(typeof(window.dhx4._eventable)=="undefined"){window.dhx4._eventable=function(a,c){if(c=="clear"){a.detachAllEvents();a.dhxevs=null;a.attachEvent=null;a.detachEvent=null;a.checkEvent=null;a.callEvent=null;a.detachAllEvents=null;a=null;return}a.dhxevs={data:{}};a.attachEvent=function(e,h){e=String(e).toLowerCase();if(!this.dhxevs.data[e]){this.dhxevs.data[e]={}}var g=window.dhx4.newId();this.dhxevs.data[e][g]=h;return g};a.detachEvent=function(j){for(var g in this.dhxevs.data){var h=0;for(var e in this.dhxevs.data[g]){if(e==j){this.dhxevs.data[g][e]=null;delete this.dhxevs.data[g][e]}else{h++}}if(h==0){this.dhxevs.data[g]=null;delete this.dhxevs.data[g]}}};a.checkEvent=function(e){e=String(e).toLowerCase();return(this.dhxevs.data[e]!=null)};a.callEvent=function(g,j){g=String(g).toLowerCase();if(this.dhxevs.data[g]==null){return true}var h=true;for(var e in this.dhxevs.data[g]){h=this.dhxevs.data[g][e].apply(this,j)&&h}return h};a.detachAllEvents=function(){for(var g in this.dhxevs.data){for(var e in this.dhxevs.data[g]){this.dhxevs.data[g][e]=null;delete this.dhxevs.data[g][e]}this.dhxevs.data[g]=null;delete this.dhxevs.data[g]}};a=null};dhx4._eventable(dhx4)}if(!window.dhtmlxValidation){dhtmlxValidation=function(){};dhtmlxValidation.prototype={isEmpty:function(a){return a==""},isNotEmpty:function(a){return(a instanceof Array?a.length>0:!a=="")},isValidBoolean:function(a){return !!a.toString().match(/^(0|1|true|false)$/)},isValidEmail:function(a){return !!a.toString().match(/(^[a-z0-9]([0-9a-z\-_\.]*)@([0-9a-z_\-\.]*)([.][a-z]{3})$)|(^[a-z]([0-9a-z_\.\-]*)@([0-9a-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(c){var a=c.toString().match(/^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})$/);return a&&!!(a[1]<=9999&&a[2]<=12&&a[3]<=31&&a[4]<=59&&a[5]<=59&&a[6]<=59)||false},isValidDate:function(a){var c=a.toString().match(/^(\d{4})-(\d{2})-(\d{2})$/);return c&&!!(c[1]<=9999&&c[2]<=12&&c[3]<=31)||false},isValidTime:function(c){var a=c.toString().match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/);return a&&!!(a[1]<=24&&a[2]<=59&&a[3]<=59)||false},isValidIPv4:function(a){var c=a.toString().match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);return c&&!!(c[1]<=255&&c[2]<=255&&c[3]<=255&&c[4]<=255)||false},isValidCurrency:function(a){return a.toString().match(/^\$?\s?\d+?([\.,\,]?\d+)?\s?\$?$/)&&true||false},isValidSSN:function(a){return a.toString().match(/^\d{3}\-?\d{2}\-?\d{4}$/)&&true||false},isValidSIN:function(a){return a.toString().match(/^\d{9}$/)&&true||false}};dhtmlxValidation=new dhtmlxValidation()}if(typeof(window.dhtmlx)=="undefined"){window.dhtmlx={extend:function(e,c){for(var g in c){if(!e[g]){e[g]=c[g]}}return e},extend_api:function(a,g,e){var c=window[a];if(!c){return}window[a]=function(l){if(l&&typeof l=="object"&&!l.tagName){var j=c.apply(this,(g._init?g._init(l):arguments));for(var h in dhtmlx){if(g[h]){this[g[h]](dhtmlx[h])}}for(var h in l){if(g[h]){this[g[h]](l[h])}else{if(h.indexOf("on")===0){this.attachEvent(h,l[h])}}}}else{var j=c.apply(this,arguments)}if(g._patch){g._patch(this)}return j||this};window[a].prototype=c.prototype;if(e){dhtmlx.extend(window[a].prototype,e)}},url:function(a){if(a.indexOf("?")!=-1){return"&"}else{return"?"}}}}function dhtmlDragAndDropObject(){if(window.dhtmlDragAndDrop){return window.dhtmlDragAndDrop}this.lastLanding=0;this.dragNode=0;this.dragStartNode=0;this.dragStartObject=0;this.tempDOMU=null;this.tempDOMM=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,c){a.onmousedown=this.preCreateDragCopy;a.dragStarter=c;this.addDragLanding(a,c)};dhtmlDragAndDropObject.prototype.addDragLanding=function(a,c){a.dragLanding=c};dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(a){if((a||window.event)&&(a||event).button==2){return}if(window.dhtmlDragAndDrop.waitDrag){window.dhtmlDragAndDrop.waitDrag=0;document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;return false}if(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();if((a)&&(a.preventDefault)){a.preventDefault();return false}return false};dhtmlDragAndDropObject.prototype.callDrag=function(g){if(!g){g=window.event}dragger=window.dhtmlDragAndDrop;if((new Date()).valueOf()-dragger.downtime<100){return}if(!dragger.dragNode){if(dragger.waitDrag){dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode,g);if(!dragger.dragNode){return dragger.stopDrag()}dragger.dragNode.onselectstart=function(){return false};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(g,true)}}if(dragger.dragNode.parentNode!=window.document.body&&dragger.gldragNode){var a=dragger.gldragNode;if(dragger.gldragNode.old){a=dragger.gldragNode.old}a.parentNode.removeChild(a);var c=dragger.dragNode.pWindow;if(a.pWindow&&a.pWindow.dhtmlDragAndDrop.lastLanding){a.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(a.pWindow.dhtmlDragAndDrop.lastLanding)}if(_isIE){var j=document.createElement("Div");j.innerHTML=dragger.dragNode.outerHTML;dragger.dragNode=j.childNodes[0]}else{dragger.dragNode=dragger.dragNode.cloneNode(true)}dragger.dragNode.pWindow=window;dragger.gldragNode.old=dragger.dragNode;document.body.appendChild(dragger.dragNode);c.dhtmlDragAndDrop.dragNode=dragger.dragNode}dragger.dragNode.style.left=g.clientX+15+(dragger.fx?dragger.fx*(-1):0)+(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";dragger.dragNode.style.top=g.clientY+3+(dragger.fy?dragger.fy*(-1):0)+(document.body.scrollTop||document.documentElement.scrollTop)+"px";if(!g.srcElement){var h=g.target}else{h=g.srcElement}dragger.checkLanding(h,g)};dhtmlDragAndDropObject.prototype.calculateFramePosition=function(h){if(window.name){var e=parent.frames[window.name].frameElement.offsetParent;var g=0;var c=0;while(e){g+=e.offsetLeft;c+=e.offsetTop;e=e.offsetParent}if((parent.dhtmlDragAndDrop)){var a=parent.dhtmlDragAndDrop.calculateFramePosition(1);g+=a.split("_")[0]*1;c+=a.split("_")[1]*1}if(h){return g+"_"+c}else{this.fx=g}this.fy=c}return"0_0"};dhtmlDragAndDropObject.prototype.checkLanding=function(c,a){if((c)&&(c.dragLanding)){if(this.lastLanding){this.lastLanding.dragLanding._dragOut(this.lastLanding)}this.lastLanding=c;this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode,a.clientX,a.clientY,a);this.lastLanding_scr=(_isIE?a.srcElement:a.target)}else{if((c)&&(c.tagName!="BODY")){this.checkLanding(c.parentNode,a)}else{if(this.lastLanding){this.lastLanding.dragLanding._dragOut(this.lastLanding,a.clientX,a.clientY,a)}this.lastLanding=0;if(this._onNotFound){this._onNotFound()}}}};dhtmlDragAndDropObject.prototype.stopDrag=function(c,g){dragger=window.dhtmlDragAndDrop;if(!g){dragger.stopFrameRoute();var a=dragger.lastLanding;dragger.lastLanding=null;if(a){a.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,a,(_isIE?event.srcElement:c.target))}}dragger.lastLanding=null;if((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(g){if(g){window.dhtmlDragAndDrop.stopDrag(1,1)}for(var a=0;a<window.frames.length;a++){try{if((window.frames[a]!=g)&&(window.frames[a].dhtmlDragAndDrop)){window.frames[a].dhtmlDragAndDrop.stopFrameRoute(window)}}catch(c){}}try{if((parent.dhtmlDragAndDrop)&&(parent!=window)&&(parent!=g)){parent.dhtmlDragAndDrop.stopFrameRoute(window)}}catch(c){}};dhtmlDragAndDropObject.prototype.initFrameRoute=function(g,h){if(g){window.dhtmlDragAndDrop.preCreateDragCopy();window.dhtmlDragAndDrop.dragStartNode=g.dhtmlDragAndDrop.dragStartNode;window.dhtmlDragAndDrop.dragStartObject=g.dhtmlDragAndDrop.dragStartObject;window.dhtmlDragAndDrop.dragNode=g.dhtmlDragAndDrop.dragNode;window.dhtmlDragAndDrop.gldragNode=g.dhtmlDragAndDrop.dragNode;window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;window.waitDrag=0;if(((!_isIE)&&(h))&&((!_isFF)||(_FFrv<1.8))){window.dhtmlDragAndDrop.calculateFramePosition()}}try{if((parent.dhtmlDragAndDrop)&&(parent!=window)&&(parent!=g)){parent.dhtmlDragAndDrop.initFrameRoute(window)}}catch(c){}for(var a=0;a<window.frames.length;a++){try{if((window.frames[a]!=g)&&(window.frames[a].dhtmlDragAndDrop)){window.frames[a].dhtmlDragAndDrop.initFrameRoute(window,((!g||h)?1:0))}}catch(c){}}};_isFF=false;_isIE=false;_isOpera=false;_isKHTML=false;_isMacOS=false;_isChrome=false;_FFrv=false;_KHTMLrv=false;_OperaRv=false;if(navigator.userAgent.indexOf("Macintosh")!=-1){_isMacOS=true}if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){_isChrome=true}if((navigator.userAgent.indexOf("Safari")!=-1)||(navigator.userAgent.indexOf("Konqueror")!=-1)){_KHTMLrv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari")+7,5));if(_KHTMLrv>525){_isFF=true;_FFrv=1.9}else{_isKHTML=true}}else{if(navigator.userAgent.indexOf("Opera")!=-1){_isOpera=true;_OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera")+6,3))}else{if(navigator.appName.indexOf("Microsoft")!=-1){_isIE=true;if((navigator.appVersion.indexOf("MSIE 8.0")!=-1||navigator.appVersion.indexOf("MSIE 9.0")!=-1||navigator.appVersion.indexOf("MSIE 10.0")!=-1||document.documentMode>7)&&document.compatMode!="BackCompat"){_isIE=8}}else{if(navigator.appName=="Netscape"&&navigator.userAgent.indexOf("Trident")!=-1){_isIE=8}else{_isFF=true;_FFrv=parseFloat(navigator.userAgent.split("rv:")[1])}}}}if(typeof(window.dhtmlxEvent)=="undefined"){function dhtmlxEvent(c,e,a){if(c.addEventListener){c.addEventListener(e,a,false)}else{if(c.attachEvent){c.attachEvent("on"+e,a)}}}}if(dhtmlxEvent.touchDelay==null){dhtmlxEvent.touchDelay=2000}if(typeof(dhtmlxEvent.initTouch)=="undefined"){dhtmlxEvent.initTouch=function(){var g;var h;var c,a;dhtmlxEvent(document.body,"touchstart",function(j){h=j.touches[0].target;c=j.touches[0].clientX;a=j.touches[0].clientY;g=window.setTimeout(e,dhtmlxEvent.touchDelay)});function e(){if(h){var j=document.createEvent("HTMLEvents");j.initEvent("dblclick",true,true);h.dispatchEvent(j);g=h=null}}dhtmlxEvent(document.body,"touchmove",function(j){if(g){if(Math.abs(j.touches[0].clientX-c)>50||Math.abs(j.touches[0].clientY-a)>50){window.clearTimeout(g);g=h=false}}});dhtmlxEvent(document.body,"touchend",function(j){if(g){window.clearTimeout(g);g=h=false}});dhtmlxEvent.initTouch=function(){}}}if(!window.dhtmlx){dhtmlx={}}dhtmlx.assert=function(c,a){if(!c){dhtmlx.error(a)}};dhtmlx.assert_enabled=function(){return false};dhtmlx.assert_event=function(j,e){if(!j._event_check){j._event_check={};j._event_check_size={}}for(var c in e){j._event_check[c.toLowerCase()]=e[c];var h=-1;for(var g in e[c]){h++}j._event_check_size[c.toLowerCase()]=h}};dhtmlx.assert_method_info=function(h,c,g,j){var a=[];for(var e=0;e<j.length;e++){a.push(j[e][0]+" : "+j[e][1]+"\n "+j[e][2].describe()+(j[e][3]?"; optional":""))}return h.name+"."+c+"\n"+g+"\n Arguments:\n - "+a.join("\n - ")};dhtmlx.assert_method=function(e,a){for(var c in a){dhtmlx.assert_method_process(e,c,a[c].descr,a[c].args,(a[c].min||99),a[c].skip)}};dhtmlx.assert_method_process=function(j,c,h,l,e,g){var a=j[c];if(!g){j[c]=function(){if(arguments.length!=l.length&&arguments.length<e){dhtmlx.log("warn","Incorrect count of parameters\n"+j[c].describe()+"\n\nExpecting "+l.length+" but have only "+arguments.length)}else{for(var m=0;m<l.length;m++){if(!l[m][3]&&!l[m][2](arguments[m])){dhtmlx.log("warn","Incorrect method call\n"+j[c].describe()+"\n\nActual value of "+(m+1)+" parameter: {"+(typeof arguments[m])+"} "+arguments[m])}}}return a.apply(this,arguments)}}j[c].describe=function(){return dhtmlx.assert_method_info(j,c,h,l)}};dhtmlx.assert_event_call=function(e,c,a){if(e._event_check){if(!e._event_check[c]){dhtmlx.log("warn","Not expected event call :"+c)}else{if(dhtmlx.isNotDefined(a)){dhtmlx.log("warn","Event without parameters :"+c)}else{if(e._event_check_size[c]!=a.length){dhtmlx.log("warn","Incorrect event call, expected "+e._event_check_size[c]+" parameter(s), but have "+a.length+" parameter(s), for "+c+" event")}}}}};dhtmlx.assert_event_attach=function(c,a){if(c._event_check&&!c._event_check[a]){dhtmlx.log("warn","Unknown event name: "+a)}};dhtmlx.assert_property=function(c,a){if(!c._settings_check){c._settings_check={}}dhtmlx.extend(c._settings_check,a)};dhtmlx.assert_check=function(e,c){if(typeof e=="object"){for(var a in e){dhtmlx.assert_settings(a,e[a],c)}}};dhtmlx.assert_settings=function(m,h,g){g=g||this._settings_check;if(g){if(!g[m]){return dhtmlx.log("warn","Unknown propery: "+m)}var l="";var c="";var a=false;for(var e=0;e<g[m].length;e++){var j=g[m][e];if(typeof j=="string"){continue}if(typeof j=="function"){a=a||j(h)}else{if(typeof j=="object"&&typeof j[1]=="function"){a=a||j[1](h);if(a&&j[2]){dhtmlx.assert_check(h,j[2])}}}if(a){break}}if(!a){dhtmlx.log("warn","Invalid configuration\n"+dhtmlx.assert_info(m,g)+"\nActual value: {"+(typeof h)+"} "+h)}}};dhtmlx.assert_info=function(c,j){var a=j[c];var h="";var g=[];for(var e=0;e<a.length;e++){if(typeof rule=="string"){h=a[e]}else{if(a[e].describe){g.push(a[e].describe())}else{if(a[e][1]&&a[e][1].describe){g.push(a[e][1].describe())}}}}return"Property: "+c+", "+h+" \nExpected value: \n - "+g.join("\n - ")};if(dhtmlx.assert_enabled()){dhtmlx.assert_rule_color=function(a){if(typeof a!="string"){return false}if(a.indexOf("#")!==0){return false}if(a.substr(1).replace(/[0-9A-F]/gi,"")!==""){return false}return true};dhtmlx.assert_rule_color.describe=function(){return"{String} Value must start from # and contain hexadecimal code of color"};dhtmlx.assert_rule_template=function(a){if(typeof a=="function"){return true}if(typeof a=="string"){return true}return false};dhtmlx.assert_rule_template.describe=function(){return"{Function},{String} Value must be a function which accepts data object and return text string, or a sting with optional template markers"};dhtmlx.assert_rule_boolean=function(a){if(typeof a=="boolean"){return true}return false};dhtmlx.assert_rule_boolean.describe=function(){return"{Boolean} true or false"};dhtmlx.assert_rule_object=function(a,c){if(typeof a=="object"){return true}return false};dhtmlx.assert_rule_object.describe=function(){return"{Object} Configuration object"};dhtmlx.assert_rule_string=function(a){if(typeof a=="string"){return true}return false};dhtmlx.assert_rule_string.describe=function(){return"{String} Plain string"};dhtmlx.assert_rule_htmlpt=function(a){return !!dhtmlx.toNode(a)};dhtmlx.assert_rule_htmlpt.describe=function(){return"{Object},{String} HTML node or ID of HTML Node"};dhtmlx.assert_rule_notdocumented=function(a){return false};dhtmlx.assert_rule_notdocumented.describe=function(){return"This options wasn't documented"};dhtmlx.assert_rule_key=function(c){var a=function(e){return c[e]};a.describe=function(){var g=[];for(var e in c){g.push(e)}return"{String} can take one of next values: "+g.join(", ")};return a};dhtmlx.assert_rule_dimension=function(a){if(a*1==a&&!isNaN(a)&&a>=0){return true}return false};dhtmlx.assert_rule_dimension.describe=function(){return"{Integer} value must be a positive number"};dhtmlx.assert_rule_number=function(a){if(typeof a=="number"){return true}return false};dhtmlx.assert_rule_number.describe=function(){return"{Integer} value must be a number"};dhtmlx.assert_rule_function=function(a){if(typeof a=="function"){return true}return false};dhtmlx.assert_rule_function.describe=function(){return"{Function} value must be a custom function"};dhtmlx.assert_rule_any=function(a){return true};dhtmlx.assert_rule_any.describe=function(){return"Any value"};dhtmlx.assert_rule_mix=function(e,c){var g=function(a){if(e(a)||c(a)){return true}return false};g.describe=function(){return e.describe()};return g}}dhtmlx.codebase="./";dhtmlx.copy=function(c){var a=dhtmlx.copy._function;a.prototype=c;return new a()};dhtmlx.copy._function=function(){};dhtmlx.extend=function(c,a){for(var e in a){c[e]=a[e]}if(dhtmlx.assert_enabled()&&a._assert){c._assert();c._assert=null}dhtmlx.assert(c,"Invalid nesting target");dhtmlx.assert(a,"Invalid nesting source");if(a._init){c._init()}return c};dhtmlx.proto_extend=function(){var j=arguments;var e=j[0];var c=[];for(var h=j.length-1;h>0;h--){if(typeof j[h]=="function"){j[h]=j[h].prototype}for(var g in j[h]){if(g=="_init"){c.push(j[h][g])}else{if(!e[g]){e[g]=j[h][g]}}}}if(j[0]._init){c.push(j[0]._init)}e._init=function(){for(var l=0;l<c.length;l++){c[l].apply(this,arguments)}};e.base=j[1];var a=function(l){this._init(l);if(this._parseSettings){this._parseSettings(l,this.defaults)}};a.prototype=e;e=j=null;return a};dhtmlx.bind=function(c,a){return function(){return c.apply(a,arguments)}};dhtmlx.require=function(a){if(!dhtmlx._modules[a]){dhtmlx.assert(dhtmlx.ajax,"load module is required");dhtmlx.exec(dhtmlx.ajax().sync().get(dhtmlx.codebase+a).responseText);dhtmlx._modules[a]=true}};dhtmlx._modules={};dhtmlx.exec=function(code){if(window.execScript){window.execScript(code)}else{window.eval(code)}};dhtmlx.methodPush=function(a,e,c){return function(){var g=false;g=a[e].apply(a,arguments);return g}};dhtmlx.isNotDefined=function(c){return typeof c=="undefined"};dhtmlx.delay=function(g,c,e,a){setTimeout(function(){var h=g.apply(c,e);g=c=e=null;return h},a||1)};dhtmlx.uid=function(){if(!this._seed){this._seed=(new Date).valueOf()}this._seed++;return this._seed};dhtmlx.toNode=function(a){if(typeof a=="string"){return document.getElementById(a)}return a};dhtmlx.toArray=function(a){return dhtmlx.extend((a||[]),dhtmlx.PowerArray)};dhtmlx.toFunctor=function(str){return(typeof(str)=="string")?eval(str):str};dhtmlx._events={};dhtmlx.event=function(g,e,a,c){g=dhtmlx.toNode(g);var h=dhtmlx.uid();dhtmlx._events[h]=[g,e,a];if(c){a=dhtmlx.bind(a,c)}if(g.addEventListener){g.addEventListener(e,a,false)}else{if(g.attachEvent){g.attachEvent("on"+e,a)}}return h};dhtmlx.eventRemove=function(c){if(!c){return}dhtmlx.assert(this._events[c],"Removing non-existing event");var a=dhtmlx._events[c];if(a[0].removeEventListener){a[0].removeEventListener(a[1],a[2],false)}else{if(a[0].detachEvent){a[0].detachEvent("on"+a[1],a[2])}}delete this._events[c]};dhtmlx.log=function(c,e,a){if(window.console&&console.log){c=c.toLowerCase();if(window.console[c]){window.console[c](e||"unknown error")}else{window.console.log(c+": "+e)}if(a){window.console.log(a)}}};dhtmlx.log_full_time=function(a){dhtmlx._start_time_log=new Date();dhtmlx.log("Info","Timing start ["+a+"]");window.setTimeout(function(){var c=new Date();dhtmlx.log("Info","Timing end ["+a+"]:"+(c.valueOf()-dhtmlx._start_time_log.valueOf())/1000+"s")},1)};dhtmlx.log_time=function(a){var e="_start_time_log"+a;if(!dhtmlx[e]){dhtmlx[e]=new Date();dhtmlx.log("Info","Timing start ["+a+"]")}else{var c=new Date();dhtmlx.log("Info","Timing end ["+a+"]:"+(c.valueOf()-dhtmlx[e].valueOf())/1000+"s");dhtmlx[e]=null}};dhtmlx.error=function(c,a){dhtmlx.log("error",c,a)};dhtmlx.EventSystem={_init:function(){this._events={};this._handlers={};this._map={}},block:function(){this._events._block=true},unblock:function(){this._events._block=false},mapEvent:function(a){dhtmlx.extend(this._map,a)},callEvent:function(e,h){if(this._events._block){return true}e=e.toLowerCase();dhtmlx.assert_event_call(this,e,h);var g=this._events[e.toLowerCase()];var a=true;if(dhtmlx.debug){dhtmlx.log("info","["+this.name+"] event:"+e,h)}if(g){for(var c=0;c<g.length;c++){if(g[c].apply(this,(h||[]))===false){a=false}}}if(this._map[e]&&!this._map[e].callEvent(e,h)){a=false}return a},attachEvent:function(c,a,g){c=c.toLowerCase();dhtmlx.assert_event_attach(this,c);g=g||dhtmlx.uid();a=dhtmlx.toFunctor(a);var e=this._events[c]||dhtmlx.toArray();e.push(a);this._events[c]=e;this._handlers[g]={f:a,t:c};return g},detachEvent:function(g){if(this._handlers[g]){var c=this._handlers[g].t;var a=this._handlers[g].f;var e=this._events[c];e.remove(a);delete this._handlers[g]}}};dhtmlx.PowerArray={removeAt:function(c,a){if(c>=0){this.splice(c,(a||1))}},remove:function(a){this.removeAt(this.find(a))},insertAt:function(c,e){if(!e&&e!==0){this.push(c)}else{var a=this.splice(e,(this.length-e));this[e]=c;this.push.apply(this,a)}},find:function(a){for(i=0;i<this.length;i++){if(a==this[i]){return i}}return -1},each:function(a,e){for(var c=0;c<this.length;c++){a.call((e||this),this[c])}},map:function(a,e){for(var c=0;c<this.length;c++){this[c]=a.call((e||this),this[c])}return this}};dhtmlx.env={};if(navigator.userAgent.indexOf("Opera")!=-1){dhtmlx._isOpera=true}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=9}}dhtmlx.env={};(function(){dhtmlx.env.transform=false;dhtmlx.env.transition=false;var a={};a.names=["transform","transition"];a.transform=["transform","WebkitTransform","MozTransform","oTransform","msTransform"];a.transition=["transition","WebkitTransition","MozTransition","oTransition"];var g=document.createElement("DIV");var e;for(var c=0;c<a.names.length;c++){while(p=a[a.names[c]].pop()){if(typeof g.style[p]!="undefined"){dhtmlx.env[a.names[c]]=true}}}})();dhtmlx.env.transform_prefix=(function(){var a;if(dhtmlx._isOpera){a="-o-"}else{a="";if(dhtmlx._isFF){a="-moz-"}if(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:10000};dhtmlx.html={create:function(c,a,e){a=a||{};var g=document.createElement(c);for(var h in a){g.setAttribute(h,a[h])}if(a.style){g.style.cssText=a.style}if(a["class"]){g.className=a["class"]}if(e){g.innerHTML=e}return g},getValue:function(a){a=dhtmlx.toNode(a);if(!a){return""}return dhtmlx.isNotDefined(a.value)?a.innerHTML:a.value},remove:function(c){if(c instanceof Array){for(var a=0;a<c.length;a++){this.remove(c[a])}}else{if(c&&c.parentNode){c.parentNode.removeChild(c)}}},insertBefore:function(c,e,a){if(!c){return}if(e){e.parentNode.insertBefore(c,e)}else{a.appendChild(c)}},locate:function(c,h){c=c||event;var a=c.target||c.srcElement;while(a){if(a.getAttribute){var g=a.getAttribute(h);if(g){return g}}a=a.parentNode}return null},offset:function(g){if(g.getBoundingClientRect){var l=g.getBoundingClientRect();var m=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||m.scrollTop;var h=window.pageXOffset||c.scrollLeft||m.scrollLeft;var j=c.clientTop||m.clientTop||0;var n=c.clientLeft||m.clientLeft||0;var o=l.top+a-j;var e=l.left+h-n;return{y:Math.round(o),x:Math.round(e)}}else{var o=0,e=0;while(g){o=o+parseInt(g.offsetTop,10);e=e+parseInt(g.offsetLeft,10);g=g.offsetParent}return{y:o,x:e}}},pos:function(a){a=a||event;if(a.pageX||a.pageY){return{x:a.pageX,y:a.pageY}}var c=((dhtmlx._isIE)&&(document.compatMode!="BackCompat"))?document.documentElement:document.body;return{x:a.clientX+c.scrollLeft-c.clientLeft,y:a.clientY+c.scrollTop-c.clientTop}},preventEvent:function(a){if(a&&a.preventDefault){a.preventDefault()}dhtmlx.html.stopEvent(a)},stopEvent:function(a){(a||event).cancelBubble=true;return false},addCss:function(c,a){c.className+=" "+a},removeCss:function(c,a){c.className=c.className.replace(RegExp(a,"g"),"")}};(function(){var a=document.getElementsByTagName("SCRIPT");dhtmlx.assert(a.length,"Can't locate codebase");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("/")+"/"}})();if(!dhtmlx.ui){dhtmlx.ui={}}dhtmlx.Destruction={_init:function(){dhtmlx.destructors.push(this)},destructor:function(){this.destructor=function(){};this._htmlmap=null;this._htmlrows=null;if(this._html){document.body.appendChild(this._html)}this._html=null;if(this._obj){this._obj.innerHTML="";this._obj._htmlmap=null}this._obj=this._dataobj=null;this.data=null;this._events=this._handlers={};if(this.render){this.render=function(){}}}};dhtmlx.destructors=[];dhtmlx.event(window,"unload",function(){if(dhtmlx.destructors){for(var e=0;e<dhtmlx.destructors.length;e++){dhtmlx.destructors[e].destructor()}dhtmlx.destructors=[]}for(var c in dhtmlx._events){var g=dhtmlx._events[c];if(g[0].removeEventListener){g[0].removeEventListener(g[1],g[2],false)}else{if(g[0].detachEvent){g[0].detachEvent("on"+g[1],g[2])}}delete dhtmlx._events[c]}});dhtmlx.ajax=function(a,c,e){if(arguments.length!==0){var g=new dhtmlx.ajax();if(e){g.master=e}g.get(a,null,c)}if(!this.getXHR){return new dhtmlx.ajax()}return this};dhtmlx.ajax.prototype={getXHR:function(){if(dhtmlx._isIE){return new ActiveXObject("Microsoft.xmlHTTP")}else{return new XMLHttpRequest()}},send:function(h,n,l){var c=this.getXHR();if(typeof l=="function"){l=[l]}if(typeof n=="object"){var j=[];for(var e in n){var m=n[e];if(m===null||m===dhtmlx.undefined){m=""}j.push(e+"="+encodeURIComponent(m))}n=j.join("&")}if(n&&!this.post){h=h+(h.indexOf("?")!=-1?"&":"?")+n;n=null}c.open(this.post?"POST":"GET",h,!this._sync);if(this.post){c.setRequestHeader("Content-type","application/x-www-form-urlencoded")}var g=this;c.onreadystatechange=function(){if(!c.readyState||c.readyState==4){if(l&&g){for(var a=0;a<l.length;a++){if(l[a]){l[a].call((g.master||g),c.responseText,c.responseXML,c)}}}g.master=null;l=g=null}};c.send(n||null);return c},get:function(a,e,c){this.post=false;return this.send(a,e,c)},post:function(a,e,c){this.post=true;return this.send(a,e,c)},sync:function(){this._sync=true;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=true;if(this._settings.url){this.url_setter(this._settings.url)}if(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 true},load:function(a,c){this.callEvent("onXLS",[]);if(typeof c=="string"){this.data.driver=dhtmlx.DataDriver[c];c=arguments[2]}else{this.data.driver=dhtmlx.DataDriver[this._settings.datatype||"xml"]}if(window.dhx4){dhx4.ajax.get(a,dhtmlx.bind(function(g){var e=g.xmlDoc;var j=e.responseText;var h=e.responseXML;if(this._onLoad){this._onLoad.call(this,j,h,e)}if(c){c.call(this,j,h,e)}},this))}else{dhtmlx.ajax(a,[this._onLoad,c],this)}},parse:function(c,a){this.callEvent("onXLS",[]);this.data.driver=dhtmlx.DataDriver[a||"xml"];this._onLoad(c,null)},_onLoad:function(h,c,a){var e=this.data.driver;var g=e.getRecords(e.toObject(h,c))[0];this.data=(e?e.getDetails(g):h);this.callEvent("onXLE",[])},_check_data_feed:function(c){if(!this._settings.dataFeed||this._ignore_feed||!c){return true}var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,(c.id||c),c)}a=a+(a.indexOf("?")==-1?"?":"&")+"action=get&id="+encodeURIComponent(c.id||c);this.callEvent("onXLS",[]);dhtmlx.ajax(a,function(g,e){this._ignore_feed=true;this.setValues(dhtmlx.DataDriver.json.toObject(g)[0]);this._ignore_feed=false;this.callEvent("onXLE",[])},this);return false}};dhtmlx.DataDriver={};dhtmlx.DataDriver.json={toObject:function(data){if(!data){data="[]"}if(typeof data=="string"){eval("dhtmlx.temp="+data);return dhtmlx.temp}return data},getRecords:function(a){if(a&&a.data){a=a.data}if(a&&!(a instanceof Array)){return[a]}return a},getDetails:function(a){return a},getInfo:function(a){return{_size:(a.total_count||0),_from:(a.pos||0),_key:(a.dhx_security)}}};dhtmlx.DataDriver.json_ext={toObject:function(data){if(!data){data="[]"}if(typeof data=="string"){var temp;eval("temp="+data);dhtmlx.temp=[];var header=temp.header;for(var i=0;i<temp.data.length;i++){var item={};for(var j=0;j<header.length;j++){if(typeof(temp.data[i][j])!="undefined"){item[header[j]]=temp.data[i][j]}}dhtmlx.temp.push(item)}return dhtmlx.temp}return data},getRecords:function(a){if(a&&!(a instanceof Array)){return[a]}return a},getDetails:function(a){return a},getInfo:function(a){return{_size:(a.total_count||0),_from:(a.pos||0)}}};dhtmlx.DataDriver.html={toObject:function(c){if(typeof c=="string"){var a=null;if(c.indexOf("<")==-1){a=dhtmlx.toNode(c)}if(!a){a=document.createElement("DIV");a.innerHTML=c}return a.getElementsByTagName(this.tag)}return c},getRecords:function(a){if(a.tagName){return a.childNodes}return a},getDetails:function(a){return dhtmlx.DataDriver.xml.tagToObject(a)},getInfo:function(a){return{_size:0,_from:0}},tag:"LI"};dhtmlx.DataDriver.jsarray={toObject:function(data){if(typeof data=="string"){eval("dhtmlx.temp="+data);return dhtmlx.temp}return data},getRecords:function(a){return a},getDetails:function(e){var a={};for(var c=0;c<e.length;c++){a["data"+c]=e[c]}return a},getInfo:function(a){return{_size:0,_from:0}}};dhtmlx.DataDriver.csv={toObject:function(a){return a},getRecords:function(a){return a.split(this.row)},getDetails:function(e){e=this.stringToArray(e);var a={};for(var c=0;c<e.length;c++){a["data"+c]=e[c]}return a},getInfo:function(a){return{_size:0,_from:0}},stringToArray:function(c){c=c.split(this.cell);for(var a=0;a<c.length;a++){c[a]=c[a].replace(/^[ \t\n\r]*(\"|)/g,"").replace(/(\"|)[ \t\n\r]*$/g,"")}return c},row:"\n",cell:","};dhtmlx.DataDriver.xml={toObject:function(c,a){if(a&&(a=this.checkResponse(c,a))){return a}if(typeof c=="string"){return this.fromString(c)}return c},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),_key:(a.documentElement.getAttribute("dhx_security"))}},xpath:function(h,o){if(window.XPathResult){var g=h;if(h.nodeName.indexOf("document")==-1){h=h.ownerDocument}var m=[];var c=h.evaluate(o,g,null,XPathResult.ANY_TYPE,null);var n=c.iterateNext();while(n){m.push(n);n=c.iterateNext()}return m}else{var l=true;try{if(typeof(h.selectNodes)=="undefined"){l=false}}catch(j){}if(l){return h.selectNodes(o)}else{var a=o.split("/").pop();return h.getElementsByTagName(a)}}},tagToObject:function(e,n){n=n||{};var h=false;var g=e.attributes;if(g&&g.length){for(var l=0;l<g.length;l++){n[g[l].name]=g[l].value}h=true}var c=e.childNodes;var m={};for(var l=0;l<c.length;l++){if(c[l].nodeType==1){var j=c[l].tagName;if(typeof n[j]!="undefined"){if(!(n[j] instanceof Array)){n[j]=[n[j]]}n[j].push(this.tagToObject(c[l],{}))}else{n[c[l].tagName]=this.tagToObject(c[l],{})}h=true}}if(!h){return this.nodeValue(e)}n.value=this.nodeValue(e);return n},nodeValue:function(a){if(a.firstChild){return a.firstChild.wholeText||a.firstChild.data}return""},fromString:function(c){if(window.DOMParser&&!dhtmlx._isIE){return(new DOMParser()).parseFromString(c,"text/xml")}if(window.ActiveXObject){var a=new ActiveXObject("Microsoft.xmlDOM");a.loadXML(c);return a}dhtmlx.error("Load from xml string is not supported")},checkResponse:function(g,e){if(e&&(e.firstChild&&e.firstChild.tagName!="parsererror")){return e}var c=this.fromString(g.replace(/^[\s]+/,""));if(c){return c}dhtmlx.error("xml can't be parsed",g)}};dhtmlx.DataLoader={_init:function(a){a=a||"";this.name="DataStore";this.data=(a.datastore)||(new dhtmlx.DataStore());this._readyHandler=this.data.attachEvent("onStoreLoad",dhtmlx.bind(this._call_onready,this))},load:function(a,c){dhtmlx.AtomDataLoader.load.apply(this,arguments);if(!this.data.feed){this.data.feed=function(g,e){if(this._load_count){return this._load_count=[g,e]}else{this._load_count=true}this.load(a+((a.indexOf("?")==-1)?"?":"&")+"posStart="+g+"&count="+e,function(){var h=this._load_count;this._load_count=false;if(typeof h=="object"){this.data.feed.apply(this,h)}})}}},_onLoad:function(e,c,a){this.data._parse(this.data.driver.toObject(e,c));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(l,j){if(this._settings.dataFeed){var h={};if(!l&&!h){return}if(typeof l=="function"){if(!j){return}l(j,h)}else{h={text:j}}this.clearAll();var c=this._settings.dataFeed;if(typeof c=="function"){return c.call(this,j,h)}var g=[];for(var e in h){g.push("dhx_filter["+e+"]="+encodeURIComponent(h[e]))}this.load(c+(c.indexOf("?")<0?"?":"&")+g.join("&"),this._settings.datatype);return false}},this));return a},_call_onready:function(){if(this._settings.ready){var a=dhtmlx.toFunctor(this._settings.ready);if(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){dhtmlx.assert(dhtmlx.DataDriver[a],"incorrect DataDriver");this.driver=dhtmlx.DataDriver[a]},_parse:function(h){this.callEvent("onParse",[this.driver,h]);if(this._filter_order){this.filter()}var l=this.driver.getInfo(h);if(l._key){dhtmlx.security_key=l._key}var g=this.driver.getRecords(h);var n=(l._from||0)*1;if(n===0&&this.order[0]){n=this.order.length}var c=0;for(var e=0;e<g.length;e++){var a=this.driver.getDetails(g[e]);var m=this.id(a);if(!this.pull[m]){this.order[c+n]=m;c++}this.pull[m]=a;if(this.extraParser){this.extraParser(a)}if(this._scheme){if(this._scheme.$init){this._scheme.$update(a)}else{if(this._scheme.$update){this._scheme.$update(a)}}}}for(var e=0;e<l._size;e++){if(!this.order[e]){var m=dhtmlx.uid();var a={id:m,$template:"loading"};this.pull[m]=a;this.order[e]=m}}this.callEvent("onStoreLoad",[this.driver,h]);this.refresh()},id:function(a){return a.id||(a.id=dhtmlx.uid())},changeId:function(c,a){dhtmlx.assert(this.pull[c],"Can't change id, for non existing item: "+c);this.pull[a]=this.pull[c];this.pull[a].id=a;this.order[this.order.find(c)]=a;if(this._filter_order){this._filter_order[this._filter_order.find(c)]=a}this.callEvent("onIdChange",[c,a]);if(this._render_change_id){this._render_change_id(c,a)}},get:function(a){return this.item(a)},set:function(c,a){return this.update(c,a)},item:function(a){return this.pull[a]},update:function(c,a){if(this._scheme&&this._scheme.$update){this._scheme.$update(a)}if(this.callEvent("onBeforeUpdate",[c,a])===false){return false}this.pull[c]=a;this.refresh(c)},refresh:function(a){if(this._skip_refresh){return}if(a){this.callEvent("onStoreUpdated",[a,this.pull[a],"update"])}else{this.callEvent("onStoreUpdated",[null,null,null])}},silent:function(a){this._skip_refresh=true;a.call(this);this._skip_refresh=false},getRange:function(g,e){if(g){g=this.indexById(g)}else{g=this.startOffset||0}if(e){e=this.indexById(e)}else{e=Math.min((this.endOffset||Infinity),(this.dataCount()-1));if(e<0){e=0}}if(g>e){var c=e;e=g;g=c}return this.getIndexRange(g,e)},getIndexRange:function(g,e){e=Math.min((e||Infinity),this.dataCount()-1);var a=dhtmlx.toArray();for(var c=(g||0);c<=e;c++){a.push(this.item(this.order[c]))}return a},dataCount:function(){return this.order.length},exists:function(a){return !!(this.pull[a])},move:function(a,g){if(a<0||g<0){dhtmlx.error("DataStore::move","Incorrect indexes");return}var e=this.idByIndex(a);var c=this.item(e);this.order.removeAt(a);this.order.insertAt(e,Math.min(this.order.length,g));this.callEvent("onStoreUpdated",[e,c,"move"])},scheme:function(a){this._scheme=a},sync:function(h,g,a){if(typeof g!="function"){a=g;g=null}if(dhtmlx.debug_bind){this.debug_sync_master=h;dhtmlx.log("[sync] "+this.debug_bind_master.name+"@"+this.debug_bind_master._settings.id+" <= "+this.debug_sync_master.name+"@"+this.debug_sync_master._settings.id)}var e=h;if(h.name!="DataStore"){h=h.data}var c=dhtmlx.bind(function(m,j,l){if(l!="update"||g){m=null}if(!m){this.order=dhtmlx.toArray([].concat(h.order));this._filter_order=null;this.pull=h.pull;if(g){this.silent(g)}if(this._on_sync){this._on_sync()}}if(dhtmlx.debug_bind){dhtmlx.log("[sync:request] "+this.debug_sync_master.name+"@"+this.debug_sync_master._settings.id+" <= "+this.debug_bind_master.name+"@"+this.debug_bind_master._settings.id)}if(!a){this.refresh(m)}else{a=false}},this);h.attachEvent("onStoreUpdated",c);this.feed=function(l,j){e.loadNext(j,l)};c()},add:function(h,a){if(this._scheme){h=h||{};for(var c in this._scheme){h[c]=h[c]||this._scheme[c]}if(this._scheme){if(this._scheme.$init){this._scheme.$update(h)}else{if(this._scheme.$update){this._scheme.$update(h)}}}}var j=this.id(h);var g=this.dataCount();if(dhtmlx.isNotDefined(a)||a<0){a=g}if(a>g){dhtmlx.log("Warning","DataStore:add","Index of out of bounds");a=Math.min(this.order.length,a)}if(this.callEvent("onBeforeAdd",[j,h,a])===false){return false}if(this.exists(j)){return dhtmlx.error("Not unique ID")}this.pull[j]=h;this.order.insertAt(j,a);if(this._filter_order){var e=this._filter_order.length;if(!a&&this.order.length){e=0}this._filter_order.insertAt(j,e)}this.callEvent("onafterAdd",[j,a]);this.callEvent("onStoreUpdated",[j,h,"add"]);return j},remove:function(e){if(e instanceof Array){for(var a=0;a<e.length;a++){this.remove(e[a])}return}if(this.callEvent("onBeforeDelete",[e])===false){return false}if(!this.exists(e)){return dhtmlx.error("Not existing ID",e)}var c=this.item(e);this.order.remove(e);if(this._filter_order){this._filter_order.remove(e)}delete this.pull[e];this.callEvent("onafterdelete",[e]);this.callEvent("onStoreUpdated",[e,c,"delete"])},clearAll:function(){this.pull={};this.order=dhtmlx.toArray();this.feed=null;this._filter_order=null;this.callEvent("onClearAll",[]);this.refresh()},idByIndex:function(a){if(a>=this.order.length||a<0){dhtmlx.log("Warning","DataStore::idByIndex Incorrect index")}return this.order[a]},indexById:function(c){var a=this.order.find(c);return a},next:function(c,a){return this.order[this.indexById(c)+(a||1)]},first:function(){return this.order[0]},last:function(){return this.order[this.order.length-1]},previous:function(c,a){return this.order[this.indexById(c)-(a||1)]},sort:function(j,c,a){var e=j;if(typeof j=="function"){e={as:j,dir:c}}else{if(typeof j=="string"){e={by:j,dir:c,as:a}}}var h=[e.by,e.dir,e.as];if(!this.callEvent("onbeforesort",h)){return}if(this.order.length){var l=dhtmlx.sort.create(e);var g=this.getRange(this.first(),this.last());g.sort(l);this.order=g.map(function(m){return this.id(m)},this)}this.refresh();this.callEvent("onaftersort",h)},filter:function(h,g){if(!this.callEvent("onBeforeFilter",[h,g])){return}if(this._filter_order){this.order=this._filter_order;delete this._filter_order}if(!this.order.length){return}if(h){var c=h;g=g||"";if(typeof h=="string"){h=dhtmlx.Template.fromHTML(h);g=g.toString().toLowerCase();c=function(m,l){return h(m).toLowerCase().indexOf(l)!=-1}}var e=dhtmlx.toArray();for(var a=0;a<this.order.length;a++){var j=this.order[a];if(c(this.item(j),g)){e.push(j)}}this._filter_order=this.order;this.order=e}this.refresh();this.callEvent("onAfterFilter",[])},each:function(e,c){for(var a=0;a<this.order.length;a++){e.call((c||this),this.item(this.order[a]))}},provideApi:function(g,c){this.debug_bind_master=g;if(c){this.mapEvent({onbeforesort:g,onaftersort:g,onbeforeadd:g,onafteradd:g,onbeforedelete:g,onafterdelete:g,onbeforeupdate:g})}var e=["get","set","sort","add","remove","exists","idByIndex","indexById","item","update","refresh","dataCount","filter","next","previous","clearAll","first","last","serialize"];for(var a=0;a<e.length;a++){g[e[a]]=dhtmlx.methodPush(this,e[a])}if(dhtmlx.assert_enabled()){this.assert_event(g)}},serialize:function(){var e=this.order;var a=[];for(var c=0;c<e.length;c++){a.push(this.pull[e[c]])}return a}};dhtmlx.sort={create:function(a){return dhtmlx.sort.dir(a.dir,dhtmlx.sort.by(a.by,a.as))},as:{"int":function(e,c){e=e*1;c=c*1;return e>c?1:(e<c?-1:0)},string_strict:function(e,c){e=e.toString();c=c.toString();return e>c?1:(e<c?-1:0)},string:function(e,c){e=e.toString().toLowerCase();c=c.toString().toLowerCase();return e>c?1:(e<c?-1:0)}},by:function(c,a){if(!c){return a}if(typeof a!="function"){a=dhtmlx.sort.as[a||"string"]}c=dhtmlx.Template.fromHTML(c);return function(g,e){return a(c(g),c(e))}},dir:function(c,a){if(c=="asc"){return a}return function(g,e){return a(g,e)*-1}}};dhtmlx.KeyEvents={_init:function(){dhtmlx.event(this._obj,"keypress",this._onKeyPress,this)},_onKeyPress:function(c){c=c||event;var a=c.which||c.keyCode;this.callEvent((this._edit_id?"onEditKeyPress":"onKeyPress"),[a,c.ctrlKey,c.shiftKey,c])}};dhtmlx.MouseEvents={_init:function(){if(this.on_click){dhtmlx.event(this._obj,"click",this._onClick,this);dhtmlx.event(this._obj,"contextmenu",this._onContext,this)}if(this.on_dblclick){dhtmlx.event(this._obj,"dblclick",this._onDblClick,this)}if(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 c=dhtmlx.html.locate(a,this._id);if(c&&!this.callEvent("onBeforeContextMenu",[c,a])){return dhtmlx.html.preventEvent(a)}},_onMouse:function(a){if(dhtmlx._isIE){a=document.createEventObject(event)}if(this._mouse_move_timer){window.clearTimeout(this._mouse_move_timer)}this.callEvent("onMouseMoving",[a]);this._mouse_move_timer=window.setTimeout(dhtmlx.bind(function(){if(a.type=="mousemove"){this._onMouseMove(a)}else{this._onMouseOut(a)}},this),500)},_onMouseMove:function(a){if(!this._mouseEvent(a,this.on_mouse_move,"MouseMove")){this.callEvent("onMouseOut",[a||event])}},_onMouseOut:function(a){this.callEvent("onMouseOut",[a||event])},_mouseEvent:function(l,j,c){l=l||event;var a=l.target||l.srcElement;var g="";var m=null;var h=false;while(a&&a.parentNode){if(!h&&a.getAttribute){m=a.getAttribute(this._id);if(m){if(a.getAttribute("userdata")){this.callEvent("onLocateData",[m,a,l])}if(!this.callEvent("on"+c,[m,l,a])){return}h=true}}g=a.className;if(g){g=g.split(" ");g=g[0]||g[1];if(j[g]){return j[g].call(this,l,m||dhtmlx.html.locate(l,this._id),a)}}a=a.parentNode}return h}};dhtmlx.Settings={_init:function(){this._settings=this.config={}},define:function(c,a){if(typeof c=="object"){return this._parseSeetingColl(c)}return this._define(c,a)},_define:function(c,a){dhtmlx.assert_settings.call(this,c,a);var e=this[c+"_setter"];return this._settings[c]=e?e.call(this,a):a},_parseSeetingColl:function(e){if(e){for(var c in e){this._define(c,e[c])}}},_parseSettings:function(e,a){var c=dhtmlx.extend({},a);if(typeof e=="object"&&!e.tagName){dhtmlx.extend(c,e)}this._parseSeetingColl(c)},_mergeSettings:function(a,e){for(var c in e){switch(typeof a[c]){case"object":a[c]=this._mergeSettings((a[c]||{}),e[c]);break;case"undefined":a[c]=e[c];break;default:break}}return a},_parseContainer:function(c,a,e){if(typeof c=="object"&&!c.tagName){c=c.container}this._obj=this.$view=dhtmlx.toNode(c);if(!this._obj&&e){this._obj=e(c)}dhtmlx.assert(this._obj,"Incorrect html container");this._obj.className+=" "+a;this._obj.onselectstart=function(){return false};this._dataobj=this._obj},_set_type:function(a){if(typeof a=="object"){return this.type_setter(a)}dhtmlx.assert(this.types,"RenderStack :: Types are not defined");dhtmlx.assert(this.types[a],"RenderStack :: Inccorect type name",a);this.type=dhtmlx.extend({},this.types[a]);this.customize()},customize:function(a){if(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.Template={_cache:{},empty:function(){return""},setter:function(a){return dhtmlx.Template.fromHTML(a)},obj_setter:function(c){var a=dhtmlx.Template.setter(c);var e=this;return function(){return a.apply(e,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(e,c){if(!e.types&&e.prototype.types){e=e.prototype}if(dhtmlx.assert_enabled()){this.assert_event(c)}var a=c.name||"default";this._template(c);this._template(c,"edit");this._template(c,"loading");e.types[a]=dhtmlx.extend(dhtmlx.extend({},(e.types[a]||this._default)),c);return a},_default:{css:"default",template:function(){return""},template_edit:function(){return""},template_loading:function(){return"..."},width:150,height:80,margin:5,padding:0},_template:function(e,a){a="template"+(a?("_"+a):"");var c=e[a];if(c&&(typeof c=="string")){if(c.indexOf("->")!=-1){c=c.split("->");switch(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;break;default:break}}e[a]=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)}if(this.callEvent){this.callEvent("onAfterRender",[])}}}};dhtmlx.ui.Tooltip=function(a){this.name="Tooltip";if(dhtmlx.assert_enabled()){this._assert()}if(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,c){if(this._disabled){return}if(this.data!=a){this.data=a;this.render(a)}this._obj.style.top=c.y+this._settings.dy+"px";this._obj.style.left=c.x+this._settings.dx+"px";this._obj.style.display="block"},hide:function(){this.data=null;this._obj.style.display="none"},disable:function(){this._disabled=true},enable:function(){this._disabled=false},types:{"default":dhtmlx.Template.fromHTML("{obj.id}")},template_item_start:dhtmlx.Template.empty,template_item_end:dhtmlx.Template.empty};dhtmlx.AutoTooltip={tooltip_setter:function(c){var a=new dhtmlx.ui.Tooltip(c);this.attachEvent("onMouseMove",function(h,g){a.show(this.get(h),dhtmlx.html.pos(g))});this.attachEvent("onMouseOut",function(h,g){a.hide()});this.attachEvent("onMouseMoving",function(h,g){a.hide()});return a}};dhtmlx.compat=function(a,c){if(dhtmlx.compat[a]){dhtmlx.compat[a](c)}};if(!dhtmlx.attaches){dhtmlx.attaches={}}dhtmlx.attaches.attachAbstract=function(c,a){var h=document.createElement("DIV");h.id="CustomObject_"+dhtmlx.uid();h.style.width="100%";h.style.height="100%";h.cmp="grid";document.body.appendChild(h);this.attachObject(h.id);a.container=h.id;var g=this.vs[this.av];g.grid=new window[c](a);g.gridId=h.id;g.gridObj=h;g.grid.setSizes=function(){if(this.resize){this.resize()}else{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(){};function dhtmlXCellObject(e,a){this.cell=document.createElement("DIV");this.cell.className="dhx_cell"+(a||"");this._idd=e;this._isCell=true;this.conf={borders:true,idx:{},css:a||"",idx_data:{cont:"dhx_cell_cont",pr1:"dhx_cell_progress_bar",pr2:"dhx_cell_progress_img",menu:"dhx_cell_menu",toolbar:"dhx_cell_toolbar",ribbon:"dhx_cell_ribbon",sb:"dhx_cell_statusbar",cover:"dhx_cell_cover"},ofs_nodes:{t:{},b:{}}};this.dataNodes={};this.views={};var c=document.createElement("DIV");c.className="dhx_cell_cont"+this.conf.css;this.cell.appendChild(c);c=null;this._updateIdx=function(){for(var g in this.conf.idx){this.conf.idx[g]=null;delete this.conf.idx[g]}for(var l=0;l<this.cell.childNodes.length;l++){var h=this.cell.childNodes[l].className;for(var g in this.conf.idx_data){var j=new RegExp(this.conf.idx_data[g]);if(h.match(j)!=null){this.conf.idx[g]=l}}}this.callEvent("_onIdxUpdated",[])};this._adjustAttached=function(){for(var g in this.dataNodes){if(this.dataNodes[g]!=null&&typeof(this.dataNodes[g].setSizes)=="function"){this.dataNodes[g].setSizes()}}if(this.dataObj!=null&&typeof(this.dataObj.setSizes)=="function"){if(this.dataType=="layout"&&typeof(window.dhtmlXLayoutCell)=="function"&&this instanceof window.dhtmlXLayoutCell&&this.dataObj._getMainInst()!=this.layout._getMainInst()){this.dataObj.setSizes();return}this.dataObj.setSizes.apply(this.dataObj,arguments)}};this._setSize=function(u,r,v,m,n,o,j,l){if(this.conf.size==null){this.conf.size={}}if(l==null){l={}}var A={left:"x",top:"y",width:"w",height:"h"};this.conf.size.x=u;this.conf.size.y=r;this.conf.size.w=Math.max(v,0);this.conf.size.h=Math.max(m,0);for(var s in A){var g=(l[s]||s);this.cell.style[g]=this.conf.size[A[s]]+"px"}this.callEvent("_onSetSize",[]);if(o!==true){this._adjustCont(n,j)}else{this._adjustAttached(n)}this._adjustProgress()};this._adjustCont=function(n,l){var m=this.cell.childNodes[this.conf.idx.cont];if(typeof(window.dhtmlXLayoutCell)=="function"&&this instanceof window.dhtmlXLayoutCell&&this.conf.collapsed==true){m.style.left=m.style.top="0px";m.style.width=m.style.height="200px";m=null;return}var j=0;for(var g in this.conf.ofs_nodes.t){var h=this.conf.ofs_nodes.t[g];j+=(h=="func"?this[g]():(h==true?this.cell.childNodes[this.conf.idx[g]].offsetHeight:0))}var o=0;for(var g in this.conf.ofs_nodes.b){var h=this.conf.ofs_nodes.b[g];o+=(h=="func"?this[g]():(h==true?this.cell.childNodes[this.conf.idx[g]].offsetHeight:0))}m.style.left="0px";m.style.top=j+"px";if(this.conf.cells_cont==null){this.conf.cells_cont={};m.style.width=this.cell.offsetWidth+"px";m.style.height=Math.max(this.cell.offsetHeight-j-o,0)+"px";this.conf.cells_cont.w=parseInt(m.style.width)-m.offsetWidth;this.conf.cells_cont.h=parseInt(m.style.height)-m.offsetHeight}m.style.left="0px";m.style.top=j+"px";m.style.width=Math.max(this.cell.offsetWidth+this.conf.cells_cont.w,0)+"px";m.style.height=Math.max(this.conf.size.h-j-o+this.conf.cells_cont.h,0)+"px";m=null;this._adjustAttached(n);if(l=="expand"&&this.dataType=="editor"&&this.dataObj!=null){this.dataObj._prepareContent(true)}};this._mtbUpdBorder=function(){var h=["menu","toolbar","ribbon"];for(var l=0;l<h.length;l++){if(this.conf.idx[h[l]]!=null){var m=this.cell.childNodes[this.conf.idx[h[l]]];var j="dhx_cell_"+h[l]+"_no_borders";var g="dhx_cell_"+h[l]+"_def";m.className=m.className.replace(new RegExp(this.conf.borders?j:g),this.conf.borders?g:j);m=null}}};this._resetSizeState=function(){this.conf.cells_cont=null};this.conf.view="def";this.conf.views_loaded={};this.conf.views_loaded[this.conf.view]=true;this._viewSave=function(j){this.views[j]={borders:this.conf.borders,ofs_nodes:{t:{},b:{}},url_data:this.conf.url_data,dataType:this.dataType,dataObj:this.dataObj,cellCont:[],dataNodes:{},dataNodesCont:{}};var l=this.cell.childNodes[this.conf.idx.cont];while(l.childNodes.length>0){this.views[j].cellCont.push(l.firstChild);l.removeChild(l.firstChild)}l=null;this.dataType=null;this.dataObj=null;this.conf.url_data=null;for(var h in this.dataNodes){for(var g in this.conf.ofs_nodes){if(typeof(this.conf.ofs_nodes[g][h])!="undefined"){this.views[j].ofs_nodes[g][h]=this.conf.ofs_nodes[g][h];this.conf.ofs_nodes[g][h]=null;delete this.conf.ofs_nodes[g][h]}}this.views[j].dataNodesCont[h]=this.cell.childNodes[this.conf.idx[h]];this.cell.removeChild(this.cell.childNodes[this.conf.idx[h]]);this.views[j].dataNodes[h]=this.dataNodes[h];this.dataNodes[h]=null;delete this.dataNodes[h];this._updateIdx()}this.callEvent("_onViewSave",[j])};this._viewRestore=function(j){if(this.views[j]==null){return}this.dataObj=this.views[j].dataObj;this.dataType=this.views[j].dataType;this.conf.url_data=this.views[j].url_data;for(var l=0;l<this.views[j].cellCont.length;l++){this.cell.childNodes[this.conf.idx.cont].appendChild(this.views[j].cellCont[l])}for(var h in this.views[j].dataNodes){this.dataNodes[h]=this.views[j].dataNodes[h];if(h=="menu"){this.cell.insertBefore(this.views[j].dataNodesCont[h],this.cell.childNodes[this.conf.idx.toolbar||this.conf.idx.cont])}if(h=="toolbar"){this.cell.insertBefore(this.views[j].dataNodesCont[h],this.cell.childNodes[this.conf.idx.cont])}if(h=="ribbon"){this.cell.insertBefore(this.views[j].dataNodesCont[h],this.cell.childNodes[this.conf.idx.cont])}if(h=="sb"){this.cell.appendChild(this.views[j].dataNodesCont[h])}this._updateIdx()}for(var h in this.views[j].ofs_nodes){for(var g in this.views[j].ofs_nodes[h]){this.conf.ofs_nodes[h][g]=this.views[j].ofs_nodes[h][g]}}if(this.conf.borders!=this.views[j].borders){this[this.views[j].borders?"_showBorders":"_hideBorders"](true)}if(this.dataType=="url"&&this.conf.url_data!=null&&this.conf.url_data.ajax==false&&this.conf.url_data.post_data!=null){this.reloadURL()}this.callEvent("_onViewRestore",[j]);this._viewDelete(j)};this._viewDelete=function(j){if(this.views[j]==null){return}this.views[j].borders=null;for(var h in this.views[j].ofs_nodes){for(var g in this.views[j].ofs_nodes[h]){this.views[j].ofs_nodes[h][g]=null}this.views[j].ofs_nodes[h]=null}this.views[j].dataType=null;this.views[j].dataObj=null;this.views[j].url_data=null;for(var l=0;l<this.views[j].cellCont.length;l++){this.views[j].cellCont[l]=null}this.views[j].cellCont=null;for(var h in this.views[j].dataNodes){this.views[j].dataNodes[h]=null;this.views[j].dataNodesCont[h]=null}this.views[j].dataNodes=this.views[j].dataNodesCont=null;this.views[j]=null;delete this.views[j]};window.dhx4._eventable(this);this._updateIdx();return this}dhtmlXCellObject.prototype.showView=function(a){if(this.conf.view==a){return false}this._viewSave(this.conf.view);this._viewRestore(a);this._updateIdx();this._adjustCont();this.conf.view=a;var c=(typeof(this.conf.views_loaded[this.conf.view])=="undefined");this.conf.views_loaded[this.conf.view]=true;return c};dhtmlXCellObject.prototype.getViewName=function(){return this.conf.view};dhtmlXCellObject.prototype.unloadView=function(g){if(g==this.conf.view){var h=this.conf.unloading;this.conf.unloading=true;if(typeof(this.detachMenu)=="function"){this.detachMenu()}if(typeof(this.detachToolbar)=="function"){this.detachToolbar()}if(typeof(this.detachRibbon)=="function"){this.detachRibbon()}this.detachStatusBar();this._detachObject(null,true);this.conf.unloading=h;if(!this.conf.unloading){this._adjustCont(this._idd)}return}if(this.views[g]==null){return}var e=this.views[g];for(var c in e.dataNodes){if(typeof(e.dataNodes[c].unload)=="function"){e.dataNodes[c].unload()}e.dataNodes[c]=null;e.dataNodesCont[c]=null}if(e.dataType=="url"){if(e.cellCont!=null&&e.cellCont[0]!="null"){this._detachURLEvents(e.cellCont[0])}}else{if(e.dataObj!=null){if(typeof(e.dataObj.unload)=="function"){e.dataObj.unload()}else{if(typeof(e.dataObj.destructor)=="function"){e.dataObj.destructor()}}e.dataObj=null}}e=null;this._viewDelete(g);if(typeof(this.conf.views_loaded[g])!="undefined"){delete this.conf.views_loaded[g]}};dhtmlXCellObject.prototype.getId=function(){return this._idd};dhtmlXCellObject.prototype.progressOn=function(){if(this.conf.progress==true){return}this.conf.progress=true;var c=document.createElement("DIV");c.className=this.conf.idx_data.pr1;var a=document.createElement("DIV");a.className=this.conf.idx_data.pr2;if(this.conf.idx.cover!=null){this.cell.insertBefore(a,this.cell.childNodes[this.conf.idx.cover])}else{this.cell.appendChild(a)}this.cell.insertBefore(c,a);c=a=null;this._updateIdx();this._adjustProgress()};dhtmlXCellObject.prototype.progressOff=function(){if(this.conf.progress!=true){return}this.cell.childNodes[this.conf.idx.pr2].parentNode.removeChild(this.cell.childNodes[this.conf.idx.pr2]);this.cell.childNodes[this.conf.idx.pr1].parentNode.removeChild(this.cell.childNodes[this.conf.idx.pr1]);this.conf.progress=false;this._updateIdx()};dhtmlXCellObject.prototype._adjustProgress=function(){if(this.conf.idx.pr1==null){return}if(!this.conf.pr){this.conf.pr={}}var c=this.cell.childNodes[this.conf.idx.pr1];var a=this.cell.childNodes[this.conf.idx.pr2];if(!this.conf.pr.ofs){a.style.width=c.offsetWidth+"px";a.style.height=c.offsetHeight+"px";this.conf.pr.ofs={w:a.offsetWidth-a.clientWidth,h:a.offsetHeight-a.clientHeight}}a.style.width=c.offsetWidth-this.conf.pr.ofs.w+"px";a.style.height=c.offsetHeight-this.conf.pr.ofs.h+"px";c=a=null};dhtmlXCellObject.prototype._showCellCover=function(){if(this.conf.cover==true){return}this.conf.cover=true;var a=document.createElement("DIV");a.className=this.conf.idx_data.cover;this.cell.appendChild(a);a=null;this._updateIdx()};dhtmlXCellObject.prototype._hideCellCover=function(){if(this.conf.cover!=true){return}this.cell.removeChild(this.cell.childNodes[this.conf.idx.cover]);this._updateIdx();this.conf.cover=false};dhtmlXCellObject.prototype._showBorders=function(a){if(this.conf.borders){return}this.conf.borders=true;this.cell.childNodes[this.conf.idx.cont].className="dhx_cell_cont"+this.conf.css;this.conf.cells_cont=null;this._mtbUpdBorder();this.callEvent("_onBorderChange",[true]);if(a!==true){this._adjustCont(this._idd)}};dhtmlXCellObject.prototype._hideBorders=function(a){if(!this.conf.borders){return}this.conf.borders=false;this.cell.childNodes[this.conf.idx.cont].className="dhx_cell_cont"+this.conf.css+" dhx_cell_cont_no_borders";this.conf.cells_cont=null;this._mtbUpdBorder();this.callEvent("_onBorderChange",[false]);if(a!==true){this._adjustCont(this._idd)}};dhtmlXCellObject.prototype._getWidth=function(){return this.cell.offsetWidth};dhtmlXCellObject.prototype._getHeight=function(){return this.cell.offsetHeight};dhtmlXCellObject.prototype.showInnerScroll=function(){this.cell.childNodes[this.conf.idx.cont].style.overflow="auto"};dhtmlXCellObject.prototype._unload=function(){this.conf.unloading=true;this.callEvent("_onCellUnload",[]);this.progressOff();this.unloadView(this.conf.view);this.dataNodes=null;this.cell.parentNode.removeChild(this.cell);this.cell=null;window.dhx4._eventable(this,"clear");for(var c in this.views){this.unloadView(c)}this.conf=null;for(var c in this){this[c]=null}};dhtmlXCellObject.prototype.attachObject=function(g,e){if(window.dhx4.s2b(e)&&!(typeof(window.dhtmlXWindowsCell)=="function"&&this instanceof window.dhtmlXWindowsCell)){e=false}if(typeof(g)=="string"){g=document.getElementById(g)}if(g.parentNode==this.cell.childNodes[this.conf.idx.cont]){g=null;return}if(e){g.style.display="";var a=g.offsetWidth;var c=g.offsetHeight}this._attachObject(g);this.dataType="obj";g.style.display="";g=null;if(e){this._adjustByCont(a,c)}};dhtmlXCellObject.prototype.appendObject=function(a){if(typeof(a)=="string"){a=document.getElementById(a)}if(a.parentNode==this.cell.childNodes[this.conf.idx.cont]){a=null;return}if(!this.conf.append_mode){this.cell.childNodes[this.conf.idx.cont].style.overflow="auto";this.conf.append_mode=true}this._attachObject(a,null,null,true);this.dataType="obj";a.style.display="";a=null};dhtmlXCellObject.prototype.detachObject=function(c,a){this._detachObject(null,c,a)};dhtmlXCellObject.prototype.getAttachedStatusBar=function(){return this.dataNodes.sb};dhtmlXCellObject.prototype.getAttachedObject=function(){if(this.dataType=="obj"||this.dataType=="url"||this.dataType=="url-ajax"){return this.cell.childNodes[this.conf.idx.cont].firstChild}else{return this.dataObj}};dhtmlXCellObject.prototype.attachURL=function(c,o,e){if(e==true){e={}}var g=(typeof(e)!="undefined"&&e!=false&&e!=null);if(!this.conf.url_data){this.conf.url_data={}}this.conf.url_data.url=c;this.conf.url_data.ajax=(o==true);this.conf.url_data.post_data=(e==true?{}:(e||null));if(o==true){var n=this;if(g){var h="";for(var m in e){h+="&"+encodeURIComponent(m)+"="+encodeURIComponent(e[m])}dhx4.ajax.post(c,h,function(a){n.attachHTMLString("<div style='position:relative;width:100%;height:100%;overflow:auto;'>"+a.xmlDoc.responseText+"</div>");if(typeof(n._doOnFrameContentLoaded)=="function"){n._doOnFrameContentLoaded()}n.dataType="url-ajax";n=a=null})}else{dhx4.ajax.get(c,function(a){n.attachHTMLString("<div style='position:relative;width:100%;height:100%;overflow:auto;'>"+a.xmlDoc.responseText+"</div>");if(typeof(n._doOnFrameContentLoaded)=="function"){n._doOnFrameContentLoaded()}n.dataType="url-ajax";n=a=null})}}else{if(this.dataType=="url"){var j=this.getFrame()}else{var j=document.createElement("IFRAME");j.frameBorder=0;j.border=0;j.style.width="100%";j.style.height="100%";j.style.position="relative";this._attachObject(j);this.dataType="url";this._attachURLEvents()}if(g){var l=(typeof(this.conf.url_data.post_ifr)=="undefined");this.conf.url_data.post_ifr=true;if(l){this._attachURLEvents()}j.src="about:blank"}else{j.src=c+window.dhx4.ajax._dhxr(c)}j=null}j=null};dhtmlXCellObject.prototype.reloadURL=function(){if(!(this.dataType=="url"||this.dataType=="url-ajax")){return}if(this.conf.url_data==null){return}this.attachURL(this.conf.url_data.url,this.conf.url_data.ajax,this.conf.url_data.post_data)};dhtmlXCellObject.prototype.attachHTMLString=function(str){this._attachObject(null,null,str);var z=str.match(/<script[^>]*>[^\f]*?<\/script>/g)||[];for(var i=0;i<z.length;i++){var s=z[i].replace(/<([\/]{0,1})script[^>]*>/gi,"");if(s){if(window.execScript){window.execScript(s)}else{window.eval(s)}}}};dhtmlXCellObject.prototype.attachScheduler=function(a,l,c,g){g=g||window.scheduler;var h=false;if(c){var j=document.getElementById(c);if(j){h=true}}if(!h){var e=c||'<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>';var j=document.createElement("DIV");j.id="dhxSchedObj_"+new Date().getTime();j.style.width="100%";j.style.height="100%";j.style.position="relative";j.style.overflow="hidden";j.className="dhx_cal_container";j.innerHTML='<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>'+e+'</div><div class="dhx_cal_header"></div><div class="dhx_cal_data"></div>'}this._attachObject(j);this.dataType="scheduler";this.dataObj=g;this.dataObj.setSizes=function(){this.update_view()};g.init(j.id,a,l);j=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCellObject.prototype.attachMap=function(a){var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";this._attachObject(c);if(!a){a={center:new google.maps.LatLng(40.719837,-73.992348),zoom:11,mapTypeId:google.maps.MapTypeId.ROADMAP}}this.dataType="maps";this.dataObj=new google.maps.Map(c,a);this.dataObj.setSizes=function(){google.maps.event.trigger(this,"resize")};c=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCellObject.prototype._createNode_sb=function(m,g,l,a,j){if(typeof(j)!="undefined"){m=j}else{var c=g||{};var n=(typeof(c.text)=="string"&&c.text.length>0?c.text:"&nbsp;");var e=(typeof(c.height)=="number"?c.height:false);var m=document.createElement("DIV");m.className="dhx_cell_statusbar_def";m.innerHTML="<div class='"+(c.paging==true?"dhx_cell_statusbar_paging":"dhx_cell_statusbar_text")+"'>"+n+"</div>";if(e!=false){m.firstChild.style.height=m.firstChild.style.lineHeight=e+"px"}}if(this.conf.idx.pr1!=null){this.cell.insertBefore(m,this.cell.childNodes[this.conf.idx.pr1])}else{this.cell.appendChild(m)}this.conf.ofs_nodes.b.sb=true;this._updateIdx();this._adjustCont(this._idd);return m};dhtmlXCellObject.prototype.attachStatusBar=function(a){if(this.dataNodes.sb){return}if(a!=null&&window.dhx4.s2b(a.paging)==true){a.height=null}if(this.conf.skin=="dhx_skyblue"&&typeof(window.dhtmlXWindowsCell)=="function"&&this instanceof window.dhtmlXWindowsCell){this.cell.childNodes[this.conf.idx.cont].className+=" dhx_cell_statusbar_attached"}this.dataNodes.sb=this._attachObject("sb",a);this.dataNodes.sb.setText=function(c){this.childNodes[0].innerHTML=c};this.dataNodes.sb.getText=function(){return this.childNodes[0].innerHTML};this.dataNodes.sb.onselectstart=function(c){return false};return this.dataNodes.sb};dhtmlXCellObject.prototype.detachStatusBar=function(){if(!this.dataNodes.sb){return}if(this.conf.skin=="dhx_skyblue"&&typeof(window.dhtmlXWindowsCell)=="function"&&this instanceof window.dhtmlXWindowsCell){this.cell.childNodes[this.conf.idx.cont].className=this.cell.childNodes[this.conf.idx.cont].className.replace(/\s{0,}dhx_cell_statusbar_attached/,"")}this.dataNodes.sb.setText=this.dataNodes.sb.getText=this.dataNodes.sb.onselectstart=null;this.dataNodes.sb=null;delete this.dataNodes.sb;this._detachObject("sb")};dhtmlXCellObject.prototype.showStatusBar=function(){this._mtbShowHide("sb","")};dhtmlXCellObject.prototype.hideStatusBar=function(){this._mtbShowHide("sb","none")};dhtmlXCellObject.prototype._mtbShowHide=function(c,a){if(!this.dataNodes[c]){return}this.cell.childNodes[this.conf.idx[c]].style.display=a;this._adjustCont()};dhtmlXCellObject.prototype.getFrame=dhtmlXCellObject.prototype._getFrame=function(){if(this.dataType!="url"){return null}return this.cell.childNodes[this.conf.idx.cont].firstChild};dhtmlXCellObject.prototype._attachURLEvents=function(){if(this.dataType!="url"){return}var e=this;var c=this._idd;var a=this.cell.childNodes[this.conf.idx.cont].firstChild;if(typeof(this._doOnFrameMouseDown)!="function"){this._doOnFrameMouseDown=function(g){e.callEvent("_onContentMouseDown",[c,g||event])}}if(typeof(window.addEventListener)=="function"){a.onload=function(){try{if(typeof(e._doOnFrameMouseDown)=="function"){this.contentWindow.document.body.addEventListener("mousedown",e._doOnFrameMouseDown,false)}}catch(g){}try{if(typeof(e._doOnFrameContentLoaded)=="function"){e._doOnFrameContentLoaded()}}catch(g){}}}else{a.onreadystatechange=function(g){if(this.readyState=="complete"){try{if(typeof(e._doOnFrameMouseDown)=="function"){this.contentWindow.document.body.attachEvent("onmousedown",e._doOnFrameMouseDown)}}catch(h){}try{if(typeof(e._doOnFrameContentLoaded)=="function"){e._doOnFrameContentLoaded()}}catch(h){}}}}};dhtmlXCellObject.prototype._doOnFrameContentLoaded=function(){if(this.conf.url_data.post_ifr==true){var j=this.getFrame().contentWindow.document;var h=j.createElement("FORM");h.method="POST";h.action=this.conf.url_data.url;j.body.appendChild(h);var e={};if(window.dhx4.ajax.cache!=true){e["dhxr"+new Date().getTime()]="1"}for(var c in this.conf.url_data.post_data){e[c]=this.conf.url_data.post_data[c]}for(var c in e){var g=j.createElement("INPUT");g.type="hidden";g.name=c;g.value=e[c];h.appendChild(g);g=null}this.conf.url_data.post_ifr=false;h.submit()}else{this.callEvent("_onContentLoaded",[this._idd])}};dhtmlXCellObject.prototype._detachURLEvents=function(a){if(a==null){if(this.dataType!="url"){return}a=this.cell.childNodes[this.conf.idx.cont].firstChild}if(typeof(window.addEventListener)=="function"){a.onload=null;try{a.contentWindow.document.body.removeEventListener("mousedown",this._doOnFrameMouseDown,false)}catch(c){}}else{a.onreadystatechange=null;try{a.contentWindow.document.body.detachEvent("onmousedown",this._doOnFrameMouseDown)}catch(c){}}a=null};dhtmlXCellObject.prototype._attachObject=function(h,c,g,a,e){if(typeof(h)=="string"&&{menu:1,toolbar:1,ribbon:1,sb:1}[h]==1){return this["_createNode_"+h].apply(this,arguments)}if(a!=true){this._detachObject(null,true,null)}if(typeof(g)=="string"){this.cell.childNodes[this.conf.idx.cont].innerHTML=g}else{this.cell.childNodes[this.conf.idx.cont].appendChild(h)}h=null};dhtmlXCellObject.prototype._detachObject=function(h,c,a){this.callEvent("_onBeforeContentDetach",[]);if(h=="menu"||h=="toolbar"||h=="ribbon"||h=="sb"){var g=this.cell.childNodes[this.conf.idx[h]];g.parentNode.removeChild(g);g=null;this.conf.ofs_nodes[h=="sb"?"b":"t"][h]=false;this._updateIdx();if(!this.conf.unloading){this._adjustCont(this._idd)}return}if(c==true){a=false}else{if(typeof(a)=="undefined"){a=document.body}else{if(typeof(a)=="string"){a=document.getElementById(a)}}}if(a===false){if(this.dataType=="url"){this._detachURLEvents()}else{if(this.dataObj!=null){if(typeof(this.dataObj.unload)=="function"){this.dataObj.unload()}else{if(typeof(this.dataObj.destructor)=="function"){this.dataObj.destructor()}}}}}var g=this.cell.childNodes[this.conf.idx.cont];while(g.childNodes.length>0){if(a===false){g.removeChild(g.lastChild)}else{g.firstChild.style.display="none";a.appendChild(g.firstChild)}}if(this.conf.append_mode){g.style.overflow="";this.conf.append_mode=false}var e=(this.dataType=="tabbar");this.dataObj=null;this.dataType=null;a=g=null;if(this.conf.unloading!=true&&e){this.showHeader(true);this._showBorders()}};dhtmlXCellObject.prototype._attachFromCell=function(c){this.detachObject(true);var g="layout";if(typeof(window.dhtmlXWindowsCell)=="function"&&this instanceof window.dhtmlXWindowsCell){g="window"}if(typeof(window.dhtmlXWindowsCell)=="function"&&c instanceof window.dhtmlXWindowsCell&&c.wins.w[c._idd].conf.parked==true){c.wins._winCellSetOpacity(c._idd,"open",false)}if(typeof(window.dhtmlXAccordionCell)=="function"&&c instanceof window.dhtmlXAccordionCell&&c.conf.opened==false){c._cellSetOpacity("open",false)}for(var e in c.dataNodes){this._attachObject(e,null,null,null,c.cell.childNodes[c.conf.idx[e]]);this.dataNodes[e]=c.dataNodes[e];c.dataNodes[e]=null;c.conf.ofs_nodes[e=="sb"?"b":"t"][e]=false;c._updateIdx()}this._mtbUpdBorder();if(c.dataType!=null&&c.dataObj!=null){this.dataType=c.dataType;this.dataObj=c.dataObj;while(c.cell.childNodes[c.conf.idx.cont].childNodes.length>0){this.cell.childNodes[this.conf.idx.cont].appendChild(c.cell.childNodes[c.conf.idx.cont].firstChild)}c.dataType=null;c.dataObj=null;if(this.dataType=="grid"){if(g=="window"&&this.conf.skin=="dhx_skyblue"){this.dataObj.entBox.style.border="1px solid #a4bed4";this.dataObj._sizeFix=0}else{this.dataObj.entBox.style.border="0px solid white";this.dataObj._sizeFix=2}}}else{while(c.cell.childNodes[c.conf.idx.cont].childNodes.length>0){this.cell.childNodes[this.conf.idx.cont].appendChild(c.cell.childNodes[c.conf.idx.cont].firstChild)}}this.conf.view=c.conf.view;c.conf.view="def";for(var e in c.views){this.views[e]=c.views[e];c.views[e]=null;delete c.views[e]}c._updateIdx();c._adjustCont();this._updateIdx();this._adjustCont();if(c.conf.progress==true){c.progressOff();this.progressOn()}else{this.progressOff()}if(g=="window"&&this.wins.w[this._idd].conf.parked){this.wins._winCellSetOpacity(this._idd,"close",false)}};function dhtmlXCellTop(h,c){if(arguments.length==0||typeof(h)=="undefined"){return}var a=this;this.dataNodes={};this.conf.ofs={t:0,b:0,l:0,r:0};this.conf.ofs_nodes={t:{},b:{}};this.conf.progress=false;this.conf.fs_mode=false;this.conf.fs_tm=null;this.conf.fs_resize=false;if(h==document.body){this.conf.fs_mode=true;this.base=h;if(this.base==document.body){var g={dhx_skyblue:{t:2,b:2,l:2,r:2},dhx_web:{t:8,b:8,l:8,r:8},dhx_terrace:{t:9,b:9,l:8,r:8}};this.conf.ofs=(g[this.conf.skin]!=null?g[this.conf.skin]:g.dhx_skyblue)}}else{this.base=(typeof(h)=="string"?document.getElementById(h):h)}this.base.className+=" "+this.conf.css+"_base_"+this.conf.skin;this.cont=document.createElement("DIV");this.cont.className=this.conf.css+"_cont";this.base.appendChild(this.cont);if(c!=null){this.setOffsets(c,false)}else{if(this.base._ofs!=null){this.setOffsets(this.base._ofs,false);this.base._ofs=null;try{delete this.base._ofs}catch(j){}}}this._adjustCont=function(){var m=this.conf.ofs.t;for(var l in this.conf.ofs_nodes.t){m+=(this.conf.ofs_nodes.t[l]==true?this.dataNodes[l].offsetHeight:0)}var e=this.conf.ofs.b;for(var l in this.conf.ofs_nodes.b){e+=(this.conf.ofs_nodes.b[l]==true?this.dataNodes[l].offsetHeight:0)}this.cont.style.left=this.conf.ofs.l+"px";this.cont.style.width=this.base.clientWidth-this.conf.ofs.l-this.conf.ofs.r+"px";this.cont.style.top=m+"px";this.cont.style.height=this.base.clientHeight-m-e+"px"};this._setBaseSkin=function(e){this.base.className=this.base.className.replace(new RegExp(this.conf.css+"_base_"+this.conf.skin,"gi"),this.conf.css+"_base_"+e)};this._initFSResize=function(){if(this.conf.fs_resize==true){return}this._doOnResizeStart=function(){window.clearTimeout(a.conf.fs_tm);a.conf.fs_tm=window.setTimeout(a._doOnResizeEnd,200)};this._doOnResizeEnd=function(){a.setSizes()};if(typeof(window.addEventListener)=="function"){window.addEventListener("resize",this._doOnResizeStart,false)}else{window.attachEvent("onresize",this._doOnResizeStart)}this.conf.fs_resize=true};if(this.conf.fs_mode==true){this._initFSResize()}this._unloadTop=function(){this._mtbUnload();this.detachHeader();this.detachFooter();if(this.conf.fs_mode==true){if(typeof(window.addEventListener)=="function"){window.removeEventListener("resize",this._doOnResizeStart,false)}else{window.detachEvent("onresize",this._doOnResizeStart)}}this.base.removeChild(this.cont);var e=new RegExp("s{0,}"+this.conf.css+"_base_"+this.conf.skin,"gi");this.base.className=this.base.className.replace(e,"");this.cont=this.base=null;a=null};h=null}dhtmlXCellTop.prototype.setOffsets=function(j,h){var g=false;for(var c in j){var e=c.charAt(0);if(typeof(this.conf.ofs[e])!="undefined"&&!isNaN(j[c])){this.conf.ofs[e]=parseInt(j[c]);g=true}}if(h!==false&&typeof(this.setSizes)=="function"&&g==true){this.setSizes()}};dhtmlXCellTop.prototype.attachMenu=function(a){if(this.dataNodes.menu!=null){return}this.dataNodes.menuObj=document.createElement("DIV");this.dataNodes.menuObj.className="dhxcelltop_menu";this.base.insertBefore(this.dataNodes.menuObj,this.dataNodes.toolbarObj||this.dataNodes.ribbonObj||this.cont);if(typeof(a)!="object"||a==null){a={}}a.skin=this.conf.skin;a.parent=this.dataNodes.menuObj;this.dataNodes.menu=new dhtmlXMenuObject(a);this.dataNodes.menuEv=this.attachEvent("_onSetSizes",function(){if(this.dataNodes.menuObj.style.display=="none"){return}this.dataNodes.menuObj.style.left=this.conf.ofs.l+"px";this.dataNodes.menuObj.style.marginTop=(this.dataNodes.haObj!=null?0:this.conf.ofs.t)+"px";this.dataNodes.menuObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px"});this.conf.ofs_nodes.t.menuObj=true;this.setSizes();a.parnt=null;a=null;return this.dataNodes.menu};dhtmlXCellTop.prototype.detachMenu=function(){if(this.dataNodes.menu==null){return}this.dataNodes.menu.unload();this.dataNodes.menu=null;this.dataNodes.menuObj.parentNode.removeChild(this.dataNodes.menuObj);this.dataNodes.menuObj=null;this.detachEvent(this.dataNodes.menuEv);this.dataNodes.menuEv=null;delete this.dataNodes.menu;delete this.dataNodes.menuObj;delete this.dataNodes.menuEv;this.conf.ofs_nodes.t.menuObj=false;if(!this.conf.unloading){this.setSizes()}};dhtmlXCellTop.prototype.attachToolbar=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}this.dataNodes.toolbarObj=document.createElement("DIV");this.dataNodes.toolbarObj.className="dhxcelltop_toolbar";this.base.insertBefore(this.dataNodes.toolbarObj,this.cont);this.dataNodes.toolbarObj.appendChild(document.createElement("DIV"));if(typeof(a)!="object"||a==null){a={}}a.skin=this.conf.skin;a.parent=this.dataNodes.toolbarObj.firstChild;this.dataNodes.toolbar=new dhtmlXToolbarObject(a);this.dataNodes.toolbarEv=this.attachEvent("_onSetSizes",function(){if(this.dataNodes.toolbarObj.style.display=="none"){return}this.dataNodes.toolbarObj.style.left=this.conf.ofs.l+"px";this.dataNodes.toolbarObj.style.marginTop=(this.dataNodes.haObj!=null||this.dataNodes.menuObj!=null?0:this.conf.ofs.t)+"px";this.dataNodes.toolbarObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px"});this.dataNodes.toolbar._masterCell=this;this.dataNodes.toolbar.attachEvent("_onIconSizeChange",function(){this._masterCell.setSizes()});this.conf.ofs_nodes.t.toolbarObj=true;this.setSizes();a.parnt=null;a=null;return this.dataNodes.toolbar};dhtmlXCellTop.prototype.detachToolbar=function(){if(this.dataNodes.toolbar==null){return}this.dataNodes.toolbar._masterCell=null;this.dataNodes.toolbar.unload();this.dataNodes.toolbar=null;this.dataNodes.toolbarObj.parentNode.removeChild(this.dataNodes.toolbarObj);this.dataNodes.toolbarObj=null;this.detachEvent(this.dataNodes.toolbarEv);this.dataNodes.toolbarEv=null;this.conf.ofs_nodes.t.toolbarObj=false;delete this.dataNodes.toolbar;delete this.dataNodes.toolbarObj;delete this.dataNodes.toolbarEv;if(!this.conf.unloading){this.setSizes()}};dhtmlXCellTop.prototype.attachRibbon=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}this.dataNodes.ribbonObj=document.createElement("DIV");this.dataNodes.ribbonObj.className="dhxcelltop_ribbon";this.base.insertBefore(this.dataNodes.ribbonObj,this.cont);this.dataNodes.ribbonObj.appendChild(document.createElement("DIV"));if(typeof(a)!="object"||a==null){a={}}a.skin=this.conf.skin;a.parent=this.dataNodes.ribbonObj.firstChild;this.dataNodes.ribbon=new dhtmlXRibbon(a);this.dataNodes.ribbonEv=this.attachEvent("_onSetSizes",function(){if(this.dataNodes.ribbonObj.style.display=="none"){return}this.dataNodes.ribbonObj.style.left=this.conf.ofs.l+"px";this.dataNodes.ribbonObj.style.marginTop=(this.dataNodes.haObj!=null||this.dataNodes.menuObj!=null?0:this.conf.ofs.t)+"px";this.dataNodes.ribbonObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px";this.dataNodes.ribbon.setSizes()});this.conf.ofs_nodes.t.ribbonObj=true;var c=this;this.dataNodes.ribbon.attachEvent("_onHeightChanged",function(){c.setSizes()});this.setSizes();a.parnt=null;a=null;return this.dataNodes.ribbon};dhtmlXCellTop.prototype.detachRibbon=function(){if(this.dataNodes.ribbon==null){return}this.dataNodes.ribbon.unload();this.dataNodes.ribbon=null;this.dataNodes.ribbonObj.parentNode.removeChild(this.dataNodes.ribbonObj);this.dataNodes.ribbonObj=null;this.detachEvent(this.dataNodes.ribbonEv);this.dataNodes.ribbonEv=null;this.conf.ofs_nodes.t.ribbonObj=false;delete this.dataNodes.ribbon;delete this.dataNodes.ribbonObj;delete this.dataNodes.ribbonEv;if(!this.conf.unloading){this.setSizes()}};dhtmlXCellTop.prototype.attachStatusBar=function(a){if(this.dataNodes.sbObj){return}if(typeof(a)=="undefined"){a={}}this.dataNodes.sbObj=document.createElement("DIV");this.dataNodes.sbObj.className="dhxcelltop_statusbar";if(this.cont.nextSibling!=null){this.base.insertBefore(this.dataNodes.sbObj,this.cont.nextSibling)}else{this.base.appendChild(this.dataNodes.sbObj)}this.dataNodes.sbObj.innerHTML="<div class='dhxcont_statusbar'>"+(typeof(a.text)=="string"&&a.text.length>0?a.text:"&nbsp;")+"</div>";if(typeof(a.height)=="number"){this.dataNodes.sbObj.firstChild.style.height=this.dataNodes.sbObj.firstChild.style.lineHeight=a.height+"px"}this.dataNodes.sbObj.setText=function(c){this.childNodes[0].innerHTML=c};this.dataNodes.sbObj.getText=function(){return this.childNodes[0].innerHTML};this.dataNodes.sbObj.onselectstart=function(c){return false};this.dataNodes.sbEv=this.attachEvent("_onSetSizes",function(){if(this.dataNodes.sbObj.style.display=="none"){return}this.dataNodes.sbObj.style.left=this.conf.ofs.l+"px";this.dataNodes.sbObj.style.bottom=(this.dataNodes.faObj!=null?this.dataNodes.faObj.offsetHeight:0)+this.conf.ofs.t+"px";this.dataNodes.sbObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px"});this.conf.ofs_nodes.b.sbObj=true;this.setSizes();return this.dataNodes.sbObj};dhtmlXCellTop.prototype.detachStatusBar=function(){if(!this.dataNodes.sbObj){return}this.dataNodes.sbObj.setText=this.dataNodes.sbObj.getText=this.dataNodes.sbObj.onselectstart=null;this.dataNodes.sbObj.parentNode.removeChild(this.dataNodes.sbObj);this.dataNodes.sbObj=null;this.detachEvent(this.dataNodes.sbEv);this.dataNodes.sbEv=null;this.conf.ofs_nodes.b.sbObj=false;delete this.dataNodes.sb;delete this.dataNodes.sbObj;delete this.dataNodes.sbEv;if(!this.conf.unloading){this.setSizes()}};dhtmlXCellTop.prototype.showMenu=function(){this._mtbShowHide("menuObj","")};dhtmlXCellTop.prototype.hideMenu=function(){this._mtbShowHide("menuObj","none")};dhtmlXCellTop.prototype.showToolbar=function(){this._mtbShowHide("toolbarObj","")};dhtmlXCellTop.prototype.hideToolbar=function(){this._mtbShowHide("toolbarObj","none")};dhtmlXCellTop.prototype.showRibbon=function(){this._mtbShowHide("ribbonObj","")};dhtmlXCellTop.prototype.hideRibbon=function(){this._mtbShowHide("ribbonObj","none")};dhtmlXCellTop.prototype.showStatusBar=function(){this._mtbShowHide("sbObj","")};dhtmlXCellTop.prototype.hideStatusBar=function(){this._mtbShowHide("sbObj","none")};dhtmlXCellTop.prototype._mtbShowHide=function(c,a){if(this.dataNodes[c]==null){return}this.dataNodes[c].style.display=a;this.setSizes()};dhtmlXCellTop.prototype._mtbUnload=function(c,a){this.detachMenu();this.detachToolbar();this.detachStatusBar();this.detachRibbon()};dhtmlXCellTop.prototype.getAttachedMenu=function(){return this.dataNodes.menu};dhtmlXCellTop.prototype.getAttachedToolbar=function(){return this.dataNodes.toolbar};dhtmlXCellTop.prototype.getAttachedRibbon=function(){return this.dataNodes.ribbon};dhtmlXCellTop.prototype.getAttachedStatusBar=function(){return this.dataNodes.sbObj};dhtmlXCellTop.prototype.progressOn=function(){if(this.conf.progress){return}this.conf.progress=true;var c=document.createElement("DIV");c.className="dhxcelltop_progress";this.base.appendChild(c);var a=document.createElement("DIV");a.className="dhxcelltop_progress_img";this.base.appendChild(a);c=a=null};dhtmlXCellTop.prototype.progressOff=function(){if(!this.conf.progress){return}var g={dhxcelltop_progress:true,dhxcelltop_progress_img:true};for(var e=0;e<this.base.childNodes.length;e++){if(typeof(this.base.childNodes[e].className)!="undefined"&&g[this.base.childNodes[e].className]==true){g[this.base.childNodes[e].className]=this.base.childNodes[e]}}for(var c in g){if(g[c]!=true){this.base.removeChild(g[c])}g[c]=null}this.conf.progress=false;g=null};dhtmlXCellTop.prototype.attachHeader=function(c,a){if(this.dataNodes.haObj!=null){return}if(typeof(c)!="object"){c=document.getElementById(c)}this.dataNodes.haObj=document.createElement("DIV");this.dataNodes.haObj.className="dhxcelltop_hdr";this.dataNodes.haObj.style.height=(a||c.offsetHeight)+"px";this.base.insertBefore(this.dataNodes.haObj,this.dataNodes.menuObj||this.dataNodes.toolbarObj||this.cont);this.dataNodes.haObj.appendChild(c);c.style.visibility="visible";c=null;this.dataNodes.haEv=this.attachEvent("_onSetSizes",function(){this.dataNodes.haObj.style.left=this.conf.ofs.l+"px";this.dataNodes.haObj.style.marginTop=this.conf.ofs.t+"px";this.dataNodes.haObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px"});this.conf.ofs_nodes.t.haObj=true;this.setSizes()};dhtmlXCellTop.prototype.detachHeader=function(){if(!this.dataNodes.haObj){return}while(this.dataNodes.haObj.childNodes.length>0){this.dataNodes.haObj.lastChild.style.visibility="hidden";document.body.appendChild(this.dataNodes.haObj.lastChild)}this.dataNodes.haObj.parentNode.removeChild(this.dataNodes.haObj);this.dataNodes.haObj=null;this.detachEvent(this.dataNodes.haEv);this.dataNodes.haEv=null;this.conf.ofs_nodes.t.haObj=false;delete this.dataNodes.haEv;delete this.dataNodes.haObj;if(!this.conf.unloading){this.setSizes()}};dhtmlXCellTop.prototype.attachFooter=function(e,a){if(this.dataNodes.faObj!=null){return}if(typeof(e)!="object"){e=document.getElementById(e)}this.dataNodes.faObj=document.createElement("DIV");this.dataNodes.faObj.className="dhxcelltop_ftr";this.dataNodes.faObj.style.height=(a||e.offsetHeight)+"px";var c=(this.dataNodes.sbObj||this.cont);if(this.base.lastChild==c){this.base.appendChild(this.dataNodes.faObj)}else{this.base.insertBefore(this.dataNodes.faObj,c.nextSibling)}this.dataNodes.faEv=this.attachEvent("_onSetSizes",function(){this.dataNodes.faObj.style.left=this.conf.ofs.l+"px";this.dataNodes.faObj.style.bottom=this.conf.ofs.b+"px";this.dataNodes.faObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px"});this.dataNodes.faObj.appendChild(e);e.style.visibility="visible";c=e=null;this.conf.ofs_nodes.b.faObj=true;this.setSizes()};dhtmlXCellTop.prototype.detachFooter=function(){if(!this.dataNodes.faObj){return}while(this.dataNodes.faObj.childNodes.length>0){this.dataNodes.faObj.lastChild.style.visibility="hidden";document.body.appendChild(this.dataNodes.faObj.lastChild)}this.dataNodes.faObj.parentNode.removeChild(this.dataNodes.faObj);this.dataNodes.faObj=null;this.detachEvent(this.dataNodes.faEv);this.dataNodes.faEv=null;this.conf.ofs_nodes.b.faObj=false;delete this.dataNodes.faEv;delete this.dataNodes.faObj;if(!this.conf.unloading){this.setSizes()}};function dhtmlXCalendarObject(j,r){this.i={};var e=null;if(typeof(j)=="string"){var g=document.getElementById(j)}else{var g=j}if(g&&typeof(g)=="object"&&g.tagName&&String(g.tagName).toLowerCase()!="input"){e=g}g=null;if(typeof(j)!="object"||!j.length){j=[j]}for(var c=0;c<j.length;c++){if(typeof(j[c])=="string"){j[c]=(document.getElementById(j[c])||null)}if(j[c]!=null&&j[c].tagName&&String(j[c].tagName).toLowerCase()=="input"){this.i[window.dhx4.newId()]={input:j[c]}}else{if(!(j[c] instanceof Array)&&j[c] instanceof Object&&(j[c].input!=null||j[c].button!=null)){if(j[c].input!=null&&typeof(j[c].input)=="string"){j[c].input=document.getElementById(j[c].input)}if(j[c].button!=null&&typeof(j[c].button)=="string"){j[c].button=document.getElementById(j[c].button)}this.i[window.dhx4.newId()]=j[c]}}j[c]=null}this.conf={skin:(r||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhtmlxcalendar")||"dhx_skyblue"),zi:window.dhx4.newId(),touch:!window.dhx4.isIE,time:true,today:false,ws_first:true};this.setSkin=function(s,a){if(this.conf.skin==s&&!a){return}this.conf.skin=s;this.base.className="dhtmlxcalendar_"+this.conf.skin;this._ifrSize()};this.base=document.createElement("DIV");this.base.style.display="none";this.base.appendChild(document.createElement("DIV"));if(e!=null){this._hasParent=true;e.appendChild(this.base);e=null}else{document.body.appendChild(this.base)}this.setParent=function(a){if(this._hasParent){if(typeof(a)=="object"){a.appendChild(this.base)}else{if(typeof(a)=="string"){document.getElementById(a).appendChild(this.base)}}}};this.setSkin(this.conf.skin,true);this.base.onclick=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}a.cancelBubble=true};this.base.onmousedown=function(){return false};if(this.conf.touch){this.base.ontouchstart=this.base.onclick}this.loadUserLanguage=function(v){if(!this.langData[v]){return}this.lang=v;this.setWeekStartDay(this.langData[this.lang].weekstart);this.setDateFormat(this.langData[this.lang].dateformat||"%Y-%m-%d");if(this.msCont){var u=0;for(var s=0;s<this.msCont.childNodes.length;s++){for(var a=0;a<this.msCont.childNodes[s].childNodes.length;a++){this.msCont.childNodes[s].childNodes[a].innerHTML=this.langData[this.lang].monthesSNames[u++]}}}};this.contMonth=document.createElement("DIV");this.contMonth.className="dhtmlxcalendar_month_cont";this.contMonth.onselectstart=function(a){a=a||event;a.cancelBubble=true;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};this.base.firstChild.appendChild(this.contMonth);var l=document.createElement("UL");l.className="dhtmlxcalendar_line";this.contMonth.appendChild(l);var o=document.createElement("LI");o.className="dhtmlxcalendar_cell dhtmlxcalendar_month_hdr";o.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></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>";l.appendChild(o);var h=this;o.onclick=function(v){v=v||event;if(v.type=="touchstart"&&v.preventDefault!=null){v.preventDefault()}var s=(v.target||v.srcElement);if(s.className&&s.className.indexOf("dhtmlxcalendar_month_arrow")===0){h._hideSelector();var u=(s.parentNode.firstChild==s?-1:1);var a=new Date(h._activeMonth);h._drawMonth(new Date(h._activeMonth.getFullYear(),h._activeMonth.getMonth()+u,1,0,0,0,0));h._evOnArrowClick([a,new Date(h._activeMonth)]);return}if(s.className&&s.className=="dhtmlxcalendar_month_label_month"){v.cancelBubble=true;h._showSelector("month",Math.round(s.offsetLeft+s.offsetWidth/2),s.offsetTop+s.offsetHeight+2,"selector_month",true);return}if(s.className&&s.className=="dhtmlxcalendar_month_label_year"){v.cancelBubble=true;h._showSelector("year",Math.round(s.offsetLeft+s.offsetWidth/2),s.offsetTop+s.offsetHeight+2,"selector_year",true);return}h._hideSelector()};if(this.conf.touch==true){o.ontouchstart=o.onclick}this.contDays=document.createElement("DIV");this.contDays.className="dhtmlxcalendar_days_cont";this.base.firstChild.appendChild(this.contDays);this.setWeekStartDay=function(a){if(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 v=document.createElement("UL");v.className="dhtmlxcalendar_line";this.contDays.appendChild(v)}else{var v=this.contDays.firstChild}var s=this._wStart;var u=this.langData[this.lang].daysSNames;u.push(String(this.langData[this.lang].daysSNames[0]).valueOf());for(var x=0;x<8;x++){if(v.childNodes[x]==null){var a=document.createElement("LI");v.appendChild(a)}else{var a=v.childNodes[x]}if(x==0){a.className="dhtmlxcalendar_cell_wn";a.innerHTML="<div class='dhtmlxcalendar_label'>"+(this.langData[this.lang].weekname||"w")+"</div>"}else{a.className="dhtmlxcalendar_cell"+(s>=6?" dhtmlxcalendar_day_weekday_cell":"")+(x==1?"_first":"");a.innerHTML=u[s];if(++s>7){s=1}}}if(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.firstChild.appendChild(this.contDates);this.contDates.onclick=function(x){x=x||event;if(x.type=="touchstart"&&x.preventDefault!=null){x.preventDefault()}var s=(x.target||x.srcElement);if(s.parentNode!=null&&s.parentNode._date!=null){s=s.parentNode}if(s._date!=null&&!s._css_dis){var v=h._activeDate.getHours();var u=h._activeDate.getMinutes();var w=s._date;if(h.checkEvent("onBeforeChange")){if(!h.callEvent("onBeforeChange",[new Date(s._date.getFullYear(),s._date.getMonth(),s._date.getDate(),v,u)])){return}}if(h._activeDateCell!=null){h._activeDateCell._css_date=false;h._updateCellStyle(h._activeDateCell._q,h._activeDateCell._w)}var a=(h._activeDate.getFullYear()+"_"+h._activeDate.getMonth()!=w.getFullYear()+"_"+w.getMonth());h._nullDate=false;h._activeDate=new Date(w.getFullYear(),w.getMonth(),w.getDate(),v,u);h._activeDateCell=s;h._activeDateCell._css_date=true;h._activeDateCell._css_hover=false;h._updateCellStyle(h._activeDateCell._q,h._activeDateCell._w);if(a){h._drawMonth(h._activeDate)}if(h._activeInp&&h.i[h._activeInp]&&h.i[h._activeInp].input!=null){h.i[h._activeInp].input.value=h._dateToStr(new Date(h._activeDate.getTime()))}if(!h._hasParent){if(x.type=="touchstart"){window.setTimeout(function(){h._hide()},400)}else{h._hide()}}h._evOnClick([new Date(h._activeDate.getTime())])}};if(this.conf.touch==true){this.contDates.ontouchstart=this.contDates.onclick}this.contDates.onmouseover=function(s){s=s||event;var a=(s.target||s.srcElement);if(a.parentNode!=null&&a.parentNode._date!=null){a=a.parentNode}if(a._date!=null){if(h._lastHover==a||a._css_hover){return}a._css_hover=true;h._updateCellStyle(a._q,a._w);h._lastHover=a;h._evOnMouseOver([new Date(a._date.getFullYear(),a._date.getMonth(),a._date.getDate(),0,0,0,0),s]);a=null}};this.contDates.onmouseout=function(a){h._clearDayHover(a||event)};this._lastHover=null;this._clearDayHover=function(a){if(!this._lastHover){return}this._lastHover._css_hover=false;this._updateCellStyle(this._lastHover._q,this._lastHover._w);if(a!=null){h._evOnMouseOut([new Date(this._lastHover._date.getFullYear(),this._lastHover._date.getMonth(),this._lastHover._date.getDate(),0,0,0,0),a])}this._lastHover=null};for(var c=0;c<6;c++){var l=document.createElement("UL");l.className="dhtmlxcalendar_line";this.contDates.appendChild(l);for(var n=0;n<=7;n++){var o=document.createElement("LI");if(n==0){o.className="dhtmlxcalendar_cell_wn"}else{o.className="dhtmlxcalendar_cell"}l.appendChild(o)}}this.contTime=document.createElement("DIV");this.contTime.className="dhtmlxcalendar_time_cont";this.contTime.style.display="none";this.base.firstChild.appendChild(this.contTime);this.showTime=function(){if(this.conf.time!=true){this.conf.time=true;this._adjustTimeCont()}};this.hideTime=function(){if(this.conf.time==true){this.conf.time=false;this._adjustTimeCont()}};this.showToday=function(){if(this.conf.today!=true){this.conf.today=true;this._adjustTimeCont()}};this.hideToday=function(){if(this.conf.today==true){this.conf.today=false;this._adjustTimeCont()}};this._adjustTimeCont=function(){var a="";if(this.conf.time==true){a+="_time"}if(this.conf.today==true){a+="_today"}if(a==""){this.contTime.style.display="none"}else{this.contTime.className="dhtmlxcalendar_time_cont dhtmlxcalendar_mode"+a;this.contTime.style.display=""}this._ifrSize()};this._adjustTimeCont();var l=document.createElement("UL");l.className="dhtmlxcalendar_line";this.contTime.appendChild(l);var o=document.createElement("LI");o.className="dhtmlxcalendar_cell dhtmlxcalendar_time_hdr";o.innerHTML="<div class='dhtmlxcalendar_time_img'></div><span class='dhtmlxcalendar_label_hours'></span><span class='dhtmlxcalendar_label_colon'> : </span><span class='dhtmlxcalendar_label_minutes'></span><span class='dhtmlxcalendar_label_clear'>Clear</span><span class='dhtmlxcalendar_label_today'>Today</span>";l.appendChild(o);o.onclick=function(u){u=u||event;if(u.type=="touchstart"&&u.preventDefault!=null){u.preventDefault()}var a=(u.target||u.srcElement);if(a.tagName!=null&&a.tagName.toLowerCase()=="span"&&a._par==true&&a.parentNode!=null){a=a.parentNode}if(a.className&&a.className=="dhtmlxcalendar_label_hours"){u.cancelBubble=true;var s=h.contMonth.offsetHeight+h.contDays.offsetHeight+h.contDates.offsetHeight+a.offsetTop;h._showSelector("hours",Math.round(a.offsetLeft+a.offsetWidth/2),s-2,"selector_hours",true);return}if(a.className&&a.className=="dhtmlxcalendar_label_minutes"){u.cancelBubble=true;if(h._minutesInterval==1){var v=h.getFormatedDate("%i");a.innerHTML="<span class='dhtmlxcalendar_selected_date'>"+v.charAt(0)+"</span>"+v.charAt(1);a.firstChild._par=true;h._selectorMode=1}var s=h.contMonth.offsetHeight+h.contDays.offsetHeight+h.contDates.offsetHeight+a.offsetTop;h._showSelector("minutes",Math.round(a.offsetLeft+a.offsetWidth/2),s-2,"selector_minutes",true);return}h._hideSelector();if(a.className&&a.className=="dhtmlxcalendar_label_today"){var v=new Date();v.setHours(h._activeDate.getHours());v.setMinutes(h._activeDate.getMinutes());v.setSeconds(h._activeDate.getSeconds());h.setDate(v)}if(a.className&&a.className=="dhtmlxcalendar_label_clear"){h._nullDate=true;h._drawMonth(new Date())}};if(this.conf.touch==true){o.ontouchstart=o.onclick}this._activeMonth=null;this._activeDate=new Date();this._activeDateCell=null;this.setDate=function(s){window.dhx4.temp_calendar={tz:null};this._nullDate=(typeof(s)=="undefined"||s===""||!s);if(!(s instanceof Date)){s=this._strToDate(String(s||""));if(s=="Invalid Date"){s=new Date()}else{this.conf.tz=window.dhx4.temp_calendar.tz}window.dhx4.temp_calendar=null}if(this.conf.tz==null){this.conf.tz=window.dhx4.date2str(s,"%P")}var a=s.getTime();if(this._isOutOfRange(a)){return}this._activeDate=new Date(a);this._drawMonth(this._nullDate?new Date():this._activeDate);this._updateVisibleHours();this._updateVisibleMinutes()};this.getDate=function(u){if(this._nullDate){return null}var a=new Date(this._activeDate.getTime());if(u){window.dhx4.temp_calendar={tz:this.conf.tz};var s=this._dateToStr(a);window.dhx4.temp_calendar=null;return s}return a};this._drawMonth=function(E){if(!(E instanceof Date)){return}if(isNaN(E.getFullYear())){E=new Date(this._activeMonth.getFullYear(),this._activeMonth.getMonth(),1,0,0,0,0)}this._activeMonth=new Date(E.getFullYear(),E.getMonth(),1,0,0,0,0);this._activeDateCell=null;var C=new Date(this._activeMonth.getTime());var u=C.getDay();var I=u-this._wStart;if(I<0){I=I+7}C.setDate(C.getDate()-I);var L=E.getMonth();var M=new Date(this._activeDate.getFullYear(),this._activeDate.getMonth(),this._activeDate.getDate(),0,0,0,0).getTime();var y=0;for(var s=0;s<6;s++){var D=this._wStart;for(var K=0;K<=7;K++){if(K==0){var J=this.getWeekNumber(new Date(C.getFullYear(),C.getMonth(),C.getDate()+y,0,0,0,0));if(J>=52&&this.conf.ws_first==true&&this._activeMonth.getMonth()==0){var x=this.getWeekNumber(new Date(C.getFullYear(),C.getMonth(),C.getDate()+y+7,0,0,0,0));if(x<J&&x>1){J=1}}this.contDates.childNodes[s].childNodes[K].innerHTML="<div class='dhtmlxcalendar_label'>"+J+"</div>"}else{var a=new Date(C.getFullYear(),C.getMonth(),C.getDate()+y,0,0,0,0);if(a.getHours()!=0){var A=(a.getHours()>12?24-a.getHours():a.getHours());a.setTime(a.getTime()+60*60*1000*A)}var H=a.getDay();var v=a.getTime();var F="dhtmlxcalendar_label";if(this._tipData[v]!=null){if(this._tipData[v].usePopup&&typeof(window.dhtmlXPopup)=="function"){this.contDates.childNodes[s].childNodes[K].removeAttribute("title");this._initTooltipPopup()}else{this.contDates.childNodes[s].childNodes[K].setAttribute("title",this._tipData[v].text)}if(this._tipData[v].showIcon){F+=" dhtmlxcalendar_label_title"}}else{this.contDates.childNodes[s].childNodes[K].removeAttribute("title")}this.contDates.childNodes[s].childNodes[K].innerHTML="<div class='"+F+"'>"+a.getDate()+"</div>";this.contDates.childNodes[s].childNodes[K]._date=new Date(v);this.contDates.childNodes[s].childNodes[K]._q=s;this.contDates.childNodes[s].childNodes[K]._w=K;this.contDates.childNodes[s].childNodes[K]._css_month=(a.getMonth()==L);this.contDates.childNodes[s].childNodes[K]._css_date=(!this._nullDate&&v==M);this.contDates.childNodes[s].childNodes[K]._css_weekend=(D>=6);this.contDates.childNodes[s].childNodes[K]._css_dis=this._isOutOfRange(v);this.contDates.childNodes[s].childNodes[K]._css_holiday=(this._holidays[v]==true);this._updateCellStyle(s,K);if(v==M){this._activeDateCell=this.contDates.childNodes[s].childNodes[K]}if(++D>7){D=1}y++}}}this.contMonth.firstChild.firstChild.childNodes[1].innerHTML=this._buildMonthHdr(E)};this._updateCellStyle=function(x,a){var v=this.contDates.childNodes[x].childNodes[a];var u="dhtmlxcalendar_cell dhtmlxcalendar_cell";u+=(v._css_month?"_month":"");u+=(v._css_date?"_date":"");u+=(v._css_weekend?"_weekend":"");u+=(v._css_holiday?"_holiday":"");u+=(v._css_dis?"_dis":"");u+=(v._css_hover&&!v._css_dis?"_hover":"");v.className=u;v=null};this._minutesInterval=5;this._initSelector=function(C,v){if(!this._selCover){this._selCover=document.createElement("DIV");this._selCover.className="dhtmlxcalendar_selector_cover";this.base.firstChild.appendChild(this._selCover)}if(!this._sel){this._sel=document.createElement("DIV");this._sel.className="dhtmlxcalendar_selector_obj";this.base.firstChild.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.onmouseover=function(F){F=F||event;var w=(F.target||F.srcElement);if(w._cell===true){if(h._selHover!=w){h._clearSelHover()}if(String(w.className).match(/^\s{0,}dhtmlxcalendar_selector_cell\s{0,}$/gi)!=null){w.className+=" dhtmlxcalendar_selector_cell_hover";h._selHover=w}}};this._sel.onmouseout=function(){h._clearSelHover()};this._sel.firstChild.firstChild.firstChild.childNodes[0].onclick=function(w){w=w||event;if(w.type=="touchstart"&&w.preventDefault!=null){w.preventDefault()}w.cancelBubble=true;h._scrollYears(-1)};this._sel.firstChild.firstChild.firstChild.childNodes[2].onclick=function(w){w=w||event;if(w.type=="touchstart"&&w.preventDefault!=null){w.preventDefault()}w.cancelBubble=true;h._scrollYears(1)};if(this.conf.touch==true){this._sel.firstChild.firstChild.firstChild.childNodes[0].ontouchstart=this._sel.firstChild.firstChild.firstChild.childNodes[0].onclick;this._sel.firstChild.firstChild.firstChild.childNodes[2].ontouchstart=this._sel.firstChild.firstChild.firstChild.childNodes[2].onclick}this._sel._ta={};this._selHover=null;this._sel.appendChild(document.createElement("DIV"));this._sel.lastChild.className="dhtmlxcalendar_selector_obj_arrow"}if(this._sel._ta[C]==true){return}if(C=="month"){this._msCells={};this.msCont=document.createElement("DIV");this.msCont.className="dhtmlxcalendar_area_"+v;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.msCont);var s=0;for(var a=0;a<4;a++){var A=document.createElement("UL");A.className="dhtmlxcalendar_selector_line";this.msCont.appendChild(A);for(var D=0;D<3;D++){var E=document.createElement("LI");E.innerHTML=this.langData[this.lang].monthesSNames[s];E.className="dhtmlxcalendar_selector_cell";A.appendChild(E);E._month=s;E._cell=true;this._msCells[s++]=E}}this.msCont.onclick=function(F){F=F||event;if(F.type=="touchstart"&&F.preventDefault!=null){F.preventDefault()}F.cancelBubble=true;var w=(F.target||F.srcElement);if(w._month!=null){h._hideSelector();h._updateActiveMonth();h._drawMonth(new Date(h._activeMonth.getFullYear(),w._month,1,0,0,0,0));h._doOnSelectorChange()}};if(this.conf.touch==true){this.msCont.ontouchstart=this.msCont.onclick}}if(C=="year"){this._ysCells={};this.ysCont=document.createElement("DIV");this.ysCont.className="dhtmlxcalendar_area_"+v;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.ysCont);for(var a=0;a<4;a++){var A=document.createElement("UL");A.className="dhtmlxcalendar_selector_line";this.ysCont.appendChild(A);for(var D=0;D<3;D++){var E=document.createElement("LI");E.className="dhtmlxcalendar_selector_cell";E._cell=true;A.appendChild(E)}}this.ysCont.onclick=function(F){F=F||event;if(F.type=="touchstart"&&F.preventDefault!=null){F.preventDefault()}F.cancelBubble=true;var w=(F.target||F.srcElement);if(w._year!=null){h._hideSelector();h._drawMonth(new Date(w._year,h._activeMonth.getMonth(),1,0,0,0,0));h._doOnSelectorChange()}};if(this.conf.touch==true){this.ysCont.ontouchstart=this.ysCont.onclick}}if(C=="hours"){this._hsCells={};this.hsCont=document.createElement("DIV");this.hsCont.className="dhtmlxcalendar_area_"+v;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.hsCont);var s=0;for(var a=0;a<4;a++){var A=document.createElement("UL");A.className="dhtmlxcalendar_selector_line";this.hsCont.appendChild(A);for(var D=0;D<6;D++){var E=document.createElement("LI");E.innerHTML=this._fixLength(s,2);E.className="dhtmlxcalendar_selector_cell";A.appendChild(E);E._hours=s;E._cell=true;this._hsCells[s++]=E}}this.hsCont.onclick=function(F){F=F||event;if(F.type=="touchstart"&&F.preventDefault!=null){F.preventDefault()}F.cancelBubble=true;var w=(F.target||F.srcElement);if(w._hours!=null){h._hideSelector();h._activeDate.setHours(w._hours);h._updateActiveHours();h._updateVisibleHours();h._doOnSelectorChange();h.callEvent("onTimeChange",[new Date(h._activeDate.getTime())])}};if(this.conf.touch==true){this.hsCont.ontouchstart=this.hsCont.onclick}}if(C=="minutes"){var y=4;var u=3;var x=2;if(this._minutesInterval==1){if(this._selectorMode==1){y=2;u=3;x=1}else{y=2;u=5;x=1;v+="5"}}if(this._minutesInterval==10){y=2}if(this._minutesInterval==15){y=1;u=4;v+="4"}this._rsCells={};this.rsCont=document.createElement("DIV");this.rsCont.className="dhtmlxcalendar_area_"+v;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.rsCont);var s=0;for(var a=0;a<y;a++){var A=document.createElement("UL");A.className="dhtmlxcalendar_selector_line";this.rsCont.appendChild(A);for(var D=0;D<u;D++){var E=document.createElement("LI");E.innerHTML=(x>1?this._fixLength(s,x):s);E.className="dhtmlxcalendar_selector_cell";A.appendChild(E);E._minutes=s;E._cell=true;this._rsCells[s]=E;s+=this._minutesInterval}}this.rsCont.onclick=function(H){H=H||event;if(H.type=="touchstart"&&H.preventDefault!=null){H.preventDefault()}H.cancelBubble=true;var F=(H.target||H.srcElement);if(F._minutes!=null){if(h._minutesInterval==1){var w=h.getFormatedDate("%i");if(h._selectorMode==1){w=F._minutes.toString()+w.charAt(1)}else{w=w.charAt(0)+F._minutes.toString()}h._activeDate.setMinutes(Number(w));h.callEvent("onTimeChange",[new Date(h._activeDate.getTime())]);h._hideSelector();if(h._selectorMode==1){h._updateVisibleMinutes(true);h._selectorMode=2;h._showSelector("minutes",h._sel._x,h._sel._y,"selector_minutes",true);h._updateActiveMinutes();return}else{h._selectorMode=1}}else{h._hideSelector();h._activeDate.setMinutes(F._minutes);h._updateActiveMinutes();h.callEvent("onTimeChange",[new Date(h._activeDate.getTime())])}h._updateVisibleMinutes();h._doOnSelectorChange()}};if(this.conf.touch==true){this.rsCont.ontouchstart=this.rsCont.onclick}}this._sel._ta[C]=true};this._showSelector=function(w,s,A,v,a){if(a===true&&this._sel!=null&&this._isSelectorVisible()&&w==this._sel._t){this._hideSelector();return}if(this.conf.skin=="dhx_terrace"){s+=12}if(!this._sel||!this._sel._ta[w]){this._initSelector(w,v)}if(w!=this._sel._t&&this._sel._t=="minutes"&&this._minutesInterval==1){this.contTime.firstChild.firstChild.childNodes[3].innerHTML=this.getFormatedDate("%i")}this._sel._x=s;this._sel._y=A;this._sel.style.visibility="hidden";this._sel.style.display="";this._selCover.style.width=this.base.offsetWidth-2+"px";this._selCover.style.top=this.contMonth.offsetHeight+"px";this._selCover.style.height=this.contDates.offsetHeight+this.contDays.offsetHeight-1+"px";this._selCover.style.display="";this._sel._t=w;this._sel.className="dhtmlxcalendar_selector_obj dhtmlxcalendar_"+v+(w=="hours"&&this.conf.today==true?"2":"");this._sel.childNodes[0].firstChild.firstChild.childNodes[0].style.display=this._sel.childNodes[0].firstChild.firstChild.childNodes[2].style.display=(w=="year"?"":"none");var u=Math.max(0,s-Math.round(this._sel.offsetWidth/2));if(u+this._sel.offsetWidth>this._sel.parentNode.offsetWidth){u=this._sel.parentNode.offsetWidth-this._sel.offsetWidth}this._sel.style.left=u+"px";if(w=="hours"||w=="minutes"){this._sel.style.top=A-this._sel.offsetHeight+"px"}else{this._sel.style.top=A+"px"}this._sel.childNodes[1].style.width=this._sel.childNodes[0].offsetWidth+"px";this._sel.style.visibility="visible";this._doOnSelectorShow(w)};this._doOnSelectorShow=function(a){if(a=="month"){this._updateActiveMonth()}if(a=="year"){this._updateYearsList(this._activeMonth)}if(a=="hours"){this._updateActiveHours()}if(a=="minutes"){this._updateActiveMinutes()}};this._hideSelector=function(a){if(!this._sel){return}this._sel.style.display="none";this._sel.style.visible="hidden";this._selCover.style.display="none";if(this._sel._t=="minutes"&&this._minutesInterval==1){this.contTime.firstChild.firstChild.childNodes[3].innerHTML=this.getFormatedDate("%i");this._unloadSelector("minutes")}};this._isSelectorVisible=function(){if(!this._sel){return false}return(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===true])};this._clearSelHover=function(){if(!this._selHover){return}this._selHover.className=String(this._selHover.className.replace(/dhtmlxcalendar_selector_cell_hover/gi,""));this._selHover=null};this._unloadSelector=function(u){if(!this._sel){return}if(!this._sel._ta[u]){return}if(u=="month"){this.msCont.onclick=this.msCont.ontouchstart=null;this._msActive=null;for(var s in this._msCells){this._msCells[s]._cell=null;this._msCells[s]._month=null;this._msCells[s].parentNode.removeChild(this._msCells[s]);this._msCells[s]=null}this._msCells=null;while(this.msCont.childNodes.length>0){this.msCont.removeChild(this.msCont.lastChild)}this.msCont.parentNode.removeChild(this.msCont);this.msCont=null}if(u=="year"){this.ysCont.onclick=this.ysCont.ontouchstart=null;for(var s in this._ysCells){this._ysCells[s]._cell=null;this._ysCells[s]._year=null;this._ysCells[s].parentNode.removeChild(this._ysCells[s]);this._ysCells[s]=null}this._ysCells=null;while(this.ysCont.childNodes.length>0){this.ysCont.removeChild(this.ysCont.lastChild)}this.ysCont.parentNode.removeChild(this.ysCont);this.ysCont=null}if(u=="hours"){this.hsCont.onclick=this.hsCont.ontouchstart=null;this._hsActive=null;for(var s in this._hsCells){this._hsCells[s]._cell=null;this._hsCells[s]._hours=null;this._hsCells[s].parentNode.removeChild(this._hsCells[s]);this._hsCells[s]=null}this._hsCells=null;while(this.hsCont.childNodes.length>0){this.hsCont.removeChild(this.hsCont.lastChild)}this.hsCont.parentNode.removeChild(this.hsCont);this.hsCont=null}if(u=="minutes"){this.rsCont.onclick=this.rsCont.ontouchstart=null;this._rsActive=null;for(var s in this._rsCells){this._rsCells[s]._cell=null;this._rsCells[s]._minutes=null;this._rsCells[s].parentNode.removeChild(this._rsCells[s]);this._rsCells[s]=null}this._rsCells=null;while(this.rsCont.childNodes.length>0){this.rsCont.removeChild(this.rsCont.lastChild)}this.rsCont.parentNode.removeChild(this.rsCont);this.rsCont=null}this._sel._ta[u]=null};this.setMinutesInterval=function(a){if(!(a==1||a==5||a==10||a==15)){return}this._minutesInterval=a;this._unloadSelector("minutes")};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(y){for(var u in this._ysCells){this._ysCells[u]=null;delete this._ysCells[u]}var v=12*Math.floor(y.getFullYear()/12);for(var x=0;x<4;x++){for(var s=0;s<3;s++){this.ysCont.childNodes[x].childNodes[s].innerHTML=v;this.ysCont.childNodes[x].childNodes[s]._year=v;this.ysCont.childNodes[x].childNodes[s].className="dhtmlxcalendar_selector_cell";this._ysCells[v++]=this.ysCont.childNodes[x].childNodes[s]}}this._updateActiveYear()};this._scrollYears=function(a){var u=(a<0?this.ysCont.firstChild.firstChild._year:this.ysCont.lastChild.lastChild._year)+a;var s=new Date(u,this._activeMonth.getMonth(),1,0,0,0,0);this._updateYearsList(s)};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(this._rsActive!=null&&typeof(this._rsActive)!="undefined"&&typeof(this._rsCells[this._rsActive])!="undefined"){this._rsCells[this._rsActive].className="dhtmlxcalendar_selector_cell"}if(this._minutesInterval==1){this._rsActive=(this.getFormatedDate("%i").toString()).charAt(this._selectorMode==1?0:1)}else{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(s){var a=this._fixLength(this._activeDate.getMinutes(),2).toString();if(s==true){a=a.charAt(0)+"<span class='dhtmlxcalendar_selected_date'>"+a.charAt(1)+"</span>"}this.contTime.firstChild.firstChild.childNodes[3].innerHTML=a;if(s==true){this.contTime.firstChild.firstChild.childNodes[3].lastChild._par=true}};this._fixLength=function(a,s){while(String(a).length<s){a="0"+String(a)}return a};this._dateFormat="";this._dateFormatRE=null;this.setDateFormat=function(w){var v={};if(this._strToDate!=null){for(var s in this.i){if(this.i[s].input!=null&&this.i[s].input.value.length>0){var x=this._strToDate(this.i[s].input.value,this._dateFormat||this.langData[this.lang].dateformat||"%Y-%m-%d");if(x instanceof Date){v[s]=x}}}}this._dateFormat=w;var u=String(this._dateFormat).replace(/%[a-zA-Z]+/g,function(a){var y=a.replace(/%/,"");switch(y){case"n":case"h":case"j":case"g":case"G":return"\\d{1,2}";case"m":case"d":case"H":case"i":case"s":case"y":return"\\d{2}";case"Y":return"\\d{4}";case"M":return"("+h.langData[h.lang].monthesSNames.join("|").toLowerCase()+"){1,}";case"F":return"("+h.langData[h.lang].monthesFNames.join("|").toLowerCase()+"){1,}";case"D":return"[a-z]{2}";case"a":case"A":return"AM|PM";case"u":return"\\d{1,6}";case"P":return"[\\+\\-]\\d{1,2}\\:\\d{1,2}"}return a});this._dateFormatRE=new RegExp(u,"i");for(var s in v){this.i[s].input.value=this._dateToStr(v[s])}v=null};this.setDateFormat(this.langData[this.lang].dateformat||"%Y-%m-%d");this._updateDateStr=function(s){if(!this._dateFormatRE||!s.match(this._dateFormatRE)){return}if(s==this.getFormatedDate()){return}var a=this._strToDate(s);if(!(a instanceof Date)){return}if(this.checkEvent("onBeforeChange")){if(!this.callEvent("onBeforeChange",[new Date(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds())])){if(this.i!=null&&this._activeInp!=null&&this.i[this._activeInp]!=null&&this.i[this._activeInp].input!=null){this.i[this._activeInp].input.value=this.getFormatedDate()}return}}this._nullDate=false;this._activeDate=a;this._drawMonth(this._nullDate?new Date():this._activeDate);this._updateVisibleMinutes();this._updateVisibleHours();if(this._sel&&this._isSelectorVisible()){this._doOnSelectorShow(this._sel._t)}this._doOnSelectorChange(true)};this.showMonth=function(a){if(typeof(a)=="string"){a=this._strToDate(a)}if(!(a instanceof Date)){return}this._drawMonth(a)};this.setFormatedDate=function(w,x,s,v){var u=this._strToDate(x,w);if(v){return u}this.setDate(u)};this.getFormatedDate=function(s,a){if(!(a&&a instanceof Date)){if(this._nullDate){return""}a=new Date(this._activeDate)}return this._dateToStr(a,s)};this.getWeekNumber=function(x){if(typeof(x)=="string"){x=this._strToDate(x)}if(!(x instanceof Date)){return"Invalid Date"}if(typeof(this._ftDay)=="undefined"){this._ftDay=4}var F=this._wStart;var w=F+7;var E=4;var u=new Date(x.getFullYear(),0,1,0,0,0,0);var v=u.getDay();if(v==0){v=7}if(E<F){E+=7;v+=7}var C=0;if(v>=F&&v<=E){}else{C=1}var A=v-F;var D=new Date(x.getFullYear(),0,1-A+C*7,0,0,0,0);var I=604800000;var s=new Date(x.getFullYear(),x.getMonth(),x.getDate()+1,0,0,0,0);var H=Math.ceil((s.getTime()-D.getTime())/I);if(H==0){var y=new Date(x.getFullYear(),x.getMonth(),x.getDate(),0,0,0,0);var a=y.getDay()-this._wStart;if(a<0){a=a+7}y.setDate(y.getDate()-a);H=this.getWeekNumber(y)}return H};this.showWeekNumbers=function(){this.base.firstChild.className="dhtmlxcalendar_wn"};this.hideWeekNumbers=function(){this.base.firstChild.className=""};this.show=function(u){if(!u&&this._hasParent){this._show();return}if(typeof(u)=="object"&&typeof(u._dhtmlxcalendar_uid)!="undefined"&&this.i[u._dhtmlxcalendar_uid]==u){this._show(u._dhtmlxcalendar_uid);return}if(typeof(u)=="undefined"){for(var s in this.i){if(!u){u=s}}}if(!u){return}this._show(u)};this.hide=function(){if(this._isVisible()){this._hide()}};this.isVisible=function(){return this._isVisible()};this._activeInp=null;this.pos="bottom";this.setPosition=function(a,s){this._px=null;this._py=null;if(a=="right"||a=="bottom"){this.pos=a}else{this.pos="int";if(typeof(a)!="undefined"&&!isNaN(a)){this.base.style.left=a+"px";this._px=a}if(typeof(s)!="undefined"&&!isNaN(s)){this.base.style.top=s+"px";this._py=s}this._ifrSize()}};this._show=function(A,s){if(s===true&&this._activeInp==A&&this._isVisible()){this._hide();return}this.base.style.visibility="hidden";this.base.style.display="";if(!A){if(this._px!=null&&this._py!=null){this.base.style.left=this._px+"px";this.base.style.top=this._py+"px"}else{this.base.style.left="0px";this.base.style.top="0px"}}else{if(this.base.className.indexOf("dhtmlxcalendar_in_input")==-1){this.base.className+=" dhtmlxcalendar_in_input"}var u=(this.i[A].input||this.i[A].button);var C=window.dhx4.screenDim();var y={top:window.dhx4.absTop(u),left:window.dhx4.absLeft(u)};if(this.pos=="right"){this.base.style.left=y.left+u.offsetWidth+"px";this.base.style.top=Math.min(y.top,C.bottom-this.base.offsetHeight)+"px"}else{if(this.pos=="bottom"){var w=y.top+u.offsetHeight+1;if(w+this.base.offsetHeight>C.bottom){var v=y.top-this.base.offsetHeight;if(v>=-20){w=v}}var a=y.left;if(a+this.base.offsetWidth>C.right){a=Math.max(0,y.left+u.offsetWidth-this.base.offsetWidth)}this.base.style.left=a+"px";this.base.style.top=w+"px"}else{this.base.style.left=(this._px||0)+"px";this.base.style.top=(this._py||0)+"px"}}this._activeInp=A;u=null}this._hideSelector();this.base.style.visibility="visible";this.base.style.zIndex=window.dhx4.zim.reserve(this.conf.zi);this._ifrSize();if(this._ifr){this._ifr.style.display=""}this.callEvent("onShow",[])};this._hide=function(){if(this._lastHover!=null){this._clearDayHover()}this._hideSelector();this.base.style.display="none";window.dhx4.zim.clear(this.conf.zi);if(this.base.className.indexOf("dhtmlxcalendar_in_input")>=0){this.base.className=this.base.className.replace(/\s{0,}dhtmlxcalendar_in_input/gi,"")}this._activeInp=null;if(this._ifr){this._ifr.style.display="none"}this.callEvent("onHide",[])};this._isVisible=function(){return(this.base.style.display!="none")};this._rangeActive=false;this._rangeFrom=null;this._rangeTo=null;this._rangeSet={};this.setInsensitiveDays=function(u){var a=this._extractDates(u);for(var s=0;s<a.length;s++){this._rangeSet[new Date(a[s].getFullYear(),a[s].getMonth(),a[s].getDate(),0,0,0,0).getTime()]=true}this._drawMonth(this._activeMonth)};this.clearInsensitiveDays=function(){this._clearRangeSet();this._drawMonth(this._activeMonth)};this._holidays={};this.setHolidays=function(s){if(s==null){this._clearHolidays()}else{if(s!=null){var a=this._extractDates(s);for(var u=0;u<a.length;u++){this._holidays[new Date(a[u].getFullYear(),a[u].getMonth(),a[u].getDate(),0,0,0,0).getTime()]=true}}}this._drawMonth(this._activeMonth)};this._extractDates=function(u){if(typeof(u)=="string"||u instanceof Date){u=[u]}var s=[];for(var v=0;v<u.length;v++){if(typeof(u[v])=="string"){var x=u[v].split(",");for(var a=0;a<x.length;a++){s.push(this._strToDate(x[a]))}}else{if(u[v] instanceof Date){s.push(u[v])}}}return s};this._clearRange=function(){this._rangeActive=false;this._rangeType=null;this._rangeFrom=null;this._rangeTo=null};this._clearRangeSet=function(){for(var s in this._rangeSet){this._rangeSet[s]=null;delete this._rangeSet[s]}};this._clearHolidays=function(){for(var s in this._holidays){this._holidays[s]=null;delete this._holidays[s]}};this._isOutOfRange=function(s){if(this._rangeSet[s]==true){return true}if(this._rangeActive){if(this._rangeType=="in"&&(s<this._rangeFrom||s>this._rangeTo)){return true}if(this._rangeType=="out"&&(s>=this._rangeFrom&&s<=this._rangeTo)){return true}if(this._rangeType=="from"&&s<this._rangeFrom){return true}if(this._rangeType=="to"&&s>this._rangeTo){return true}}var a=new Date(s);if(this._rangeWeek){if(this._rangeWeekData[a.getDay()]===true){return true}}if(this._rangeMonth){if(this._rangeMonthData[a.getDate()]===true){return true}}if(this._rangeYear){if(this._rangeYearData[a.getMonth()+"_"+a.getDate()]===true){return true}}return false};this.clearSensitiveRange=function(){this._clearRange();this._drawMonth(this._activeMonth)};this.setSensitiveRange=function(v,u,a){var s=false;if(v!=null&&u!=null){if(!(v instanceof Date)){v=this._strToDate(v)}if(!(u instanceof Date)){u=this._strToDate(u)}if(v.getTime()>u.getTime()){return}this._rangeFrom=new Date(v.getFullYear(),v.getMonth(),v.getDate(),0,0,0,0).getTime();this._rangeTo=new Date(u.getFullYear(),u.getMonth(),u.getDate(),0,0,0,0).getTime();this._rangeActive=true;this._rangeType="in";s=true}if(!s&&v!=null&&u==null){if(!(v instanceof Date)){v=this._strToDate(v)}this._rangeFrom=new Date(v.getFullYear(),v.getMonth(),v.getDate(),0,0,0,0).getTime();this._rangeTo=null;if(a===true){this._rangeFrom++}this._rangeActive=true;this._rangeType="from";s=true}if(!s&&v==null&&u!=null){if(!(u instanceof Date)){u=this._strToDate(u)}this._rangeFrom=null;this._rangeTo=new Date(u.getFullYear(),u.getMonth(),u.getDate(),0,0,0,0).getTime();if(a===true){this._rangeTo--}this._rangeActive=true;this._rangeType="to";s=true}if(s){this._drawMonth(this._activeMonth)}};this.setInsensitiveRange=function(s,a){if(s!=null&&a!=null){if(!(s instanceof Date)){s=this._strToDate(s)}if(!(a instanceof Date)){a=this._strToDate(a)}if(s.getTime()>a.getTime()){return}this._rangeFrom=new Date(s.getFullYear(),s.getMonth(),s.getDate(),0,0,0,0).getTime();this._rangeTo=new Date(a.getFullYear(),a.getMonth(),a.getDate(),0,0,0,0).getTime();this._rangeActive=true;this._rangeType="out";this._drawMonth(this._activeMonth);return}if(s!=null&&a==null){this.setSensitiveRange(null,s,true);return}if(s==null&&a!=null){this.setSensitiveRange(a,null,true);return}};this.disableDays=function(x,w){if(x=="week"){if(typeof(w)!="object"&&typeof(w.length)=="undefined"){w=[w]}if(!this._rangeWeekData){this._rangeWeekData={}}for(var s in this._rangeWeekData){this._rangeWeekData[s]=false;delete this._rangeWeekData[s]}for(var v=0;v<w.length;v++){this._rangeWeekData[w[v]]=true;if(w[v]==7){this._rangeWeekData[0]=true}}this._rangeWeek=true}if(x=="month"){if(typeof(w)!="object"&&typeof(w.length)=="undefined"){w=[w]}if(!this._rangeMonthData){this._rangeMonthData={}}for(var s in this._rangeMonthData){this._rangeMonthData[s]=false;delete this._rangeMonthData[s]}for(var v=0;v<w.length;v++){this._rangeMonthData[w[v]]=true}this._rangeMonth=true}if(x=="year"){var u=this._extractDates(w);if(!this._rangeYearData){this._rangeYearData={}}for(var s in this._rangeYearData){this._rangeYearData[s]=false;delete this._rangeYearData[s]}for(var v=0;v<u.length;v++){this._rangeYearData[u[v].getMonth()+"_"+u[v].getDate()]=true}this._rangeYear=true}this._drawMonth(this._activeMonth)};this.enableDays=function(a){if(a=="week"){this._rangeWeek=false}if(a=="month"){this._rangeMonth=false}if(a=="year"){this._rangeYear=false}this._drawMonth(this._activeMonth)};this._tipData={};this._tipTM=null;this._tipTMTime=400;this._tipEvs=false;this._tipPopup=null;this._tipCellDate=null;this._tipCellDim=null;this.setTooltip=function(u,x,y,a){var v=this._extractDates(u);for(var w=0;w<v.length;w++){var s=new Date(v[w].getFullYear(),v[w].getMonth(),v[w].getDate(),0,0,0,0).getTime();this._tipData[s]={text:x,showIcon:y,usePopup:a}}this._drawMonth(this._activeMonth)};this.clearTooltip=function(s){var u=this._extractDates(s);for(var v=0;v<u.length;v++){var a=new Date(u[v].getFullYear(),u[v].getMonth(),u[v].getDate(),0,0,0,0).getTime();this._tipData[a]=null;delete this._tipData[a]}this._drawMonth(this._activeMonth)};this._initTooltipPopup=function(){if(this._tipEvs){return}this.attachEvent("onMouseOver",function(s){var a=new Date(s.getFullYear(),s.getMonth(),s.getDate(),0,0,0,0).getTime();if(this._tipData[a]!=null){if(this._tipTM){window.clearTimeout(this._tipTM)}this._tipCellDate=s;this._tipCellDim=this.getCellDimension(s);this._tipText=this._tipData[a].text;this._tipTM=window.setTimeout(this._showTooltipPopup,this._tipTMTime)}});this.attachEvent("onMouseOut",this._hideTooltipPopup);this._tipEvs=true};this._showTooltipPopup=function(v,a,A,s,u){if(!h._tipPopup){h._tipPopup=new dhtmlXPopup({mode:"top"})}h._tipPopup.attachHTML(h._tipText);h._tipPopup.show(h._tipCellDim.x,h._tipCellDim.y,h._tipCellDim.w,h._tipCellDim.h);h.callEvent("onPopupShow",[h._tipCellDate])};this._hideTooltipPopup=function(){if(this._tipTM){window.clearTimeout(this._tipTM)}if(this._tipPopup!=null&&this._tipPopup.isVisible()){this._tipPopup.hide();this.callEvent("onPopupHide",[this._tipCellDate])}};this.getPopup=function(){return this._tipPopup};this.getCellDimension=function(u){if(typeof(u)=="string"){u=this._strToDate(u)}if(!(u instanceof Date)){return null}var v=new Date(u.getFullYear(),u.getMonth(),u.getDate(),0,0,0,0).getTime();var s=null;for(var x=0;x<this.contDates.childNodes.length;x++){for(var a=0;a<this.contDates.childNodes[x].childNodes.length;a++){var y=this.contDates.childNodes[x].childNodes[a];if(y._date!=null&&y._date.getTime()==v){s={x:window.dhx4.absLeft(y),y:window.dhx4.absTop(y),w:y.offsetWidth,h:y.offsetHeight}}y=null}}return s};this._updateFromInput=function(a){if(this._nullInInput&&((a.value).replace(/\s/g,"")).length==0){if(this.checkEvent("onBeforeChange")){if(!this.callEvent("onBeforeChange",[null])){if(this.i!=null&&this._activeInp!=null&&this.i[this._activeInp]!=null&&this.i[this._activeInp].input!=null){this.i[this._activeInp].input.value=this.getFormatedDate()}return}}this.setDate(null)}else{this._updateDateStr(a.value)}a=null};this._doOnClick=function(s){s=s||event;var a=(s.target||s.srcElement);if(a._dhtmlxcalendar_uid&&a._dhtmlxcalendar_uid!=h._activeInp&&h._isVisible()&&h._activeInp){h._hide();return}if(!a._dhtmlxcalendar_uid||!h.i[a._dhtmlxcalendar_uid]){if(h._isSelectorVisible()){h._hideSelector()}else{if(!h._hasParent&&h._isVisible()){h._hide()}}}};this._doOnKeyDown=function(a){a=a||event;if(a.keyCode==27||a.keyCode==13){if(h._isSelectorVisible()){h._hideSelector()}else{if(h._isVisible()&&!h._hasParent){h._hide()}}}};this._doOnInpClick=function(s){s=s||event;if(s.type=="touchstart"&&s.preventDefault!=null){s.preventDefault()}var a=(s.target||s.srcElement);if(!a._dhtmlxcalendar_uid){return}if(!h._listenerEnabled){h._updateFromInput(a)}h._show(a._dhtmlxcalendar_uid,true)};this._doOnInpKeyUp=function(s){s=s||event;var a=(s.target||s.srcElement);if(s.keyCode==13||!a._dhtmlxcalendar_uid){return}if(!h._listenerEnabled){h._updateFromInput(a)}};this._doOnBtnClick=function(s){s=s||event;if(s.type=="touchstart"&&s.preventDefault!=null){s.preventDefault()}var a=(s.target||s.srcElement);if(!a._dhtmlxcalendar_uid){return}if(h.i[a._dhtmlxcalendar_uid].input!=null){h._updateFromInput(h.i[a._dhtmlxcalendar_uid].input)}h._show(a._dhtmlxcalendar_uid,true)};this._doOnUnload=function(){if(h&&h.unload){h.unload()}};if(typeof(window.addEventListener)=="function"){document.body.addEventListener("click",h._doOnClick,false);window.addEventListener("keydown",h._doOnKeyDown,false);window.addEventListener("unload",h._doOnUnload,false);if(this.conf.touch==true){document.body.addEventListener("touchstart",h._doOnClick,false)}}else{document.body.attachEvent("onclick",h._doOnClick);document.body.attachEvent("onkeydown",h._doOnKeyDown);window.attachEvent("onunload",h._doOnUnload)}this.attachObj=function(u){var s=window.dhx4.newId();if(typeof(u)=="string"){this.i[s]={input:document.getElementById(u)}}else{if(typeof(u.tagName)!="undefined"){this.i[s]={input:u}}else{if(typeof(u)=="object"&&(u.input!=null||u.button!=null)){this.i[s]={};if(u.input!=null){this.i[s].input=(typeof(u.input)=="string"?document.getElementById(u.input):u.input)}if(u.button!=null){this.i[s].button=(typeof(u.button)=="string"?document.getElementById(u.button):u.button)}}}}this._attachEventsToObject(s);return s};this.detachObj=function(v){var u=null;if(this.i[v]!=null){u=v}else{if(typeof(v)=="string"){v=document.getElementById(v);u=v._dhtmlxcalendar_uid}else{if(typeof(v.tagName)!="undefined"){u=v._dhtmlxcalendar_uid}else{if(typeof(v)=="object"&&(v.input!=null||v.button!=null)){if(u==null&&v.input!=null){u=(typeof(v.input)=="string"?document.getElementById(v.input):v.input)._dhtmlxcalendar_uid}if(u==null&&v.button!=null){u=(typeof(v.button)=="string"?document.getElementById(v.button):v.button)._dhtmlxcalendar_uid}}}}}if(u!=null&&this.i[u]!=null){this._detachEventsFromObject(u);for(var s in this.i[s]){this.i[u][s]._dhtmlxcalendar_uid=null;this.i[u][s]=null;delete this.i[u][s]}this.i[u]=null;delete this.i[u];return true}return false};this._attachEventsToObject=function(s){if(this.i[s].button!=null){this.i[s].button._dhtmlxcalendar_uid=s;if(typeof(window.addEventListener)=="function"){this.i[s].button.addEventListener("click",h._doOnBtnClick,false);if(this.conf.touch==true){this.i[s].button.addEventListener("touchstart",h._doOnBtnClick,false)}}else{this.i[s].button.attachEvent("onclick",h._doOnBtnClick)}}else{if(this.i[s].input!=null){this.i[s].input._dhtmlxcalendar_uid=s;if(typeof(window.addEventListener)=="function"){this.i[s].input.addEventListener("click",h._doOnInpClick,false);this.i[s].input.addEventListener("keyup",h._doOnInpKeyUp,false);if(this.conf.touch==true){this.i[s].input.addEventListener("touchstart",h._doOnInpClick,false)}}else{this.i[s].input.attachEvent("onclick",h._doOnInpClick);this.i[s].input.attachEvent("onkeyup",h._doOnInpKeyUp)}}}};this._detachEventsFromObject=function(s){if(this.i[s].button!=null){if(typeof(window.addEventListener)=="function"){this.i[s].button.removeEventListener("click",h._doOnBtnClick,false);if(this.conf.touch==true){this.i[s].button.removeEventListener("touchstart",h._doOnBtnClick,false)}}else{this.i[s].button.detachEvent("onclick",h._doOnBtnClick)}}else{if(this.i[s].input!=null){if(typeof(window.addEventListener)=="function"){this.i[s].input.removeEventListener("click",h._doOnInpClick,false);this.i[s].input.removeEventListener("keyup",h._doOnInpKeyUp,false);if(this.conf.touch==true){this.i[s].input.removeEventListener("touchstart",h._doOnInpClick,false)}}else{this.i[s].input.detachEvent("onclick",h._doOnInpClick);this.i[s].input.detachEvent("onkeyup",h._doOnInpKeyUp)}}}};this.enableListener=function(a){if(!a){return}if(typeof(window.addEventListener)=="function"){a.addEventListener("focus",h._listenerEvFocus,false);a.addEventListener("blur",h._listenerEvBlur,false)}else{a.attachEvent("onfocus",h._listenerEvFocus);a.attachEvent("onblur",h._listenerEvBlur)}a=null};this.disableListener=function(a){if(!a){return}a._f0=false;if(this._tmListener){window.clearTimeout(this._tmListener)}if(typeof(window.addEventListener)=="function"){a.removeEventListener("focus",h._listenerEvFocus,false);a.removeEventListener("blur",h._listenerEvBlur,false)}else{a.detachEvent("onfocus",h._listenerEvFocus);a.detachEvent("onblur",h._listenerEvBlur)}a=null};this._startListener=function(a){if(this._tmListener){window.clearTimeout(this._tmListener)}if(typeof(a._v1)=="undefined"){a._v1=a.value}if(a._v1!=a.value){this._updateFromInput(a);a._v1=a.value}if(a._f0){this._tmListener=window.setTimeout(function(){h._startListener(a)},100)}};this._listenerEvFocus=function(s){s=s||event;var a=s.target||s.srcElement;a._f0=true;h._startListener(a);a=null};this._listenerEvBlur=function(s){s=s||event;var a=s.target||s.srcElement;a._f0=false;a=null};for(var m in this.i){this._attachEventsToObject(m)}window.dhx4._eventable(this);this._evOnArrowClick=function(a){return this.callEvent("onArrowClick",a)};this._evOnClick=function(a){return this.callEvent("onClick",a)};this._evOnMouseOut=function(a){return this.callEvent("onMouseOut",a)};this._evOnMouseOver=function(a){return this.callEvent("onMouseOver",a)};this.unload=function(){this._activeDate=null;this._activeDateCell=null;this._activeInp=null;this._activeMonth=null;this._dateFormat=null;this._dateFormatRE=null;this._lastHover=null;if(this._tmListener){window.clearTimeout(this._tmListener)}this._tmListener=null;if(typeof(window.addEventListener)=="function"){document.body.removeEventListener("click",h._doOnClick,false);window.removeEventListener("keydown",h._doOnKeyDown,false);window.removeEventListener("unload",h._doOnUnload,false);if(this.conf.touch==true){document.body.removeEventListener("touchstart",h._doOnClick,false)}}else{document.body.detachEvent("onclick",h._doOnClick);document.body.detachEvent("onkeydown",h._doOnKeyDown);window.detachEvent("onunload",h._doOnKeyDown)}this._doOnClick=null;this._doOnKeyDown=null;this._doOnUnload=null;for(var s in this.i){this.i[s]._dhtmlxcalendar_uid=null;this._detachEventsFromObject(s);this.disableListener(this.i[s].input);this.i[s]=null;delete this.i[s]}this.i=null;this._doOnInpClick=null;this._doOnInpKeyUp=null;window.dhx4._eventable(this,"clear");this.contMonth.onselectstart=null;this.contMonth.firstChild.firstChild.onclick=null;this.contMonth.firstChild.firstChild.ontouchstart=null;this.contMonth.firstChild.firstChild.firstChild.onmouseover=null;this.contMonth.firstChild.firstChild.firstChild.onmouseout=null;this.contMonth.firstChild.firstChild.lastChild.onmouseover=null;this.contMonth.firstChild.firstChild.lastChild.onmouseout=null;while(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);this.contMonth=null;while(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.ontouchstart=null;this.contDates.onmouseover=null;this.contDates.onmouseout=null;while(this.contDates.childNodes.length>0){while(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;this.contTime.firstChild.firstChild.onclick=null;this.contTime.firstChild.firstChild.ontouchstart=null;while(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.contTime=null;this._lastHover=null;this._unloadSelector("month");this._unloadSelector("year");this._unloadSelector("hours");this._unloadSelector("minutes");if(this._selCover){this._selCover.parentNode.removeChild(this._selCover);this._selCover=null}if(this._sel){for(var s in this._sel._ta){this._sel._ta[s]=null}this._sel._ta=null;this._sel._t=null;this._sel.onmouseover=null;this._sel.onmouseout=null;while(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);this._sel.firstChild.removeChild(this._sel.firstChild.firstChild);while(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.onmousedown=null;this.base.ontouchstart=null;this.base.onmouseout=null;this.base.parentNode.removeChild(this.base);this.base=null;this._clearDayHover=null;this._clearSelHover=null;this._doOnSelectorChange=null;this._doOnSelectorShow=null;this._drawMonth=null;this._fixLength=null;this._ifrSize=null;this._hide=null;this._hideSelector=null;this._initSelector=null;this._isSelectorVisible=null;this._isVisible=null;this._scrollYears=null;this._show=null;this._showSelector=null;this._strToDate=null;this._updateActiveHours=null;this._updateActiveMinutes=null;this._updateActiveMonth=null;this._updateActiveYear=null;this._updateCellStyle=null;this._updateDateStr=null;this._updateVisibleHours=null;this._updateVisibleMinutes=null;this._updateYearsList=null;this.enableIframe=null;this.hide=null;this.hideTime=null;this.setDate=null;this.setDateFormat=null;this.setYearsRange=null;this.show=null;this.showTime=null;this.unload=null;if(this._tipPopup!=null){this._tipPopup.unload();this._tipPopup=null}for(var s in this){delete this[s]}s=h=null};this.setDate(this._activeDate);return this}dhtmlXCalendarObject.prototype.lang="en";dhtmlXCalendarObject.prototype.langData={en:{dateformat:"%Y-%m-%d",hdrformat:"%F %Y",monthesFNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthesSNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],daysFNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysSNames:["Su","Mo","Tu","We","Th","Fr","Sa"],weekstart:1,weekname:"w"}};dhtmlXCalendarObject.prototype._buildMonthHdr=function(h){var c=this;var g=function(j){return(String(j).length==1?"0"+String(j):j)};var a=function(j,l){return"<span class='dhtmlxcalendar_month_label_"+j+"'>"+l+"</span>"};var e=String(this.langData[this.lang].hdrformat||("%F %Y")).replace(/%[a-z]/gi,function(j){switch(j){case"%m":return a("month",g(h.getMonth()+1));case"%n":return a("month",h.getMonth()+1);case"%M":return a("month",c.langData[c.lang].monthesSNames[h.getMonth()]);case"%F":return a("month",c.langData[c.lang].monthesFNames[h.getMonth()]);case"%y":return a("year",g(h.getYear()%100));case"%Y":return a("year",h.getFullYear());case"%%":return"%";default:return j}});c=g=a=null;return e};dhtmlXCalendarObject.prototype.enableIframe=function(a){if(a==true){if(!this._ifr){this._ifr=document.createElement("IFRAME");this._ifr.frameBorder=0;this._ifr.border=0;this._ifr.setAttribute("src","javascript:false;");this._ifr.className="dhtmlxcalendar_ifr";this._ifr.onload=function(){this.onload=null;this.contentWindow.document.open("text/html","replace");this.contentWindow.document.write("<html><head><style>html,body{width:100%;height:100%;overflow:hidden;margin:0px;}</style></head><body</body></html>")};this.base.parentNode.insertBefore(this._ifr,this.base);this._ifrSize()}}else{if(this._ifr){this._ifr.parentNode.removeChild(this._ifr);this._ifr=null}}};dhtmlXCalendarObject.prototype._ifrSize=function(){if(this._ifr){this._ifr.style.left=this.base.style.left;this._ifr.style.top=this.base.style.top;this._ifr.style.width=this.base.offsetWidth+"px";this._ifr.style.height=this.base.offsetHeight+"px"}};dhtmlxCalendarObject=dhtmlXCalendarObject;dhtmlXCalendarObject.prototype._dateStrings=function(){var a=this.langData[this.lang];return{monthFullName:a.monthesFNames,monthShortName:a.monthesSNames,dayFullName:a.daysFNames,dayShortName:a.daysSNames}};dhtmlXCalendarObject.prototype._strToDate=function(c,a){return window.dhx4.str2date(c,a||this._dateFormat,this._dateStrings())};dhtmlXCalendarObject.prototype._dateToStr=function(c,a){return window.dhx4.date2str(c,a||this._dateFormat,this._dateStrings())};window.dhtmlxDblCalendarObject=window.dhtmlXDoubleCalendarObject=window.dhtmlXDoubleCalendar=function(c){var a=this;this.leftCalendar=new dhtmlXCalendarObject(c);this.leftCalendar.hideTime();this.rightCalendar=new dhtmlXCalendarObject(c);this.rightCalendar.hideTime();this.leftCalendar.attachEvent("onClick",function(e){a._updateRange("rightCalendar",e,null);a._evOnClick(["left",e])});this.rightCalendar.attachEvent("onClick",function(e){a._updateRange("leftCalendar",null,e);a._evOnClick(["right",e])});this.leftCalendar.attachEvent("onBeforeChange",function(e){return a._evOnBeforeChange(["left",e])});this.rightCalendar.attachEvent("onBeforeChange",function(e){return a._evOnBeforeChange(["right",e])});this.show=function(){this.leftCalendar.show();this.rightCalendar.base.style.marginLeft=this.leftCalendar.base.offsetWidth-1+"px";this.rightCalendar.show()};this.hide=function(){this.leftCalendar.hide();this.rightCalendar.hide()};this.setDateFormat=function(e){this.leftCalendar.setDateFormat(e);this.rightCalendar.setDateFormat(e)};this.setDates=function(g,e){if(g!=null){this.leftCalendar.setDate(g)}if(e!=null){this.rightCalendar.setDate(e)}this._updateRange()};this._updateRange=function(e,h,g){if(arguments.length==3){(e=="leftCalendar"?this.leftCalendar:this.rightCalendar).setSensitiveRange(h,g)}else{this.leftCalendar.setSensitiveRange(null,this.rightCalendar.getDate());this.rightCalendar.setSensitiveRange(this.leftCalendar.getDate(),null)}};this.getFormatedDate=function(){return this.leftCalendar.getFormatedDate.apply(this.leftCalendar,arguments)};this.unload=function(){window.dhx4._eventable(this,"clear");this.leftCalendar.unload();this.rightCalendar.unload();this.leftCalendar=this.rightCalendar=null;this._updateRange=null;this._evOnClick=null;this._evOnBeforeChange=null;this.show=null;this.hide=null;this.setDateFormat=null;this.setDates=null;this.getFormatedDate=null;this.unload=null;a=null};this._evOnClick=function(e){return this.callEvent("onClick",e)};this._evOnBeforeChange=function(e){return this.callEvent("onBeforeChange",e)};window.dhx4._eventable(this);return this};function dhtmlXCombo(j,o,e,m,h){var l=this;var g=null;var r=null;if(typeof(j)=="object"&&!j.tagName){g=j;j=g.parent;e=g.width;o=g.name;m=g.mode;r=g.skin}this.cont=(typeof(j)=="string"?document.getElementById(j):j);this.conf={skin:null,form_name:o||"dhxcombo",combo_width:(parseInt(e)||this.cont.offsetWidth||120)-(dhx4.isFF||dhx4.isIE||dhx4.isChrome||dhx4.isOpera?2:0),combo_image:false,combo_focus:false,opts_type:(typeof(m)=="string"&&typeof(this.modes[m])!="undefined"?m:"option"),opts_count:8,opts_count_min:3,opts_width:null,item_h:null,list_zi_id:window.dhx4.newId(),allow_free_text:true,allow_empty_value:true,free_text_empty:false,enabled:true,btn_left:((window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8)&&typeof(window.addEventListener)=="undefined"?1:0),ro_mode:false,ro_text:"",ro_tm:null,ro_tm_time:750,img_path:"",img_def:"",img_def_dis:true,template:{header:true,input:"#text#",option:"#text#"},f_func:null,f_mode:false,f_url:false,f_cache:false,f_cache_data:{},f_dyn:false,f_dyn_end:false,f_mask:"",f_ac:true,f_ac_text:"",f_server_tm:null,f_server_last:"",f_loading:false,s_tm:null,s_time:200,s_mode:"select",last_hover:null,last_selected:null,last_match:null,last_text:"",last_value:"",tm_hover:null,tm_confirm_blur:null,clear_click:false,clear_blur:false,clear_bsp:false,clear_key:false,sp:{dhx_skyblue:{list_ofs:1,hdr_ofs:1,scr_ofs:1},dhx_web:{list_ofs:0,hdr_ofs:1,scr_ofs:0},dhx_terrace:{list_ofs:1,hdr_ofs:1,scr_ofs:1}},col_w:null};this.conf.combo_image=(this.modes[this.conf.opts_type].image==true);this.t={};this.base=document.createElement("DIV");this.base.style.width=this.conf.combo_width+"px";this.base.innerHTML="<input type='text' class='dhxcombo_input' style='width:"+(this.conf.combo_width-24-(this.conf.combo_image?23:0))+"px;"+(this.conf.combo_image?"margin-left:23px;":"")+"' autocomplete='off'><input type='hidden' value=''><input type='hidden' value='false'><div class='dhxcombo_select_button'><div class='dhxcombo_select_img'></div></div>"+(this.conf.combo_image?"<div class='dhxcombo_top_image'>"+this.modes[this.conf.opts_type].getTopImage(null,this.conf.enabled)+"</div>":"");this.cont.appendChild(this.base);this.list=document.createElement("DIV");this.list._listId=window.dhx4.newId();this.list.style.display="none";document.body.insertBefore(this.list,document.body.firstChild);this._doOnListScroll=function(){if(l.conf.s_tm!=null){window.clearTimeout(l.conf.s_tm)}l.conf.s_tm=window.setTimeout(l._doOnListScrollAction,l.conf.s_time)};this._doOnListScrollAction=function(){l.conf.s_tm=null;if(l.conf.s_mode=="scroll"&&l.list.scrollHeight-l.list.scrollTop-10<l.list.clientHeight){l._subloadRequest()}};if(typeof(window.addEventListener)=="function"){this.list.addEventListener("scroll",this._doOnListScroll,false)}else{this.list.attachEvent("onscroll",this._doOnListScroll)}this.setSkin(r||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxcombo")||"dhx_skyblue");this._updateTopImage=function(a){if(!this.conf.combo_image){return}if(a!=null){this.base.lastChild.innerHTML=this.t[a].obj.getTopImage(this.t[a].item,this.conf.enabled)}else{this.base.lastChild.innerHTML=this.modes[this.conf.opts_type].getTopImage(null,this.conf.enabled)}};this._filterOpts=function(y){if(this.conf.f_server_tm){window.clearTimeout(this.conf.f_server_tm)}var v=String(this.base.firstChild.value).replace(new RegExp(this.conf.f_ac_text+"$","i"),"");if(this.conf.f_server_last==v.toLowerCase()){this._checkForMatch();return}if(this.conf.f_url!=null&&this.checkEvent("onDynXLS")){this.conf.f_server_last=v.toLowerCase();this.callEvent("onDynXLS",[v]);return}if(this.conf.f_url!=null){if(v.length==0){this.conf.f_server_last=v.toLowerCase();this.clearAll();return}if(this.conf.f_cache==true&&this.conf.f_cache_data[v]!=null){this.clearAll();this.conf.f_server_last=v.toLowerCase();for(var u=0;u<this.conf.f_cache_data[v].data.length;u++){this.load(this.conf.f_cache_data[v].data[u])}if(this.conf.f_dyn){this.conf.f_dyn_end=this.conf.f_cache_data[v].dyn_end;this.conf.f_mask=this.conf.f_cache_data[v].mask}if(y!==true){this._showList(true);this._checkForMatch()}}else{this.conf.f_server_tm=window.setTimeout(function(){l.conf.f_server_last=v.toLowerCase();l.conf.f_mask=v;var E="mask="+encodeURIComponent(v);if(l.conf.f_dyn){E+="&pos=0";l.conf.f_dyn_end=false}var a=function(I){if(l.conf.f_cache){if(!l.conf.f_cache_data[v]){l.conf.f_cache_data[v]={data:[],dyn_end:false,mask:v}}l.conf.f_cache_data[v].data.push(I.xmlDoc.responseXML)}l.clearAll();l.load(I.xmlDoc.responseXML);var H=(l.base.offsetWidth>0&&l.base.offsetHeight>0);if(H==true&&l.conf.enabled==true&&l.conf.combo_focus==true&&y!==true){if(l.conf.f_ac&&l.conf.f_mode=="start"&&l.conf.clear_bsp==false&&l.list.firstChild!=null){var F=l.list.firstChild._optId;var J=String(l.t[F].obj.getText(l.list.firstChild,true));if(v==l.base.firstChild.value&&String(J).toLowerCase().indexOf(String(v).toLowerCase())===0){l.base.firstChild.value=J;l.conf.f_ac_text=J.substr(v.length);l._selectRange(v.length,J.length)}}l._showList(true);l._checkForMatch()}a=null};if(window.dhx4.ajax.method=="post"){window.dhx4.ajax.post(l.conf.f_url,E,a)}else{if(window.dhx4.ajax.method=="get"){window.dhx4.ajax.get(l.conf.f_url+(String(l.conf.f_url).indexOf("?")>=0?"&":"?")+E,a)}}},200)}}else{this.conf.f_server_last=v.toLowerCase();var s=(v.length==0?true:new RegExp((this.conf.f_mode=="start"?"^":"")+String(v).replace(/[\\\^\$\*\+\?\.\(\)\|\{\}\[\]]/gi,"\\$&"),"i"));var w=null;for(var A in this.t){var D=false;if(s!==true){if(this.conf.f_func!=null){var x=this._getOption(this.t[A].item._optId,u);D=(this.conf.f_func.apply(window,[v,x])==true)}else{var C=this.t[A].obj.getText(this.t[A].item,true);D=(s.test(C)==true)}}if(s===true||D==true){this.t[A].item.style.display="";if(w==null&&v.length>0){w=String(this.t[A].obj.getText(this.t[A].item,true))}}else{this.t[A].item.style.display="none"}}if(this.conf.f_ac&&this.conf.f_mode=="start"&&this.conf.clear_bsp==false&&w!=null){this.conf.f_ac_text=w.replace(new RegExp("^"+v,"i"),"");this.base.firstChild.value=w;this._selectRange(this.conf.f_server_last.length,this.base.firstChild.value.length)}if(this.conf.f_mode=="between"&&this.conf.clear_bsp==true){this._checkForMatch(true)}if(y!==true){this._showList(true);this._checkForMatch()}}};this._searchRO=function(u){if(this.conf.ro_tm){window.clearTimeout(this.conf.ro_tm)}this.conf.ro_text+=u;this._showList();for(var v=0;v<this.list.childNodes.length;v++){var a=this.list.childNodes[v]._optId;var w=String(this.t[a].obj.getText(this.list.childNodes[v],true)).toLowerCase();if(w.indexOf(this.conf.ro_text)===0){this._setSelected(a,true,true);this._confirmSelect("script",false);break}}this.conf.ro_tm=window.setTimeout(function(){l.conf.ro_text=""},this.conf.ro_tm_time)};this._initObj=function(a){if(typeof(a.template)!="undefined"){this.setTemplate(a.template)}if(a.add!=true&&this.conf.f_loading!=true){this.clearAll(false)}this.addOption(a.options)};this._xmlToObj=function(O,v,u){var A={add:false,options:[]};var I=(v==true?O:O.getElementsByTagName("complete"));if(I.length>0){if(window.dhx4.s2b(I[0].getAttribute("add"))==true){A.add=true}var H=I[0].childNodes;for(var E=0;E<H.length;E++){if(typeof(H[E].tagName)!="undefined"){if(String(H[E].tagName).toLowerCase()=="template"){var N={};for(var y=0;y<H[E].childNodes.length;y++){var F=H[E].childNodes[y];if(F.tagName!=null){var J=F.tagName;if(typeof(this.conf.template[J])!="undefined"){N[J]=window.dhx4._xmlNodeValue(F)}if(J=="columns"){for(var L=0;L<F.childNodes.length;L++){var x=F.childNodes[L];if(x.tagName!=null&&x.tagName=="column"){var D={};for(var M in {width:1,css:1,header:1,option:1}){if(x.getAttribute(M)!=null){D[M]=x.getAttribute(M)}}for(var M in {header:1,option:1}){var K=x.getElementsByTagName(M);if(K[0]!=null&&K[0].firstChild!=null){D[M]=window.dhx4._xmlNodeValue(K[0])}}if(N.columns==null){N.columns=[]}N.columns.push(D)}x=null}}}F=null}this.setTemplate(N)}if(String(H[E].tagName).toLowerCase()=="option"){var C=false;if(v==true){C=(A.options.length==u)}else{C=window.dhx4.s2b(H[E].getAttribute("selected"))}var s={value:H[E].getAttribute("value"),text:window.dhx4._xmlNodeValue(H[E]),selected:C,checked:window.dhx4.s2b(H[E].getAttribute("checked"))};for(var M in {img:1,img_dis:1,img_src:1,img_src_dis:1,css:1}){if(H[E].getAttribute(M)!=null){s[M]=H[E].getAttribute(M)}}for(var y=0;y<H[E].childNodes.length;y++){if(H[E].childNodes[y].tagName!=null&&String(H[E].childNodes[y].tagName).toLowerCase()=="text"){s.text={};var F=H[E].childNodes[y];for(var L=0;L<F.childNodes.length;L++){if(F.childNodes[L].tagName!=null){s.text[F.childNodes[L].tagName]=window.dhx4._xmlNodeValue(F.childNodes[L])}}}}A.options.push(s)}}}I=H=null}return A};window.dhx4._enableDataLoading(this,"_initObj","_xmlToObj","complete",{data:true});window.dhx4._eventable(this);this._getNearItem=function(u,s){var a=null;while(u!=null){u=u[s<0?"previousSibling":"nextSibling"];if(a==null&&u!=null&&u.style.display==""&&u._optId!=null){a=u;u=null}}return a};this.setName(this.conf.form_name);this._doOnListMouseMove=function(s){s=s||event;var a=s.target||s.srcElement;while(a!=null&&a!=this){if(typeof(a._optId)!="undefined"){if(l.conf.tm_hover){window.clearTimeout(l.conf.tm_hover)}l._setSelected(a._optId,false,false,true)}a=a.parentNode}a=null};this._doOnListMouseDown=function(a){a=a||event;a.cancelBubble=true;l.conf.clear_click=true;window.setTimeout(function(){l.base.firstChild.focus()},1)};this._doOnListMouseUp=function(u){u=u||event;if(u.button!=l.conf.btn_left){return}var a=u.target||u.srcElement;while(a!=null&&a!=this){if(typeof(a._optId)!="undefined"){var s=true;if(typeof(l.t[a._optId].obj.optionClick)=="function"&&l.t[a._optId].obj.optionClick(a,u,l)!==true){s=false}if(s){l._setSelected(a._optId,null,true);l._confirmSelect("click")}}a=a.parentNode}a=null};this._doOnListMouseOut=function(a){if(l.conf.tm_hover){window.clearTimeout(l.conf.tm_hover)}l.conf.tm_hover=window.setTimeout(function(){var s=l.conf.last_match||l.conf.last_selected;if(l.conf.last_match==null&&l.t[s]!=null){if(l.base.firstChild.value!=l.t[s].obj.getText(l.t[s].item,true)){s=null}}l._setSelected(s,null,true,true)},1)};this._doOnBaseMouseDown=function(w){if(!l.conf.enabled){return}l.conf.clear_click=true;w=w||event;if(w.button!=l.conf.btn_left){return}var s=w.target||w.srcElement;if(s!=this.firstChild){window.setTimeout(function(){l.base.firstChild.focus()},1);var v=s;while(v!=this&&v!=null){if(v==this.lastChild){if(typeof(l.modes[l.conf.opts_type].topImageClick)=="function"){var u=(l.conf.last_hover||l.conf.last_selected);var a=(u!=null?l.t[u].item:null);if(l.modes[l.conf.opts_type].topImageClick(a,l)!==true){u=a=null;return}}v=null}else{v=v.parentNode}}}if(l._isListVisible()){l._hideList()}else{if(s!=this.firstChild){l.conf.clear_blur=true}l._showList();l._setSelected(l.conf.last_selected,true,true)}s=null};this._doOnBodyMouseDown=function(){if(l.conf.clear_click){l.conf.clear_click=false;return}l._confirmSelect("blur")};this._doOnInputFocus=function(){l.conf.clear_blur=false;if(l.conf.tm_confirm_blur){window.clearTimeout(l.conf.tm_confirm_blur)}if(l.conf.combo_focus==false){l.conf.combo_focus=true;l.callEvent("onFocus",[])}};this._doOnInputBlur=function(){if(l.conf.clear_blur==true){l.conf.clear_blur=false;return}if(l.conf.tm_confirm_blur){window.clearTimeout(l.conf.tm_confirm_blur)}l.conf.tm_confirm_blur=window.setTimeout(function(){if(l.conf.clear_click==false){l._confirmSelect("blur");l.conf.combo_focus=false;l.callEvent("onBlur",[])}},20)};this._doOnInputKeyUp=function(a){a=a||event;if(l.conf.f_mode!=false){l.conf.clear_bsp=(a.keyCode==8||a.keyCode==46);l._filterOpts();return}else{l._checkForMatch()}};this._doOnInputKeyDown=function(a){a=a||event;if((a.keyCode==38||a.keyCode==40)&&!a.ctrlKey&&!a.shiftKey&&!a.altKey){if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}a.cancelBubble=true;l._keyOnUpDown(a.keyCode==38?-1:1)}if(a.keyCode==113){if(!l._isListVisible()){l._showList();if(l.base.firstChild.value==l.conf.last_text){l._setSelected(l.conf.last_selected,true,true);l.base.firstChild.value=l.conf.last_text;l.conf.f_server_last=l.base.firstChild.value.toLowerCase()}else{l.conf.f_server_last=l.base.firstChild.value.toLowerCase();if(l.conf.f_mode==false){l._checkForMatch()}}}else{}}if(a.keyCode==27){if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}a.cancelBubble=true;l._cancelSelect()}if(a.keyCode==13){if(a.preventDefault){a.preventDefault()}l._confirmSelect("kbd")}if(l.conf.ro_mode==true&&((a.keyCode>=48&&a.keyCode<=57)||(a.keyCode>=65&&a.keyCode<=90))){l._searchRO(String.fromCharCode(a.keyCode).toLowerCase());a.cancelBubble=true}l.conf.clear_key=true;l.callEvent("onKeyPressed",[a.keyCode||a.charCode])};this._doOnInputKeyPress=function(a){if(l.conf.clear_key){l.conf.clear_key=false;return}a=a||event;l.callEvent("onKeyPressed",[a.keyCode||a.charCode])};this._keyOnUpDown=function(a){var s=null;if(this.conf.last_hover){s=this.t[this.conf.last_hover].item}else{if(this.conf.last_selected){s=this.t[this.conf.last_selected].item}}if(!s&&this._getListVisibleCount()==0){return}if(s!=null&&s.style.display!=""){s=null}this._showList();if(s!=null){if(this.t[s._optId].obj.isSelected(s)){s=this._getNearItem(s,a)}}else{s=this.list.firstChild;if(s.style.display!=""){s=this._getNearItem(s,1)}}if(s==null){return}this._setSelected(s._optId,true,true);if(this.conf.f_mode==false){this.base.firstChild.value=this.t[s._optId].obj.getText(s,true)}else{var u=String(this.t[s._optId].obj.getText(s,true));if(this.conf.f_mode=="start"&&this.conf.f_ac==true){if(u.toLowerCase().indexOf(this.conf.f_server_last)===0){this.conf.f_ac_text=u.substring(this.conf.f_server_last.length,u.length);this.base.firstChild.value=u;this._selectRange(this.conf.f_server_last.length,this.base.firstChild.value.length)}else{this.base.firstChild.value=u;this.conf.f_server_last=this.base.firstChild.value.toLowerCase();this._selectRange(0,this.base.firstChild.value.length)}}else{this.base.firstChild.value=u;this.conf.f_server_last=this.base.firstChild.value.toLowerCase()}}s=null};this.conf.evs_nodes=[{node:document.body,evs:{mousedown:"_doOnBodyMouseDown"}},{node:this.base,evs:{mousedown:"_doOnBaseMouseDown"}},{node:this.base.firstChild,evs:{keyup:"_doOnInputKeyUp",keydown:"_doOnInputKeyDown",keypress:"_doOnInputKeyPress",focus:"_doOnInputFocus",blur:"_doOnInputBlur"}},{node:this.list,evs:{mousemove:"_doOnListMouseMove",mousedown:"_doOnListMouseDown",mouseup:"_doOnListMouseUp",mouseout:"_doOnListMouseOut"}}];for(var c=0;c<this.conf.evs_nodes.length;c++){for(var n in this.conf.evs_nodes[c].evs){if(typeof(window.addEventListener)=="function"){this.conf.evs_nodes[c].node.addEventListener(n,this[this.conf.evs_nodes[c].evs[n]],false)}else{this.conf.evs_nodes[c].node.attachEvent("on"+n,this[this.conf.evs_nodes[c].evs[n]])}}}this.unload=function(){this.clearAll();this.t=null;for(var u=0;u<this.conf.evs_nodes.length;u++){for(var s in this.conf.evs_nodes[u].evs){if(typeof(window.addEventListener)=="function"){this.conf.evs_nodes[u].node.removeEventListener(s,this[this.conf.evs_nodes[u].evs[s]],false)}else{this.conf.evs_nodes[u].node.detachEvent("on"+s,this[this.conf.evs_nodes[u].evs[s]])}this.conf.evs_nodes[u].evs[s]=null;delete this.conf.evs_nodes[u].evs[s]}this.conf.evs_nodes[u].node=null;this.conf.evs_nodes[u].evs=null;delete this.conf.evs_nodes[u].node;delete this.conf.evs_nodes[u].evs;this.conf.evs_nodes[u]=null}window.dhx4._eventable(this,"clear");window.dhx4._enableDataLoading(this,null,null,null,"clear");this._mcDetachHeader();this.DOMelem_input=this.DOMelem_button=this.DOMlist=this.DOMelem=this.DOMParent=null;for(var s in this.conf){this.conf[s]=null;delete this.conf[s]}this.conf=null;if(typeof(window.addEventListener)=="function"){this.list.removeEventListener("scroll",this._doOnListScroll,false)}else{this.list.detachEvent("onscroll",this._doOnListScroll)}this.base.parentNode.removeChild(this.base);this.list.parentNode.removeChild(this.list);this.base=this.list=this.cont=null;this.modes=null;for(var s in this){if(typeof(this[s])=="function"){this[s]=null}}l=null};this.DOMelem_input=this.base.firstChild;this.DOMelem_button=this.base.childNodes[this.base.childNodes.length-(this.conf.combo_image?2:1)];this.DOMlist=this.list;this.DOMelem=this.base;this.DOMParent=j;j=null;if(g!=null){if(g.filter!=null){if(typeof(g.filter)=="string"){this.enableFilteringMode(true,g.filter,window.dhx4.s2b(g.filter_cache),window.dhx4.s2b(g.filter_sub_load))}else{this.enableFilteringMode(true)}}if(g.image_path!=null){this.setImagePath(g.image_path)}if(g.default_image!=null||g.default_image_dis!=null){this.setDefaultImage(g.default_image,g.default_image_dis)}if(g.items||g.options){this.addOption(g.items||g.options)}if(g.xml||g.json){this.load(g.xml||g.json)}if(typeof(g.readonly)!="undefined"){this.readonly(g.readonly)}g=null}return this}function dhtmlXComboFromSelect(e){if(typeof(e)=="string"){e=document.getElementById(e)}var c=e.offsetWidth;var o=e.getAttribute("name")||null;var g=document.createElement("SPAN");e.parentNode.insertBefore(g,e);var j=e.getAttribute("mode")||e.getAttribute("opt_type")||"option";var h=new dhtmlXCombo(g,o,c,j);g=null;var m=e.getAttribute("imagePath");if(m){h.setImagePath(m)}var n=e.getAttribute("defaultImage");var l=e.getAttribute("defaultImageDis");if(window.dhx4.s2b(l)==true){l=true}if(n!=null||l!=null){h.setDefaultImage(n,l)}var a=h._xmlToObj([e],true,e.selectedIndex);if(a.options.length>0){h.addOption(a.options)}a=null;e.parentNode.removeChild(e);e=null;return h}dhtmlXCombo.prototype.setName=function(a){this.conf.form_name=a;this.base.childNodes[1].name=a;this.base.childNodes[2].name=a.replace(/(\[.*)?$/,"_new_value$1")};dhtmlXCombo.prototype.readonly=function(a){if(window.dhx4.s2b(a)){this.base.firstChild.setAttribute("readOnly","true");this.conf.ro_mode=true}else{this.base.firstChild.removeAttribute("readOnly");this.conf.ro_mode=false}};dhtmlXCombo.prototype.setPlaceholder=function(a){if(typeof(a)=="undefined"||a==null){a=""}this.base.firstChild.setAttribute("placeholder",String(a))};dhtmlXCombo.prototype.setTemplate=function(e){for(var c in e){if(typeof(this.conf.template[c])!="undefined"){if(c=="header"){this.conf.template[c]=window.dhx4.s2b(e[c])}else{this.conf.template[c]=String(e[c])}}}if(e.columns!=null){this._mcMakeTemplate(e.columns)}else{this._mcDetachHeader()}for(var c in this.t){this.t[c].obj.setText(this.t[c].item,this.t[c].item._conf.text)}this._confirmSelect()};dhtmlXCombo.prototype.setSkin=function(a){if(a==this.conf.skin){return}this.conf.skin=a;this.base.className="dhxcombo_"+this.conf.skin+(this.conf.enabled?"":" dhxcombo_disabled");this.list.className="dhxcombolist_"+this.conf.skin+(this.hdr!=null?" dhxcombolist_multicolumn":"");if(this.hdr!=null){this.hdr.className="dhxcombolist_"+this.conf.skin+" dhxcombolist_hdr"}};dhtmlXCombo.prototype.getInput=function(){return this.base.firstChild};dhtmlXCombo.prototype.getButton=function(){return this.base.childNodes[this.base.childNodes.length-(this.conf.combo_image?2:1)]};dhtmlXCombo.prototype.getList=function(){return this.list};dhtmlXCombo.prototype.getBase=function(){return this.base};dhtmlXCombo.prototype.getParent=function(){return this.DOMParent};dhtmlXCombo.prototype.forEachOption=function(a){for(var c=0;c<this.list.childNodes.length;c++){a.apply(window,[this._getOption(this.list.childNodes[c]._optId,c)])}};dhtmlXCombo.prototype.setFocus=function(){if(this.conf.enabled){this.base.firstChild.focus()}};dhtmlXCombo.prototype.setFontSize=function(a,c){if(a!=null){this.base.firstChild.style.fontSize=a}if(c!=null){this.list.style.fontSize=c}};dhtmlXCombo.prototype.getOption=function(h){var j=null;var e=null;for(var g=0;g<this.list.childNodes.length;g++){if(j==null){var c=this.list.childNodes[g]._optId;if(this.t[c].obj.getValue(this.t[c].item)==h){j=c;e=g}}}return(j==null?null:this._getOption(j,e))};dhtmlXCombo.prototype.getOptionByIndex=function(a){if(a<0){return null}if(this.list.childNodes[a]==null){return null}return this._getOption(this.list.childNodes[a]._optId,a)};dhtmlXCombo.prototype.getOptionByLabel=function(h){var j=null;var e=null;for(var g=0;g<this.list.childNodes.length;g++){if(j==null){var c=this.list.childNodes[g]._optId;if(this.t[c].obj.getText(this.t[c].item,true)==h){j=c;e=g}}}return(j==null?null:this._getOption(j,e))};dhtmlXCombo.prototype.getSelectedIndex=function(){return this._getOptionProp(this.conf.last_selected,"index",-1)};dhtmlXCombo.prototype.getSelectedText=function(){return this._getOptionProp(this.conf.last_selected,"text","")};dhtmlXCombo.prototype.getSelectedValue=function(){return this._getOptionProp(this.conf.temp_selected||this.conf.last_selected,"value",null)};dhtmlXCombo.prototype.getActualValue=function(){return this.base.childNodes[1].value};dhtmlXCombo.prototype.getComboText=function(){return this.base.childNodes[0].value};dhtmlXCombo.prototype.getIndexByValue=function(c){var a=this.getOption(c);return(a!=null?a.index:-1)};dhtmlXCombo.prototype.setComboText=function(a){if(this.conf.allow_free_text!=true){return}this.unSelectOption();this.conf.last_text=this.base.firstChild.value=a;this.conf.f_server_last=this.base.firstChild.value.toLowerCase()};dhtmlXCombo.prototype.setComboValue=function(c){var a=this.getOption(c);if(a!=null){this.selectOption(a.index)}else{this.conf.last_value=c;this.base.childNodes[1].value=this.conf.last_value;this.base.childNodes[2].value="true"}};dhtmlXCombo.prototype.selectOption=function(c,e,a){if(c<0||c>=this.list.childNodes.length){return}var g=this.list.childNodes[c]._optId;this._setSelected(g,this._isListVisible(),true);this._confirmSelect("script")};dhtmlXCombo.prototype.unSelectOption=function(){if(this.conf.last_hover!=null){this.t[this.conf.last_hover].obj.setSelected(this.t[this.conf.last_hover].item,false);this.conf.last_hover=null}this.base.firstChild.value="";if(this.conf.f_mode!=false){this._filterOpts(true)}this._hideList();this._updateTopImage(null);this._confirmSelect("script")};dhtmlXCombo.prototype.confirmValue=function(){this._confirmSelect("script")};dhtmlXCombo.prototype.enable=function(a){a=(typeof(a)=="undefined"?true:window.dhx4.s2b(a));if(this.conf.enabled==a){return}this.conf.enabled=a;if(a){this.base.className="dhxcombo_"+this.conf.skin;this.base.firstChild.removeAttribute("disabled")}else{this._hideList();this.base.className="dhxcombo_"+this.conf.skin+" dhxcombo_disabled";this.base.firstChild.setAttribute("disabled","true")}this._updateTopImage(this.conf.last_selected)};dhtmlXCombo.prototype.disable=function(a){a=(typeof(a)=="undefined"?true:window.dhx4.s2b(a));this.enable(!a)};dhtmlXCombo.prototype.isEnabled=function(){return(this.conf.enabled==true)};dhtmlXCombo.prototype.show=function(a){if(typeof(a)=="undefined"){a=true}else{a=window.dhx4.s2b(a)}this.base.style.display=(a==true?"":"none")};dhtmlXCombo.prototype.hide=function(a){if(typeof(a)=="undefined"){a=true}this.show(!a)};dhtmlXCombo.prototype.isVisible=function(){return(this.base.style.display=="")};dhtmlXCombo.prototype.setFilterHandler=function(a){if(typeof(a)=="function"){this.conf.f_func=a;this.conf.f_mode=true;this.conf.f_dyn=this.conf.f_cache=this.conf.f_url=null}else{if(typeof(a)=="string"&&typeof(window[a])=="function"){this.conf.f_func=window[a];this.conf.f_mode=true;this.conf.f_dyn=this.conf.f_cache=this.conf.f_url=null}else{this.conf.f_func=null}}};dhtmlXCombo.prototype.enableFilteringMode=function(g,c,a,e){if(g==true||g=="between"){this.conf.f_mode=(g==true?"start":"between");if(c!=null){this.conf.f_url=c;this.conf.f_cache=window.dhx4.s2b(a);this.conf.f_dyn=window.dhx4.s2b(e)}else{this.conf.f_url=null;this.conf.f_cache=false;this.conf.f_dyn=false}}else{this.conf.f_mode=false;this.conf.f_url=null;this.conf.f_cache=false;this.conf.f_dyn=false}};dhtmlXCombo.prototype.filter=function(e,a){for(var g=0;g<this.list.childNodes.length;g++){var c=e.apply(window,[this._getOption(this.list.childNodes[g]._optId,g)]);this.list.childNodes[g].style.display=(c===true?"":"none")}if(typeof(a)=="undefined"||a==true){this._showList(true)}};dhtmlXCombo.prototype.sort=function(e){var a=[];for(var c=0;c<this.list.childNodes.length;c++){var g=this.list.childNodes[c]._optId;a.push([g,this._getOption(g,c)])}if(e=="asc"||e=="desc"){k=true;a.sort(function(j,h){j=j[1].text_option.toLowerCase();h=h[1].text_option.toLowerCase();var l=(e=="asc"?1:-1);return(j>h?l:-1*l)})}else{if(typeof(e)=="function"||typeof(window[e])=="function"){if(typeof(window[e])=="function"){e=window[e]}a.sort(function(j,h){return e.apply(window,[j[1],h[1]])})}}while(this.list.childNodes.length>0){this.list.removeChild(this.list.lastChild)}for(var c=0;c<a.length;c++){this.list.appendChild(this.t[a[c][0]].item)}};dhtmlXCombo.prototype.enableAutocomplete=function(a){if(typeof(a)=="undefined"){a=true}else{a=window.dhx4.s2b(a)}this.conf.f_ac=a};dhtmlXCombo.prototype.disableAutocomplete=function(a){if(typeof(a)=="undefined"){a=true}else{a=window.dhx4.s2b(a)}this.enableAutocomplete(!a)};dhtmlXCombo.prototype.allowFreeText=function(c,a){this.conf.allow_free_text=(typeof(c)=="undefined"?true:window.dhx4.s2b(c));this.conf.free_text_empty=(typeof(a)=="undefined"?false:window.dhx4.s2b(a))};dhtmlXCombo.prototype._checkForMatch=function(g){var a=window.dhx4.trim(this.base.firstChild.value).toLowerCase();var h=null;var c=this.list.firstChild;while(c!=null){if(c.style.display==""&&c._optId!=null){var e=window.dhx4.trim(this.t[c._optId].obj.getText(c,true)).toLowerCase();if(a==e){h=c._optId;c=null}}if(c!=null){c=c.nextSibling}}if(this.conf.last_match==null){if(h!=null){this._setSelected(h,true,true);this.conf.last_match=h}else{if(this.conf.f_mode!="between"||g==true){this._setSelected(null,true,true);this.conf.last_match=null}}}else{if(h!=null){if(h!=this.conf.last_match){this._setSelected(h,true,true);this.conf.last_match=h}}else{this._setSelected(null,true,true);this.conf.last_match=null}}};dhtmlXCombo.prototype._selectRange=function(c,a){if(this.conf.combo_focus==true){window.dhx4.selectTextRange(this.base.firstChild,c,a)}};dhtmlXCombo.prototype.openSelect=function(){if(!this._isListVisible()){this._showList()}};dhtmlXCombo.prototype.closeAll=function(){this._hideList()};dhtmlXCombo.prototype._showList=function(a){if(this._getListVisibleCount()==0){if(a&&this._isListVisible()){this._hideList()}return}if(this._isListVisible()){this._checkListHeight();return}this.list.style.zIndex=window.dhx4.zim.reserve(this.conf.list_zi_id);if(this.hdr!=null&&this.conf.template.header==true){this.hdr.style.zIndex=Number(this.list.style.zIndex)+1}this.list.style.visibility="hidden";this.list.style.display="";if(this.hdr!=null&&this.conf.template.header==true){this.hdr.style.visibility=this.list.style.visibility;this.hdr.style.display=this.list.style.display}var c=(this.hdr!=null&&this.conf.template.header==true?this.hdr.offsetHeight:0);this.list.style.width=Math.max(this.conf.opts_width||this.conf.col_w||0,this.conf.combo_width)+"px";this.list.style.top=window.dhx4.absTop(this.base)+c+this.base.offsetHeight-1+"px";this.list.style.left=window.dhx4.absLeft(this.base)+"px";if(this.hdr!=null&&this.conf.template.header==true){this.hdr.style.width=this.list.style.width;this.hdr.style.left=this.list.style.left;this.hdr.style.top=parseInt(this.list.style.top)-c+"px"}this._checkListHeight();this.list.style.visibility="visible";if(this.hdr!=null&&this.conf.template.header==true){this.hdr.style.visibility="visible"}this.callEvent("onOpen",[])};dhtmlXCombo.prototype._hideList=function(){if(!this._isListVisible()){return}window.dhx4.zim.clear(this.conf.list_zi_id);this.list.style.display="none";if(this.hdr!=null&&this.conf.template.header==true){this.hdr.style.display="none"}this.conf.clear_click=false;this.callEvent("onClose",[])};dhtmlXCombo.prototype._isListVisible=function(){return(this.list.style.display=="")};dhtmlXCombo.prototype._getListVisibleCount=function(){var a=0;for(var c=0;c<this.list.childNodes.length;c++){a+=(this.list.childNodes[c].style.display==""?1:0)}return a};dhtmlXCombo.prototype._checkListHeight=function(){if(!this._isListVisible()){return}if(this.conf.item_h==null){var o=this.list.firstChild;while(o!=null){if(o.style.display==""){this.conf.item_h=o.offsetHeight+(this.hdr!=null?-1:0);o=null}else{o=o.nextSibling}}o=null}var r=window.dhx4.screenDim();var l=window.dhx4.absTop(this.base);var c=this.base.offsetHeight;var a=(this.hdr!=null&&this.conf.template.header==true?this.hdr.offsetHeight:0);var e=Math.max(0,Math.floor((l+a-r.top)/this.conf.item_h));var n=Math.max(0,Math.floor((r.bottom-(l+c+a))/this.conf.item_h));var u=this._getListVisibleCount();if(n<Math.min(this.conf.opts_count_min,u)&&e>n){n=null}var m=Math.min((n==null?e:n),this.conf.opts_count,u);var g=(m<u?(m*this.conf.item_h)+"px":"");var j=this.conf.sp[this.conf.skin][this.hdr!=null&&this.conf.template.header==true?"hdr_ofs":"list_ofs"];this.list.style.height=g;this.list.style.top=(n==null?l-this.list.offsetHeight+j:l+c+a-j)+"px";if(this.hdr!=null&&this.conf.template.header==true){this.hdr.style.top=(n==null?l-a-this.list.offsetHeight+j:l+c-j)+"px"}};dhtmlXCombo.prototype._scrollToItem=function(h){var g=this.t[h].item.offsetTop;var e=g+this.t[h].item.offsetHeight;var c=this.list.scrollTop;var a=c+this.list.clientHeight;if(g<c){this.list.scrollTop=g+(this.hdr!=null&&this.conf.template.header==true?1:0)}else{if(e>a){this.list.scrollTop=e-this.list.clientHeight+(this.hdr!=null&&this.conf.template.header==true?-this.conf.sp[this.conf.skin].scr_ofs:0)}}};dhtmlXCombo.prototype._setSelected=function(g,e,c,a){this.conf.temp_selected=null;if(c){this._updateTopImage(g)}if(g!=null&&this.conf.last_hover==g){if(e){this._scrollToItem(g)}return}if(this.conf.last_hover!=null){this.t[this.conf.last_hover].obj.setSelected(this.t[this.conf.last_hover].item,false);this.conf.last_hover=null;if(g==null){this.callEvent("onSelectionChange",[])}}if(g!=null){this.t[g].obj.setSelected(this.t[g].item,true);this.conf.last_hover=g;if(a!=true){this.conf.temp_selected=g;this.callEvent("onSelectionChange",[])}if(this.conf.s_mode=="select"&&this.t[g].item==this.t[g].item.parentNode.lastChild){this._subloadRequest()}if(e){this._scrollToItem(g)}}};dhtmlXCombo.prototype._subloadRequest=function(){if(this.conf.f_url!=null&&this.conf.f_dyn==true&&this.conf.f_dyn_end==false){var e="mask="+encodeURIComponent(this.conf.f_mask)+"&pos="+this.list.childNodes.length;var a=this;var c=function(h){if(a.conf.f_cache){a.conf.f_cache_data[a.conf.f_mask].data.push(h.xmlDoc.responseXML)}var g=a.list.childNodes.length;a.conf.f_loading=true;a.load(h.xmlDoc.responseXML);a.conf.f_loading=false;if(g==a.list.childNodes.length){a.conf.f_dyn_end=true;if(a.conf.f_cache){a.conf.f_cache_data[a.conf.f_mask].dyn_end=true}}c=a=null};if(window.dhx4.ajax.method=="post"){window.dhx4.ajax.post(this.conf.f_url,e,c)}else{if(window.dhx4.ajax.method=="get"){window.dhx4.ajax.get(this.conf.f_url+(String(this.conf.f_url).indexOf("?")>=0?"&":"?")+e,c)}}}};dhtmlXCombo.prototype.addOption=function(j,l,c,a,g){var e=null;if(!(j instanceof Array)){var m=this._renderOption({value:j,text:l,css:c,img:a});if(e==null&&window.dhx4.s2b(g)==true){e=m}}else{for(var h=0;h<j.length;h++){if(typeof(j[h])=="undefined"){continue}if(j[h] instanceof Array){m=this._renderOption({value:j[h][0],text:j[h][1],css:j[h][2],img:j[h][3]});if(e==null&&window.dhx4.s2b(j[h][4])==true){e=m}}else{var m=this._renderOption(j[h]);if(e==null&&window.dhx4.s2b(j[h].selected)==true){e=m}}}}if(e!=null){this._setSelected(e,this._isListVisible(),true);this._confirmSelect("onInit")}};dhtmlXCombo.prototype.updateOption=function(a,e,c,g){var h=this._getOptionId(a);if(h==null){return}this.t[h].obj.update(this.t[h].item,{value:e,text:c,css:g});if(this.conf.last_selected==h){this.conf.last_text=this.base.firstChild.value=this.t[h].obj.getText(this.t[h].item,true);this.conf.f_server_last=this.base.firstChild.value.toLowerCase()}};dhtmlXCombo.prototype.deleteOption=function(g){for(var c in this.t){var e=this.t[c].obj.getValue(this.t[c].item);if(e==g){this._removeOption(c)}}if(this._isListVisible()){this._showList(true)}};dhtmlXCombo.prototype.clearAll=function(c){c=(typeof(c)=="undefined"?true:window.dhx4.s2b(c));for(var e in this.t){this._removeOption(e)}if(this.conf.tm_hover){window.clearTimeout(this.conf.tm_hover)}this.conf.last_hover=null;this.conf.last_selected=null;this.list.scrollTop=0;if(c==true){this._hideList()}};dhtmlXCombo.prototype._renderOption=function(g){var h=window.dhx4.newId();var e=document.createElement("DIV");e._optId=h;e._tpl=this.conf.template;if(typeof(g.img)=="undefined"&&typeof(g.img_src)!="undefined"){g.img=g.img_src;delete g.img_src}if(typeof(g.img_dis)=="undefined"&&typeof(g.img_src_dis)!="undefined"){g.img_dis=g.img_src_dis;delete g.img_src_dis}g.img_path=this.conf.img_path;g.img_def=this.conf.img_def;g.img_def_dis=this.conf.img_def_dis;this.list.appendChild(e);var c=(this._isListVisible()&&window.dhx4.isFF==true);if(c==true){var a=this.list.scrollTop;this.list.scrollTop-=1}if(this.hdr!=null){g.multicol=true}this.t[e._optId]={obj:this.modes[this.conf.opts_type].render(e,g),item:e,conf:{type:this.conf.opts_type}};e=null;if(c==true){this.list.scrollTop+=1}return h};dhtmlXCombo.prototype._removeOption=function(a){this.t[a].obj.destruct(this.t[a].item);this.t[a].obj=null;this.t[a].item.parentNode.removeChild(this.t[a].item);this.t[a].item=null;this.t[a].conf=null;this.t[a]=null;delete this.t[a];if(this.conf.last_hover==a){this.conf.last_hover=null}if(this.conf.last_selected==a){this.conf.last_selected=null;this._confirmSelect("onDelete")}};dhtmlXCombo.prototype._confirmSelect=function(e,a){var c=false;if(typeof(a)=="undefined"){a=true}if(this.conf.f_server_tm){window.clearTimeout(this.conf.f_server_tm)}if(this.conf.last_hover!=null){c=c||(this.conf.last_value!=this._getOptionValue(this.conf.last_hover));this.conf.last_match=this.conf.last_selected=this.conf.last_hover;this.conf.last_value=this._getOptionValue(this.conf.last_selected);this.conf.last_text=this.base.firstChild.value=this.t[this.conf.last_selected].obj.getText(this.t[this.conf.last_selected].item,true);this.conf.f_server_last=this.base.firstChild.value.toLowerCase();this.base.childNodes[1].value=this.conf.last_value;this.base.childNodes[2].value="false"}else{if(this.conf.allow_free_text||(this.base.firstChild.value==""&&this.conf.allow_empty_value)){c=c||(this.conf.last_text!=this.base.firstChild.value);this.conf.last_match=this.conf.last_value=this.conf.last_selected=null;this.conf.last_text=this.base.firstChild.value;this.conf.f_server_last=this.base.firstChild.value.toLowerCase();this.base.childNodes[1].value=this.conf.last_text;this.base.childNodes[2].value="true"}else{this._cancelSelect(true);this._updateTopImage(this.conf.last_selected);return}}if(this.conf.f_ac&&this.conf.f_mode=="start"){this.conf.f_ac_text="";if(e!="blur"){this._selectRange(this.base.firstChild.value.length,this.base.firstChild.value.length)}}if(a){this._hideList()}if(c==true&&e!="onInit"&&e!="onDelete"){this.callEvent("onSelectionChange",[]);this.callEvent("onChange",[this.conf.last_value,this.conf.last_text])}};dhtmlXCombo.prototype._cancelSelect=function(a){this._hideList();if(a==true&&this.conf.allow_free_text==false&&this.conf.free_text_empty==true){this.conf.f_server_last=this.conf.last_match=this.conf.last_value=this.conf.last_selected=null;this.base.childNodes[1].value=this.conf.last_text=this.base.firstChild.value="";this.base.childNodes[2].value="false"}else{this.base.firstChild.value=this.conf.last_text}if(this.conf.f_mode!=false){this._filterOpts(true)}};dhtmlXCombo.prototype._getOption=function(l,g){if(!this.t[l]){return null}if(typeof(g)=="undefined"){g=-1}if(g<0){for(var j=0;j<this.list.childNodes.length;j++){if(g<0&&this.list.childNodes[j]._optId==l){g=j}}}var h={value:this.t[l].obj.getValue(this.t[l].item),text:this.t[l].obj.getText(this.t[l].item),text_input:this.t[l].obj.getText(this.t[l].item,true),text_option:this.t[l].obj.getText(this.t[l].item,null,true),css:this.t[l].obj.getCss(this.t[l].item),selected:(l==this.conf.last_selected),index:g};if(typeof(this.t[l].obj.getExtraData)=="function"){var e=this.t[l].obj.getExtraData(this.t[l].item);for(var c in e){if(typeof(h[c])=="undefined"){h[c]=e[c]}}}return h};dhtmlXCombo.prototype._getOptionProp=function(g,e,c){if(g!=null){var a=this._getOption(g);if(a!=null){return a[e]}}return c};dhtmlXCombo.prototype._getOptionId=function(c){var g=null;for(var a=0;a<this.list.childNodes.length;a++){if(g==null){var e=this.list.childNodes[a]._optId;if(c==this.t[e].obj.getValue(this.t[e].item)){g=e}}}return g};dhtmlXCombo.prototype._getOptionValue=function(a){return this._getOptionProp(a,"value",null)};dhtmlXCombo.prototype.setSize=function(a){this.conf.combo_width=parseInt(a)-(dhx4.isFF||dhx4.isIE||dhx4.isChrome||dhx4.isOpera?2:0);this.base.style.width=Math.max(0,this.conf.combo_width)+"px";this._adjustBase()};dhtmlXCombo.prototype._adjustBase=function(){this.base.firstChild.style.width=Math.max(0,(this.conf.combo_width-24-(this.conf.combo_image?23:0)))+"px";this.base.firstChild.style.marginLeft=(this.conf.combo_image?"23px":"0px")};dhtmlXCombo.prototype.setOptionWidth=function(a){this.conf.opts_width=(parseInt(a)||null)};dhtmlXCombo.prototype.setOptionIndex=function(e,a){if(isNaN(a)||a<0){return}var g=this.getOption(e);if(g==null){return}if(a==g.index){return}var c=this.list.childNodes[g.index];c.parentNode.removeChild(c);if(this.list.childNodes[a]!=null){this.list.insertBefore(c,this.list.childNodes[a])}else{this.list.appendChild(c)}c=null};dhtmlXCombo.prototype.getOptionsCount=function(){return this.list.childNodes.length};dhtmlXCombo.prototype._mcMakeTemplate=function(n){var j="";var g="";this.conf.col_w=0;for(var l=0;l<n.length;l++){var a=Number(parseInt(n[l].width)||50);var e=(n[l].css||"");var m=(l==0&&window.dhx4.isIE6==true?"_first":"");g+="<div class='dhxcombo_cell"+m+" "+e+"' style='width:"+a+"px;'><div class='dhxcombo_cell_text'>"+(n[l].option||"&nbsp;")+"</div></div>";j+="<div class='dhxcombo_hdrcell"+m+" "+e+"' style='width:"+a+"px;'><div class='dhxcombo_hdrcell_text'>"+(n[l].header||"&nbsp;")+"</div></div>";this.conf.col_w+=a+1}var a=500;var c=document.createElement("DIV");c.style.position="absolute";c.style.top="10px";c.style.left=-a*2+"px";c.style.width=a+"px";c.style.height="50px";c.style.overflowY="scroll";c.innerHTML="<div>&nbsp;</div>";document.body.appendChild(c);this.conf.col_w+=a-c.firstChild.offsetWidth+10;c.parentNode.removeChild(c);c=null;this.conf.template.option=g;this._mcAttachHeader(j);this.list.className+=" dhxcombolist_multicolumn"};dhtmlXCombo.prototype._mcAttachHeader=function(a){if(this.hdr==null){this.hdr=document.createElement("DIV");this.hdr.className="dhxcombolist_"+this.conf.skin+" dhxcombolist_hdr";this.hdr.style.display="none";this.list.parentNode.insertBefore(this.hdr,this.list);if(typeof(window.addEventListener)=="function"){this.hdr.addEventListener("mousedown",this._doOnListMouseDown,false)}else{this.hdr.attachEvent("onmousedown",this._doOnListMouseDown)}if(this.conf.opts_type=="checkbox"&&this.conf.combo_image==true){this.conf.combo_image=false;if(this.base.lastChild.className.match(/dhxcombo_top_image/)!=null){this.base.removeChild(this.base.lastChild)}this._adjustBase()}}this.hdr.innerHTML="<div class='dhxcombo_hdrtext'>"+a+"</div>"};dhtmlXCombo.prototype._mcDetachHeader=function(){if(this.hdr!=null){if(typeof(window.addEventListener)=="function"){this.hdr.removeEventListener("mousedown",this._doOnListMouseDown,false)}else{this.hdr.detachEvent("onmousedown",this._doOnListMouseDown)}this.hdr.parentNode.removeChild(this.hdr);this.hdr=null}this.conf.col_w=null;this.conf.item_h=null};dhtmlXCombo.prototype.modes={};dhtmlXCombo.prototype.doWithItem=function(a,l,h,e){var j=(a>=0&&a<this.list.childNodes.length?this.list.childNodes[a]._optId:null);if(j==null){return null}if(typeof(this.t[j].obj[l])!="function"){return null}var g=[this.t[j].item];for(var c=2;c<arguments.length;c++){g.push(arguments[c])}return this.t[j].obj[l].apply(this.t[j].obj,g)};function dhtmlXComboExtend(g,e){for(var c in dhtmlXCombo.prototype.modes[e]){if(typeof(dhtmlXCombo.prototype.modes[g][c])=="undefined"){dhtmlXCombo.prototype.modes[g][c]=dhtmlXCombo.prototype.modes[e][c]}}}dhtmlXCombo.prototype.modes.option={image:false,html:false,option_css:"dhxcombo_option_text",render:function(a,c){a._conf={value:c.value,css:""};a.className="dhxcombo_option";a.innerHTML="<div class='"+this.option_css+"'>&nbsp;</div>";if(c.css!=null){a.lastChild.style.cssText=c.css;a._conf.css=c.css}this.setText(a,c.text);return this},destruct:function(a){a._conf=null},update:function(a,c){a._conf.value=c.value;a._conf.css=c.css;a.lastChild.style.cssText=c.css;this.setText(a,c.text)},setText:function(c,e){c._conf.text=e;var a=(typeof(e)=="object"?window.dhx4.template(c._tpl.option,this.replaceHtml(c._conf.text),true):window.dhx4.trim(this.replaceHtml(c._conf.text)||""));c.lastChild.innerHTML=(a.length==0?"&nbsp;":a)},getText:function(e,a,c){if(window.dhx4.s2b(a)&&typeof(e._conf.text)=="object"){return window.dhx4.template(e._tpl.input,e._conf.text,true)}if(window.dhx4.s2b(c)&&typeof(e._conf.text)=="object"){return window.dhx4.template(e._tpl.option,e._conf.text,true)}return e._conf.text},getValue:function(a){return a._conf.value},getCss:function(a){return a._conf.css},setSelected:function(a,c){a.className="dhxcombo_option"+(c?" dhxcombo_option_selected":"")},isSelected:function(a){return String(a.className).indexOf("dhxcombo_option_selected")>=0},getExtraData:function(a){return{type:"option"}},replaceHtml:function(g){if(this.html==true){return g}if(typeof(g)=="object"){var e={};for(var c in g){e[c]=this.replaceHtml(g[c])}}else{var e=g.replace(/[\<\>\&\s]/g,function(a){switch(a){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case" ":return"&nbsp;"}return a})}return e}};dhtmlXCombo.prototype.modes.checkbox={image:true,html:true,image_css:"dhxcombo_checkbox dhxcombo_chbx_#state#",option_css:"dhxcombo_option_text dhxcombo_option_text_chbx",render:function(a,c){if(this.image_css_regexp==null){this.image_css_regexp=new RegExp(this.image_css.replace("#state#","\\d*"))}a._conf={value:c.value,css:"",checked:window.dhx4.s2b(c.checked)};a.className="dhxcombo_option";if(c.multicol==true){c.text.checkbox="<div class='"+String(this.image_css).replace("#state#",(a._conf.checked?"1":"0"))+"'></div>&nbsp;";a.innerHTML="<div class='"+dhtmlXCombo.prototype.modes.option.option_css+"'></div>"}else{a.innerHTML="<div class='"+String(this.image_css).replace("#state#",(a._conf.checked?"1":"0"))+"'></div><div class='"+this.option_css+"'>&nbsp;</div>"}if(c.css!=null){a.lastChild.style.cssText+=c.css;a._conf.css=c.css}this.setText(a,c.text);return this},setChecked:function(c,e){c._conf.checked=window.dhx4.s2b(e);var a=String(this.image_css).replace("#state#",(c._conf.checked?"1":"0"));this._changeChbxCss(c.childNodes,a)},_changeChbxCss:function(a,c){for(var e=0;e<a.length;e++){if(a[e].tagName!=null&&a[e].className!=null&&a[e].className.match(this.image_css_regexp)!=null){a[e].className=c}else{if(a[e].childNodes.length>0){this._changeChbxCss(a[e].childNodes,c)}}}},isChecked:function(a){return(a._conf.checked==true)},getExtraData:function(a){return{type:"checkbox",checked:a._conf.checked}},optionClick:function(h,g,j){var e=true;var c=(g.target||g.srcElement);while(e==true&&c!=null&&c!=h&&c.className!=null){if(c.className.match(this.image_css_regexp)!=null){var a=[h._conf.value,!h._conf.checked];if(j.callEvent("onBeforeCheck",a)===true){this.setChecked(h,!this.isChecked(h));j.callEvent("onCheck",a)}e=false;a=null}else{c=c.parentNode}}c=j=h=null;return e},getTopImage:function(c,a){return""},topImageClick:function(a,c){return true}};dhtmlXComboExtend("checkbox","option");dhtmlXCombo.prototype.setChecked=function(a,c){this.doWithItem(a,"setChecked",c)};dhtmlXCombo.prototype.getChecked=function(a){var c=[];for(var e=0;e<this.list.childNodes.length;e++){if(this.isChecked(e)){c.push(this._getOptionProp(this.list.childNodes[e]._optId,"value",""))}}return c};dhtmlXCombo.prototype.isChecked=function(a){return this.doWithItem(a,"isChecked")};dhtmlXCombo.prototype.modes.image={image:true,html:true,image_css:"dhxcombo_image",option_css:"dhxcombo_option_text dhxcombo_option_text_image",render:function(a,c){a._conf={value:c.value,css:""};a.className="dhxcombo_option";a.innerHTML="<div class='"+this.image_css+"'></div><div class='"+this.option_css+"'>&nbsp;</div>";if(c.css!=null){a.lastChild.style.cssText+=c.css;a._conf.css=c.css}this.setText(a,c.text);this.setImage(a,c.img,c.img_dis,c.img_path,c.img_def,c.img_def_dis);return this},update:function(a,c){a._conf.value=c.value;a._conf.css=c.css;a.lastChild.style.cssText=c.css;this.setText(a,c.text);this.setImage(a,c.img,c.img_dis,c.img_path,c.img_def,c.img_def_dis)},setImage:function(e,a,h,j,g,c){if(a!=null&&a.length>0){a=j+a}else{if(g!=null&&g.length>0){a=j+g}else{a=null}}if(h!=null&&h.length>0){h=j+h}else{if(c!=null&&c.length>0){h=j+c}else{if(c==true){h=a}else{h=null}}}e._conf.img=a;e._conf.img_dis=h;e.firstChild.style.backgroundImage=(a!=null?"url("+a+")":"none")},getExtraData:function(a){return{type:"image"}},getTopImage:function(g,e){var c=(e?"img":"img_dis");if(g!=null&&g._conf[c]!=null){return"<div class='"+this.image_css+"' style='background-image:url("+g._conf[c]+");'></div>"}return""}};dhtmlXComboExtend("image","option");dhtmlXCombo.prototype.setDefaultImage=function(a,c){if(a!=null){this.conf.img_def=a}if(c!=null){this.conf.img_def_dis=c}};dhtmlXCombo.prototype.setImagePath=function(a){this.conf.img_path=a};function dhtmlXColorPicker(m){if(!(this instanceof window.dhtmlXColorPicker)){return new dhtmlXColorPicker(m)}dhx4._eventable(this);var h=this,g=undefined,j=null,e,a,c;this._nodes=[];this.activeNode=null;this._inputListenerId=null;this.base=null;this._globalNode=null;this.memory=null;this.skin=null;this.conf={cp_id:dhx4.newId(),x:0,y:0,c:0,indent:2,position:"right",customColors:false,selectedColor:null,hide:false,hideOnSelect:false,lang:"en",closeable:true};this.value={red:-1,blue:-1,green:-1,hue:-1,sat:-1,lum:-1};this._initMoveSelection=function(l){l=l||event;if(typeof(window.addEventListener)=="function"){h._controllerNodes.colorArea.addEventListener("mousemove",h._setMoveSelection,false);document.body.addEventListener("mouseup",h._cleanMoveSelection,false)}else{h._controllerNodes.colorArea.attachEvent("onmousemove",h._setMoveSelection);document.body.attachEvent("onmouseup",h._cleanMoveSelection)}h._setMoveSelection(l,h._controllerNodes.colorArea);return false};this._cleanMoveSelection=function(){if(typeof(window.removeEventListener)=="function"){h._controllerNodes.colorArea.removeEventListener("mousemove",h._setMoveSelection,false);document.body.removeEventListener("mouseup",h._cleanMoveSelection,false)}else{h._controllerNodes.colorArea.detachEvent("onmousemove",h._setMoveSelection);document.body.detachEvent("onmouseup",h._cleanMoveSelection)}return false};this._setMoveSelection=function(l){l=l||event;var n=h._getOffsetPosition(l,h._controllerNodes.colorArea);if(h._controllerNodes.fr_cover){setTimeout(function(){h._setColorAreaXY(n.x,n.y);h._setColorByXYC()},0)}else{h._setColorAreaXY(n.x,n.y);h._setColorByXYC()}return false};this._initMoveContrast=function(l){l=l||event;if(typeof(window.addEventListener)=="function"){document.body.addEventListener("mousemove",h._setMoveContrast,false);document.body.addEventListener("mouseup",h._cleanMoveContrast,false)}else{document.body.attachEvent("onmousemove",h._setMoveContrast);document.body.attachEvent("onmouseup",h._cleanMoveContrast)}h._setMoveContrast(l,h._controllerNodes.contrastArea)};this._cleanMoveContrast=function(){if(typeof(window.removeEventListener)=="function"){document.body.removeEventListener("mousemove",h._setMoveContrast,false);document.body.removeEventListener("mouseup",h._cleanMoveContrast,false)}else{document.body.detachEvent("onmousemove",h._setMoveContrast);document.body.detachEvent("onmouseup",h._cleanMoveContrast)}};this._setMoveContrast=function(l){l=l||event;var n=h._getOffsetPosition(l,h._controllerNodes.contrastArea);h._setContrastY(n.y);h._setColorByXYC(true)};this._doOnSelectColor=function(){var l=h.colorAIP.rgb2hex({r:h.value.red,g:h.value.green,b:h.value.blue});if(h.activeNode!=null){if(h.activeNode.valueCont){h.activeNode.valueCont.value=l}if(h.activeNode.valueColor){h.activeNode.valueColor.style.backgroundColor=l}}if(h.base._dhx_remove||h.conf.hideOnSelect){h.hide()}h.callEvent("onSelect",[l,((h.activeNode)?h.activeNode.node:null)])};this._doOnCancel=function(){if(h.callEvent("onCancel",[((h.activeNode)?h.activeNode.node:null)])==true&&h.conf.closeable==true){h.hide()}};this._doOnFocusByInput=function(){var n=(this!=window)?this:event.srcElement;var l=(h.activeNode&&h.activeNode.valueCont&&h.activeNode.valueCont==n)?h.activeNode:h._getNodeByValueCont(n);h.activeNode=l;if(l&&l==h.activeNode){h._initListenerInput()}};this._doOnBlurByInput=function(){var n=(this!=window)?this:event.srcElement;var l=(h.activeNode&&h.activeNode.valueCont&&h.activeNode.valueCont==n)?h.activeNode:h._getNodeByValueCont(n);if(l&&l==h.activeNode){h._removeListenerInput()}};this._doOnClickByNode=function(n){n=n||event;var l=(this!=window)?this:event.srcElement;h.activeNode=(h.activeNode.node!=l)?h._getNodeByElement(l):h.activeNode;if(!h.isVisible()){h.show()}};this.saveColor=function(){h.memory.setValue(h.value)};this._onSelectMemoryEl=function(n){var l;h._refreshCoordinatesByHSL(n.value.hue,n.value.sat,n.value.lum);for(l in n.value){h.value[l]=n.value[l]}h._refreshContrast();h._refreshInputValues();h._refreshColorValue()};this._doOnClickByBody=function(o){o=o||event;var l=true,n=o.target||o.srcElement;if(h._isBaseNode(n)){l=false}if(l&&h.activeNode&&(h.activeNode.node==n||h.activeNode.valueCont==n)){l=false}if(l){h.hide()}};this._doOnChangeHSL=function(){var o=parseInt(h._controllerNodes.hue.value),n=parseInt(h._controllerNodes.sat.value),l=parseInt(h._controllerNodes.lum.value),r;if(isNaN(o)||o>359||o<0){h._controllerNodes.hue.value=h.value.hue}else{h.value.hue=o}if(isNaN(n)||n>100||n<0){h._controllerNodes.sat.value=h.value.sat}else{h.value.sat=n}if(isNaN(l)||l>100||l<0){h._controllerNodes.lum.value=h.value.lum}else{h.value.lum=l}r=h.colorAIP.hsl2rgb(h.value.hue,h.value.sat/100,h.value.lum/100);h.value.red=Math.round(255*r.r);h.value.green=Math.round(255*r.g);h.value.blue=Math.round(255*r.b);h._refreshCoordinatesByHSL(h.value.hue,h.value.sat,h.value.lum);h._refreshContrast();h._refreshInputValues();h._refreshColorValue()};this._doOnChangeRGB=function(){var r=parseInt(h._controllerNodes.red.value),o=parseInt(h._controllerNodes.green.value),l=parseInt(h._controllerNodes.blue.value),n;if(isNaN(r)||r>255||r<0){h._controllerNodes.red.value=h.value.red}else{h.value.red=r}if(isNaN(o)||o>255||o<0){h._controllerNodes.green.value=h.value.green}else{h.value.green=o}if(isNaN(l)||l>255||l<0){h._controllerNodes.blue.value=h.value.blue}else{h.value.blue=l}n=h.colorAIP.rgb2hsl(h.value.red/255,h.value.green/255,h.value.blue/255);h.value.hue=Math.round(n.h);h.value.sat=Math.round(n.s*100);h.value.lum=Math.round(n.l*100);h._refreshCoordinatesByHSL(h.value.hue,h.value.sat,h.value.lum);h._refreshContrast();h._refreshInputValues();h._refreshColorValue()};this._doOnChangeHSV=function(){h._controllerNodes.hsv.value=h.setColor(h._controllerNodes.hsv.value)};this._checkType=function(n){var l;if(n instanceof Array){l=h._checkType(n[0]);switch(l){case"string":return"array_string";break;case"input":case"textarea":return"array_input";break;case"object":return"array_object";break;default:return undefined}}else{if(n==undefined){return null}else{if(typeof(n)=="string"){return"string"}else{if(n.tagName&&n.tagName.toLowerCase()=="input"){return"input"}else{if(n.tagName&&n.tagName.toLowerCase()=="textarea"){return"textarea"}else{if(n.tagName){return"container"}else{if(typeof(n)=="object"){return"object"}else{return undefined}}}}}}}};this._initByObject=function(l){if(l.parent&&l.parent.tagName){h.base=l.parent}else{if(typeof(l.parent)=="string"){h.base=document.getElementById(l.parent)}else{h.base=document.createElement("div");h.base._dhx_remove=true}}if(l.color){h.conf.selectedColor=l.color}if(typeof(l.closeable)!="undefined"){this.conf.closeable=dhx4.s2b(l.closeable)}if(l.custom_colors){this._tempInitCC=function(){var r,o;this.initMemoryColors();this.conf.customColors=true;if(l.custom_colors instanceof Array){o=l.custom_colors.length;for(r=0;r<o;r++){this.setCustomColors(l.custom_colors[r])}}if(this.base.parentNode){this.showMemory()}delete this._tempInitCC}}if(l.hide){h.conf.hide=true}if(l.input){h._addNode(l.input,l.target_color,l.target_value)}var n=l.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxcolorpicker")||"dhx_skyblue";h.setSkin(n);if(l.colors){h.initMemoryColors();h.conf.customColors=true}if(l.link){h._addNode(l.link)}};this.unload=function(){var r,n,o;if(this.isVisible()){this.hide()}this.destructMemory();n=this._nodes.length;for(r=0;r<n;r++){this._detachEventsFromNode(this._nodes[r]);for(o in this._nodes[r]){this._nodes[r][o]=null}delete this._nodes[r]}this._nodes=null;if(!this.base._dhx_remove){this.base.className=this.base.className.replace(/\s?dhtmlxcp_\S*/,"")}else{delete this.base._dhx_remove}if(typeof(window.addEventListener)=="function"){this._controllerNodes.colorArea.removeEventListener("mousedown",this._initMoveSelection,false);this._controllerNodes.colorArea.removeEventListener("dblclick",this._doOnSelectColor,false);this._controllerNodes.contrastArea.removeEventListener("mousedown",this._initMoveContrast,false);this._controllerNodes.button_save.removeEventListener("click",this._doOnSelectColor,false);this._controllerNodes.button_cancel.removeEventListener("click",this._doOnCancel,false);this._controllerNodes.hue.removeEventListener("change",this._doOnChangeHSL,false);this._controllerNodes.sat.removeEventListener("change",this._doOnChangeHSL,false);this._controllerNodes.lum.removeEventListener("change",this._doOnChangeHSL,false);this._controllerNodes.red.removeEventListener("change",this._doOnChangeRGB,false);this._controllerNodes.green.removeEventListener("change",this._doOnChangeRGB,false);this._controllerNodes.blue.removeEventListener("change",this._doOnChangeRGB,false);this._controllerNodes.hsv.removeEventListener("change",this._doOnChangeHSV,false)}else{this._controllerNodes.colorArea.detachEvent("onmousedown",this._initMoveSelection);this._controllerNodes.colorArea.detachEvent("ondblclick",this._doOnSelectColor);this._controllerNodes.contrastArea.detachEvent("onmousedown",this._initMoveContrast);this._controllerNodes.button_save.detachEvent("onclick",this._doOnSelectColor);this._controllerNodes.button_cancel.detachEvent("onclick",this._doOnCancel);this._controllerNodes.hue.detachEvent("onchange",this._doOnChangeHSL);this._controllerNodes.sat.detachEvent("onchange",this._doOnChangeHSL);this._controllerNodes.lum.detachEvent("onchange",this._doOnChangeHSL);this._controllerNodes.red.detachEvent("onchange",this._doOnChangeRGB);this._controllerNodes.green.detachEvent("onchange",this._doOnChangeRGB);this._controllerNodes.blue.detachEvent("onchange",this._doOnChangeRGB);this._controllerNodes.hsv.detachEvent("onchange",this._doOnChangeHSV)}if(this._controllerNodes.fr_cover){if(this._controllerNodes.fr_cover.parentNode){this._controllerNodes.fr_cover.parentNode.removeChild(this._controllerNodes.fr_cover)}delete this._controllerNodes.fr_cover}dhx4.zim.clear(this.conf.cp_id);dhx4._eventable(this,"clear");for(o in this){this[o]=null}h=null,j=null,c=null};g=this._checkType(m);switch(g){case"object":h._initByObject(m);break;case"input":case"textarea":h._initByObject({});this._addNode(m);break;case"string":j=document.getElementById(m);return new dhtmlXColorPicker(j);break;case"container":h._initByObject({parent:m});break;case null:h._initByObject({});break;case"array_string":case"array_input":h._initByObject({});a=m.length;for(e=0;e<a;e++){this._addNode(m[e])}break;case"array_object":h._initByObject({});a=m.length;for(e=0;e<a;e++){c=this._addNode(m[e].input,m[e].target_color,m[e].target_value).conf;c.customColors=(m[e].custom_colors!=undefined)?dhx4.s2b(m[e].custom_colors):c.customColors;c.selectedColor=(m[e].color!=undefined)?m[e].color:c.selectedColor}break}this.base.innerHTML="<div class='dhxcp_g_area'><div class='dhxcp_sub_area'><div class='dhxcp_g_color_area'><div class='dhxcp_color_selector'><div class='dhxcp_v_line'></div><div class='dhxcp_h_line'></div></div><div class='dhxcp_contrast_area'><div class='dhxcp_h_line'></div></div></div><div class='dhxcp_g_input_area'><div class='dhxcp_value_cont'><div class='dhxcp_value_color'></div><input type='text' class='dhxcp_value'/></div><table class='dhxcp_inputs_cont' cellpadding='0' cellspacing='0' border='0'><tr><td class='dhxcp_label_hsl'>"+this.i18n[this.conf.lang].labelHue+"</td><td class='dhxcp_input_hsl'><input type='text' class='dhxcp_input_hsl'/></td><td class='dhxcp_label_rgb'>"+this.i18n[this.conf.lang].labelRed+"</td><td class='dhxcp_input_rgb'><input type='text' class='dhxcp_input_rgb'/></td></tr><tr><td class='dhxcp_label_hsl'>"+this.i18n[this.conf.lang].labelSat+"</td><td class='dhxcp_input_hsl'><input type='text' class='dhxcp_input_hsl'/></td><td class='dhxcp_label_rgb'>"+this.i18n[this.conf.lang].labelGreen+"</td><td class='dhxcp_input_rgb'><input type='text' class='dhxcp_input_rgb'/></td></tr><tr><td class='dhxcp_label_hsl'>"+this.i18n[this.conf.lang].labelLum+"</td><td class='dhxcp_input_hsl'><input type='text' class='dhxcp_input_hsl'/></td><td class='dhxcp_label_rgb'>"+this.i18n[this.conf.lang].labelBlue+"</td><td class='dhxcp_input_rgb'><input type='text' class='dhxcp_input_rgb'/></td></tr></table></div><div class='dhxcp_g_memory_area'></div><div class='dhxcp_buttons_area'><button class='dhx_button_save'>"+this.i18n[this.conf.lang].btnSelect+"</button><button class='dhx_button_cancel'>"+this.i18n[this.conf.lang].btnCancel+"</button></div></div>";"</div>";this._globalNode=this.base.firstChild;this._controllerNodes={colorArea:this._globalNode.firstChild.firstChild.firstChild,v_line:this._globalNode.firstChild.firstChild.firstChild.childNodes[0],h_line:this._globalNode.firstChild.firstChild.firstChild.childNodes[1],contrastArea:this._globalNode.firstChild.firstChild.childNodes[1],contrast_line:this._globalNode.firstChild.firstChild.childNodes[1].firstChild,color:this._globalNode.firstChild.childNodes[1].childNodes[0].firstChild,hsv:this._globalNode.firstChild.childNodes[1].childNodes[0].childNodes[1],hue:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[0].childNodes[1].firstChild,sat:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[1].childNodes[1].firstChild,lum:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[2].childNodes[1].firstChild,red:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[0].childNodes[3].firstChild,green:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[1].childNodes[3].firstChild,blue:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[2].childNodes[3].firstChild,memory_block:this._globalNode.firstChild.childNodes[2],button_save:this._globalNode.firstChild.childNodes[3].firstChild,button_cancel:this._globalNode.firstChild.childNodes[3].childNodes[1]};this._labelNodes={labelHue:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[0].firstChild,labelSat:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[1].firstChild,labelLum:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[2].firstChild,labelRed:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[0].childNodes[2],labelGreen:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[1].childNodes[2],labelBlue:this._globalNode.firstChild.childNodes[1].childNodes[1].firstChild.childNodes[2].childNodes[2],btnAddColor:null,btnSelect:this._globalNode.firstChild.childNodes[3].firstChild,btnCancel:this._globalNode.firstChild.childNodes[3].childNodes[1]};if(typeof(this._tempInitCC)=="function"){this._tempInitCC()}if(typeof(window.addEventListener)=="function"){this._controllerNodes.colorArea.addEventListener("mousedown",this._initMoveSelection,false);this._controllerNodes.colorArea.addEventListener("dblclick",this._doOnSelectColor,false);this._controllerNodes.contrastArea.addEventListener("mousedown",this._initMoveContrast,false);this._controllerNodes.button_save.addEventListener("click",this._doOnSelectColor,false);this._controllerNodes.button_cancel.addEventListener("click",this._doOnCancel,false);this._controllerNodes.hue.addEventListener("change",this._doOnChangeHSL,false);this._controllerNodes.sat.addEventListener("change",this._doOnChangeHSL,false);this._controllerNodes.lum.addEventListener("change",this._doOnChangeHSL,false);this._controllerNodes.red.addEventListener("change",this._doOnChangeRGB,false);this._controllerNodes.green.addEventListener("change",this._doOnChangeRGB,false);this._controllerNodes.blue.addEventListener("change",this._doOnChangeRGB,false);this._controllerNodes.hsv.addEventListener("change",this._doOnChangeHSV,false)}else{this._controllerNodes.colorArea.attachEvent("onmousedown",this._initMoveSelection);this._controllerNodes.colorArea.attachEvent("ondblclick",this._doOnSelectColor);this._controllerNodes.contrastArea.attachEvent("onmousedown",this._initMoveContrast);this._controllerNodes.button_save.attachEvent("onclick",this._doOnSelectColor);this._controllerNodes.button_cancel.attachEvent("onclick",this._doOnCancel);this._controllerNodes.hue.attachEvent("onchange",this._doOnChangeHSL);this._controllerNodes.sat.attachEvent("onchange",this._doOnChangeHSL);this._controllerNodes.lum.attachEvent("onchange",this._doOnChangeHSL);this._controllerNodes.red.attachEvent("onchange",this._doOnChangeRGB);this._controllerNodes.green.attachEvent("onchange",this._doOnChangeRGB);this._controllerNodes.blue.attachEvent("onchange",this._doOnChangeRGB);this._controllerNodes.hsv.attachEvent("onchange",this._doOnChangeHSV)}this.setColor(this.conf.selectedColor||"#ffffff");if(this._nodes.length){for(var e=0;e<this._nodes.length;e++){this._attachEventsToNode(this._nodes[e])}}if(this.conf.hide){this.hide()}if(typeof(this._cpInitFRM)=="function"){this._cpInitFRM()}}dhtmlXColorPicker.prototype.linkTo=function(c,e,g){if(arguments.length==1){e=g=c}var a;c=c||null;g=g||null;if(typeof(e)=="string"){e=document.getElementById(e)}a=this._addNode(e,c,g);if(a){this._attachEventsToNode(a)}return a};dhtmlXColorPicker.prototype._isBaseNode=function(a){if(a==this.base){return true}if(a.parentElement==document.body){return false}else{if(!a.parentElement){return false}else{return this._isBaseNode(a.parentElement)}}};dhtmlXColorPicker.prototype._hasInput=function(e){var c,a,g=false;a=this._nodes.length;for(c=0;c<a;c++){if(this._nodes[c].valueCont==e){g=true;break}}return g};dhtmlXColorPicker.prototype._findNodesByArray=function(h){var e,a,c,g=[];a=h.length;for(e=0;e<a;e++){if(typeof(h[e])=="string"){c=document.getElementById(h[e])}else{c=h[e]}if(c){this._addNode(c)}}};dhtmlXColorPicker.prototype._addNode=function(h,l,j){var c,g,e,a;if(typeof(h)=="string"){c=document.getElementById(h)}else{c=h}if(typeof(l)=="string"){l=document.getElementById(l)}if(typeof(j)=="string"){j=document.getElementById(j)}if(!c){return null}if(dhx4.s2b(c.getAttribute("colorbox"))){g=document.createElement("div");g.style.width=c.offsetWidth+"px";g.style.height=c.offsetHeight+"px";c.style.width=c.offsetWidth-(c.offsetHeight+8)+"px";c.parentNode.insertBefore(g,c);g.style.position="relative";e=document.createElement("div");g.appendChild(c);g.appendChild(e);e.className="dhxcp_colorBox";c.className+=" dhxcp_colorInput";e.style.width=e.style.height=c.offsetHeight+"px"}a={node:c,valueColor:(l!=undefined)?l:e||c,valueCont:(j!=undefined)?j:c,conf:{customColors:(c.getAttribute("customcolors")!=null)?dhx4.s2b(c.getAttribute("customcolors")):null,selectedColor:c.getAttribute("selectedcolor")}};this._nodes.push(a);if(!this.activeNode){this.activeNode=a}return a};dhtmlXColorPicker.prototype.getNode=function(e){var a=null,c=null;if(typeof(e)=="string"){a=document.getElementById(e)}else{a=e}if(a.tagName!=undefined){c=this._getNodeByElement(a)}return c};dhtmlXColorPicker.prototype._getNodeByElement=function(e){var g=null,c,a;a=this._nodes.length;for(c=0;c<a;c++){if(this._nodes[c].node==e){g=this._nodes[c]}}return g};dhtmlXColorPicker.prototype._getNodeByValueCont=function(e){var g=null,c,a;a=this._nodes.length;for(c=0;c<a;c++){if(this._nodes[c].valueCont&&this._nodes[c].valueCont==e){g=this._nodes[c]}}return g};dhtmlXColorPicker.prototype.initMemoryColors=function(){var c=this;this._controllerNodes.memory_block.innerHTML="<div class='dhxcp_memory_button_cont'><button class='dhxcp_save_to_memory'><div class='dhxcp_label_bm'>"+this.i18n[this.conf.lang].btnAddColor+"</div></button></div><div class='dhxcp_memory_els_cont'><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a><a class='dhxcp_memory_el'></a></div>";this.memory=new this.Memory(this._controllerNodes.memory_block.childNodes[1]);this.memory.onSelect=this._onSelectMemoryEl;this.memory.onSave=function(g){var e=c.colorAIP.rgb2hex({r:g.red,g:g.green,b:g.blue});c.callEvent("onSaveColor",[e])};var a=this._controllerNodes.memory_block.childNodes[0].firstChild;this._labelNodes.btnAddColor=this._controllerNodes.memory_block.childNodes[0].firstChild.firstChild;if(typeof(window.addEventListener)=="function"){a.addEventListener("click",this.saveColor,false)}else{a.attachEvent("onclick",this.saveColor)}};dhtmlXColorPicker.prototype._refreshCoordinatesByHSL=function(m,j,c){var a,g,e;a=Math.round((this.configColorArea.maxX-this.configColorArea.minX)*m/359)+this.configColorArea.minX;g=Math.round((this.configColorArea.maxY-this.configColorArea.minY)*(100-c)/100)+this.configColorArea.minY;e=Math.round((this.configColorArea.maxY-this.configColorArea.minY)*(100-j)/100)+this.configColorArea.minY;this._setColorAreaXY(a,g);this._setContrastY(e)};dhtmlXColorPicker.prototype._parseColor=function(e){if(e instanceof Array){var c={r:parseInt(e[0]),g:parseInt(e[1]),b:parseInt(e[2])}}else{if(typeof(e)=="string"){e=e.replace(/\s/g,"");if(/^rgb\((\d{1,3})\,(\d{1,3})\,(\d{1,3})\)$/i.test(e)){var a=e.match(/^rgb\((\d{1,3})\,(\d{1,3})\,(\d{1,3})\)$/i);var c={r:parseInt(a[1]),g:parseInt(a[2]),b:parseInt(a[3])}}else{var c=this.colorAIP.hex2rgb(e)}}}return c};dhtmlXColorPicker.prototype.setColor=function(j){var c=this.colorAIP.rgb2hex({r:this.value.red,g:this.value.green,b:this.value.blue});var e=this._parseColor(j);var h=(e instanceof Object);h=h&&(0<=e.r&&e.r<=255);h=h&&(0<=e.g&&e.g<=255);h=h&&(0<=e.b&&e.b<=255);if(!h){return c}var g=this.colorAIP.rgb2hex({r:e.r,g:e.g,b:e.b});if(g==c){return c}this.value.red=e.r;this.value.green=e.g;this.value.blue=e.b;var a=this.colorAIP.rgb2hsl(e.r/255,e.g/255,e.b/255);this.value.hue=Math.round(a.h);this.value.sat=Math.round(a.s*100);this.value.lum=Math.round(a.l*100);this._refreshCoordinatesByHSL(this.value.hue,this.value.sat,this.value.lum);this._refreshContrast();this._refreshInputValues();this._refreshColorValue();return g};dhtmlXColorPicker.prototype.getSelectedColor=function(){return[this.colorAIP.rgb2hex({r:this.value.red,g:this.value.green,b:this.value.blue}),[this.value.red,this.value.green,this.value.blue],[this.value.hue,this.value.sat,this.value.lum]]};dhtmlXColorPicker.prototype._attachEventsToNode=function(a){if(typeof(window.addEventListener)=="function"){a.node.addEventListener("click",this._doOnClickByNode,false)}else{a.node.attachEvent("onclick",this._doOnClickByNode)}if(a.valueCont&&a.valueCont.tagName.toLowerCase()=="input"){if(typeof(window.addEventListener)=="function"){a.valueCont.addEventListener("focus",this._doOnFocusByInput,false);a.valueCont.addEventListener("blur",this._doOnBlurByInput,false)}else{a.valueCont.attachEvent("onfocus",this._doOnFocusByInput);a.valueCont.attachEvent("onblur",this._doOnBlurByInput)}}};dhtmlXColorPicker.prototype._detachEventsFromNode=function(a){if(typeof(window.addEventListener)=="function"){a.node.removeEventListener("click",this._doOnClickByNode,false)}else{a.node.detachEvent("onclick",this._doOnClickByNode)}if(a.valueCont&&a.valueCont.tagName.toLowerCase()=="input"){if(typeof(window.addEventListener)=="function"){a.valueCont.removeEventListener("focus",this._doOnFocusByInput,false);a.valueCont.removeEventListener("blur",this._doOnBlurByInput,false)}else{a.valueCont.detachEvent("onfocus",this._doOnFocusByInput);a.valueCont.detachEvent("onblur",this._doOnBlurByInput)}}};dhtmlXColorPicker.prototype.show=function(c){var a=false;if(c!=undefined){this.activeNode=this.getNode(c)||this.activeNode}if(this.activeNode&&this.activeNode.valueCont&&this.activeNode.valueCont.value){this.setColor(this.activeNode.valueCont.value)}if(this.activeNode){a=(this.activeNode.conf.customColors!=null?this.activeNode.conf.customColors:this.conf.customColors);this.setColor(this.activeNode.conf.selectedColor)}else{a=this.conf.customColors}if(a){this.showMemory()}else{this.hideMemory()}if(this.base._dhx_remove){this.base.firstChild.style.zIndex=dhx4.zim.reserve(this.conf.cp_id);this.base.style.visibility="hidden";if(document.body.firstChild){document.body.insertBefore(this.base,document.body.firstChild)}else{document.body.appendChild(this.base)}this._refreshPosition();this.base.style.visibility="visible";if(typeof(window.addEventListener)=="function"){document.body.addEventListener("mousedown",this._doOnClickByBody,false)}else{document.body.attachEvent("onmousedown",this._doOnClickByBody)}}else{this.base.appendChild(this._globalNode)}if(this._controllerNodes.fr_cover){this.base.insertBefore(this._controllerNodes.fr_cover,this._globalNode)}this.callEvent("onShow",[((this.activeNode)?this.activeNode.node:null)])};dhtmlXColorPicker.prototype.setPosition=function(c,h){var g=null;var a=parseInt(c);var e=parseInt(h);if(isNaN(a)){g=({right:"right",bottom:"bottom"}[c.toLowerCase()]?c:null)}if(this.base._dhx_remove){if(g==null){}else{this.conf.position=g;this._refreshPosition(g)}}else{if(isNaN(a)||isNaN(e)){}else{this._globalNode.style.left=a+"px";this._globalNode.style.top=e+"px";if(this._controllerNodes.fr_cover){this._controllerNodes.fr_cover.style.left=this._globalNode.style.left;this._controllerNodes.fr_cover.style.top=this._globalNode.style.top}}}};dhtmlXColorPicker.prototype._initListenerInput=function(){var a=this;this._inputListenerId=this._inputListenerId||setInterval(function(){a._refreshValueByInput()},70)};dhtmlXColorPicker.prototype._removeListenerInput=function(){if(this._inputListenerId){clearInterval(this._inputListenerId);this._inputListenerId=null}};dhtmlXColorPicker.prototype._refreshValueByInput=function(){var c=this.activeNode.valueCont.value,a=this.getSelectedColor()[0];if(this._inputListenerId){if(/^#[\da-f]{6}$/i.test(c)&&c!=a){this.setColor(c);this.callEvent("onSelect",[c,this.activeNode.node])}}};dhtmlXColorPicker.prototype._refreshPosition=function(c){if(this.activeNode==null){return}var m=dhx4.absTop(this.activeNode.node);var a=dhx4.absLeft(this.activeNode.node);var g=dhx4.screenDim();var e=this._globalNode.offsetWidth;var h=this._globalNode.offsetHeight;var l=0;c=c||this.conf.position;switch(c){case"bottom":var l=m+this.activeNode.node.offsetHeight+this.conf.indent;var j=a;if(j+e>g.left+g.right){j=a+this.activeNode.node.offsetWidth-e}if(j<g.left){j=a}if(l+h>g.top+g.bottom){l=m-h-this.conf.indent}if(l-g.top<0){l=g.top+this.conf.indent}this._globalNode.style.top=l+"px";this._globalNode.style.left=j+"px";break;default:var j=a+this.activeNode.node.offsetWidth+this.conf.indent;l=m;if(c=="right"){if(j+e>g.left+g.right){j=a-e-this.conf.indent}if(j<g.left){j=a+this.activeNode.node.offsetWidth+this.conf.indent}}if(g.bottom-(l+h)<=0){l=m+this.activeNode.node.offsetHeight-h}if(l-g.top<0){l=g.top+this.conf.indent}this._globalNode.style.left=j+"px";this._globalNode.style.top=l+"px"}if(this._controllerNodes.fr_cover){this._controllerNodes.fr_cover.style.left=this._globalNode.style.left;this._controllerNodes.fr_cover.style.top=this._globalNode.style.top}};dhtmlXColorPicker.prototype.isVisible=function(){var a=false;if(this.base._dhx_remove){a=this.base.parentNode==document.body}else{a=this._globalNode.parentNode==this.base}return a};dhtmlXColorPicker.prototype.hide=function(){if(this.base._dhx_remove){if(this.base.parentNode){this.base.parentNode.removeChild(this.base);dhx4.zim.clear(this.conf.cp_id);if(typeof(window.addEventListener)=="function"){document.body.removeEventListener("mousedown",this._doOnClickByBody,false)}else{document.body.detachEvent("onmousedown",this._doOnClickByBody)}}}else{if(this.isVisible()==false){return}this.base.removeChild(this._globalNode)}if(this._controllerNodes.fr_cover&&this._controllerNodes.fr_cover.parentNode){this._controllerNodes.fr_cover.parentNode.removeChild(this._controllerNodes.fr_cover)}if(this.callEvent!=undefined){this.callEvent("onHide",[((this.activeNode)?this.activeNode.node:null)])}};dhtmlXColorPicker.prototype.configColorArea={minX:1,maxX:209,minY:1,maxY:119};dhtmlXColorPicker.prototype._skinCollection={dhx_skyblue:true,dhx_web:true,dhx_terrace:true};dhtmlXColorPicker.prototype.i18n={en:{labelHue:"Hue",labelSat:"Sat",labelLum:"Lum",labelRed:"Red",labelGreen:"Green",labelBlue:"Blue",btnAddColor:"Save the color",btnSelect:"Select",btnCancel:"Cancel"}};dhtmlXColorPicker.prototype.loadUserLanguage=function(a){if(typeof(this._mergeLangModules)=="function"){this._mergeLangModules()}this.conf.lang=a;this._refreshLanguage()};dhtmlXColorPicker.prototype._refreshLanguage=function(){var a,c=this.i18n[this.conf.lang];for(a in c){if(this._labelNodes[a]){this._labelNodes[a].innerHTML=c[a]}}};dhtmlXColorPicker.prototype._setColorAreaXY=function(a,e){var c=this.configColorArea;a=parseInt(a);if(c.minX>a){this.conf.x=c.minX}else{if(a>c.maxX){this.conf.x=c.maxX}else{if(!isNaN(a)){this.conf.x=a}}}e=parseInt(e);if(c.minY>e){this.conf.y=c.minY}else{if(e>c.maxY){this.conf.y=c.maxY}else{if(!isNaN(e)){this.conf.y=e}}}this._refreshLines()};dhtmlXColorPicker.prototype._setColorByXYC=function(c){c=c||false;this.value.hue=Math.round((359*(this.conf.x-this.configColorArea.minX))/(this.configColorArea.maxX-this.configColorArea.minX));this.value.lum=Math.round(100-(100*(this.conf.y-this.configColorArea.minY))/(this.configColorArea.maxY-this.configColorArea.minY));this.value.sat=Math.round(100-(100*(this.conf.c-this.configColorArea.minY))/(this.configColorArea.maxY-this.configColorArea.minY));var a=this.colorAIP.hsl2rgb(this.value.hue,this.value.sat/100,this.value.lum/100);this.value.red=Math.round(255*a.r);this.value.green=Math.round(255*a.g);this.value.blue=Math.round(255*a.b);if(!c){this._refreshContrast()}this._refreshInputValues();this._refreshColorValue()};dhtmlXColorPicker.prototype._setContrastY=function(c){var a=this.configColorArea;c=parseInt(c);if(!isNaN(c)){this.conf.c=Math.min(Math.max(a.minY,c),a.maxY)}this._refreshContrastLine()};dhtmlXColorPicker.prototype._refreshInputValues=function(){this._controllerNodes.hue.value=this.value.hue;this._controllerNodes.sat.value=this.value.sat;this._controllerNodes.lum.value=this.value.lum;this._controllerNodes.red.value=this.value.red;this._controllerNodes.green.value=this.value.green;this._controllerNodes.blue.value=this.value.blue};dhtmlXColorPicker.prototype._refreshColorValue=function(){this._controllerNodes.color.style.backgroundColor="rgb("+[this.value.red,this.value.green,this.value.blue].join(", ")+")";var a=this.colorAIP.rgb2hex({r:this.value.red,g:this.value.green,b:this.value.blue});this._controllerNodes.hsv.value=a;this.callEvent("onChange",[a])};dhtmlXColorPicker.prototype._refreshContrast=function(){var g=this.colorAIP.hsl2rgb(this.value.hue,0,this.value.lum/100);var h=this.colorAIP.hsl2rgb(this.value.hue,1,this.value.lum/100);var e=this._checkIeVersion();if(e&&e<=9){var l=this._controllerNodes.contrastArea.firstChild;if(l==this._controllerNodes.contrast_line){l=document.createElement("div");l.className+="dhxcp_ie_gradient";this._controllerNodes.contrastArea.appendChild(l);this._controllerNodes.contrastArea.appendChild(this._controllerNodes.contrast_line)}var c=this.colorAIP.rgb2hex({r:Math.round(255*g.r),g:Math.round(255*g.g),b:Math.round(255*g.b)});var a=this.colorAIP.rgb2hex({r:Math.round(255*h.r),g:Math.round(255*h.g),b:Math.round(255*h.b)});l.style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr='"+a+"', endColorstr='"+c+"', GradientType=0)"}else{g=[Math.round(255*g.r),Math.round(255*g.g),Math.round(255*g.b)];h=[Math.round(255*h.r),Math.round(255*h.g),Math.round(255*h.b)];var j="linear-gradient(rgb("+h.join(",")+"), rgb("+g.join(",")+"))";if(window.dhx4.isKHTML==true&&navigator.userAgent.match(/Windows/gi)!=null){j="-webkit-"+j}this._controllerNodes.contrastArea.style.backgroundImage=j}};dhtmlXColorPicker.prototype._refreshLines=function(){this._controllerNodes.v_line.style.left=this.conf.x+"px";this._controllerNodes.h_line.style.top=this.conf.y+"px"};dhtmlXColorPicker.prototype._refreshContrastLine=function(){this._controllerNodes.contrast_line.style.top=this.conf.c+"px"};dhtmlXColorPicker.prototype._getOffsetPosition=function(h,a){var c={x:NaN,y:NaN},g=h.target||h.srcElement;if(g==a){c.x=(h.offsetX!=undefined)?h.offsetX:h.layerX;c.y=(h.offsetY!=undefined)?h.offsetY:h.layerY}else{if(g==this._controllerNodes.v_line){c.y=(h.offsetY!=undefined)?h.offsetY:h.layerY}else{c.x=(h.offsetX!=undefined)?h.offsetX:h.layerX}}return c};dhtmlXColorPicker.prototype.colorAIP={hex2rgb:function(c){var a=c.match(/^(#)([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);if(a!=null){return{r:parseInt("0x"+a[2]),g:parseInt("0x"+a[3]),b:parseInt("0x"+a[4])}}else{return null}},rgb2hex:function(h){var e=parseInt(h.r),c=parseInt(h.g),a=parseInt(h.b);e=e||0,c=c||0,a=a||0;return"#"+((e)?((e<16)?"0"+e.toString(16):e.toString(16)):"00")+((c)?((c<16)?"0"+c.toString(16):c.toString(16)):"00")+((a)?((a<16)?"0"+a.toString(16):a.toString(16)):"00")},rgb2hsl:function(n,m,e){var l,j,c;var a=Math.max(n,m,e),h=Math.min(n,m,e);c=0.5*(a+h);if(a==h){l=0}else{if(a==n){l=60*(m-e)/(a-h);if(m<e){l+=360}}else{if(a==m){l=60*(e-n)/(a-h)+120}else{l=60*(n-m)/(a-h)+240}}}if(c==0||a==h){j=0}else{if(c<=0.5){j=0.5*(a-h)/c}else{j=0.5*(a-h)/(1-c)}}return{h:l,s:j,l:c}},hsl2rgb:function(n,e,l){var h,j,m;var c=[],a=[];if(l<=0.5){h=l*(1+e)}else{h=l+e-(l*e)}j=2*l-h;m=n/360;c.push(m+1/3);c.push(m);c.push(m-1/3);for(var g=0;g<3;g++){if(c[g]<0){c[g]+=1}else{if(c[g]>1){c[g]-=1}}if(c[g]<1/6){a.push(j+(h-j)*6*c[g])}else{if(c[g]<0.5){a.push(h)}else{if(c[g]<2/3){a.push(j+(h-j)*(2/3-c[g])*6)}else{a.push(j)}}}}return{r:a[0],g:a[1],b:a[2]}}};dhtmlXColorPicker.prototype._checkIeVersion=function(){var a;var c=navigator.userAgent.match(/(MSIE)\s(\d\.\d)/i);a=(c&&c[2])?parseInt(c[2]):null;return a};dhtmlXColorPicker.prototype.setCustomColors=function(){if(this.memory==null){this.initMemoryColors();this.conf.customColors=true}var g,e,j,c,h,a;e=arguments.length;for(g=0;g<e;g++){if(arguments[g] instanceof Array){j=this._rgb2value(arguments[g][0],arguments[g][1],arguments[g][2]);this.memory.setValue(j,null,false);continue}else{if(typeof(arguments[g])=="string"){c=arguments[g].match(/^rgb\((\d{1,3})\,(\d{1,3})\,(\d{1,3})\)$/i);if(c instanceof Array){j=this._rgb2value(c[1],c[2],c[3]);this.memory.setValue(j,null,false);continue}c=arguments[g].match(/(#[\da-f]{6})/ig);if(c instanceof Array){a=c.length;for(h=0;h<a;h++){j=this._hex2value(c[h]);this.memory.setValue(j,null,false)}}}}}};dhtmlXColorPicker.prototype.getCustomColors=function(){var c=[];if(this.memory!=null&&this.conf.customColors==true){for(var e=0;e<this.memory.controllers.length;e++){var a=this.memory.controllers[e].value;c.push(this.colorAIP.rgb2hex({r:a.red,g:a.green,b:a.blue}))}}return c};dhtmlXColorPicker.prototype._rgb2value=function(h,e,a){var c=this.colorAIP.rgb2hsl(h/255,e/255,a/255);return{red:h,green:e,blue:a,hue:Math.round(c.h),sat:Math.round(c.s*100),lum:Math.round(c.l*100)}};dhtmlXColorPicker.prototype._hex2value=function(e){var c,a;c=this.colorAIP.hex2rgb(e);a=this.colorAIP.rgb2hsl(c.r/255,c.g/255,c.b/255);return{red:c.r,green:c.g,blue:c.b,hue:Math.round(a.h),sat:Math.round(a.s*100),lum:Math.round(a.l*100)}};dhtmlXColorPicker.prototype.showMemory=function(){if(this.memory==null){this.initMemoryColors()}if(!this._globalNode.className.match(/dhxcp_add_memory/)){this._globalNode.className+=" dhxcp_add_memory"}this.conf.customColors=true};dhtmlXColorPicker.prototype.hideMemory=function(){if(this.memory!=null){this._globalNode.className=this._globalNode.className.replace(/\sdhxcp_add_memory/,"")}this.conf.customColors=false};dhtmlXColorPicker.prototype.setSkin=function(h){h=h.toLowerCase();var e,c=-1,a,g="dhtmlxcp";e=this.base.className.match(/\S\w+/ig);if(e instanceof Array){for(a in this._skinCollection){if(c==-1){c=this._indexOf(e,g+"_"+a)}else{break}}c=(c==-1)?e.length:c}else{e=[];c=0}e[c]=g+"_"+h;this.base.className=e.join(" ");this.skin=h};dhtmlXColorPicker.prototype.hideOnSelect=function(a){a=dhx4.s2b(a);this.conf.hideOnSelect=a};dhtmlXColorPicker.prototype._indexOf=function(a,g){var e,c,h=-1;c=a.length;for(e=c;e>=0;e--){if(a[e]==g){h=e;break}}return h};dhtmlXColorPicker.prototype.destructMemory=function(){if(this.memory==null){return}this.hideMemory();var a=this._controllerNodes.memory_block.childNodes[0].firstChild;this._labelNodes.btnAddColor=null;if(typeof(window.addEventListener)=="function"){a.removeEventListener("click",this.saveColor,false)}else{a.detachEvent("onclick",this.saveColor)}this.memory.remove();this._controllerNodes.memory_block.innerHTML="";this.memory=null};dhtmlXColorPicker.prototype.Memory=function(e){var c=this,a=null,g={red:255,blue:255,green:255,hue:0,sat:0,lum:100};this.select=function(){var j=(this!=window)?this:event.srcElement;var h=h||j.dhxpc_memory;if(a!=null){c.unSelect()}a=h;h.domElement.className+=" dhxcp_memory_el_select";if(typeof(c.onSelect)=="function"){c.onSelect(h)}};this.onSelect=null;this.onSave=null;this._createMemoryController=function(h){var j={domElement:h,value:dhx4._copyObj(g)};h.dhxpc_memory=j;if(typeof(window.addEventListener)=="function"){h.addEventListener("click",c.select,false)}else{h.attachEvent("onclick",c.select)}return j};this._findMemoryControllers=function(o){var m=o.getElementsByTagName("a"),j,h,n=[];h=m.length;for(j=0;j<h;j++){n.push(this._createMemoryController(m[j]))}return n};this.controllers=this._findMemoryControllers(e);this.unSelect=function(){if(a){a.domElement.className=a.domElement.className.replace(/\s.*$/i,"")}a=null};this.setActiveNext=function(){var j=null,h;if(a==null){a=this.controllers[0]}else{j=this.getIndex(a);h=this.controllers.length;this.unSelect();a=(j+1<h)?this.controllers[j+1]:this.controllers[0]}a.domElement.className+=" dhxcp_memory_el_next";return a};this.setValue=function(j,h,l){a=h||a;if(a==null){a=this.controllers[0]}a.value.red=j.red;a.value.blue=j.blue;a.value.green=j.green;a.value.hue=j.hue;a.value.sat=j.sat;a.value.lum=j.lum;a.domElement.style.backgroundColor="rgb("+[j.red,j.green,j.blue].join(", ")+")";this.setActiveNext();if((l!=false)&&(typeof(this.onSave)=="function")){this.onSave(j)}};this.clean=function(){var h=this.controllers.length,m;for(var j=0;j<h;j++){m=this.controllers[j];m.value=dhx4._copyObj(g);m.domElement.style.backgroundColor="rgb("+[g.red,g.green,g.blue].join(", ")+")"}this.unSelect();a=this.controllers[0]};this.getIndex=function(m){var j,h,n=-1;h=this.controllers.length;for(j=0;j<h;j++){if(this.controllers[j]==m){n=j;break}}return n};this.remove=function(){var j,h;h=this.controllers.length;for(j=0;j<h;j++){if(typeof(window.addEventListener)=="function"){this.controllers[j].domElement.removeEventListener("click",this.select,false)}else{this.controllers[j].domElement.detachEvent("onclick",this.select)}delete this.controllers[j].domElement.dhxpc_memory}delete this.onSelect;delete this.controllers;delete this.onSave}};if(window.dhx4.isIE6){dhtmlXColorPicker.prototype._cpInitFRM=function(){var a;if(!this._controllerNodes.fr_cover){a=document.createElement("IFRAME");a.className="dhxcp_frm";a.border=0;a.frameBorder=0;this._controllerNodes.fr_cover=a}if(!this.base._dhx_remove){this.base.insertBefore(a,this._globalNode)}}}function dhtmlXSlider(c){var a=this;this.conf={size:null,skin:null,vertical:false,min:0,max:99,value:0,step:1,decimals:0,margin:2,border:1,inverse:false,disabled:false,tooltip:false,visible:true,linkTo:null,range:false,bg:null,bg_mode:"left"};this._attachedNode={};this._movingInitialValues=null;this.base=null;if(arguments.length>1){return new dhtmlXSlider(this._renderArgumets(arguments))}else{if(typeof(c)=="string"||(typeof(c)=="object"&&c.tagName)){return new dhtmlXSlider({parent:c})}}if(typeof(c.parent)=="string"){this.base=document.getElementById(c.parent)}else{this.base=c.parent}this._mergeConfig(this._readAttFormNode(this.base));this._mergeConfig(c);if(this.conf.bg==null){this.conf.bg=(this.conf.range==true)}if(this.conf.range==true){if(!(this.conf.value instanceof Array)){this.conf.value=[this.conf.value]}if(this.conf.value.length<2){this.conf.value.push(this.conf.value[0])}if(!(this.conf.linkTo instanceof Array)){this.conf.linkTo=[this.conf.linkTo]}}this._detectDecimals();if(this.conf.size==null||typeof(this.conf.size)=="undefined"){if(this.conf.vertical){this.conf.size=this.base.offsetHeight}else{this.conf.size=this.base.offsetWidth}}var e=this.conf.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxslider")||"dhx_skyblue";this.setSkin(e);this.base.innerHTML="<div class='dhxsl_container'><div class='dhxsl_track'>"+(this.conf.bg==true?"<div class='dhxsl_track_bg'></div>":"")+"</div><div class='dhxsl_runner'></div>"+(this.conf.range==true?"<div class='dhxsl_runner'></div>":"")+"</div>";this._nodes={cont:this.base.firstChild,track:this.base.firstChild.firstChild,runner:this.base.firstChild.childNodes[1],runner2:this.base.firstChild.childNodes[2]};this._nodes.cont.onmousedown=this._nodes.track.onmousedown=this._nodes.cont.onselectstart=this._nodes.track.onselectstart=function(g){g=g||event;if(typeof(g.preventDefault)=="function"){g.preventDefault()}else{g.returnValue=false}return false};this._r_actv=null;if(this.conf.range==true){this.conf.value=this._normalizeRange(this.conf.value,this.conf.min,this.conf.max)}else{this.conf.value=this._normalize(this.conf.value,this.conf.min,this.conf.max)}this._setOrient(this.conf.vertical);this.setSize(this.conf.size);this._initMover=function(h,g){if(a.conf.disabled){return}h=h||event;if(typeof(h.preventDefault)=="function"){h.preventDefault()}if(g!=null){a._r_actv=a._nodes[g==0?"runner":"runner2"]}else{a._r_actv=h.target||h.srcElement;if(a._r_actv.className.indexOf("dhxsl_runner")==-1){a._r_actv=a._nodes.runner}}a._r_actv.className="dhxsl_runner dhxsl_runner_actv";a._movingInitialValues={};if(a.conf.range==true){a._movingInitialValues.index=(a._r_actv==a._nodes.runner?0:1);a._movingInitialValues.value=a.conf.value[a._movingInitialValues.index]}else{a._movingInitialValues.value=a.conf.value}a._movingInitialValues.coord=a._getTouchCoord(h);if(a.conf.disabled==false){if(typeof(window.addEventListener)=="function"){window.addEventListener("mousemove",a._move,false);window.addEventListener("mouseup",a._cleanMove,false);window.addEventListener("touchmove",a._move,false);window.addEventListener("touchend",a._cleanMove,false)}else{document.body.attachEvent("onmousemove",a._move);document.body.attachEvent("onmouseup",a._cleanMove)}}a.callEvent("onMouseDown",[a._r_actv==a._nodes.runner?0:1]);return false};this._move=function(n){if(a.conf.disabled){return}n=n||event;if(typeof(n.preventDefault)=="function"){n.preventDefault()}var m=(a.conf.vertical)?a._r_actv.offsetHeight:a._r_actv.offsetWidth;var j=a.conf.max-a.conf.min;var h=a._getTouchCoord(n);var l=a._movingInitialValues.value+(h-a._movingInitialValues.coord)*j/(a.conf.size-m)*(a.conf.inverse?-1:1);if(a.conf.range==true){var g=[a.conf.value[0],a.conf.value[1]];if(a._movingInitialValues.index==0){g[0]=Math.min(g[1],l)}else{if(a._movingInitialValues.index==1){g[1]=Math.max(g[0],l)}}a.setValue(g,true)}else{a.setValue(l,true)}};this._cleanMove=function(g){if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousemove",a._move,false);window.removeEventListener("mouseup",a._cleanMove,false);window.removeEventListener("touchmove",a._move,false);window.removeEventListener("touchend",a._cleanMove,false)}else{document.body.detachEvent("onmousemove",a._move);document.body.detachEvent("onmouseup",a._cleanMove)}a._movingInitialValues=null;a._r_actv.className=a._r_actv.className.replace(/\s{0,}dhxsl_runner_actv/gi,"");a.callEvent("onSlideEnd",[a.conf.value]);a.callEvent("onMouseUp",[a._r_actv==a._nodes.runner?0:1]);a._r_actv=null};this._doOnSetValue=function(r){if(a.conf.disabled){return}if(a._movingInitialValues!=null){return false}r=r||event;if(typeof(r.preventDefault)=="function"){r.preventDefault()}var o=0;var l=r.target||r.srcElement;if(l.className.match(/dhxsl_track_bg/)!=null){o=parseInt(l.style[a.conf.vertical?"top":"left"])}if(r.type.match(/touch/)!=null){var n=a._getTouchCoord(r)+o}else{var n=(a.conf.vertical?(r.offsetY||r.layerY):(r.offsetX||r.layerX))+o}var m=(a.conf.vertical?a._nodes.runner.offsetHeight:a._nodes.runner.offsetWidth)+o;var g=a.conf.max-a.conf.min;var h=null;var j=null;if(a.conf.inverse==true){j=a.conf.max-(n*g/(a.conf.size))}else{j=(n*g/(a.conf.size)+a.conf.min)}if(a.conf.range==true){h=(Math.abs(a.conf.value[0]-j)<=Math.abs(a.conf.value[1]-j)?0:1);j=[h==0?j:a.conf.value[0],h==1?j:a.conf.value[1]]}a.conf.init_index=h;a.setValue(j,true);a.conf.init_index=null;if(a._movingInitialValues==null){a._initMover(r,h)}return false};this._doOnChangeInput=function(h){h=h||event;var g=h.target||h.srcElement;a.setValue(g.value)};this._doOnKeyDown=function(h){h=h||event;var g=h.target||h.srcElement;if(h.keyCode==13){a.setValue(g.value)}};this._attachEvents(this._nodes);this.unload=function(){dhx4._eventable(this,"clear");this._detachNode();this._detachEvents(this._nodes);this.base.removeChild(this._nodes.cont);this._nodes.cont.onmousedown=this._nodes.track.onmousedown=this._nodes.cont.onselectstart=this._nodes.track.onselectstart=null;delete this._nodes.cont;delete this._nodes.track;delete this._nodes.max;delete this._nodes.min;delete this._nodes.runner;if(this._nodes.runner2){delete this._nodes.runner2}if(/\s?dhtmlxslider_\S*/.test(this.base.className)){this.base.className=this.base.className.replace(/\s?dhtmlxslider_\S*/,"")}for(var g in this){this[g]=null}a=null};dhx4._eventable(this);if(this.conf.disabled){this.disable()}if(this.conf.tooltip){this.enableTooltip()}if(!this.conf.visible){this.hide()}if(this.conf.linkTo){this.linkTo(this.conf.linkTo)}return this}dhtmlXSlider.prototype._setOrient=function(a){a=a||false;if(/\s?dhxsl_cont_hr/i.test(this._nodes.cont.className)){this._nodes.cont.className=this._nodes.cont.className.replace(/\s?dhxsl_cont_hr/i,"")}if(/\s?dhxsl_cont_vr/i.test(this._nodes.cont.className)){this._nodes.cont.className=this._nodes.cont.className.replace(/\s?dhxsl_cont_vr/i,"")}if(a){this._nodes.cont.className+=" dhxsl_cont_vr"}else{this._nodes.cont.className+=" dhxsl_cont_hr"}};dhtmlXSlider.prototype._getTouchCoord=function(c){var a=(c.type.match(/mouse/)!=null?"client":"page")+(this.conf.vertical==true?"Y":"X");var g=(typeof(c[a])!="undefined"&&c[a]!=0?c[a]:(c.touches!=null&&c.touches[0]!=null?c.touches[0][a]||0:0));return g};dhtmlXSlider.prototype._attachEvents=function(a){if(typeof(window.addEventListener)=="function"){a.runner.addEventListener("mousedown",this._initMover,false);a.runner.addEventListener("touchstart",this._initMover,false);a.cont.addEventListener("mousedown",this._doOnSetValue,false);a.cont.addEventListener("touchstart",this._doOnSetValue,false);if(a.runner2){a.runner2.addEventListener("mousedown",this._initMover,false);a.runner2.addEventListener("touchstart",this._initMover,false)}}else{a.runner.attachEvent("onmousedown",this._initMover);a.cont.attachEvent("onmousedown",this._doOnSetValue);if(a.runner2){a.runner2.attachEvent("onmousedown",this._initMover)}}};dhtmlXSlider.prototype._detachEvents=function(a){if(typeof(window.addEventListener)=="function"){a.runner.removeEventListener("mousedown",this._initMover,false);a.runner.removeEventListener("touchstart",this._initMover,false);a.cont.removeEventListener("mousedown",this._doOnSetValue,false);a.cont.removeEventListener("touchstart",this._doOnSetValue,false);if(a.runner2){a.runner2.removeEventListener("mousedown",this._initMover,false);a.runner2.removeEventListener("touchstart",this._initMover,false)}}else{a.runner.detachEvent("onmousedown",this._initMover);a.cont.detachEvent("onmousedown",this._doOnSetValue);if(a.runner2){a.runner2.detachEvent("onmousedown",this._initMover)}}};dhtmlXSlider.prototype._mergeConfig=function(c){for(var a in c){switch(a.toLowerCase()){case"min":case"max":case"size":case"step":case"value":case"inverse":this.conf[a]=c[a];break;case"tooltip":case"visible":case"vertical":case"disabled":case"range":case"bg":this.conf[a]=dhx4.s2b(c[a]);break;case"bg_mode":this.conf[a]=({left:"left",right:"right"}[c[a]])||"left";break;case"parent":continue;break;case"skin":this.conf[a]=(this._skinCollection[c[a]]==true?c[a]:null);break;default:this.conf[a]=c[a]}}};dhtmlXSlider.prototype._readAttFormNode=function(g){var j=g.attributes,a=j.length,e,h={},c;for(e=0;e<a;e++){c=j[e];switch(c.name.toLowerCase()){case"size":case"min":case"max":case"value":case"step":h[c.name]=Number(c.value);break;case"skin":h[c.name]=c.value;break;case"vertical":case"disabled":case"visible":case"range":case"bg":h[c.name]=dhx4.s2b(c.value);break;case"linkto":h[c.name]=c.value;break;case"tooltip":h[c.name]=dhx4.s2b(c.value);break;case"bg_mode":h[c.name]=({left:"left",right:"right"}[c.value])||"left";break}}return h};dhtmlXSlider.prototype._renderArgumets=function(a){var g={},e,c;c=a.length;for(e=0;e<c;e++){switch(e){case 0:g.parent=a[e];break;case 1:g.size=a[e];break;case 2:g.skin=a[e];break;case 3:g.vertical=a[e];break;case 4:g.min=a[e];break;case 5:g.max=a[e];break;case 6:g.value=a[e];break;case 7:g.step=a[e];break}}return g};dhtmlXSlider.prototype._skinCollection={dhx_skyblue:true,dhx_web:true,dhx_terrace:true};dhtmlXSlider.prototype._indexOf=function(a,g){var e,c,h=-1;c=a.length;for(e=c;e>=0;e--){if(a[e]==g){h=e;break}}return h};dhtmlXSlider.prototype._refreshRunner=function(h){var g=(this.conf.vertical==true?{x:"top",y:"left",ofs_w:"offsetHeight",ofs_h:"offsetWidth"}:{x:"left",y:"top",ofs_w:"offsetWidth",ofs_h:"offsetHeight"});var a=this._nodes.cont[g.ofs_w]-this._nodes.runner[g.ofs_w];var e=this._nodes.runner;var c=this._nodes.runner2;if(h==null||h==0){var j=this._getCoord(a,(this.conf.value instanceof Array?this.conf.value[0]:this.conf.value));e.style[g.x]=j+this.conf.border+"px";e.style[g.y]=Math.round((this._nodes.cont[g.ofs_h]-e[g.ofs_h])/2)+"px"}if(this.conf.range==true&&(h==null||h==1)){var j=this._getCoord(a,this.conf.value[1]);c.style[g.x]=j+this.conf.border+"px";c.style[g.y]=Math.round((this._nodes.cont[g.ofs_h]-e[g.ofs_h])/2)+"px"}if(this.conf.range==true){if(e.style[g.x]==c.style[g.x]&&this.conf.value[1]==this.conf.max){if(e.style.zIndex!=2){e.style.zIndex=2}}else{if(e.style.zIndex==2){e.style.zIndex=1}}}e=c=null;this._refreshBG()};dhtmlXSlider.prototype._setValueByCoord=function(g){var a=dhx4.absLeft(this._nodes.cont),h=dhx4.absTop(this._nodes.cont),e,c;if(this.conf.vertical){c=(g.y-h-this._nodes.runner.offsetHeight/2)/(this._nodes.cont.offsetHeight-this._nodes.runner.offsetHeight)}else{c=(g.x-a-this._nodes.runner.offsetWidth/2)/(this._nodes.cont.offsetWidth-this._nodes.runner.offsetWidth)}e=(this.conf.max-this.conf.min)*c+this.conf.min;this.setValue(e,true)};dhtmlXSlider.prototype._getCoord=function(a,g){var e=(this.conf.inverse?this._inverseValue(g):g);var c=(e-this.conf.min)/(this.conf.max-this.conf.min);return Math.round(a*c)};dhtmlXSlider.prototype._normalize=function(g,e,a){g=Number(g);g=Math.round(g/this.conf.step)*this.conf.step;var c=Math.pow(10,this.conf.decimals);g=Math.round(g*c)/c;g=Math.max(e,Math.min(a,g));return g};dhtmlXSlider.prototype._normalizeRange=function(e,c,a){if(e[1]<e[0]){e[1]=e[0]}e[0]=this._normalize(e[0],c,Math.min(a,e[1]));e[1]=this._normalize(e[1],Math.max(c,e[0]),a);return e};dhtmlXSlider.prototype._refreshBG=function(){if(this.conf.bg!=true){return}var g=this._nodes.track.firstChild;var e=this._nodes.runner;var a=e.nextSibling;var c=(this.conf.vertical==true?{x:"top",w:"height",ofs:"offsetHeight"}:{x:"left",w:"width",ofs:"offsetWidth"});if(this.conf.range==true){g.style[c.x]=Math.floor(parseInt(e.style[c.x])+e[c.ofs]/2)+"px";g.style[c.w]=Math.max(Math.floor(parseInt(a.style[c.x])+a[c.ofs]/2)-parseInt(g.style[c.x]),0)+"px"}else{var h=(this.conf.inverse==true?{left:"right",right:"left"}[this.conf.bg_mode]:this.conf.bg_mode);g.style[c.x]=(h=="left"?"0":Math.floor(parseInt(e.style[c.x])+e[c.ofs]/2))+"px";g.style[c.w]=(h=="left"?Math.floor(parseInt(e.style[c.x])+e[c.ofs]/2):this._nodes.track[c.ofs]-parseInt(g.style[c.x]))+"px"}g=e=a=null};dhtmlXSlider.prototype._attachNode=function(e,a){this._detachNode(a);var c=e.tagName.toLowerCase();if(!c){return}this._attachedNode["node_"+a]=e;switch(c){case"input":case"select":if(typeof(window.addEventListener)=="function"){e.addEventListener("change",this._doOnChangeInput,false);e.addEventListener("keydown",this._doOnKeyDown,false)}else{e.attachEvent("onchange",this._doOnChangeInput);e.attachEvent("onkeydown",this._doOnKeyDown)}this._attachedNode.setValue=function(l,g,j){var h=(l instanceof Array?l[j||0]:l);this["node_"+(j||0)].value=dhtmlXSlider.prototype._atatchedNodeFixDec(h,g)};break;default:this._attachedNode.setValue=function(l,g,j){var h=(l instanceof Array?l[j||0]:l);this["node_"+(j||0)].innerHTML=dhtmlXSlider.prototype._atatchedNodeFixDec(h,g)}}this._attachedNode.setValue(this.conf.value,this.conf.decimals,a)};dhtmlXSlider.prototype._detachNode=function(a){var e=this._attachedNode["node_"+a];if(!e){return}var c=e.tagName;switch(c){case"input":case"select":if(typeof(window.addEventListener)=="function"){e.removeEventListener("change",this._doOnChangeInput,false);e.removeEventListener("keydown",this._doOnChangeInput,false)}else{e.detachEvent("change",this._doOnChangeInput);e.detachEvent("keydown",this._doOnChangeInput)}break}delete this._attachedNode["node_"+a];delete this._attachedNode.setValue;e=null};dhtmlXSlider.prototype._atatchedNodeFixDec=function(g,a){g=String(g);if(a>0){var c=g.match(/\.\d{1,}$/);if(c!=null){a=Math.max(a-c[0].length+1)}g+=(g.indexOf(".")<0?".":"");for(var e=0;e<a;e++){g+="0"}}return g};dhtmlXSlider.prototype._detectDecimals=function(){var a=this.conf.step.toString().match(/\.(\d*)$/);this.conf.decimals=(a!=null?a[1].length:0)};dhtmlXSlider.prototype.setSize=function(a){if(!isNaN(a)){if(this.conf.vertical){if(this._nodes.cont.style.width){delete this._nodes.cont.style.width}this._nodes.cont.style.height=a-this.conf.margin+"px"}else{if(this._nodes.cont.style.height){delete this._nodes.cont.style.height}this._nodes.cont.style.width=a-this.conf.margin+"px"}this._refreshRunner()}};dhtmlXSlider.prototype.setSkin=function(h){h=h.toLowerCase();var e,c=-1,a,g="dhtmlxslider";e=this.base.className.match(/\S\w+/ig);if(e instanceof Array){for(a in this._skinCollection){if(c==-1){c=this._indexOf(e,g+"_"+a)}else{break}}c=(c==-1)?e.length:c}else{e=[];c=0}e[c]=g+"_"+h;this.base.className=e.join(" ");this.conf.skin=h;if(this._nodes){this._refreshRunner()}};dhtmlXSlider.prototype.setValue=function(g,h){h=h||false;var c=null;var e=false;if(this.conf.range==true){if(this._r_actv!=null){c=(this._r_actv==this._nodes.runner?0:1)}g=this._normalizeRange(g,this.conf.min,this.conf.max);e=(this.conf.value[0]!=g[0]||this.conf.value[1]!=g[1])}else{g=this._normalize(g,this.conf.min,this.conf.max);e=(this.conf.value!=g)}if(e=true){this.conf.value=g;this._refreshRunner(c);this._refreshTooltip();if(h){var a=[g,this];if(this.conf.range==true){if(this._r_actv!=null){a.push(this._r_actv==this._nodes.runner?0:1)}else{if(this.conf.init_index!=null){a.push(this.conf.init_index.valueOf())}}}this.callEvent("onChange",a)}}if(typeof(this._attachedNode.setValue)=="function"){if(c==null){c=this.conf.init_index}this._attachedNode.setValue(this.conf.value,this.conf.decimals,c)}};dhtmlXSlider.prototype.getValue=function(){if(this.conf.range==true){return[this.conf.value[0].valueOf(),this.conf.value[1].valueOf()]}else{return this.conf.value.valueOf()}};dhtmlXSlider.prototype._inverseValue=function(a){return this.conf.max+this.conf.min-a};dhtmlXSlider.prototype.disable=function(h){h=(h==false)?false:true;var g=null;if(h){for(var c in this._nodes){if(c=="cont"){continue}var e=(c=="runner2"?"runner":c);if(this._nodes[c]!=null){g=new RegExp("\\s?dhxsl_"+e+"_dis","i");if(!g.test(this._nodes[c].className)){this._nodes[c].className+=" dhxsl_"+e+"_dis"}}}this.conf.disabled=true}else{this.enable()}};dhtmlXSlider.prototype.enable=function(){var g;for(var c in this._nodes){if(c=="cont"){continue}var e=(c=="runner2"?"runner":c);if(this._nodes[c]!=null){g=new RegExp("\\s?dhxsl_"+e+"_dis","i");if(g.test(this._nodes[c].className)){this._nodes[c].className=this._nodes[c].className.replace(g,"")}}}this.conf.disabled=false};dhtmlXSlider.prototype.isEnabled=function(){return !this.conf.disabled};dhtmlXSlider.prototype.disableTooltip=function(){this._nodes.cont.removeAttribute("title");this.conf.tooltip=false};dhtmlXSlider.prototype.enableTooltip=function(a){if(typeof(a)=="undefined"){a=true}else{a=dhx4.s2b(a)}if(a){this.conf.tooltip=true;this._refreshTooltip()}else{this.disableTooltip()}};dhtmlXSlider.prototype.setMax=function(a){if(!isNaN(a)&&this.conf.min<a){this.conf.max=a;this.setValue(this.conf.value)}};dhtmlXSlider.prototype.getMax=function(){return this.conf.max};dhtmlXSlider.prototype.setMin=function(a){if(!isNaN(a)&&this.conf.max>a){this.conf.min=a;this.setValue(this.conf.value)}};dhtmlXSlider.prototype.getMin=function(){return this.conf.min};dhtmlXSlider.prototype.setStep=function(a){var c=this.conf.max-this.conf.min;if(!isNaN(a)&&a<c){this.conf.step=a;this._detectDecimals();this.setValue(this.conf.value)}};dhtmlXSlider.prototype.getStep=function(){return this.conf.step};dhtmlXSlider.prototype.show=function(){if(/\s?dhxsl_hidden/i.test(this._nodes.cont.className)){this._nodes.cont.className=this._nodes.cont.className.replace(/\s?dhxsl_hidden/i,"")}this.conf.visible=true};dhtmlXSlider.prototype.hide=function(){if(!/\s?dhxsl_hidden/i.test(this._nodes.cont.className)){this._nodes.cont.className+=" dhxsl_hidden"}this.conf.visible=false};dhtmlXSlider.prototype.isVisible=function(){return this.conf.visible};dhtmlXSlider.prototype.linkTo=function(a){if(!(a instanceof Array)){a=[a]}for(var c=0;c<a.length&&c<2;c++){if(a[c]!=null){if(typeof(a[c])=="string"){a[c]=document.getElementById(a[c])}this._attachNode(a[c],c)}}};dhtmlXSlider.prototype._refreshTooltip=function(){if(this.conf.tooltip==true){if(this.conf.value instanceof Array){this._nodes.cont.title=this.conf.value.join(", ")}else{this._nodes.cont.title=this.conf.value}}};dhtmlXSlider.prototype.getRunnerIndex=function(){if(this._r_actv==null){return -1}return(this._r_actv==this._nodes.runner?0:1)};function dhtmlXPopup(e){var g=this;this.conf=e||{};e=null;this.mode=(this.conf.mode||"bottom");this.conf.zi=window.dhx4.newId();this.conf.context=(this.conf.context==null?true:window.dhx4.s2b(this.conf.context));this.conf.IE6_display_fix=(this.conf.IE6_display_fix==null?false:window.dhx4.s2b(this.conf.IE6_display_fix));this.conf.last_p_click=this.conf.last_body_click=null;this.p=document.createElement("DIV");this.p.style.display="none";this.p.innerHTML="<div class='dhx_popup_area"+(window.dhx4.isIE?" dhx_popup_area_ie":"")+"'><table cellspacing='0' cellpadding='0' border='0' class='dhx_popup_table'><tbody></tbody></table></div><div class='dhx_popup_arrow dhx_popup_arrow_"+this.mode+"'></div>";document.body.appendChild(this.p);this.p.oncontextmenu=function(a){if(g.conf.context==false){a=a||event;a.returnValue=false;return false}};this.skinParams={dhx_terrace:{t0:19,t1:9,t2:19,t3:9},dhx_skyblue:{t0:12,t1:9,t2:12,t3:9},dhx_web:{t0:12,t1:9,t2:12,t3:9}};this.p.ontouchstart=this.p.onclick=function(j){j=j||event;var h=(g.conf.last_p_click!=null&&g.conf.last_p_click!=j.type);g.conf.last_p_click=j.type;if(h==true){return}g._clearClick=true;if(g._nodeObj!=null){g.callEvent("onContentClick",[]);return true}var a=(j.target||j.srcElement);var l=null;while(a!=g.p&&a!=null){if(typeof(a._idd)!="undefined"&&!a._isSeparator){l=a._idd;a=null}else{a=a.parentNode}}a=null;if(l!=null){g.callEvent("onClick",[l]);if(g!=null&&g.isVisible!=null&&g.isVisible()&&g.callEvent("onBeforeHide",["select",j,l])===true){j.cancelBubble=true;g.hide()}}};this.separator="DHXSEP_"+window.dhx4.newId();this.tpl=[];this._setTemplate=function(a){this.tpl=a.split(",")};this.show=function(h){var a=null;if(arguments.length==1){if(!h){h=this.conf.id[0]}else{if(!this._idExists(h)){return}}if(this.conf.toolbar){a=this.conf.toolbar._getItemDim(h)}if(this.conf.ribbon){a=this.conf.ribbon._getItemDim(h)}if(this.conf.form){a=this.conf.form._getItemDim(h)}}else{if(arguments.length==4){this._clearClick=true;a={left:arguments[0],top:arguments[1],width:arguments[2],height:arguments[3]};h=null}}if(!a){return}this.p.style.visibility="hidden";this.p.style.display="";this._setPos(a);this.p.style.zIndex=window.dhx4.zim.reserve(this.conf.zi);this.p.style.visibility="visible";this._lastId=h;this.callEvent("onShow",[h])};this._setPos=function(I,m){var v=I.left;var s=I.top;var C=I.width;var L=I.height;this._posData={left:v,top:s,width:C,height:L};var N=window.dhx4.screenDim();var F=m||this.mode;if(typeof(m)=="undefined"){m=false}var P={top:(s-this.p.offsetHeight)-N.top,bottom:N.bottom-(s+L+this.p.offsetHeight),left:v-this.p.offsetWidth-N.left,right:N.right-(v+C+this.p.offsetWidth)};if(!m&&P[F]<0){var J=this._getAvailPos(F,P);if(J!==false){this._setPos(I,J);return}}if(F=="top"||F=="bottom"){var D=this.skinParams[this.conf.skin].t2;var A=this.skinParams[this.conf.skin].t3;var r=Math.round(this.p.offsetWidth/2);var a=Math.round(this.p.lastChild.offsetWidth/2);if(v<N.left){var M=Math.min(v+C,N.left);C=v+C-M;v=M}if(v+C>N.right){C=N.right-v}var u=Math.round(v+C/2);var l=u-r;var K=u-D-a;var o=u+a+D-this.p.offsetWidth;if(l<N.left-A){l=Math.min(N.left-A,K)}else{if(l+this.p.offsetWidth>N.right+A){l=Math.max(o,N.right+A-this.p.offsetWidth)}}this.p.style.left=l+"px";this.p.style.top=(F=="top"?s-this.p.offsetHeight:s+L)+"px";u=u-l-a;this.p.lastChild.className="dhx_popup_arrow dhx_popup_arrow_"+F;this.p.lastChild.style.top=(F=="top"?this.p.offsetHeight-this.p.lastChild.offsetHeight:0)+"px";this.p.lastChild.style.left=u+"px"}if(F=="left"||F=="right"){var D=this.skinParams[this.conf.skin].t0;var A=this.skinParams[this.conf.skin].t1;var n=Math.round(this.p.offsetHeight/2);var S=Math.round(this.p.lastChild.offsetHeight/2);if(s<N.top){var j=Math.min(s+L,N.top);L=s+L-j;s=j}if(s+L>N.bottom){L=N.bottom-s}var u=Math.round(s+L/2);var H=u-n;var Q=u-D-S;var O=u+S+D-this.p.offsetHeight;if(H<N.top-A){H=Math.min(N.top-A,Q)}else{if(H+this.p.offsetHeight>N.bottom+A){H=Math.max(O,N.bottom+A-this.p.offsetHeight)}}this.p.style.left=(F=="left"?v-this.p.offsetWidth:v+C)+"px";this.p.style.top=H+"px";u=u-H-S;this.p.lastChild.className="dhx_popup_arrow dhx_popup_arrow_"+F;this.p.lastChild.style.left=(F=="left"?this.p.offsetWidth-this.p.lastChild.offsetWidth:0)+"px";this.p.lastChild.style.top=u+"px"}if(this._IEDisp&&this._nodeId!=null){var E=document.getElementById(this._nodeId);if(this.conf.IE6_display_fix==true){E.style.visibility="hidden"}window.setTimeout(function(){E.style.visibility="visible";E=null},1)}};this._getAvailPos=function(o,n){var j={top:["bottom","right","left"],bottom:["top","right","left"],left:["right","bottom","top"],right:["left","bottom","top"]};var l=null;for(var m=0;m<j[o].length;m++){if(l==null&&n[j[o][m]]>0){l=j[o][m]}}if(l==null){l="bottom";for(var h in n){if(n[h]>n[l]){l=h}}}if(l==o){return false}return l};this._repaint=function(){if(this.isVisible()){this._setPos(this._posData)}};this.clear=function(){if(this._nodeObj){if(window.dhx4.isIE&&typeof(window.dhtmlXLayoutObject)=="function"&&this._nodeObj instanceof window.dhtmlXLayoutObject){this.p.onmousedown=null}if(this._nodeObj.unload){this._nodeObj.unload()}else{if(this._nodeObj.destruct){this._nodeObj.destruct()}}this._nodeObj=this._nodeId=null;if(this._nodeObjEv!=null){for(var h=0;h<this._nodeObjEv.length;h++){this.detachEvent(this._nodeObjEv[h])}this._nodeObjEv=null}}if(this._IEHoverInited){this._IEHoverClear()}var a=this.p.firstChild.firstChild.firstChild;while(a.childNodes.length>0){a.removeChild(a.lastChild)}a=null;this.itemData={}};this.hide=function(){if(this.p.style.display!="none"){this.p.style.display="none";window.dhx4.zim.clear(this.conf.zi);var a=this._lastId;this._lastId=null;this.callEvent("onHide",[a]);this.conf.last_p_click=this.conf.last_body_click=null}};this.isVisible=function(){return(this.p.style.display=="")};this.itemData={};this.getItemData=function(a){if(!a){return this.itemData}if(this.itemData[a]){return this.itemData[a]}return{}};this.setSkin=function(a){this.conf.skin=a;this.p.className="dhx_popup_"+this.conf.skin;if(this._nodeObj!=null&&typeof(this._nodeObj.setSkin)=="function"){this._nodeObj.setSkin(this.conf.skin)}this._repaint()};this.attachList=function(j,o){this._setTemplate(j);this.clear();var l=this.p.firstChild.firstChild.firstChild;for(var n=0;n<o.length;n++){var m=document.createElement("TR");if(o[n]!=this.separator){if(typeof(o[n].id)=="undefined"||o[n].id==null){m._idd=window.dhx4.newId();while(this.itemData[m._idd]!=null){m._idd=window.dhx4.newId()}}else{m._idd=o[n].id}this.itemData[m._idd]=o[n]}l.appendChild(m);if(o[n]==this.separator){m.className="dhx_popup_sep";m._isSeparator=true;var s=document.createElement("TD");s.className="dhx_popup_sep";s.colSpan=this.tpl.length;s.innerHTML="<div class='dhx_popup_sep'>&nbsp;</div>";m.appendChild(s);s=null}else{for(var a=0;a<this.tpl.length;a++){var h="dhx_popup_td";if(this._IEFirstLast&&(this.tpl.length==1||a==0||a==this.tpl.length-1)){if(this.tpl.length==1){h+=" dhx_popup_td_single"}else{h+=(a==0?" dhx_popup_td_first":" dhx_popup_td_last")}}var s=document.createElement("TD");s.className=h;s.innerHTML=o[n][this.tpl[a]]||"&nbsp;";m.appendChild(s);s=null}if(this._IEHover){m._IEHover=true;if(!this._IEHoverInited){this._IEHoverInit()}}}m=null}l=null;this._repaint()};this._attachNode=function(l,j){this.clear();this._nodeId="dhxpopup_node_"+window.dhx4.newId();var a=this.p.firstChild.firstChild.firstChild;var h=document.createElement("TR");h.className="dhxnode";a.appendChild(h);var m=document.createElement("TD");m.className="dhx_popup_td";m.innerHTML="<div id='"+this._nodeId+"' style='position:relative;'></div>";if(j.width){m.firstChild.style.width=j.width+"px"}if(j.height){m.firstChild.style.height=j.height+"px"}h.appendChild(m);m=h=a=null;if(typeof(this["_attach_init_"+l])=="function"){this["_attach_init_"+l](j);this._enableIEVFix()}this._repaint();return this._nodeObj};this.unload=function(){if(typeof(window.addEventListener)=="function"){window.removeEventListener("touchstart",this._doOnClick,false);window.removeEventListener("click",this._doOnClick,false);window.removeEventListener("keyup",this._doOnKeyUp,false);window.removeEventListener("unload",this._doOnUnload,false)}else{document.body.detachEvent("onclick",this._doOnClick,false);document.body.detachEvent("onkeyup",this._doOnKeyUp,false);document.body.detachEvent("onunload",this._doOnUnload,false)}window.dhx4.detachEvent(this.conf.ev_grid_click);this.clear();if(this.conf.toolbarEvent!=null&&this.conf.toolbar!=null){if(this.conf.toolbar.detachEvent!=null){this.conf.toolbar.detachEvent(this.conf.toolbarEvent)}else{this.conf.toolbar._getItemDim=null}}if(this.conf.ribbonEvent!=null&&this.conf.ribbon!=null){if(this.conf.ribbon.detachEvent!=null){this.conf.ribbon.detachEvent(this.conf.ribbonEvent)}else{this.conf.ribbon._getItemDim=null}}if(this.conf.slider!=null){for(var j=0;j<this.conf.slider_events.length;j++){this.conf.slider.detachEvent(this.conf.slider_events[j])}this.conf.slider_events=null;this._sliderShow=this._sliderHide=null;this.conf.slider=null}window.dhx4._eventable(this,"clear");this.p.onclick=this.p.ontouchstart=this.p.oncontextmenu=null;this.p.parentNode.removeChild(this.p);this.p=null;for(var h in this.conf){this.conf[h]=null}for(var h in this){this[h]=null}g=null};window.dhx4._eventable(this);this._doOnClick=function(o){o=o||event;var a=(g.conf.last_body_click!=null&&g.conf.last_body_click!=o.type);g.conf.last_body_click=o.type;if(a==true){return}if(g._clearClick==true){g._clearClick=false;return}if(g.conf.form!=null){var j;var s=(o.target||o.srcElement);if((s.tagName||"").toLowerCase()=="option"){s=s.parentNode}if(s.className!=null&&s.className.search("dhxform")>=0){if(s.parentNode!=null&&s.parentNode.parentNode!=null&&s.parentNode.parentNode._idd!=null){j=s.parentNode.parentNode._idd;if(s.parentNode.parentNode._type=="ra"){j=[s.parentNode.parentNode._group,s.parentNode.parentNode._value]}}}else{var m=true;var n=false;while(m&&!n){var l=(s.className||"").toLowerCase();if(l.length>0){n=(l=="dhxform_btn"||l.search(/dhxeditor_inside/gi)>=0||l=="dhxcombo_input"||l.search(/dhxcombolist/gi)>=0)}s=s.parentNode;m=(s!=null)}if(n){return}}s=null;if(j!=null&&g._idExists(j)){return}}if(typeof(window.dhtmlXForm)=="function"&&g._nodeObj instanceof window.dhtmlXForm){var u={};var l=0;var h=g._nodeObj;h.forEachItem(function(r){if(h.getItemType(r)=="combo"){u[h.getCombo(r).list._listId]=true;l++}});h=null;if(l>0){var s=(o.target||o.srcElement);var m=true;var n=false;while(m==true&&n!=true){var l=(s.className||"").toLowerCase();if(l.length>0&&l.search(/^dhxcombolist/gi)>=0&&s._listId!=null&&u[s._listId]==true){n=true;s=null}else{s=s.parentNode;m=(s!=null)}}if(n==true){return}}}if(g.isVisible()&&g.callEvent("onBeforeHide",["click",o])===true){g.hide()}};this._doOnKeyUp=function(a){a=a||event;if(a.keyCode==27){if(g.isVisible()&&g.callEvent("onBeforeHide",["esc",a])===true){g.hide()}}};this._doOnUnload=function(){g.unload()};if(typeof(window.addEventListener)=="function"){window.addEventListener("touchstart",this._doOnClick,false);window.addEventListener("click",this._doOnClick,false);window.addEventListener("keyup",this._doOnKeyUp,false);window.addEventListener("unload",this._doOnUnload,false)}else{document.body.attachEvent("onclick",this._doOnClick,false);document.body.attachEvent("onkeyup",this._doOnKeyUp,false);document.body.attachEvent("onunload",this._doOnUnload,false)}this.conf.ev_grid_click=window.dhx4.attachEvent("_onGridClick",function(h,a){if(g._nodeObj!=null&&(g._nodeObj==a||g._findGrid(g._nodeObj,a)==true)){}else{g._clearClick=false;g._doOnClick(h)}a=null});this._findGrid=function(h,a){var j=false;if(typeof(window.dhtmlXTabBar)=="function"&&h instanceof window.dhtmlXTabBar){h.forEachTab(function(l){var m=l.getAttachedObject();if(j==false&&m!=null){j=j||(m==a)||this._findGrid(m);m=null}})}return j};this._idExists=function(j){var a=false;for(var h=0;h<this.conf.id.length;h++){if(this.conf.id[h] instanceof Array){a=a||(this.conf.id[h][0]==j[0]&&this.conf.id[h][1]==j[1])}else{a=a||this.conf.id[h]==j}}return a};this._IEDisp=(window.dhx4.isIE6||document.compatMode!="CSS1Compat");this._IEHover=(window.dhx4.isIE6==true);if(this._IEHover){this._IEHoverInit=function(){this.p.onmouseover=function(){var a=event.srcElement;while(a!=this&&a._IEHover!=true){a=a.parentNode}if(a._IEHover){if(g._IEHoverTM){window.clearTimeout(g._IEHoverTM)}if(g._lastIEHover==a){return}g._IEHoverRender(a);a=null}};this.p.onmouseout=function(){if(g._IEHoverTM){window.clearTimeout(g._IEHoverTM)}g._IEHoverTM=window.setTimeout(function(){g._IEHoverRender(null)},1)};this._IEHoverRender=function(a){if(this._lastIEHover!=null){if(this._lastIEHover.className.search(/tr_hover/gi)>=0){this._lastIEHover.className=this._lastIEHover.className.replace(/\s{0,}tr_hover/gi,"");this._lastIEHover=null}}if(a!=null&&a.className.search(/tr_hover/gi)<0){a.className+=" tr_hover";g._lastIEHover=a}};this._IEHoverInited=true};this._IEHoverClear=function(){this.p.onmouseover=null;this.p.onmouseout=null;this._IEHoverInited=false}}this._IEFirstLast=(window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8);this._enableIEVFix=function(){if(window.dhx4.isIE6||window.dhx4.isIE7){var h=this.attachEvent("onHide",function(){document.getElementById(this._nodeId).style.visibility="hidden"});var a=this.attachEvent("onShow",function(){document.getElementById(this._nodeId).style.visibility="visible"});if(this._nodeObjEv==null){this._nodeObjEv=[]}this._nodeObjEv.push(h,a)}};if(typeof(window.dhtmlXToolbarObject)=="function"&&this.conf.toolbar!=null&&this.conf.toolbar instanceof window.dhtmlXToolbarObject&&this.conf.id!=null){if(!(this.conf.id instanceof Array)){this.conf.id=[this.conf.id]}this.skinParent=this.conf.toolbar.conf.skin;this._doOnToolbarClick=function(h){for(var a=0;a<g.conf.id.length;a++){if(h==g.conf.id[a]){if(h!=g._lastId){g.show(h);g._clearClick=true}}}};if(typeof(dhtmlXToolbarObject.prototype._getItemDim)=="undefined"){dhtmlXToolbarObject.prototype._getItemDim=function(j){var a=this.objPull[this.idPrefix+j];var h={left:window.dhx4.absLeft(a.obj),top:window.dhx4.absTop(a.obj),width:a.obj.offsetWidth+(a.arw?a.arw.offsetWidth:0),height:a.obj.offsetHeight};a=null;return h}}this.conf.toolbarEvent=this.conf.toolbar.attachEvent("onClick",this._doOnToolbarClick)}if(typeof(window.dhtmlXRibbon)=="function"&&this.conf.ribbon!=null&&this.conf.ribbon instanceof window.dhtmlXRibbon&&this.conf.id!=null){if(!(this.conf.id instanceof Array)){this.conf.id=[this.conf.id]}this.skinParent=this.conf.ribbon.conf.skin;this._doOnRibbonClick=function(h){for(var a=0;a<g.conf.id.length;a++){if(h==g.conf.id[a]){if(h!=g._lastId){g.show(h);g._clearClick=true}}}};if(typeof(dhtmlXRibbon.prototype._getItemDim)=="undefined"){dhtmlXRibbon.prototype._getItemDim=function(j){var a=this._items[j].base;var h={left:window.dhx4.absLeft(a),top:window.dhx4.absTop(a),width:a.offsetWidth,height:a.offsetHeight};a=null;return h}}this.conf.ribbonEvent=this.conf.ribbon.attachEvent("_showPopup",this._doOnRibbonClick)}if(typeof(window.dhtmlXForm)=="function"&&this.conf.form!=null&&this.conf.form instanceof window.dhtmlXForm&&this.conf.id!=null){if(!(this.conf.id instanceof Array)){this.conf.id=[this.conf.id]}if(!this.conf.mode){this.mode="right"}this.skinParent=this.conf.form.skin;if(typeof(dhtmlXForm.prototype._getItemDim)=="undefined"){dhtmlXForm.prototype._getItemDim=function(a,h){return this.doWithItem(a,"_getDim")};for(var c in {input:1,password:1,select:1,multiselect:1,checkbox:1,radio:1,button:1,combo:1,btn2state:1,calendar:1,colorpicker:1,editor:1}){if(dhtmlXForm.prototype.items[c]!=null){dhtmlXForm.prototype.items[c]._getDim=function(h){var a=h;if({ta:true,pw:true,se:true,calendar:true,colorpicker:1,editor:true}[h._type]){a=h.childNodes[h._ll?1:0].childNodes[0]}if({ch:true,ra:true,btn2state:true}[h._type]){a=h.childNodes[h._ll?1:0].childNodes[1]}if({bt:true}[h._type]){a=h.firstChild}if({combo:true}[h._type]){a=h._combo.DOMParent.firstChild}var j={left:window.dhx4.absLeft(a),top:window.dhx4.absTop(a),width:a.offsetWidth,height:a.offsetHeight};a=null;return j}}}}}if(typeof(window.dhtmlXSlider)=="function"&&this.conf.slider!=null&&this.conf.slider instanceof window.dhtmlXSlider){if(!this.conf.mode){this.mode="top"}this.conf.slider_tm=null;this._sliderShow=function(){if(g.conf.slider_tm){window.clearTimeout(g.conf.slider_tm)}var a=g.conf.slider._r_actv;if(a!=null){var h={left:window.dhx4.absLeft(a),top:window.dhx4.absTop(a),width:a.offsetWidth,height:a.offsetHeight};g.show(h.left,h.top,h.width,h.height);a=null}};this._sliderHide=function(){g.conf.slider_tm=window.setTimeout(function(){g.hide()},200)};this.conf.slider_events=[this.conf.slider.attachEvent("onMouseDown",this._sliderShow),this.conf.slider.attachEvent("onMouseUp",this._sliderHide),this.conf.slider.attachEvent("onChange",this._sliderShow)]}this.setSkin(this.skinParent||this.conf.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhx_popup")||"dhx_skyblue");return this}dhtmlXPopup.prototype.attachObject=function(a){return this._attachNode("object",{obj:a})};dhtmlXPopup.prototype._attach_init_object=function(a){this._nodeObj=(typeof(a.obj)=="string"?document.getElementById(a.obj):a.obj);a.obj=null;document.getElementById(this._nodeId).appendChild(this._nodeObj);this._nodeObj.style.display="";this._nodeObj.style.visibility="visible"};dhtmlXPopup.prototype.attachHTML=function(a){return this._attachNode("html",{html:a})};dhtmlXPopup.prototype._attach_init_html=function(a){document.getElementById(this._nodeId).innerHTML=a.html;this._nodeObj={text:a.html}};dhtmlXPopup.prototype.attachForm=function(c,a){return this._attachNode("form",{struct:c,width:a})};dhtmlXPopup.prototype._attach_init_form=function(c){var a=this;this._nodeObj=new dhtmlXForm(this._nodeId,c.struct);this._nodeObj.setSkin(this.conf.skin);this._nodeObj.attachEvent("_onBeforeEditorAccess",function(){a._clearClick=true});if(this.conf.editorEv!=null&&this.checkEvent(this.conf.editorEv)==false){this.conf.editorEv=null}if(dhtmlXForm.prototype.items.editor!=null&&this.conf.editorEv==null){this.conf.editorEv=this.attachEvent("onShow",function(){var h=dhtmlXForm.prototype.items.editor.editor;for(var e in h){var j=h[e].base;var g=false;while(j!=null){if(j==this.p){g=true;j=null}else{j=j.parentNode}}j=null;if(g==true){h[e].cell.conf.cells_cont=null;h[e].setSizes()}}h=null;this.detachEvent(this.conf.editorEv);this.conf.editorEv=null});if(this._nodeObjEv==null){this._nodeObjEv=[]}this._nodeObjEv.push(this.conf.editorEv)}};dhtmlXPopup.prototype.attachCalendar=function(a){return this._attachNode("calendar",a||{})};dhtmlXPopup.prototype._attach_init_calendar=function(a){if(a["double"]==true){this._nodeObj=new dhtmlXDoubleCalendarObject(this._nodeId);this._nodeObj.leftCalendar.setSkin(this.conf.skin);this._nodeObj.rightCalendar.setSkin(this.conf.skin)}else{this._nodeObj=new dhtmlXCalendarObject(this._nodeId);this._nodeObj.setSkin(this.conf.skin)}this._nodeObj.show()};dhtmlXPopup.prototype.attachGrid=function(c,a){return this._attachNode("grid",{width:c||400,height:a||200})};dhtmlXPopup.prototype._attach_init_grid=function(){this._nodeObj=new dhtmlXGridObject(this._nodeId);this._nodeObj.setSkin(this.conf.skin)};dhtmlXPopup.prototype.attachTree=function(e,c,a){return this._attachNode("tree",{width:e||400,height:c||200,rootId:a||0})};dhtmlXPopup.prototype._attach_init_tree=function(a){this._nodeObj=new dhtmlXTreeObject(this._nodeId,"100%","100%",(a.rootId))};dhtmlXPopup.prototype.attachLayout=function(c,a,e){return this._attachNode("layout",{width:c||400,height:a||200,pattern:e||"3L"})};dhtmlXPopup.prototype._attach_init_layout=function(a){this._nodeObj=new dhtmlXLayoutObject(this._nodeId,a.pattern,this.conf.skin)};dhtmlXPopup.prototype.attachAccordion=function(e,a,c){return this._attachNode("accordion",{width:e||400,height:a||200,conf:c||{}})};dhtmlXPopup.prototype._attach_init_accordion=function(a){a.conf.parent=this._nodeId;a.conf.skin=this.conf.skin;this._nodeObj=new dhtmlXAccordion(a.conf)};dhtmlXPopup.prototype.attachTabbar=function(e,a,c){if(typeof(c)=="string"){c={mode:c}}else{if(typeof(c)!="object"||c==null){c={}}}return this._attachNode("tabbar",{width:e||400,height:a||200,conf:c})};dhtmlXPopup.prototype._attach_init_tabbar=function(a){a.conf.parent=this._nodeId;a.conf.skin=this.conf.skin;this._nodeObj=new dhtmlXTabBar(a.conf)};dhtmlXPopup.prototype.attachSidebar=function(e,a,c){if(c==null){c={}}return this._attachNode("sidebar",{width:e||400,height:a||200,conf:c})};dhtmlXPopup.prototype._attach_init_sidebar=function(a){a.conf.parent=this._nodeId;a.conf.skin=this.conf.skin;this._nodeObj=new dhtmlXSideBar(a.conf)};dhtmlXPopup.prototype.attachEditor=function(e,a,c){return this._attachNode("editor",{width:e||400,height:a||200,conf:c||{}})};dhtmlXPopup.prototype._attach_init_editor=function(c){document.getElementById(this._nodeId).className="dhxeditor_"+this.conf.skin;c.conf.parent=this._nodeId;if(c.conf.skin==null){c.conf.skin=this.conf.skin}this._nodeObj=new dhtmlXEditor(c.conf);var a=this.attachEvent("onShow",function(){if(this._nodeObj instanceof window.dhtmlXEditor){this._nodeObj.setSizes()}});if(this._nodeObjEv==null){this._nodeObjEv=[]}this._nodeObjEv.push(a)};dhtmlXPopup.prototype.attachColorPicker=function(a){if(typeof(a)!="object"||a==null){a={}}return this._attachNode("colorpicker",{conf:a})};dhtmlXPopup.prototype._attach_init_colorpicker=function(a){a.conf.skin=this.conf.skin;a.conf.parent=this._nodeId;this._nodeObj=new dhtmlXColorPicker(a.conf)};dhtmlXPopup.prototype.attachCarousel=function(e,a,c){if(c==null){c={}}return this._attachNode("carousel",{width:e||400,height:a||300,conf:c})};dhtmlXPopup.prototype._attach_init_carousel=function(a){a.conf.parent=this._nodeId;a.conf.skin=this.conf.skin;this._nodeObj=new dhtmlXCarousel(a.conf)};function dhtmlXMenuObject(h,j){var g=this;this.conf={skin:(j||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxmenu")||"dhx_skyblue"),mode:"web",align:"left",is_touched:false,selected:-1,last_click:-1,fixed_pos:false,rtl:false,icons_path:"",arrow_ff_fix:(navigator.userAgent.indexOf("MSIE")>=0&&document.compatMode=="BackCompat"),live_id:window.dhx4.newId(),tags:{root:"menu",item:"item",text_ext:"itemtext",userdata:"userdata",tooltip:"tooltip",hotkey:"hotkey",href:"href"},autoload:{},hide_tm:{},top_mode:true,top_tmtime:200,v_enabled:false,v:{x1:null,x2:null,y1:null,y2:null},dir_toplv:"bottom",dir_sublv:"right",auto_overflow:false,overflow_limit:0,of_utm:null,of_utime:20,of_ustep:3,of_dtm:null,of_dtime:20,of_dstep:3,of_ah:{dhx_skyblue:24,dhx_web:25,dhx_terrace:27},of_ih:{dhx_skyblue:24,dhx_web:24,dhx_terrace:24},tm_sec:400,tm_handler:null,dload:false,dload_url:"",dload_icon:false,dload_params:{action:"loadMenu"},dload_pid:"parentId",tl_botmarg:1,tl_rmarg:0,tl_ofsleft:1,context:false,ctx_zoneid:false,ctx_autoshow:true,ctx_autohide:true,ctx_hideall:true,ctx_zones:{},ctx_baseid:null,selected_sub:[],opened_poly:[]};if(typeof(h)=="object"&&h!=null&&typeof(h.tagName)=="undefined"){if(h.icons_path!=null||h.icon_path!=null){this.conf.icons_path=(h.icons_path||h.icon_path)}if(h.skin!=null){this.conf.skin=h.skin}if(h.visible_area){this.conf.v_enabled=true;this.conf.v={x1:h.visible_area.x1,x2:h.visible_area.x2,y1:h.visible_area.y1,y2:h.visible_area.y2}}for(var e in {json:1,xml:1,items:1,top_text:1,align:1,open_mode:1,overflow:1,dynamic:1,dynamic_icon:1,context:1,onload:1,onclick:1,oncheckboxclick:1,onradioclick:1}){if(h[e]!=null){this.conf.autoload[e]=h[e]}}h=h.parent}if(h==null){this.base=document.body}else{var c=(typeof(h)=="string"?document.getElementById(h):h);if(c!=null){this.base=c;if(!this.base.id){this.base.id="menuBaseId_"+new Date().getTime()}this.base.className+=" dhtmlxMenu_"+this.conf.skin+"_Middle dir_left";this.base._autoSkinUpdate=true;if(this.base.oncontextmenu){this.base._oldContextMenuHandler=this.base.oncontextmenu}this.conf.ctx_baseid=this.base.id;this.base.onselectstart=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};this.base.oncontextmenu=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false}}else{this.base=document.body}}this.idPrefix="";this.topId="dhxWebMenuTopId";this.idPull={};this.itemPull={};this.userData={};this.radio={};this.setSkin=function(m){var n=this.conf.skin;this.conf.skin=m;switch(this.conf.skin){case"dhx_skyblue":case"dhx_web":this.conf.tl_botmarg=2;this.conf.tl_rmarg=1;this.conf.tl_ofsleft=1;break;case"dhx_terrace":this.conf.tl_botmarg=0;this.conf.tl_rmarg=0;this.conf.tl_ofsleft=0;break}if(this.base._autoSkinUpdate){this.base.className=this.base.className.replace("dhtmlxMenu_"+n+"_Middle","")+" dhtmlxMenu_"+this.conf.skin+"_Middle"}for(var l in this.idPull){this.idPull[l].className=String(this.idPull[l].className).replace(n,this.conf.skin)}};this.setSkin(this.conf.skin);this._addSubItemToSelected=function(m,l){var a=true;for(var n=0;n<this.conf.selected_sub.length;n++){if((this.conf.selected_sub[n][0]==m)&&(this.conf.selected_sub[n][1]==l)){a=false}}if(a==true){this.conf.selected_sub.push(new Array(m,l))}return a};this._removeSubItemFromSelected=function(o,n){var a=new Array();var l=false;for(var r=0;r<this.conf.selected_sub.length;r++){if((this.conf.selected_sub[r][0]==o)&&(this.conf.selected_sub[r][1]==n)){l=true}else{a[a.length]=this.conf.selected_sub[r]}}if(l==true){this.conf.selected_sub=a}return l};this._getSubItemToDeselectByPolygon=function(o){var a=new Array();for(var r=0;r<this.conf.selected_sub.length;r++){if(this.conf.selected_sub[r][1]==o){a[a.length]=this.conf.selected_sub[r][0];a=a.concat(this._getSubItemToDeselectByPolygon(this.conf.selected_sub[r][0]));var n=true;for(var l=0;l<this.conf.opened_poly.length;l++){if(this.conf.opened_poly[l]==this.conf.selected_sub[r][0]){n=false}}if(n==true){this.conf.opened_poly[this.conf.opened_poly.length]=this.conf.selected_sub[r][0]}this.conf.selected_sub[r][0]=-1;this.conf.selected_sub[r][1]=-1}}return a};this._hidePolygon=function(a){if(this.idPull["polygon_"+a]!=null){if(this.idPull["polygon_"+a]._zId!=null){window.dhx4.zim.clear(this.idPull["polygon_"+a]._zId)}if(typeof(this._menuEffect)!="undefined"&&this._menuEffect!==false){this._hidePolygonEffect("polygon_"+a)}else{if(this.idPull["polygon_"+a].style.display=="none"){return}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,true,false);if(window.dhx4.isIE6&&this.idPull["polygon_"+a+"_ie6cover"]!=null){this.idPull["polygon_"+a+"_ie6cover"].style.display="none"}}a=String(a).replace(this.idPrefix,"");if(a==this.topId){a=null}this.callEvent("onHide",[a]);if(a!=null&&this.conf.skin=="dhx_terrace"&&this.itemPull[this.idPrefix+a].parent==this.idPrefix+this.topId){this._improveTerraceButton(this.idPrefix+a,true)}}};this._showPolygon=function(H,m){var M=this._countVisiblePolygonItems(H);if(M==0){return}var I="polygon_"+H;if((this.idPull[I]!=null)&&(this.idPull[H]!=null)){if(this.conf.top_mode&&this.conf.mode=="web"&&!this.conf.context){if(!this.idPull[H]._mouseOver&&m==this.conf.dir_toplv){return}}if(!this.conf.fixed_pos){this._autoDetectVisibleArea()}var J=0;var L=0;var O=null;var D=null;if(this.idPull[I]._zId==null){this.idPull[I]._zId=window.dhx4.newId()}this.idPull[I]._zInd=window.dhx4.zim.reserve(this.idPull[I]._zId);this.idPull[I].style.visibility="hidden";this.idPull[I].style.left="0px";this.idPull[I].style.top="0px";this.idPull[I].style.display="";this.idPull[I].style.zIndex=this.idPull[I]._zInd;if(this.conf.auto_overflow){if(this.idPull[I].childNodes[1].childNodes[0].offsetHeight>this.conf.v.y2-this.conf.v.y1){var C=Math.max(Math.floor((this.conf.v.y2-this.conf.v.y1-this.conf.of_ah[this.conf.skin]*2)/this.conf.of_ih[this.conf.skin]),1);this.conf.overflow_limit=C}else{this.conf.overflow_limit=0;if(this.idPull["arrowup_"+H]!=null){this._removeUpArrow(String(H).replace(this.idPrefix,""))}if(this.idPull["arrowdown_"+H]!=null){this._removeDownArrow(String(H).replace(this.idPrefix,""))}}}if(this.conf.overflow_limit>0&&this.conf.overflow_limit<M){if(this.idPull["arrowup_"+H]==null){this._addUpArrow(String(H).replace(this.idPrefix,""))}if(this.idPull["arrowdown_"+H]==null){this._addDownArrow(String(H).replace(this.idPrefix,""))}O=this.idPull["arrowup_"+H];O.style.display="none";D=this.idPull["arrowdown_"+H];D.style.display="none"}if(this.conf.overflow_limit>0&&this.conf.overflow_limit<M){this.idPull[I].childNodes[1].style.height=this.conf.of_ih[this.conf.skin]*this.conf.overflow_limit+"px";O.style.width=D.style.width=this.idPull[I].childNodes[1].style.width=this.idPull[I].childNodes[1].childNodes[0].offsetWidth+"px";this.idPull[I].childNodes[1].scrollTop=0;O.style.display="";J=O.offsetHeight;D.style.display="";L=D.offsetHeight}else{this.idPull[I].childNodes[1].style.height="";this.idPull[I].childNodes[1].style.width=""}if(this.itemPull[H]!=null){var v="polygon_"+this.itemPull[H]["parent"]}else{if(this.conf.context){var v=this.idPull[this.idPrefix+this.topId]}}var a=(this.idPull[H].tagName!=null?window.dhx4.absLeft(this.idPull[H]):this.idPull[H][0]);var N=(this.idPull[H].tagName!=null?window.dhx4.absTop(this.idPull[H]):this.idPull[H][1]);var l=(this.idPull[H].tagName!=null?this.idPull[H].offsetWidth:0);var n=(this.idPull[H].tagName!=null?this.idPull[H].offsetHeight:0);var u=0;var s=0;var A=this.idPull[I].offsetWidth;var K=this.idPull[I].offsetHeight;if(m=="bottom"){if(this.conf.rtl){u=a+(l!=null?l:0)-A}else{if(this.conf.align=="right"){u=a+l-A}else{u=a-1+(m==this.conf.dir_toplv?this.conf.tl_rmarg:0)}}s=N-1+n+this.conf.tl_botmarg}if(m=="right"){u=a+l-1;s=N+2}if(m=="left"){u=a-this.idPull[I].offsetWidth+2;s=N+2}if(m=="top"){u=a-1;s=N-K+2}if(this.conf.fixed_pos){var F=65536;var E=65536}else{var F=(this.conf.v.x2!=null?this.conf.v.x2:0);var E=(this.conf.v.y2!=null?this.conf.v.y2:0);if(F==0){if(window.innerWidth){F=window.innerWidth;E=window.innerHeight}else{F=document.body.offsetWidth;E=document.body.scrollHeight}}}if(u+A>F&&!this.conf.rtl){u=a-A+2}if(u<this.conf.v.x1&&this.conf.rtl){u=a+l-2}if(u<0){u=0}if(s+K>E&&this.conf.v.y2!=null){s=Math.max(N+n-K+2,(this.conf.v_enabled?this.conf.v.y1+2:2));if(this.conf.context&&this.idPrefix+this.topId==H&&D!=null){s=s-2}if(this.itemPull[H]!=null&&!this.conf.context){if(this.itemPull[H]["parent"]==this.idPrefix+this.topId){s=s-this.base.offsetHeight}}}this.idPull[I].style.left=u+"px";this.idPull[I].style.top=s+"px";if(typeof(this._menuEffect)!="undefined"&&this._menuEffect!==false){this._showPolygonEffect(I)}else{this.idPull[I].style.visibility="";if(this.conf.overflow_limit>0&&this.conf.overflow_limit<M){this.idPull[I].childNodes[1].scrollTop=0;this._checkArrowsState(H)}if(window.dhx4.isIE6){var r=I+"_ie6cover";if(this.idPull[r]==null){var o=document.createElement("IFRAME");o.className="dhtmlxMenu_IE6CoverFix_"+this.conf.skin;o.frameBorder=0;o.setAttribute("src","javascript:false;");document.body.insertBefore(o,document.body.firstChild);this.idPull[r]=o}this.idPull[r].style.left=u+"px";this.idPull[r].style.top=s+"px";this.idPull[r].style.width=this.idPull[I].offsetWidth+"px";this.idPull[r].style.height=this.idPull[I].offsetHeight+"px";this.idPull[r].style.zIndex=this.idPull[I].style.zIndex-1;this.idPull[r].style.display=""}}H=String(H).replace(this.idPrefix,"");if(H==this.topId){H=null}this.callEvent("onShow",[H]);if(H!=null&&this.conf.skin=="dhx_terrace"&&this.itemPull[this.idPrefix+H].parent==this.idPrefix+this.topId){this._improveTerraceButton(this.idPrefix+H,false)}}};this._redistribSubLevelSelection=function(o,n){while(this.conf.opened_poly.length>0){this.conf.opened_poly.pop()}var a=this._getSubItemToDeselectByPolygon(n);this._removeSubItemFromSelected(-1,-1);for(var l=0;l<a.length;l++){if((this.idPull[a[l]]!=null)&&(a[l]!=o)){if(this.itemPull[a[l]]["state"]=="enabled"){this.idPull[a[l]].className="sub_item"}}}for(var l=0;l<this.conf.opened_poly.length;l++){if(this.conf.opened_poly[l]!=n){this._hidePolygon(this.conf.opened_poly[l])}}if(this.itemPull[o]["state"]=="enabled"){this.idPull[o].className="sub_item_selected";if(this.itemPull[o]["complex"]&&this.conf.dload&&(this.itemPull[o]["loaded"]=="no")){if(this.conf.dload_icon==true){this._updateLoaderIcon(o,true)}this.itemPull[o].loaded="get";var m=o.replace(this.idPrefix,"");this._dhxdataload.onBeforeXLS=function(){var s={params:{}};s.params[this.conf.dload_pid]=m;for(var r in this.conf.dload_params){s.params[r]=this.conf.dload_params[r]}return s};this.loadStruct(this.conf.dload_url)}if(this.itemPull[o]["complex"]||(this.conf.dload&&(this.itemPull[o]["loaded"]=="yes"))){if((this.itemPull[o]["complex"])&&(this.idPull["polygon_"+o]!=null)){this._updateItemComplexState(o,true,true);this._showPolygon(o,this.conf.dir_sublv)}}this._addSubItemToSelected(o,n);this.conf.selected=o}};this._doOnClick=function(l,w,o){this.conf.last_click=l;if(this.itemPull[this.idPrefix+l]["href_link"]!=null&&this.itemPull[this.idPrefix+l].state=="enabled"){var r=document.createElement("FORM");var u=String(this.itemPull[this.idPrefix+l]["href_link"]).split("?");r.action=u[0];if(u[1]!=null){var n=String(u[1]).split("&");for(var a=0;a<n.length;a++){var v=String(n[a]).split("=");var s=document.createElement("INPUT");s.type="hidden";s.name=(v[0]||"");s.value=(v[1]||"");r.appendChild(s)}}if(this.itemPull[this.idPrefix+l]["href_target"]!=null){r.target=this.itemPull[this.idPrefix+l]["href_target"]}r.style.display="none";document.body.appendChild(r);r.submit();if(r!=null){document.body.removeChild(r);r=null}return}if(w.charAt(0)=="c"){return}if(w.charAt(1)=="d"){return}if(w.charAt(2)=="s"){return}if(this.checkEvent("onClick")){this.callEvent("onClick",[l,this.conf.ctx_zoneid,o])}else{if((w.charAt(1)=="d")||(this.conf.mode=="win"&&w.charAt(2)=="t")){return}}if(this.conf.context&&this._isContextMenuVisible()&&this.conf.ctx_autohide){this._hideContextMenu()}else{if(this._clearAndHide){this._clearAndHide()}}};this._doOnTouchMenu=function(a){if(this.conf.is_touched==false){this.conf.is_touched=true;if(this.checkEvent("onTouch")){this.callEvent("onTouch",[a])}}};this._searchMenuNode=function(n,r){var a=new Array();for(var o=0;o<r.length;o++){if(typeof(r[o])=="object"){if(r[o].length==5){if(typeof(r[o][0])!="object"){if((r[o][0].replace(this.idPrefix,"")==n)&&(o==0)){a=r}}}var l=this._searchMenuNode(n,r[o]);if(l.length>0){a=l}}}return a};this._getMenuNodes=function(o){var l=new Array;for(var n in this.itemPull){if(this.itemPull[n]["parent"]==o){l[l.length]=n}}return l};this._genStr=function(a){var l="dhxId_";var n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var m=0;m<a;m++){l+=n.charAt(Math.round(Math.random()*(n.length-1)))}return l};this.getItemType=function(a){a=this.idPrefix+a;if(this.itemPull[a]==null){return null}return this.itemPull[a]["type"]};this.forEachItem=function(m){for(var l in this.itemPull){m(String(l).replace(this.idPrefix,""))}};this._clearAndHide=function(){g.conf.selected=-1;g.conf.last_click=-1;while(g.conf.opened_poly.length>0){g.conf.opened_poly.pop()}for(var a=0;a<g.conf.selected_sub.length;a++){var l=g.conf.selected_sub[a][0];if(g.idPull[l]!=null){if(g.itemPull[l]["state"]=="enabled"){if(g.idPull[l].className=="sub_item_selected"){g.idPull[l].className="sub_item"}if(g.idPull[l].className=="dhtmlxMenu_"+g.conf.skin+"_TopLevel_Item_Selected"){if(g.itemPull[l]["cssNormal"]!=null){g.idPull[l].className=g.itemPull[l]["cssNormal"]}else{g.idPull[l].className="dhtmlxMenu_"+g.conf.skin+"_TopLevel_Item_Normal"}}}}g._hidePolygon(l)}g.conf.is_touched=false;if(g.conf.context&&g.conf.ctx_hideall){g._hidePolygon(g.idPrefix+g.topId)}};this._showSubLevelItem=function(l,a){if(document.getElementById("arrow_"+this.idPrefix+l)!=null){document.getElementById("arrow_"+this.idPrefix+l).style.display=(a?"none":"")}if(document.getElementById("image_"+this.idPrefix+l)!=null){document.getElementById("image_"+this.idPrefix+l).style.display=(a?"none":"")}if(document.getElementById(this.idPrefix+l)!=null){document.getElementById(this.idPrefix+l).style.display=(a?"":"none")}};this._hideSubLevelItem=function(a){this._showSubLevelItem(a,true)};this.idPrefix=this._genStr(12)+"_";this._bodyClick=function(a){a=a||event;if(a.button==2||(window.dhx4.isOpera&&a.ctrlKey==true)){return}if(g.conf.context){if(g.conf.ctx_autohide&&(!window.dhx4.isOpera||(g._isContextMenuVisible()&&window.dhx4.isOpera))){g._hideContextMenu()}}else{if(g._clearAndHide){g._clearAndHide()}}};this._bodyContext=function(m){m=m||event;var l=String((m.srcElement||m.target).className);if(l.search("dhtmlxMenu")!=-1&&l.search("SubLevelArea")!=-1){return}var a=true;var n=m.target||m.srcElement;while(n!=null){if(n.id!=null){if(g.isContextZone(n.id)){a=false}}if(n==document.body){a=false}n=n.parentNode}if(a){g.hideContextMenu()}};if(typeof(window.addEventListener)!="undefined"){window.addEventListener("click",this._bodyClick,false);window.addEventListener("contextmenu",this._bodyContext,false)}else{document.body.attachEvent("onclick",this._bodyClick);document.body.attachEvent("oncontextmenu",this._bodyContext)}this.unload=function(){window.dhx4._eventable(this,"clear");dhtmlXMenuObject.prototype.liveInst[this.conf.live_id]=null;try{delete dhtmlXMenuObject.prototype.liveInst[this.conf.live_id]}catch(m){}this.conf.live_id=null;if(typeof(window.addEventListener)=="function"){window.removeEventListener("click",this._bodyClick,false);window.removeEventListener("contextmenu",this._bodyContext,false)}else{document.body.detachEvent("onclick",this._bodyClick);document.body.detachEvent("oncontextmenu",this._bodyContext)}this._bodyClick=null;this._bodyContext=null;this.removeItem(this.idPrefix+this.topId,true);this.itemPull=null;this.idPull=null;if(this.conf.context){for(var l in this.conf.ctx_zones){this.removeContextZone(l)}}if(this.cont!=null){this.cont.className="";this.cont.parentNode.removeChild(this.cont);this.cont=null}if(this.base!=null){if(!this.conf.context){this.base.className=""}if(!this.conf.context){this.base.oncontextmenu=(this.base._oldContextMenuHandler||null)}this.base.onselectstart=null;this.base=null}for(var l in this){this[l]=null}g=null};dhtmlXMenuObject.prototype.liveInst[this.conf.live_id]=this;window.dhx4._enableDataLoading(this,"_initObj","_xmlToJson",this.conf.tags.root,{struct:true});window.dhx4._eventable(this);if(window.dhx4.s2b(this.conf.autoload.context)==true){this.renderAsContextMenu()}if(this.conf.autoload.dynamic!=null){this.enableDynamicLoading(this.conf.autoload.dynamic,window.dhx4.s2b(this.conf.autoload.dynamic_icon))}else{if(this.conf.autoload.items!=null){this.loadStruct(this.conf.autoload.items,this.conf.autoload.onload)}else{if(this.conf.autoload.json!=null){this.loadStruct(this.conf.autoload.json,this.conf.autoload.onload)}else{if(this.conf.autoload.xml!=null){this.loadStruct(this.conf.autoload.xml,this.conf.autoload.onload)}}}}for(var e in {onclick:1,oncheckboxclick:1,onradioclick:1}){if(this.conf.autoload[e]!=null){if(typeof(this.conf.autoload[e])=="function"){this.attachEvent(e,this.conf.autoload[e])}else{if(typeof(window[this.conf.autoload[e]])=="function"){this.attachEvent(e,window[this.conf.autoload[e]])}}}}if(this.conf.autoload.top_text!=null){this.setTopText(this.conf.autoload.top_text)}if(this.conf.autoload.align!=null){this.setAlign(this.conf.autoload.align)}if(this.conf.autoload.open_mode!=null){this.setOpenMode(this.conf.autoload.open_mode)}if(this.conf.autoload.overflow!=null){this.setOverflowHeight(this.conf.autoload.overflow)}for(var e in this.conf.autoload){this.conf.autoload[e]=null;delete this.conf.autoload[e]}this.conf.autoload=null;return this}dhtmlXMenuObject.prototype._init=function(){if(this._isInited==true){return}if(this.conf.dload){this._dhxdataload.onBeforeXLS=function(){var e={params:{}};for(var c in this.conf.dload_params){e.params[c]=this.conf.dload_params[c]}return e};this.loadStruct(this.conf.dload_url)}else{this._initTopLevelMenu();this._isInited=true}};dhtmlXMenuObject.prototype._countVisiblePolygonItems=function(j){var g=0;for(var c in this.itemPull){var e=this.itemPull[c]["parent"];var h=this.itemPull[c]["type"];if(this.idPull[c]!=null){if(e==j&&(h=="item"||h=="radio"||h=="checkbox")&&this.idPull[c].style.display!="none"){g++}}}return g};dhtmlXMenuObject.prototype._redefineComplexState=function(c){if(this.idPrefix+this.topId==c){return}if((this.idPull["polygon_"+c]!=null)&&(this.idPull[c]!=null)){var a=this._countVisiblePolygonItems(c);if((a>0)&&(!this.itemPull[c]["complex"])){this._updateItemComplexState(c,true,false)}if((a==0)&&(this.itemPull[c]["complex"])){this._updateItemComplexState(c,false,false)}}};dhtmlXMenuObject.prototype._updateItemComplexState=function(h,e,g){if((!this.conf.context)&&(this._getItemLevelType(h.replace(this.idPrefix,""))=="TopLevel")){this.itemPull[h]["complex"]=e;return}if((this.idPull[h]==null)||(this.itemPull[h]==null)){return}this.itemPull[h]["complex"]=e;if(h==this.idPrefix+this.topId){return}var a=null;var c=this.idPull[h].childNodes[this.conf.rtl?0:2];if(c.childNodes[0]){if(String(c.childNodes[0].className).search("complex_arrow")===0){a=c.childNodes[0]}}if(this.itemPull[h]["complex"]){if(a==null){a=document.createElement("DIV");a.className="complex_arrow";a.id="arrow_"+h;while(c.childNodes.length>0){c.removeChild(c.childNodes[0])}c.appendChild(a)}if(this.conf.dload&&(this.itemPull[h].loaded=="get")&&this.conf.dload_icon){if(a.className!="complex_arrow_loading"){a.className="complex_arrow_loading"}}else{a.className="complex_arrow"}return}if((!this.itemPull[h]["complex"])&&(a!=null)){c.removeChild(a);if(this.itemPull[h]["hotkey_backup"]!=null&&this.setHotKey){this.setHotKey(h.replace(this.idPrefix,""),this.itemPull[h]["hotkey_backup"])}}};dhtmlXMenuObject.prototype._getItemLevelType=function(a){return(this.itemPull[this.idPrefix+a]["parent"]==this.idPrefix+this.topId?"TopLevel":"SubLevelArea")};dhtmlXMenuObject.prototype.setIconsPath=function(a){this.conf.icons_path=a};dhtmlXMenuObject.prototype._updateItemImage=function(g,h){g=this.idPrefix+g;var n=this.itemPull[g]["type"];if(n=="checkbox"||n=="radio"){return}var j=(this.itemPull[g]["parent"]==this.idPrefix+this.topId&&!this.conf.context);var l=null;if(j){for(var a=0;a<this.idPull[g].childNodes.length;a++){try{if(this.idPull[g].childNodes[a].className=="dhtmlxMenu_TopLevel_Item_Icon"){l=this.idPull[g].childNodes[a]}}catch(m){}}}else{try{var l=this.idPull[g].childNodes[this.conf.rtl?2:0].childNodes[0]}catch(m){}if(!(l!=null&&typeof(l.className)!="undefined"&&l.className=="sub_icon")){l=null}}var r=this.itemPull[g][(this.itemPull[g]["state"]=="enabled"?"imgen":"imgdis")];if(r.length>0){if(l!=null){l.src=this.conf.icons_path+r}else{if(j){var l=document.createElement("IMG");l.className="dhtmlxMenu_TopLevel_Item_Icon";l.src=this.conf.icons_path+r;l.border="0";l.id="image_"+g;if(!this.conf.rtl&&this.idPull[g].childNodes.length>0){this.idPull[g].insertBefore(l,this.idPull[g].childNodes[0])}else{this.idPull[g].appendChild(l)}}else{var l=document.createElement("IMG");l.className="sub_icon";l.src=this.conf.icons_path+r;l.border="0";l.id="image_"+g;var o=this.idPull[g].childNodes[this.conf.rtl?2:0];while(o.childNodes.length>0){o.removeChild(o.childNodes[0])}o.appendChild(l)}}}else{if(l!=null){var c=l.parentNode;c.removeChild(l);c.innerHTML="&nbsp;";c=l=null}}};dhtmlXMenuObject.prototype._getAllParents=function(j){var e=new Array();for(var c in this.itemPull){if(this.itemPull[c]["parent"]==j){e[e.length]=this.itemPull[c]["id"];if(this.itemPull[c]["complex"]){var g=this._getAllParents(this.itemPull[c]["id"]);for(var h=0;h<g.length;h++){e[e.length]=g[h]}}}}return e};dhtmlXMenuObject.prototype._autoDetectVisibleArea=function(){if(this.conf.v_enabled){return}var a=window.dhx4.screenDim();this.conf.v.x1=a.left;this.conf.v.x2=a.right;this.conf.v.y1=a.top;this.conf.v.y2=a.bottom};dhtmlXMenuObject.prototype.getItemPosition=function(h){h=this.idPrefix+h;var g=-1;if(this.itemPull[h]==null){return g}var a=this.itemPull[h]["parent"];var e=(this.idPull["polygon_"+a]!=null?this.idPull["polygon_"+a].tbd:this.cont);for(var c=0;c<e.childNodes.length;c++){if(e.childNodes[c]==this.idPull["separator_"+h]||e.childNodes[c]==this.idPull[h]){g=c}}return g};dhtmlXMenuObject.prototype.setItemPosition=function(l,j){l=this.idPrefix+l;if(this.idPull[l]==null){return}var c=(this.itemPull[l]["parent"]==this.idPrefix+this.topId);var a=this.idPull[l];var g=this.getItemPosition(l.replace(this.idPrefix,""));var e=this.itemPull[l]["parent"];var h=(this.idPull["polygon_"+e]!=null?this.idPull["polygon_"+e].tbd:this.cont);h.removeChild(h.childNodes[g]);if(j<0){j=0}if(c&&j<1){j=1}if(j<h.childNodes.length){h.insertBefore(a,h.childNodes[j])}else{h.appendChild(a)}};dhtmlXMenuObject.prototype.getParentId=function(a){a=this.idPrefix+a;if(this.itemPull[a]==null){return null}return((this.itemPull[a]["parent"]!=null?this.itemPull[a]["parent"]:this.topId).replace(this.idPrefix,""))};dhtmlXMenuObject.prototype.hide=function(){this._clearAndHide()};dhtmlXMenuObject.prototype.clearAll=function(){this.removeItem(this.idPrefix+this.topId,true);this._isInited=false;this.idPrefix=this._genStr(12)+"_";this.itemPull={}};if(typeof(dhtmlXMenuObject.prototype.liveInst)=="undefined"){dhtmlXMenuObject.prototype.liveInst={}}dhtmlXMenuObject.prototype._redistribTopLevelSelection=function(g,c){var a=this._getSubItemToDeselectByPolygon("parent");this._removeSubItemFromSelected(-1,-1);for(var e=0;e<a.length;e++){if(a[e]!=g){this._hidePolygon(a[e])}if((this.idPull[a[e]]!=null)&&(a[e]!=g)){this.idPull[a[e]].className=this.idPull[a[e]].className.replace(/Selected/g,"Normal")}}if(this.itemPull[this.idPrefix+g]["state"]=="enabled"){this.idPull[this.idPrefix+g].className="dhtmlxMenu_"+this.conf.skin+"_TopLevel_Item_Selected";this._addSubItemToSelected(this.idPrefix+g,"parent");this.conf.selected=(this.conf.mode=="win"?(this.conf.selected!=-1?g:this.conf.selected):g);if((this.itemPull[this.idPrefix+g]["complex"])&&(this.conf.selected!=-1)){this._showPolygon(this.idPrefix+g,this.conf.dir_toplv)}}};dhtmlXMenuObject.prototype._initTopLevelMenu=function(){this.conf.dir_toplv="bottom";this.conf.dir_sublv=(this.conf.rtl?"left":"right");if(this.conf.context){this.idPull[this.idPrefix+this.topId]=new Array(0,0);this._addSubMenuPolygon(this.idPrefix+this.topId,this.idPrefix+this.topId)}else{var a=this._getMenuNodes(this.idPrefix+this.topId);for(var c=0;c<a.length;c++){if(this.itemPull[a[c]]["type"]=="item"){this._renderToplevelItem(a[c],null)}if(this.itemPull[a[c]]["type"]=="separator"){this._renderSeparator(a[c],null)}}}};dhtmlXMenuObject.prototype._renderToplevelItem=function(l,j){var h=this;var a=document.createElement("DIV");a.id=l;if(this.itemPull[l]["state"]=="enabled"&&this.itemPull[l]["cssNormal"]!=null){a.className=this.itemPull[l]["cssNormal"]}else{a.className="dhtmlxMenu_"+this.conf.skin+"_TopLevel_Item_"+(this.itemPull[l]["state"]=="enabled"?"Normal":"Disabled")}if(this.itemPull[l]["title"]!=""){var g=document.createElement("DIV");g.className="top_level_text";g.innerHTML=this.itemPull[l]["title"];a.appendChild(g)}if(this.itemPull[l]["tip"].length>0){a.title=this.itemPull[l]["tip"]}if((this.itemPull[l]["imgen"]!="")||(this.itemPull[l]["imgdis"]!="")){var e=this.itemPull[l][(this.itemPull[l]["state"]=="enabled")?"imgen":"imgdis"];if(e){var c=document.createElement("IMG");c.border="0";c.id="image_"+l;c.src=this.conf.icons_path+e;c.className="dhtmlxMenu_TopLevel_Item_Icon";if(a.childNodes.length>0&&!this.conf.rtl){a.insertBefore(c,a.childNodes[0])}else{a.appendChild(c)}}}a.onselectstart=function(m){m=m||event;if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}return false};a.oncontextmenu=function(m){m=m||event;if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}return false};if(!this.cont){this.cont=document.createElement("DIV");this.cont.dir="ltr";this.cont.className=(this.conf.align=="right"?"align_right":"align_left");this.base.appendChild(this.cont)}if(j!=null){j++;if(j<0){j=0}if(j>this.cont.childNodes.length-1){j=null}}if(j!=null){this.cont.insertBefore(a,this.cont.childNodes[j])}else{this.cont.appendChild(a)}this.idPull[a.id]=a;if(this.itemPull[l]["complex"]&&(!this.conf.dload)){this._addSubMenuPolygon(this.itemPull[l]["id"],this.itemPull[l]["id"])}a.onmouseover=function(){if(h.conf.mode=="web"){window.clearTimeout(h.conf.tm_handler)}var m=h._getSubItemToDeselectByPolygon("parent");h._removeSubItemFromSelected(-1,-1);for(var o=0;o<m.length;o++){if(m[o]!=this.id){h._hidePolygon(m[o])}if((h.idPull[m[o]]!=null)&&(m[o]!=this.id)){if(h.itemPull[m[o]]["cssNormal"]!=null){h.idPull[m[o]].className=h.itemPull[m[o]]["cssNormal"]}else{if(h.idPull[m[o]].className=="sub_item_selected"){h.idPull[m[o]].className="sub_item"}h.idPull[m[o]].className=h.idPull[m[o]].className.replace(/Selected/g,"Normal")}}}if(h.itemPull[this.id]["state"]=="enabled"){this.className="dhtmlxMenu_"+h.conf.skin+"_TopLevel_Item_Selected";h._addSubItemToSelected(this.id,"parent");h.conf.selected=(h.conf.mode=="win"?(h.conf.selected!=-1?this.id:h.conf.selected):this.id);if(h.conf.dload){if(h.itemPull[this.id].loaded=="no"){this._dynLoadTM=new Date().getTime();h.itemPull[this.id].loaded="get";var r=this.id.replace(h.idPrefix,"");h._dhxdataload.onBeforeXLS=function(){var u={params:{}};u.params[this.conf.dload_pid]=r;for(var s in this.conf.dload_params){u.params[s]=this.conf.dload_params[s]}return u};h.loadStruct(h.conf.dload_url)}if(h.conf.top_mode&&h.conf.mode=="web"&&!h.conf.context){this._mouseOver=true}}if((!h.conf.dload)||(h.conf.dload&&(!h.itemPull[this.id]["loaded"]||h.itemPull[this.id]["loaded"]=="yes"))){if((h.itemPull[this.id]["complex"])&&(h.conf.selected!=-1)){if(h.conf.top_mode&&h.conf.mode=="web"&&!h.conf.context){this._mouseOver=true;var n=this.id;this._menuOpenTM=window.setTimeout(function(){h._showPolygon(n,h.conf.dir_toplv)},h.conf.top_tmtime)}else{h._showPolygon(this.id,h.conf.dir_toplv)}}}}h._doOnTouchMenu(this.id.replace(h.idPrefix,""))};a.onmouseout=function(){if(!((h.itemPull[this.id]["complex"])&&(h.conf.selected!=-1))&&(h.itemPull[this.id]["state"]=="enabled")){if(h.itemPull[this.id]["cssNormal"]!=null){a.className=h.itemPull[this.id]["cssNormal"]}else{a.className="dhtmlxMenu_"+h.conf.skin+"_TopLevel_Item_Normal"}}if(h.conf.mode=="web"){window.clearTimeout(h.conf.tm_handler);h.conf.tm_handler=window.setTimeout(function(){h._clearAndHide()},h.conf.tm_sec,"JavaScript")}if(h.conf.top_mode&&h.conf.mode=="web"&&!h.conf.context){this._mouseOver=false;window.clearTimeout(this._menuOpenTM)}};a.onclick=function(r){if(h.conf.mode=="web"){window.clearTimeout(h.conf.tm_handler)}if(h.conf.mode!="web"&&h.itemPull[this.id]["state"]=="disabled"){return}r=r||event;r.cancelBubble=true;if(r.preventDefault){r.preventDefault()}else{r.returnValue=false}if(h.conf.mode=="win"){if(h.itemPull[this.id]["complex"]){if(h.conf.selected==this.id){h.conf.selected=-1;var o=false}else{h.conf.selected=this.id;var o=true}if(o){h._showPolygon(this.id,h.conf.dir_toplv)}else{h._hidePolygon(this.id)}}}var m=(h.itemPull[this.id]["complex"]?"c":"-");var u=(h.itemPull[this.id]["state"]!="enabled"?"d":"-");var n={ctrl:r.ctrlKey,alt:r.altKey,shift:r.shiftKey};h._doOnClick(this.id.replace(h.idPrefix,""),m+u+"t",n);return false};if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXMenuObject.prototype._addSubMenuPolygon=function(l,h){var c=this._renderSublevelPolygon(l,h);var a=this._getMenuNodes(h);for(e=0;e<a.length;e++){if(this.itemPull[a[e]]["type"]=="separator"){this._renderSeparator(a[e],null)}else{this._renderSublevelItem(a[e],null)}}if(l==h){var g="topLevel"}else{var g="subLevel"}for(var e=0;e<a.length;e++){if(this.itemPull[a[e]]["complex"]){this._addSubMenuPolygon(l,this.itemPull[a[e]]["id"])}}};dhtmlXMenuObject.prototype._renderSublevelPolygon=function(h,g){var c=document.createElement("DIV");c.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_Polygon "+(this.conf.rtl?"dir_right":"");c.dir="ltr";c.oncontextmenu=function(j){j=j||event;if(j.preventDefault){j.preventDefault()}else{j.returnValue=false}j.cancelBubble=true;return false};c.id="polygon_"+g;c.onclick=function(j){j=j||event;j.cancelBubble=true};c.style.display="none";document.body.insertBefore(c,document.body.firstChild);c.innerHTML='<div style="position:relative;"></div><div style="position: relative; overflow:hidden;"></div><div style="position:relative;"></div>';var e=document.createElement("TABLE");e.className="dhtmlxMebu_SubLevelArea_Tbl";e.cellSpacing=0;e.cellPadding=0;e.border=0;var a=document.createElement("TBODY");e.appendChild(a);c.childNodes[1].appendChild(e);c.tbl=e;c.tbd=a;this.idPull[c.id]=c;if(this.sxDacProc!=null){this.idPull["sxDac_"+g]=new this.sxDacProc(c,c.className);if(window.dhx4.isIE){this.idPull["sxDac_"+g]._setSpeed(this.dacSpeedIE);this.idPull["sxDac_"+g]._setCustomCycle(this.dacCyclesIE)}else{this.idPull["sxDac_"+g]._setSpeed(this.dacSpeed);this.idPull["sxDac_"+g]._setCustomCycle(this.dacCycles)}}return c};dhtmlXMenuObject.prototype._renderSublevelItem=function(a,o){var m=this;var n=document.createElement("TR");n.className=(this.itemPull[a]["state"]=="enabled"?"sub_item":"sub_item_dis");var l=document.createElement("TD");l.className="sub_item_icon";var r=this.itemPull[a][(this.itemPull[a]["state"]=="enabled"?"imgen":"imgdis")];if(r!=""){var v=this.itemPull[a]["type"];if(v=="checkbox"||v=="radio"){var h=document.createElement("DIV");h.id="image_"+this.itemPull[a]["id"];h.className="sub_icon "+r;l.appendChild(h)}if(!(v=="checkbox"||v=="radio")){var h=document.createElement("IMG");h.id="image_"+this.itemPull[a]["id"];h.className="sub_icon";h.src=this.conf.icons_path+r;l.appendChild(h)}}else{l.innerHTML="&nbsp;"}var j=document.createElement("TD");j.className="sub_item_text";if(this.itemPull[a]["title"]!=""){var u=document.createElement("DIV");u.className="sub_item_text";u.innerHTML=this.itemPull[a]["title"];j.appendChild(u)}else{j.innerHTML="&nbsp;"}var g=document.createElement("TD");g.className="sub_item_hk";if(this.itemPull[a]["complex"]){var c=document.createElement("DIV");c.className="complex_arrow";c.id="arrow_"+this.itemPull[a]["id"];g.appendChild(c)}else{if(this.itemPull[a]["hotkey"].length>0&&!this.itemPull[a]["complex"]){var e=document.createElement("DIV");e.className="sub_item_hk";e.innerHTML=this.itemPull[a]["hotkey"];g.appendChild(e)}else{g.innerHTML="&nbsp;"}}n.appendChild(this.conf.rtl?g:l);n.appendChild(j);n.appendChild(this.conf.rtl?l:g);n.id=this.itemPull[a]["id"];n.parent=this.itemPull[a]["parent"];if(this.itemPull[a]["tip"].length>0){n.title=this.itemPull[a]["tip"]}n.onselectstart=function(w){w=w||event;if(w.preventDefault){w.preventDefault()}else{w.returnValue=false}return false};n.onmouseover=function(w){if(m.conf.hide_tm[this.id]){window.clearTimeout(m.conf.hide_tm[this.id])}if(m.conf.mode=="web"){window.clearTimeout(m.conf.tm_handler)}if(!this._visible){m._redistribSubLevelSelection(this.id,this.parent)}this._visible=true};n.onmouseout=function(){if(m.conf.mode=="web"){if(m.conf.tm_handler){window.clearTimeout(m.conf.tm_handler)}m.conf.tm_handler=window.setTimeout(function(){if(m&&m._clearAndHide){m._clearAndHide()}},m.conf.tm_sec,"JavaScript")}var w=this;if(m.conf.hide_tm[this.id]){window.clearTimeout(m.conf.hide_tm[this.id])}m.conf.hide_tm[this.id]=window.setTimeout(function(){w._visible=false},50)};n.onclick=function(x){if(!m.checkEvent("onClick")&&m.itemPull[this.id]["complex"]){return}x=x||event;x.cancelBubble=true;if(x.preventDefault){x.preventDefault()}else{x.returnValue=false}tc=(m.itemPull[this.id]["complex"]?"c":"-");td=(m.itemPull[this.id]["state"]=="enabled"?"-":"d");var w={ctrl:x.ctrlKey,alt:x.altKey,shift:x.shiftKey};switch(m.itemPull[this.id]["type"]){case"checkbox":m._checkboxOnClickHandler(this.id.replace(m.idPrefix,""),tc+td+"n",w);break;case"radio":m._radioOnClickHandler(this.id.replace(m.idPrefix,""),tc+td+"n",w);break;case"item":m._doOnClick(this.id.replace(m.idPrefix,""),tc+td+"n",w);break}return false};var s=this.idPull["polygon_"+this.itemPull[a]["parent"]];if(o!=null){o++;if(o<0){o=0}if(o>s.tbd.childNodes.length-1){o=null}}if(o!=null&&s.tbd.childNodes[o]!=null){s.tbd.insertBefore(n,s.tbd.childNodes[o])}else{s.tbd.appendChild(n)}this.idPull[n.id]=n};dhtmlXMenuObject.prototype._renderSeparator=function(c,l){var a=(this.conf.context?"SubLevelArea":(this.itemPull[c]["parent"]==this.idPrefix+this.topId?"TopLevel":"SubLevelArea"));if(a=="TopLevel"&&this.conf.context){return}var h=this;if(a!="TopLevel"){var j=document.createElement("TR");j.className="sub_sep";var e=document.createElement("TD");e.colSpan="3";j.appendChild(e)}var g=document.createElement("DIV");g.id="separator_"+c;g.className=(a=="TopLevel"?"top_sep":"sub_sep");g.onselectstart=function(o){o=o||event;if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}};g.onclick=function(r){r=r||event;r.cancelBubble=true;var o={ctrl:r.ctrlKey,alt:r.altKey,shift:r.shiftKey};h._doOnClick(this.id.replace("separator_"+h.idPrefix,""),"--s",o)};if(a=="TopLevel"){if(l!=null){l++;if(l<0){l=0}if(this.cont.childNodes[l]!=null){this.cont.insertBefore(g,this.cont.childNodes[l])}else{this.cont.appendChild(g)}}else{var n=this.cont.childNodes[this.cont.childNodes.length-1];if(String(n).search("TopLevel_Text")==-1){this.cont.appendChild(g)}else{this.cont.insertBefore(g,n)}}this.idPull[g.id]=g}else{var m=this.idPull["polygon_"+this.itemPull[c]["parent"]];if(l!=null){l++;if(l<0){l=0}if(l>m.tbd.childNodes.length-1){l=null}}if(l!=null&&m.tbd.childNodes[l]!=null){m.tbd.insertBefore(j,m.tbd.childNodes[l])}else{m.tbd.appendChild(j)}e.appendChild(g);this.idPull[g.id]=j}};dhtmlXMenuObject.prototype.addNewSeparator=function(a,c){c=this.idPrefix+(c!=null?c:this._genStr(24));var e=this.idPrefix+this.getParentId(a);this._addItemIntoGlobalStrorage(c,e,"","separator",false,"","");this._renderSeparator(c,this.getItemPosition(a))};dhtmlXMenuObject.prototype._initObj=function(r,s,l){if(!(r instanceof Array)){l=r.parentId;if(l!=null&&String(l).indexOf(this.idPrefix)!==0){l=this.idPrefix+String(l)}r=r.items}for(var e=0;e<r.length;e++){if(typeof(r[e].id)=="undefined"||r[e].id==null){r[e].id=this._genStr(24)}if(r[e].text==null){r[e].text=""}if(String(r[e].id).indexOf(this.idPrefix)!==0){r[e].id=this.idPrefix+String(r[e].id)}var g={type:"item",tip:"",hotkey:"",state:"enabled",imgen:"",imgdis:""};for(var u in g){if(typeof(r[e][u])=="undefined"){r[e][u]=g[u]}}if(r[e].imgen==""&&r[e].img!=null){r[e].imgen=r[e].img}if(r[e].imgdis==""&&r[e].img_disabled!=null){r[e].imgdis=r[e].img_disabled}if(r[e].title==null&&r[e].text!=null){r[e].title=r[e].text}if(r[e].href!=null){if(r[e].href.link!=null){r[e].href_link=r[e].href.link}if(r[e].href.target!=null){r[e].href_target=r[e].href.target}}if(r[e].userdata!=null){for(var u in r[e].userdata){this.userData[r[e].id+"_"+u]=r[e].userdata[u]}}if(typeof(r[e].enabled)!="undefined"&&window.dhx4.s2b(r[e].enabled)==false){r[e].state="disabled"}else{if(typeof(r[e].disabled)!="undefined"&&window.dhx4.s2b(r[e].disabled)==true){r[e].state="disabled"}}if(typeof(r[e].parent)=="undefined"){r[e].parent=(l!=null?l:this.idPrefix+this.topId)}if(r[e].type=="checkbox"){r[e].checked=window.dhx4.s2b(r[e].checked);r[e].imgen=r[e].imgdis="chbx_"+(r[e].checked?"1":"0")}if(r[e].type=="radio"){r[e].checked=window.dhx4.s2b(r[e].checked);r[e].imgen=r[e].imgdis="rdbt_"+(r[e].checked?"1":"0");if(typeof(r[e].group)=="undefined"||r[e].group==null){r[e].group=this._genStr(24)}if(this.radio[r[e].group]==null){this.radio[r[e].group]=[]}this.radio[r[e].group].push(r[e].id)}this.itemPull[r[e].id]=r[e];if(r[e].items!=null&&r[e].items.length>0){this.itemPull[r[e].id].complex=true;this._initObj(r[e].items,true,r[e].id)}else{if(this.conf.dload&&r[e].complex==true){this.itemPull[r[e].id].loaded="no"}}this.itemPull[r[e].id].items=null}if(s!==true){if(this.conf.dload==true){if(l==null){this._initTopLevelMenu()}else{this._addSubMenuPolygon(l,l);if(this.conf.selected==l){var o=(this.itemPull[l].parent==this.idPrefix+this.topId);var c=(o&&!this.conf.context?this.conf.dir_toplv:this.conf.dir_sublv);var h=false;if(o&&this.conf.top_mode&&this.conf.mode=="web"&&!this.conf.context){var v=this.idPull[l];if(v._mouseOver==true){var j=this.conf.top_tmtime-(new Date().getTime()-v._dynLoadTM);if(j>1){var n=l;var m=this;v._menuOpenTM=window.setTimeout(function(){m._showPolygon(n,c);m=n=null},j);h=true}}}if(!h){this._showPolygon(l,c)}}this.itemPull[l].loaded="yes";if(this.conf.dload_icon==true){this._updateLoaderIcon(l,false)}}}else{this._init()}}};dhtmlXMenuObject.prototype._xmlToJson=function(h,g){var l=[];if(g==null){var m=h.getElementsByTagName(this.conf.tags.root);if(m==null||(m!=null&&m.length==0)){return{items:[]}}m=m[0]}else{m=h}if(m.getAttribute("parentId")!=null){g=this.idPrefix+m.getAttribute("parentId")}for(var c=0;c<m.childNodes.length;c++){if(typeof(m.childNodes[c].tagName)!="undefined"&&String(m.childNodes[c].tagName).toLowerCase()==this.conf.tags.item){var a=m.childNodes[c];var s={id:this.idPrefix+(a.getAttribute("id")||this._genStr(24)),title:a.getAttribute("text")||"",imgen:a.getAttribute("img")||"",imgdis:a.getAttribute("imgdis")||"",tip:"",hotkey:"",type:a.getAttribute("type")||"item"};if(a.getAttribute("cssNormal")!=null){s.cssNormal=a.getAttribute("cssNormal")}if(s.type=="checkbox"){s.checked=a.getAttribute("checked")}if(s.type=="radio"){s.checked=a.getAttribute("checked");s.group=a.getAttribute("group")}s.state="enabled";if(a.getAttribute("enabled")!=null&&window.dhx4.s2b(a.getAttribute("enabled"))==false){s.state="disabled"}else{if(a.getAttribute("disabled")!=null&&window.dhx4.s2b(a.getAttribute("disabled"))==true){s.state="disabled"}}s.parent=(g!=null?g:this.idPrefix+this.topId);if(this.conf.dload){s.complex=(a.getAttribute("complex")!=null);if(s.complex){s.loaded="no"}}else{var e=this._xmlToJson(a,s.id);s.items=e.items;s.complex=(s.items.length>0)}for(var n=0;n<a.childNodes.length;n++){if(typeof(a.childNodes[n].tagName)!="undefined"){var o=String(a.childNodes[n].tagName||"").toLowerCase();if(o==this.conf.tags.userdata){var j=a.childNodes[n];if(j.getAttribute("name")!=null){this.userData[s.id+"_"+j.getAttribute("name")]=(j.firstChild!=null&&j.firstChild.nodeValue!=null?j.firstChild.nodeValue:"")}}if(o==this.conf.tags.text_ext){s.title=a.childNodes[n].firstChild.nodeValue}if(o==this.conf.tags.tooltip){s.tip=a.childNodes[n].firstChild.nodeValue}if(o==this.conf.tags.hotkey){s.hotkey=a.childNodes[n].firstChild.nodeValue}if(o==this.conf.tags.href&&s.type=="item"){s.href_link=a.childNodes[n].firstChild.nodeValue;if(a.childNodes[n].getAttribute("target")!=null){s.href_target=a.childNodes[n].getAttribute("target")}}}}l.push(s)}}var a={parentId:g,items:l};return a};dhtmlXMenuObject.prototype.enableDynamicLoading=function(a,c){this.conf.dload=true;this.conf.dload_url=a;this.conf.dload_sign=(String(this.conf.dload_url).search(/\?/)==-1?"?":"&");this.conf.dload_icon=c;this._init()};dhtmlXMenuObject.prototype._updateLoaderIcon=function(g,e){if(this.idPull[g]==null){return}if(String(this.idPull[g].className).search("TopLevel_Item")>=0){return}var c=(this.conf.rtl?0:2);if(!this.idPull[g].childNodes[c]){return}if(!this.idPull[g].childNodes[c].childNodes[0]){return}var a=this.idPull[g].childNodes[c].childNodes[0];if(String(a.className).search("complex_arrow")===0){a.className="complex_arrow"+(e?"_loading":"")}};dhtmlXMenuObject.prototype.addNewSibling=function(g,h,a,c,e,m){var l=this.idPrefix+(h!=null?h:this._genStr(24));var j=this.idPrefix+(g!=null?this.getParentId(g):this.topId);this._addItemIntoGlobalStrorage(l,j,a,"item",c,e,m);if((j==this.idPrefix+this.topId)&&(!this.conf.context)){this._renderToplevelItem(l,this.getItemPosition(g))}else{this._renderSublevelItem(l,this.getItemPosition(g))}};dhtmlXMenuObject.prototype.addNewChild=function(l,j,g,a,c,e,h){if(l==null){if(this.conf.context){l=this.topId}else{this.addNewSibling(l,g,a,c,e,h);if(j!=null){this.setItemPosition(g,j)}return}}g=this.idPrefix+(g!=null?g:this._genStr(24));if(this.setHotKey){this.setHotKey(l,"")}l=this.idPrefix+l;this._addItemIntoGlobalStrorage(g,l,a,"item",c,e,h);if(this.idPull["polygon_"+l]==null){this._renderSublevelPolygon(l,l)}this._renderSublevelItem(g,j-1);this._redefineComplexState(l)};dhtmlXMenuObject.prototype.removeItem=function(g,j,h){if(!j){g=this.idPrefix+g}var l=null;if(g!=this.idPrefix+this.topId){if(this.itemPull[g]==null){return}if(this.idPull["polygon_"+g]&&this.idPull["polygon_"+g]._tmShow){window.clearTimeout(this.idPull["polygon_"+g]._tmShow)}var s=this.itemPull[g]["type"];if(s=="separator"){var r=this.idPull["separator_"+g];if(this.itemPull[g]["parent"]==this.idPrefix+this.topId){r.onclick=null;r.onselectstart=null;r.id=null;r.parentNode.removeChild(r)}else{r.childNodes[0].childNodes[0].onclick=null;r.childNodes[0].childNodes[0].onselectstart=null;r.childNodes[0].childNodes[0].id=null;r.childNodes[0].removeChild(r.childNodes[0].childNodes[0]);r.removeChild(r.childNodes[0]);r.parentNode.removeChild(r)}this.idPull["separator_"+g]=null;this.itemPull[g]=null;delete this.idPull["separator_"+g];delete this.itemPull[g];r=null}else{l=this.itemPull[g]["parent"];var r=this.idPull[g];r.onclick=null;r.oncontextmenu=null;r.onmouseover=null;r.onmouseout=null;r.onselectstart=null;r.id=null;while(r.childNodes.length>0){r.removeChild(r.childNodes[0])}r.parentNode.removeChild(r);this.idPull[g]=null;this.itemPull[g]=null;delete this.idPull[g];delete this.itemPull[g];r=null}s=null}for(var n in this.itemPull){if(this.itemPull[n]["parent"]==g){this.removeItem(n,true,true)}}var o=new Array(g);if(l!=null&&!h){if(this.idPull["polygon_"+l]!=null){if(this.idPull["polygon_"+l].tbd.childNodes.length==0){o.push(l);this._updateItemComplexState(l,false,false)}}}for(var c=0;c<o.length;c++){if(this.idPull["polygon_"+o[c]]){var e=this.idPull["polygon_"+o[c]];e.onclick=null;e.oncontextmenu=null;e.tbl.removeChild(e.tbd);e.tbd=null;e.childNodes[1].removeChild(e.tbl);e.tbl=null;e.id=null;e.parentNode.removeChild(e);e=null;if(window.dhx4.isIE6){var m="polygon_"+o[c]+"_ie6cover";if(this.idPull[m]!=null){document.body.removeChild(this.idPull[m]);delete this.idPull[m]}}if(this.idPull["arrowup_"+g]!=null&&this._removeArrow){this._removeArrow("arrowup_"+g)}if(this.idPull["arrowdown_"+g]!=null&&this._removeArrow){this._removeArrow("arrowdown_"+g)}this.idPull["polygon_"+o[c]]=null;delete this.idPull["polygon_"+o[c]]}}o=null;if(this.conf.skin=="dhx_terrace"&&arguments.length==1){this._improveTerraceSkin()}};dhtmlXMenuObject.prototype._addItemIntoGlobalStrorage=function(m,a,e,l,g,c,j){var h={id:m,title:e,imgen:(c!=null?c:""),imgdis:(j!=null?j:""),type:l,state:(g==true?"disabled":"enabled"),parent:a,complex:false,hotkey:"",tip:""};this.itemPull[h.id]=h};dhtmlXMenuObject.prototype.renderAsContextMenu=function(){this.conf.context=true;if(this.base._autoSkinUpdate==true){this.base.className=this.base.className.replace("dhtmlxMenu_"+this.conf.skin+"_Middle","");this.base._autoSkinUpdate=false}if(this.conf.ctx_baseid!=null){this.addContextZone(this.conf.ctx_baseid)}};dhtmlXMenuObject.prototype.addContextZone=function(c){if(c==document.body){c="document.body."+this.idPrefix;var g=document.body}else{if(typeof(c)=="string"){var g=document.getElementById(c)}else{var g=c}}var j=false;for(var e in this.conf.ctx_zones){j=j||(e==c)||(this.conf.ctx_zones[e]==g)}if(j==true){return false}this.conf.ctx_zones[c]=g;var h=this;if(window.dhx4.isOpera){this.operaContext=function(a){h._doOnContextMenuOpera(a,h)};g.addEventListener("mouseup",this.operaContext,false)}else{if(g.oncontextmenu!=null&&!g._oldContextMenuHandler){g._oldContextMenuHandler=g.oncontextmenu}g.oncontextmenu=function(l){for(var a in dhtmlXMenuObject.prototype.liveInst){if(a!=h.conf.live_id){if(dhtmlXMenuObject.prototype.liveInst[a].context){dhtmlXMenuObject.prototype.liveInst[a]._hideContextMenu()}}}l=l||event;l.cancelBubble=true;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}h._doOnContextBeforeCall(l,this);return false}}};dhtmlXMenuObject.prototype._doOnContextMenuOpera=function(g,a){for(var c in dhtmlXMenuObject.prototype.liveInst){if(c!=a.conf.live_id){if(dhtmlXMenuObject.prototype.liveInst[c].context){dhtmlXMenuObject.prototype.liveInst[c]._hideContextMenu()}}}g.cancelBubble=true;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}if(g.button==0&&g.ctrlKey==true){a._doOnContextBeforeCall(g,this)}return false};dhtmlXMenuObject.prototype.removeContextZone=function(a){if(!this.isContextZone(a)){return false}if(a==document.body){a="document.body."+this.idPrefix}var c=this.conf.ctx_zones[a];if(window.dhx4.isOpera){c.removeEventListener("mouseup",this.operaContext,false)}else{c.oncontextmenu=(c._oldContextMenuHandler!=null?c._oldContextMenuHandler:null);c._oldContextMenuHandler=null}try{this.conf.ctx_zones[a]=null;delete this.conf.ctx_zones[a]}catch(g){}return true};dhtmlXMenuObject.prototype.isContextZone=function(a){if(a==document.body&&this.conf.ctx_zones["document.body."+this.idPrefix]!=null){return true}var c=false;if(this.conf.ctx_zones[a]!=null){if(this.conf.ctx_zones[a]==document.getElementById(a)){c=true}}return c};dhtmlXMenuObject.prototype._isContextMenuVisible=function(){if(this.idPull["polygon_"+this.idPrefix+this.topId]==null){return false}return(this.idPull["polygon_"+this.idPrefix+this.topId].style.display=="")};dhtmlXMenuObject.prototype._showContextMenu=function(c,e,a){this._clearAndHide();if(this.idPull["polygon_"+this.idPrefix+this.topId]==null){return false}window.clearTimeout(this.conf.tm_handler);this.idPull[this.idPrefix+this.topId]=new Array(c,e);this._showPolygon(this.idPrefix+this.topId,"bottom");this.callEvent("onContextMenu",[a])};dhtmlXMenuObject.prototype._hideContextMenu=function(){if(this.idPull["polygon_"+this.idPrefix+this.topId]==null){return false}this._clearAndHide();this._hidePolygon(this.idPrefix+this.topId)};dhtmlXMenuObject.prototype._doOnContextBeforeCall=function(j,m){this.conf.ctx_zoneid=m.id;this._clearAndHide();this._hideContextMenu();if(window.dhx4.isChrome==true||window.dhx4.isEdge==true||window.dhx4.isOpera==true||window.dhx4.isIE11==true){var l=window.dhx4.absLeft(j.currentTarget)+j.offsetX;var h=window.dhx4.absTop(j.currentTarget)+j.offsetY}else{if(window.dhx4.isIE6==true||window.dhx4.isIE7==true||window.dhx4.isIE==true){var l=window.dhx4.absLeft(j.srcElement)+j.x||0;var h=window.dhx4.absTop(j.srcElement)+j.y||0}else{var g=(j.srcElement||j.target);var c=(window.dhx4.isIE||window.dhx4.isKHTML?j.offsetX:j.layerX);var a=(window.dhx4.isIE||window.dhx4.isKHTML?j.offsetY:j.layerY);var l=window.dhx4.absLeft(g)+c;var h=window.dhx4.absTop(g)+a}}if(this.checkEvent("onBeforeContextMenu")){if(this.callEvent("onBeforeContextMenu",[m.id,j])){if(this.conf.ctx_autoshow){this._showContextMenu(l,h,m.id);this.callEvent("onAfterContextMenu",[m.id,j])}}}else{if(this.conf.ctx_autoshow){this._showContextMenu(l,h,m.id);this.callEvent("onAfterContextMenu",[m.id])}}};dhtmlXMenuObject.prototype.showContextMenu=function(a,c){this._showContextMenu(a,c,false)};dhtmlXMenuObject.prototype.hideContextMenu=function(){this._hideContextMenu()};dhtmlXMenuObject.prototype.setAutoShowMode=function(a){this.conf.ctx_autoshow=(a==true?true:false)};dhtmlXMenuObject.prototype.setAutoHideMode=function(a){this.conf.ctx_autohide=(a==true?true:false)};dhtmlXMenuObject.prototype.setContextMenuHideAllMode=function(a){this.conf.ctx_hideall=(a==true?true:false)};dhtmlXMenuObject.prototype.getContextMenuHideAllMode=function(){return this.conf.ctx_hideall};dhtmlXMenuObject.prototype._improveTerraceSkin=function(){for(var e in this.itemPull){if(this.itemPull[e].parent==this.idPrefix+this.topId&&this.idPull[e]!=null){var h=false;var g=false;if(this.idPull[e].parentNode.firstChild==this.idPull[e]){h=true}if(this.idPull[e].parentNode.lastChild==this.idPull[e]){g=true}for(var c in this.itemPull){if(this.itemPull[c].type=="separator"&&this.itemPull[c].parent==this.idPrefix+this.topId){if(this.idPull[e].nextSibling==this.idPull["separator_"+c]){g=true}if(this.idPull[e].previousSibling==this.idPull["separator_"+c]){h=true}}}this.idPull[e].style.borderLeftWidth=(h?"1px":"0px");this.idPull[e].style.borderTopLeftRadius=this.idPull[e].style.borderBottomLeftRadius=(h?"3px":"0px");this.idPull[e].style.borderTopRightRadius=this.idPull[e].style.borderBottomRightRadius=(g?"3px":"0px");this.idPull[e]._bl=h;this.idPull[e]._br=g}}};dhtmlXMenuObject.prototype._improveTerraceButton=function(c,a){if(a){this.idPull[c].style.borderBottomLeftRadius=(this.idPull[c]._bl?"3px":"0px");this.idPull[c].style.borderBottomRightRadius=(this.idPull[c]._br?"3px":"0px")}else{this.idPull[c].style.borderBottomLeftRadius="0px";this.idPull[c].style.borderBottomRightRadius="0px"}};if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype._createNode_menu=function(h,c,g,a,e){if(typeof(e)!="undefined"){h=e}else{h=document.createElement("DIV");h.className="dhx_cell_menu_"+(this.conf.borders?"def":"no_borders");h.appendChild(document.createElement("DIV"))}this.cell.insertBefore(h,this.cell.childNodes[this.conf.idx.toolbar||this.conf.idx.cont]);this.conf.ofs_nodes.t.menu=true;this._updateIdx();return h};dhtmlXCellObject.prototype.attachMenu=function(a){if(this.dataNodes.menu){return}this.callEvent("_onBeforeContentAttach",["menu"]);if(typeof(a)=="undefined"){a={}}if(typeof(a.skin)=="undefined"){a.skin=this.conf.skin}a.parent=this._attachObject("menu").firstChild;this.dataNodes.menu=new dhtmlXMenuObject(a);this._adjustCont(this._idd);a.parent=null;a=null;this.callEvent("_onContentAttach",[]);return this.dataNodes.menu};dhtmlXCellObject.prototype.detachMenu=function(){if(!this.dataNodes.menu){return}this.dataNodes.menu.unload();this.dataNodes.menu=null;delete this.dataNodes.menu;this._detachObject("menu")};dhtmlXCellObject.prototype.showMenu=function(){this._mtbShowHide("menu","")};dhtmlXCellObject.prototype.hideMenu=function(){this._mtbShowHide("menu","none")};dhtmlXCellObject.prototype.getAttachedMenu=function(){return this.dataNodes.menu}}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"):false)};dhtmlXMenuObject.prototype._changeItemState=function(h,g,c){var e=false;var a=this.idPrefix+h;if((this.itemPull[a]!=null)&&(this.idPull[a]!=null)){if(this.itemPull[a]["state"]!=g){this.itemPull[a]["state"]=g;if(this.itemPull[a]["parent"]==this.idPrefix+this.topId&&!this.conf.context){this.idPull[a].className="dhtmlxMenu_"+this.conf.skin+"_TopLevel_Item_"+(this.itemPull[a]["state"]=="enabled"?"Normal":"Disabled")}else{this.idPull[a].className="sub_item"+(this.itemPull[a]["state"]=="enabled"?"":"_dis")}this._updateItemComplexState(this.idPrefix+h,this.itemPull[this.idPrefix+h]["complex"],false);this._updateItemImage(h,c);if((this.idPrefix+this.conf.last_click==a)&&(c!="TopLevel")){this._redistribSubLevelSelection(a,this.itemPull[a]["parent"])}if(c=="TopLevel"&&!this.conf.context){}}}return e};dhtmlXMenuObject.prototype.getItemText=function(a){return(this.itemPull[this.idPrefix+a]!=null?this.itemPull[this.idPrefix+a]["title"]:"")};dhtmlXMenuObject.prototype.setItemText=function(j,h){j=this.idPrefix+j;if((this.itemPull[j]!=null)&&(this.idPull[j]!=null)){this._clearAndHide();this.itemPull[j]["title"]=h;if(this.itemPull[j]["parent"]==this.idPrefix+this.topId&&!this.conf.context){var g=null;for(var a=0;a<this.idPull[j].childNodes.length;a++){try{if(this.idPull[j].childNodes[a].className=="top_level_text"){g=this.idPull[j].childNodes[a]}}catch(c){}}if(String(this.itemPull[j]["title"]).length==""||this.itemPull[j]["title"]==null){if(g!=null){g.parentNode.removeChild(g)}}else{if(!g){g=document.createElement("DIV");g.className="top_level_text";if(this.conf.rtl&&this.idPull[j].childNodes.length>0){this.idPull[j].insertBefore(g,this.idPull[j].childNodes[0])}else{this.idPull[j].appendChild(g)}}g.innerHTML=this.itemPull[j]["title"]}}else{var g=null;for(var a=0;a<this.idPull[j].childNodes[1].childNodes.length;a++){if(String(this.idPull[j].childNodes[1].childNodes[a].className||"")=="sub_item_text"){g=this.idPull[j].childNodes[1].childNodes[a]}}if(String(this.itemPull[j]["title"]).length==""||this.itemPull[j]["title"]==null){if(g){g.parentNode.removeChild(g);g=null;this.idPull[j].childNodes[1].innerHTML="&nbsp;"}}else{if(!g){g=document.createElement("DIV");g.className="sub_item_text";this.idPull[j].childNodes[1].innerHTML="";this.idPull[j].childNodes[1].appendChild(g)}g.innerHTML=this.itemPull[j]["title"]}}}};dhtmlXMenuObject.prototype.loadFromHTML=function(e,j,g){var c=this.conf.tags.item;this.conf.tags.item="div";var h=(typeof(e)=="string"?document.getElementById(e):e);var a=this._xmlToJson(h,this.idPrefix+this.topId);this._initObj(a);this.conf.tags.item=c;if(j){h.parentNode.removeChild(h)}h=objOd=null;if(onload!=null){if(typeof(g)=="function"){g()}else{if(typeof(window[g])=="function"){window[g]()}}}};dhtmlXMenuObject.prototype.hideItem=function(a){this._changeItemVisible(a,false)};dhtmlXMenuObject.prototype.showItem=function(a){this._changeItemVisible(a,true)};dhtmlXMenuObject.prototype.isItemHidden=function(c){var a=null;if(this.idPull[this.idPrefix+c]!=null){a=(this.idPull[this.idPrefix+c].style.display=="none")}return a};dhtmlXMenuObject.prototype._changeItemVisible=function(e,c){var a=this.idPrefix+e;if(this.itemPull[a]==null){return}if(this.itemPull[a]["type"]=="separator"){a="separator_"+a}if(this.idPull[a]==null){return}this.idPull[a].style.display=(c?"":"none");this._redefineComplexState(this.itemPull[this.idPrefix+e]["parent"])};dhtmlXMenuObject.prototype.setUserData=function(e,a,c){this.userData[this.idPrefix+e+"_"+a]=c};dhtmlXMenuObject.prototype.getUserData=function(c,a){return(this.userData[this.idPrefix+c+"_"+a]!=null?this.userData[this.idPrefix+c+"_"+a]:null)};dhtmlXMenuObject.prototype.setOpenMode=function(a){this.conf.mode=(a=="win"?"win":"web")};dhtmlXMenuObject.prototype.setWebModeTimeout=function(a){this.conf.tm_sec=(!isNaN(a)?a:400)};dhtmlXMenuObject.prototype.getItemImage=function(c){var a=new Array(null,null);c=this.idPrefix+c;if(this.itemPull[c]["type"]=="item"){a[0]=this.itemPull[c]["imgen"];a[1]=this.itemPull[c]["imgdis"]}return a};dhtmlXMenuObject.prototype.setItemImage=function(e,a,c){if(this.itemPull[this.idPrefix+e]["type"]!="item"){return}this.itemPull[this.idPrefix+e]["imgen"]=a;this.itemPull[this.idPrefix+e]["imgdis"]=c;this._updateItemImage(e,this._getItemLevelType(e))};dhtmlXMenuObject.prototype.clearItemImage=function(a){this.setItemImage(a,"","")};dhtmlXMenuObject.prototype.setVisibleArea=function(c,a,g,e){this.conf.v_enabled=true;this.conf.v.x1=c;this.conf.v.x2=a;this.conf.v.y1=g;this.conf.v.y2=e};dhtmlXMenuObject.prototype.setTooltip=function(c,a){c=this.idPrefix+c;if(!(this.itemPull[c]!=null&&this.idPull[c]!=null)){return}this.idPull[c].title=(a.length>0?a:null);this.itemPull[c]["tip"]=a};dhtmlXMenuObject.prototype.getTooltip=function(a){if(this.itemPull[this.idPrefix+a]==null){return null}return this.itemPull[this.idPrefix+a]["tip"]};dhtmlXMenuObject.prototype.setTopText=function(a){if(this.conf.context){return}if(this._topText==null){this._topText=document.createElement("DIV");this._topText.className="dhtmlxMenu_TopLevel_Text_"+(this.conf.rtl?"left":(this.conf.align=="left"?"right":"left"));this.base.appendChild(this._topText)}this._topText.innerHTML=a};dhtmlXMenuObject.prototype.setAlign=function(a){if(this.conf.align==a){return}if(a=="left"||a=="right"){this.conf.align=a;if(this.cont){this.cont.className=(this.conf.align=="right"?"align_right":"align_left")}if(this._topText!=null){this._topText.className="dhtmlxMenu_TopLevel_Text_"+(this.conf.align=="left"?"right":"left")}}};dhtmlXMenuObject.prototype.setHref=function(e,a,c){if(this.itemPull[this.idPrefix+e]==null){return}this.itemPull[this.idPrefix+e]["href_link"]=a;if(c!=null){this.itemPull[this.idPrefix+e]["href_target"]=c}};dhtmlXMenuObject.prototype.clearHref=function(a){if(this.itemPull[this.idPrefix+a]==null){return}delete this.itemPull[this.idPrefix+a]["href_link"];delete this.itemPull[this.idPrefix+a]["href_target"]};dhtmlXMenuObject.prototype.getCircuit=function(c){var a=new Array(c);while(this.getParentId(c)!=this.topId){c=this.getParentId(c);a[a.length]=c}return a.reverse()};dhtmlXMenuObject.prototype._getCheckboxState=function(a){if(this.itemPull[this.idPrefix+a]==null){return null}return this.itemPull[this.idPrefix+a]["checked"]};dhtmlXMenuObject.prototype._setCheckboxState=function(c,a){if(this.itemPull[this.idPrefix+c]==null){return}this.itemPull[this.idPrefix+c]["checked"]=a};dhtmlXMenuObject.prototype._updateCheckboxImage=function(c){if(this.idPull[this.idPrefix+c]==null){return}this.itemPull[this.idPrefix+c]["imgen"]="chbx_"+(this._getCheckboxState(c)?"1":"0");this.itemPull[this.idPrefix+c]["imgdis"]=this.itemPull[this.idPrefix+c]["imgen"];try{this.idPull[this.idPrefix+c].childNodes[(this.conf.rtl?2:0)].childNodes[0].className="sub_icon "+this.itemPull[this.idPrefix+c]["imgen"]}catch(a){}};dhtmlXMenuObject.prototype._checkboxOnClickHandler=function(g,a,c){if(a.charAt(1)=="d"){return}if(this.itemPull[this.idPrefix+g]==null){return}var e=this._getCheckboxState(g);if(this.checkEvent("onCheckboxClick")){if(this.callEvent("onCheckboxClick",[g,e,this.conf.ctx_zoneid,c])){this.setCheckboxState(g,!e)}}else{this.setCheckboxState(g,!e)}if(this.checkEvent("onClick")){this.callEvent("onClick",[g])}};dhtmlXMenuObject.prototype.setCheckboxState=function(c,a){this._setCheckboxState(c,a);this._updateCheckboxImage(c)};dhtmlXMenuObject.prototype.getCheckboxState=function(a){return this._getCheckboxState(a)};dhtmlXMenuObject.prototype.addCheckbox=function(m,g,n,o,r,a,h){if(this.conf.context&&g==this.topId){}else{if(this.itemPull[this.idPrefix+g]==null){return}if(m=="child"&&this.itemPull[this.idPrefix+g]["type"]!="item"){return}}var j="chbx_"+(a?"1":"0");var e=j;if(m=="sibling"){var c=this.idPrefix+(o!=null?o:this._genStr(24));var l=this.idPrefix+this.getParentId(g);this._addItemIntoGlobalStrorage(c,l,r,"checkbox",h,j,e);this.itemPull[c]["checked"]=a;this._renderSublevelItem(c,this.getItemPosition(g))}else{var c=this.idPrefix+(o!=null?o:this._genStr(24));var l=this.idPrefix+g;this._addItemIntoGlobalStrorage(c,l,r,"checkbox",h,j,e);this.itemPull[c]["checked"]=a;if(this.idPull["polygon_"+l]==null){this._renderSublevelPolygon(l,l)}this._renderSublevelItem(c,n-1);this._redefineComplexState(l)}};dhtmlXMenuObject.prototype.setHotKey=function(l,a){l=this.idPrefix+l;if(!(this.itemPull[l]!=null&&this.idPull[l]!=null)){return}if(this.itemPull[l]["parent"]==this.idPrefix+this.topId&&!this.conf.context){return}if(this.itemPull[l]["complex"]){return}var c=this.itemPull[l]["type"];if(!(c=="item"||c=="checkbox"||c=="radio")){return}var j=null;try{if(this.idPull[l].childNodes[this.conf.rtl?0:2].childNodes[0].className=="sub_item_hk"){j=this.idPull[l].childNodes[this.conf.rtl?0:2].childNodes[0]}}catch(h){}if(a.length==0){this.itemPull[l]["hotkey_backup"]=this.itemPull[l]["hotkey"];this.itemPull[l]["hotkey"]="";if(j!=null){j.parentNode.removeChild(j)}}else{this.itemPull[l]["hotkey"]=a;this.itemPull[l]["hotkey_backup"]=null;if(j==null){j=document.createElement("DIV");j.className="sub_item_hk";var g=this.idPull[l].childNodes[this.conf.rtl?0:2];while(g.childNodes.length>0){g.removeChild(g.childNodes[0])}g.appendChild(j)}j.innerHTML=a}};dhtmlXMenuObject.prototype.getHotKey=function(a){if(this.itemPull[this.idPrefix+a]==null){return null}return this.itemPull[this.idPrefix+a]["hotkey"]};dhtmlXMenuObject.prototype._clearAllSelectedSubItemsInPolygon=function(a){var e=this._getSubItemToDeselectByPolygon(a);for(var c=0;c<this.conf.opened_poly.length;c++){if(this.conf.opened_poly[c]!=a){this._hidePolygon(this.conf.opened_poly[c])}}for(var c=0;c<e.length;c++){if(this.idPull[e[c]]!=null&&this.itemPull[e[c]]["state"]=="enabled"){this.idPull[e[c]].className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_Item_Normal"}}};dhtmlXMenuObject.prototype._checkArrowsState=function(g){var c=this.idPull["polygon_"+g].childNodes[1];var e=this.idPull["arrowup_"+g];var a=this.idPull["arrowdown_"+g];if(c.scrollTop==0){e.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowUp_Disabled"}else{e.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowUp"+(e.over?"_Over":"")}if(c.scrollTop+c.offsetHeight<c.scrollHeight){a.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowDown"+(a.over?"_Over":"")}else{a.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowDown_Disabled"}c=e=a=null};dhtmlXMenuObject.prototype._addUpArrow=function(g){var c=this;var e=document.createElement("DIV");e.pId=this.idPrefix+g;e.id="arrowup_"+this.idPrefix+g;e.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowUp";e.over=false;e.onselectstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false};e.oncontextmenu=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false};e.onmouseover=function(){if(c.conf.mode=="web"){window.clearTimeout(c.conf.tm_handler)}c._clearAllSelectedSubItemsInPolygon(this.pId);if(this.className=="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowUp_Disabled"){return}this.className="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowUp_Over";this.over=true;c._canScrollUp=true;c._doScrollUp(this.pId,true)};e.onmouseout=function(){if(c.conf.mode=="web"){window.clearTimeout(c.conf.tm_handler);c.conf.tm_handler=window.setTimeout(function(){c._clearAndHide()},c.conf.tm_sec,"JavaScript")}this.over=false;c._canScrollUp=false;if(this.className=="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowUp_Disabled"){return}this.className="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowUp";window.clearTimeout(c.conf.of_utm)};e.onclick=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}h.cancelBubble=true;return false};var a=this.idPull["polygon_"+this.idPrefix+g];a.childNodes[0].appendChild(e);this.idPull[e.id]=e;a=e=null};dhtmlXMenuObject.prototype._addDownArrow=function(g){var c=this;var e=document.createElement("DIV");e.pId=this.idPrefix+g;e.id="arrowdown_"+this.idPrefix+g;e.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowDown";e.over=false;e.onselectstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false};e.oncontextmenu=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false};e.onmouseover=function(){if(c.conf.mode=="web"){window.clearTimeout(c.conf.tm_handler)}c._clearAllSelectedSubItemsInPolygon(this.pId);if(this.className=="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowDown_Disabled"){return}this.className="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowDown_Over";this.over=true;c._canScrollDown=true;c._doScrollDown(this.pId,true)};e.onmouseout=function(){if(c.conf.mode=="web"){window.clearTimeout(c.conf.tm_handler);c.conf.tm_handler=window.setTimeout(function(){c._clearAndHide()},c.conf.tm_sec,"JavaScript")}this.over=false;c._canScrollDown=false;if(this.className=="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowDown_Disabled"){return}this.className="dhtmlxMenu_"+c.conf.skin+"_SubLevelArea_ArrowDown";window.clearTimeout(c.conf.of_dtm)};e.onclick=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}h.cancelBubble=true;return false};var a=this.idPull["polygon_"+this.idPrefix+g];a.childNodes[2].appendChild(e);this.idPull[e.id]=e;a=e=null};dhtmlXMenuObject.prototype._removeUpArrow=function(c){var a="arrowup_"+this.idPrefix+c;this._removeArrow(a)};dhtmlXMenuObject.prototype._removeDownArrow=function(c){var a="arrowdown_"+this.idPrefix+c;this._removeArrow(a)};dhtmlXMenuObject.prototype._removeArrow=function(a){var c=this.idPull[a];c.onselectstart=null;c.oncontextmenu=null;c.onmouseover=null;c.onmouseout=null;c.onclick=null;if(c.parentNode){c.parentNode.removeChild(c)}c=null;this.idPull[a]=null;try{delete this.idPull[a]}catch(g){}};dhtmlXMenuObject.prototype._isArrowExists=function(a){if(this.idPull["arrowup_"+a]!=null&&this.idPull["arrowdown_"+a]!=null){return true}return false};dhtmlXMenuObject.prototype._doScrollUp=function(j,g){var a=this.idPull["polygon_"+j].childNodes[1];if(this._canScrollUp&&a.scrollTop>0){var e=false;var h=a.scrollTop-this.conf.of_ustep;if(h<0){e=true;h=0}a.scrollTop=h;if(!e){var c=this;this.conf.of_utm=window.setTimeout(function(){c._doScrollUp(j,false);c=null},this.conf.of_utime)}else{g=true}}else{this._canScrollUp=false;this._checkArrowsState(j)}if(g){this._checkArrowsState(j)}};dhtmlXMenuObject.prototype._doScrollDown=function(j,g){var a=this.idPull["polygon_"+j].childNodes[1];if(this._canScrollDown&&a.scrollTop+a.offsetHeight<=a.scrollHeight){var e=false;var h=a.scrollTop+this.conf.of_dstep;if(h+a.offsetHeight>=a.scrollHeight){e=true;h=a.scrollHeight-a.offsetHeight}a.scrollTop=h;if(!e){var c=this;this.conf.of_dtm=window.setTimeout(function(){c._doScrollDown(j,false);c=null},this.conf.of_dtime)}else{g=true}}else{this._canScrollDown=false;this._checkArrowsState(j)}if(g){this._checkArrowsState(j)}};dhtmlXMenuObject.prototype._countPolygonItems=function(j){var g=0;for(var c in this.itemPull){var e=this.itemPull[c]["parent"];var h=this.itemPull[c]["type"];if(e==this.idPrefix+j&&(h=="item"||h=="radio"||h=="checkbox")){g++}}return g};dhtmlXMenuObject.prototype.setOverflowHeight=function(g){if(g==="auto"){this.conf.overflow_limit=0;this.conf.auto_overflow=true;return}if(this.conf.overflow_limit==0&&g<=0){return}this._clearAndHide();if(this.conf.overflow_limit>=0&&g>0){this.conf.overflow_limit=g;return}if(this.conf.overflow_limit>0&&g<=0){for(var e in this.itemPull){if(this._isArrowExists(e)){var c=String(e).replace(this.idPrefix,"");this._removeUpArrow(c);this._removeDownArrow(c);this.idPull["polygon_"+e].childNodes[1].style.height=""}}this.conf.overflow_limit=0;return}};dhtmlXMenuObject.prototype._getRadioImgObj=function(g){try{var a=this.idPull[this.idPrefix+g].childNodes[(this.conf.rtl?2:0)].childNodes[0]}catch(c){var a=null}return a};dhtmlXMenuObject.prototype._setRadioState=function(g,e){var c=this._getRadioImgObj(g);if(c!=null){var a=this.itemPull[this.idPrefix+g];a.checked=e;a.imgen="rdbt_"+(a.checked?"1":"0");a.imgdis=a.imgen;c.className="sub_icon "+a.imgen}};dhtmlXMenuObject.prototype._radioOnClickHandler=function(g,a,c){if(a.charAt(1)=="d"||this.itemPull[this.idPrefix+g]["group"]==null){return}var e=this.itemPull[this.idPrefix+g]["group"];if(this.checkEvent("onRadioClick")){if(this.callEvent("onRadioClick",[e,this.getRadioChecked(e),g,this.conf.ctx_zoneid,c])){this.setRadioChecked(e,g)}}else{this.setRadioChecked(e,g)}if(this.checkEvent("onClick")){this.callEvent("onClick",[g])}};dhtmlXMenuObject.prototype.getRadioChecked=function(g){var j=null;for(var e=0;e<this.radio[g].length;e++){var h=this.radio[g][e].replace(this.idPrefix,"");var a=this._getRadioImgObj(h);if(a!=null){var c=(a.className).match(/rdbt_1$/gi);if(c!=null){j=h}}}return j};dhtmlXMenuObject.prototype.setRadioChecked=function(c,g){if(this.radio[c]==null){return}for(var a=0;a<this.radio[c].length;a++){var e=this.radio[c][a].replace(this.idPrefix,"");this._setRadioState(e,(e==g))}};dhtmlXMenuObject.prototype.addRadioButton=function(n,h,o,r,s,u,a,j){if(this.conf.context&&h==this.topId){}else{if(this.itemPull[this.idPrefix+h]==null){return}if(n=="child"&&this.itemPull[this.idPrefix+h]["type"]!="item"){return}}var e=this.idPrefix+(r!=null?r:this._genStr(24));var l="rdbt_"+(a?"1":"0");var c=l;if(n=="sibling"){var m=this.idPrefix+this.getParentId(h);this._addItemIntoGlobalStrorage(e,m,s,"radio",j,l,c);this._renderSublevelItem(e,this.getItemPosition(h))}else{var m=this.idPrefix+h;this._addItemIntoGlobalStrorage(e,m,s,"radio",j,l,c);if(this.idPull["polygon_"+m]==null){this._renderSublevelPolygon(m,m)}this._renderSublevelItem(e,o-1);this._redefineComplexState(m)}var g=(u!=null?u:this._genStr(24));this.itemPull[e]["group"]=g;if(this.radio[g]==null){this.radio[g]=new Array()}this.radio[g][this.radio[g].length]=e;if(a==true){this.setRadioChecked(g,String(e).replace(this.idPrefix,""))}};dhtmlXMenuObject.prototype.serialize=function(){var a="<menu>"+this._readLevel(this.idPrefix+this.topId)+"</menu>";return a};dhtmlXMenuObject.prototype._readLevel=function(g){var h="";for(var n in this.itemPull){if(this.itemPull[n]["parent"]==g){var c="";var e="";var r="";var m=String(this.itemPull[n]["id"]).replace(this.idPrefix,"");var l="";var o=(this.itemPull[n]["title"]!=""?' text="'+this.itemPull[n]["title"]+'"':"");var j="";if(this.itemPull[n]["type"]=="item"){if(this.itemPull[n]["imgen"]!=""){c=' img="'+this.itemPull[n]["imgen"]+'"'}if(this.itemPull[n]["imgdis"]!=""){e=' imgdis="'+this.itemPull[n]["imgdis"]+'"'}if(this.itemPull[n]["hotkey"]!=""){r="<hotkey>"+this.itemPull[n]["hotkey"]+"</hotkey>"}}if(this.itemPull[n]["type"]=="separator"){l=' type="separator"'}else{if(this.itemPull[n]["state"]=="disabled"){j=' enabled="false"'}}if(this.itemPull[n]["type"]=="checkbox"){l=' type="checkbox"'+(this.itemPull[n]["checked"]?' checked="true"':"")}if(this.itemPull[n]["type"]=="radio"){l=' type="radio" group="'+this.itemPull[n]["group"]+'" '+(this.itemPull[n]["checked"]?' checked="true"':"")}h+="<item id='"+m+"'"+o+l+c+e+j+">";h+=r;if(this.itemPull[n]["complex"]){h+=this._readLevel(n)}h+="</item>"}}return h};dhtmlXMenuObject.prototype.enableEffect=function(e,h,g){this._menuEffect=(e=="opacity"||e=="slide"||e=="slide+"?e:false);this._pOpStyleIE=(navigator.userAgent.search(/MSIE\s[678]\.0/gi)>=0);for(var c in this.idPull){if(c.search(/polygon/)===0){this._pOpacityApply(c,(this._pOpStyleIE?100:1));this.idPull[c].style.height=""}}this._pOpMax=(typeof(h)=="undefined"?100:h)/(this._pOpStyleIE?1:100);this._pOpStyleName=(this._pOpStyleIE?"filter":"opacity");this._pOpStyleValue=(this._pOpStyleIE?"progid:DXImageTransform.Microsoft.Alpha(Opacity=#)":"#");this._pSlSteps=(this._pOpStyleIE?10:20);this._pSlTMTimeMax=g||50};dhtmlXMenuObject.prototype._showPolygonEffect=function(a){this._pShowHide(a,true)};dhtmlXMenuObject.prototype._hidePolygonEffect=function(a){this._pShowHide(a,false)};dhtmlXMenuObject.prototype._pOpacityApply=function(a,c){this.idPull[a].style[this._pOpStyleName]=String(this._pOpStyleValue).replace("#",c||this.idPull[a]._op)};dhtmlXMenuObject.prototype._pShowHide=function(a,c){if(!this.idPull){return}if(this.idPull[a]._tmShow!=null){if((this.idPull[a]._step_h>0&&c==true)||(this.idPull[a]._step_h<0&&c==false)){return}window.clearTimeout(this.idPull[a]._tmShow);this.idPull[a]._tmShow=null;this.idPull[a]._max_h=null}if(c==false&&(this.idPull[a].style.visibility=="hidden"||this.idPull[a].style.display=="none")){return}if(c==true&&this.idPull[a].style.display=="none"){this.idPull[a].style.visibility="hidden";this.idPull[a].style.display=""}if(this.idPull[a]._max_h==null){this.idPull[a]._max_h=parseInt(this.idPull[a].offsetHeight);this.idPull[a]._h=(c==true?0:this.idPull[a]._max_h);this.idPull[a]._step_h=Math.round(this.idPull[a]._max_h/this._pSlSteps)*(c==true?1:-1);if(this.idPull[a]._step_h==0){return}this.idPull[a]._step_tm=Math.round(this._pSlTMTimeMax/this._pSlSteps);if(this._menuEffect=="slide+"||this._menuEffect=="opacity"){this.idPull[a].op_tm=this.idPull[a]._step_tm;this.idPull[a].op_step=(this._pOpMax/this._pSlSteps)*(c==true?1:-1);if(this._pOpStyleIE){this.idPull[a].op_step=Math.round(this.idPull[a].op_step)}this.idPull[a]._op=(c==true?0:this._pOpMax);this._pOpacityApply(a)}else{this.idPull[a]._op=(this._pOpStyleIE?100:1);this._pOpacityApply(a)}if(this._menuEffect.search(/slide/)===0){this.idPull[a].style.height="0px"}this.idPull[a].style.visibility="visible"}this._pEffectSet(a,this.idPull[a]._h+this.idPull[a]._step_h)};dhtmlXMenuObject.prototype._pEffectSet=function(e,c){if(!this.idPull){return}if(this.idPull[e]._tmShow){window.clearTimeout(this.idPull[e]._tmShow)}this.idPull[e]._h=Math.max(0,Math.min(c,this.idPull[e]._max_h));if(this._menuEffect.search(/slide/)===0){this.idPull[e].style.height=this.idPull[e]._h+"px"}c+=this.idPull[e]._step_h;if(this._menuEffect=="slide+"||this._menuEffect=="opacity"){this.idPull[e]._op=Math.max(0,Math.min(this._pOpMax,this.idPull[e]._op+this.idPull[e].op_step));this._pOpacityApply(e)}if((this.idPull[e]._step_h>0&&c<=this.idPull[e]._max_h)||(this.idPull[e]._step_h<0&&c>=0)){var a=this;this.idPull[e]._tmShow=window.setTimeout(function(){a._pEffectSet(e,c)},this.idPull[e]._step_tm)}else{if(this._menuEffect.search(/slide/)===0){this.idPull[e].style.height=""}if(this.idPull[e]._step_h<0){this.idPull[e].style.visibility="hidden"}if(this._menuEffect=="slide+"||this._menuEffect=="opacity"){this.idPull[e]._op=(this.idPull[e]._step_h<0?(this._pOpStyleIE?100:1):this._pOpMax);this._pOpacityApply(e)}this.idPull[e]._tmShow=null;this.idPull[e]._h=null;this.idPull[e]._max_h=null;this.idPull[e]._step_tm=null}};function dhtmlXRibbon(g){var e=this,c,a;this.conf={type:"ribbon",icons_path:(g&&g.icons_path)?g.icons_path:"",arrows_mode:(g&&g.arrows_mode)?g.arrows_mode:null,skin:"dhx_skyblue"};this._eventHandlers={};this._base=null;this._items={};this._tabbar=null;this.childIds=[];if(typeof(g)=="string"){a=g}else{if(g&&g.tagName){a=g}else{if(g&&g.parent){if(g.parent.tagName||typeof(g.parent)=="string"){a=g.parent}}}}this._doOnHighlight0=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].mouseover)=="function"){if(e.items[j.type].mouseover(j,e,m)!=true){return false}}if(!/dhxrb_highlight0/.test(h.className)){h.className+=" dhxrb_highlight0"}};this._doOffHighlight0=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].mouseout)=="function"){if(e.items[j.type].mouseout(j,e,m)!=true){return false}}if(/dhxrb_highlight1/.test(h.className)){h.className=h.className.replace(/\s?dhxrb_highlight1/,"")}if(/dhxrb_highlight0/.test(h.className)){h.className=h.className.replace(/\s?dhxrb_highlight0/,"")}};this._doOnHighlight1=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}e.callEvent("_showPopup",[j.id]);if(e.items[j.type]&&typeof(e.items[j.type].mousedown)=="function"){if(e.items[j.type].mousedown(j,e,m)!=true){return false}}if(!/dhxrb_highlight1/.test(h.className)){h.className+=" dhxrb_highlight1"}};this._doOffHighlight1=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].mouseup)=="function"){if(e.items[j.type].mouseup(j,e,m)!=true){return false}}if(/dhxrb_highlight1/.test(h.className)){h.className=h.className.replace(/\s?dhxrb_highlight1/,"")}};this._doOnClick=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].click)=="function"){e.items[j.type].click(j,e,m)}};this._doOnFocus=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}e.callEvent("_showPopup",[j.id]);if(e.items[j.type]&&typeof(e.items[j.type].focus)=="function"){e.items[j.type].focus(j,e,m)}};this._doOnBlur=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].blur)=="function"){e.items[j.type].blur(j,e,m)}};this._doOnChange=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].change)=="function"){e.items[j.type].change(j,e,m)}};this._doOnKeydown=function(m){m=m||event;var l=m.target||m.srcElement;var h=e._findItemByNode(l);var j=e._items[h._dhx_ribbonId];if(j.conf.disable){return}if(e.items[j.type]&&typeof(e.items[j.type].keydown)=="function"){e.items[j.type].keydown(j,e,m)}};this._tabCustomApi={enable:function(m,j){var h=null;j=j||false;if(j!=true){h=e._items[this._idd];for(var l=0;l<h.childIds.length;l++){e.enable(h.childIds[l])}}return e._tabOriginalApi.enable.apply(this,[m])},disable:function(m,j){var h=null;if(j!=false){h=e._items[this._idd];for(var l=0;l<h.childIds.length;l++){e.disable(h.childIds[l])}}return e._tabOriginalApi.disable.apply(this,[m])},close:function(l){var j=e._items[this._idd];e._removeTab(j);e._tabOriginalApi.close.apply(this,[l]);for(var h in e._tabOriginalApi){this[h]=null}}};this._attachEventTabbar=function(){this._tabbar.attachEvent("onSelect",function(){return e.callEvent("onSelect",arguments)});this._tabbar.attachEvent("onTabClick",function(){return e.callEvent("onTabClick",arguments)});this._tabbar.attachEvent("onTabClose",function(){return e.callEvent("onTabClose",arguments)})};if(typeof(a)=="string"){this._base=document.getElementById(a)}else{if(a&&a.tagName){this._base=a}else{this._base=document.createElement("div");this._base._dhx_remove=true;if(document.body.firstChild){document.body.insertBefore(this._base,document.body.firstChild)}else{document.body.appendChild(this._base)}}}c=dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||dhx4.skinDetect("dhtmlxribbon")||"dhx_skyblue";if(typeof(g)=="object"&&g.skin){c=g.skin}this.setSkin(c);dhx4._eventable(this);dhx4._enableDataLoading(this,"_renderData","_xmlToJson","ribbon",{struct:true});this.attachEvent("_onHeightChanged",function(){this.conf.inited=true});this._base.className+=" dhxrb_without_tabbar";this._base.innerHTML="<div class='dhxrb_background_area'></div>";if(g!=null){if(g.json){this.loadStruct(g.json,g.onload)}else{if(g.xml){this.loadStruct(g.xml,g.onload)}else{this._renderData(g)}}}this.unload=function(){var j=[];for(var l=0;l<this.childIds.length;l++){j.push(this.childIds[l])}dhx4._enableDataLoading(this,null,null,null,"clear");dhx4._eventable(this,"clear");for(var l=0;l<j.length;l++){if(this._items[j[l]].type=="tab"){this.tabs(j[l]).close(false)}else{this.removeItem(j[l])}}if(this._tabbar){this._tabbar.unload();this._tabbar=null}this._base.innerHTML="";if(this._base._dhx_remove){this._base.parentNode.removeChild(this._base)}else{this._base.className=this._base.className.replace(/\s?(dhtmlx|dhxrb)(\S*)/ig,"")}for(var h in this){this[h]=null}e=null}}dhtmlXRibbon.prototype.setSizes=function(){if(this._tabbar!=null&&typeof(this.setSizes)=="function"){this._tabbar.setSizes()}};dhtmlXRibbon.prototype._renderData=function(c){var a=this._base.firstChild;if(c!=null){this.conf.icons_path=c.icons_path||this.conf.icons_path;if(c.tabs instanceof Array){this._base.className=this._base.className.replace(/\s?dhxrb_without_tabbar/i,"");a.className="dhxrb_with_tabbar";this._tabbar=new dhtmlXTabBar(a);this._attachEventTabbar();this._tabbar.setSkin(this.conf.skin);if(this.conf.arrows_mode!=null){this._tabbar.setArrowsMode(this.conf.arrows_mode)}this.childIds=this._appendTabs(c.tabs)}else{if(c.items instanceof Array){if(!/\s?dhxrb_without_tabbar/i.test(this._base.className)){this._base.className+=" dhxrb_without_tabbar"}if(/\s?dhxrb_background_area/i.test(a.className)){a.className="dhxrb_background_area"}a.innerHTML="<div class='dhxrb_g_area'></div>";this.childIds=this._appendBlocks(c.items,a.firstChild)}}this.callEvent("_onHeightChanged",[])}};dhtmlXRibbon.prototype._xmlToJson=function(c){var a=c.lastChild||null,g={},e=[];if(a&&a.tagName=="ribbon"){e=this._convertXmlNodeListIntoObject(a.childNodes)}if(e[0]&&e[0].type&&e[0].type.toLowerCase()=="block"){g.items=e}else{g.tabs=e}return g};dhtmlXRibbon.prototype._convertXmlNodeListIntoObject=function(c){var e,a,h=[],g;a=c.length;for(e=0;e<a;e++){g=this._covertXmlNodeToObject(c[e]);if(g){h.push(g)}}return h};dhtmlXRibbon.prototype._covertXmlNodeToObject=function(g){if(!g||!g.tagName||!(g.tagName.toLowerCase()=="item"||g.tagName.toLowerCase()=="tab")){return null}var e,a,c=g.attributes,h={};a=c.length;for(e=0;e<a;e++){switch(c[e].name){case"isbig":h.isbig=dhx4.s2b(c[e].value);break;case"state":h.state=dhx4.s2b(c[e].value);break;default:h[c[e].name]=c[e].value}}if(g.childNodes.length){if(g.getAttribute("type")=="buttonCombo"||g.getAttribute("type")=="buttonSelect"){h.data=g}else{if(g.tagName.toLowerCase()=="tab"){h.items=this._convertXmlNodeListIntoObject(g.childNodes)}else{h.list=this._convertXmlNodeListIntoObject(g.childNodes)}}}return h};dhtmlXRibbon.prototype._appendTabs=function(h){var c,a,e,g=[];a=h.length;for(c=0;c<a;c++){e=this._addTab(h[c]);if(h[c].items instanceof Array){e.childIds=this._appendBlocks(h[c].items,e.base,e)}g.push(e.id)}return g};dhtmlXRibbon.prototype._addTab=function(e){var a,g;var c={conf:{active:false,text:"",width:null,position:null,disable:false},base:document.createElement("div"),type:"tab",childIds:[]};for(a in e){if(a=="items"){continue}c.conf[a]=e[a]}if(!e.id){c.id=dhx4.newId()}else{c.id=e.id}while(this._items[c.id]){c.id=dhx4.newId()}this._tabbar.addTab(c.id,c.conf.text,c.conf.width,c.conf.position,c.conf.active);c.base.className="dhxrb_g_area";c.base._dhx_ribbonId=c.id;this.tabs(c.id).attachObject(c.base);this._changeApiForTab(this.tabs(c.id));this._items[c.id]=c;return c};dhtmlXRibbon.prototype._changeApiForTab=function(c){var a;for(a in this._tabOriginalApi){this._tabOriginalApi[a]=this._tabOriginalApi[a]||c[a];c[a]=this._tabCustomApi[a]}};dhtmlXRibbon.prototype._tabOriginalApi={enable:null,disable:null,close:null};dhtmlXRibbon.prototype._appendBlocks=function(a,r,e){var j,g,m,h,n,c,o=[];e=e||null;g=a.length;for(j=0;j<g;j++){if(typeof(a[j])=="object"&&a[j].type=="block"){m=this._addBlock(a[j],r);if(a[j].list&&(a[j].list instanceof Array)){h=a[j].list;n=h.length;for(c=0;c<n;c++){this._addItem(m.id,null,null,h[c])}}if(e!=null){m.parentId=e.id}if(m.conf.disable){this.disable(m.id)}o.push(m.id)}}return o};dhtmlXRibbon.prototype._addBlock=function(h,g){var e,a,j,c;j={conf:{text:"",text_pos:"bottom",type:"block",mode:"cols",disable:false},type:"block",childIds:[],base:document.createElement("div"),contForItems:document.createElement("div"),contForText:document.createElement("div")};for(c in h){if(c=="list"||c=="type"||c=="id"){continue}j.conf[c]=h[c]}if(!h.id){j.id=dhx4.newId()}else{j.id=h.id}while(this._items[j.id]){j.id=dhx4.newId()}j.base.className="dhxrb_block_base";g.appendChild(j.base);j.contForItems.className="dhxrb_block_items";j.contForText.className="dhxrb_block_label";j.base.appendChild(j.contForItems);if(j.conf.text){j.contForText.innerHTML=j.conf.text;if(j.conf.text_pos=="top"){j.base.insertBefore(j.contForText,j.contForItems)}else{j.base.appendChild(j.contForText)}}j.base._dhx_ribbonId=j.id;this._items[j.id]=j;return j};dhtmlXRibbon.prototype._addItem=function(e,c,n,l){var h=this._items[e],a,j,r=null,m=this,g;if(l.type!="newLevel"&&!this.items[l.type]){return null}if(l.type=="newLevel"){this._addNewLevel(h)}else{if(h.type=="group"){a=document.createElement("div");a.className="dhxrb_in_group";h.base.appendChild(a)}else{if(l.isbig){a=document.createElement("div");a.className="dhxrb_big_button";h.contForItems.appendChild(a)}else{j=this._getContainerForSmallItem(h);a=document.createElement("div");a.className=(h.conf.mode=="rows")?"dhxrb_in_row":"dhxrb_3rows_button";j.appendChild(a)}}}if(a){this._attachEventForItem(a);g={icons_path:l.icons_path||this.conf.icons_path,skin:this.conf.skin};for(var o in l){g[o]=l[o]}if(!g.id){g.id=dhx4.newId()}while(this._items[g.id]){g.id=dhx4.newId()}r=(this.items[g.type]&&this.items[g.type].render)?this.items[g.type].render(a,g):null}if(r!=null){this._items[r.id]=r;r.parentId=h.id;h.childIds.push(r.id);a._dhx_ribbonId=r.id;if(g.onclick&&(typeof(g.onclick)=="function")){this._eventHandlers[r.id]=this._eventHandlers[r.id]||{};this._eventHandlers[r.id]["onclick"]=g.onclick}r.callEvent=function(){m.callEvent.apply(m,arguments)};r._callHandler=function(){m._callHandler.apply(m,arguments)};if(this.items[g.type]&&typeof(this.items[g.type].callAfterInit)=="function"){this.items[g.type].callAfterInit.apply(this,[r])}}return r};dhtmlXRibbon.prototype._callHandler=function(c,a){if(this._eventHandlers[c]&&this._eventHandlers[c].onclick){this._eventHandlers[c].onclick.apply(this,a)}};dhtmlXRibbon.prototype.items={};dhtmlXRibbon.prototype.items.button={render:function(c,a){var e,g;g={base:c,id:a.id,type:a.type,conf:{text:"",text_pos:(a.isbig)?"bottom":"right",img:null,imgdis:null,isbig:false,disable:false,skin:a.skin}};for(e in a){if(e=="id"||e=="onclick"||e=="type"){continue}g.conf[e]=a[e]}c.innerHTML="<img class='dhxrb_image"+((g.conf.img)?"'":" dhxrb_invisible'")+" src='"+((g.conf.img)?g.conf.icons_path+g.conf.img:"")+"' /><div class='dhxrb_label_button'>"+g.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(g)}if(g.conf.disable){this.disable(g)}return g},getText:function(a){return a.conf.text},setText:function(c,e){var a=c.base.childNodes[1];c.conf.text=e;a.innerHTML=e},setImage:function(c,a){c.conf.img=a;if(c.conf.disable==false){c.base.childNodes[0].src=c.conf.icons_path+c.conf.img}},setImageDis:function(c,a){c.conf.imgdis=a;if(c.conf.disable==true){c.base.childNodes[0].src=c.conf.icons_path+c.conf.imgdis}},mousedown:function(a,g,c){return true},click:function(a,g,c){if(c.button!=0){return false}g._callHandler(a.id,[a.id]);a.callEvent("onClick",[a.id]);return false},disable:function(c){var e=c.base.childNodes[0],a=c.base.childNodes[1];if(c.conf.imgdis){e.src=c.conf.icons_path+c.conf.imgdis;if(/\s?dhxrb_invisible/i.test(e.className)){e.className=e.className.replace(/\s?dhxrb_invisible/i,"")}}if(!/\s?dhxrb_disable_text_style/i.test(a.className)){a.className+=" dhxrb_disable_text_style"}return true},enable:function(c){var e=c.base.childNodes[0],a=c.base.childNodes[1];if(c.conf.img){e.src=c.conf.icons_path+c.conf.img}else{if(!/\s?dhxrb_invisible/i.test(e.className)){e.className+=" dhxrb_invisible"}}if(/\s?dhxrb_disable_text_style/i.test(a.className)){a.className=a.className.replace(/\s?dhxrb_disable_text_style/i,"")}return true}};dhtmlXRibbon.prototype.items.buttonTwoState={click:function(a,g,c){return false},afterRender:function(a){if(a.conf.state){this.setState(a,a.conf.state)}},mouseover:function(a){if(!/dhxrb_highlight0/.test(a.base.className)){a.base.className+=" dhxrb_highlight0"}return false},mouseout:function(a){if(/dhxrb_highlight0/.test(a.base.className)){a.base.className=a.base.className.replace(/\s?dhxrb_highlight0/,"")}return false},mousedown:function(a,g,c){g._callHandler(a.id,[a.id,!a.conf.state]);this.setState(a,!a.conf.state,true);return false},mouseup:function(a){return false},setState:function(a,c,e){e=e||false;c=dhx4.s2b(c);if(c){if(!/dhxrb_highlight1/.test(a.base.className)){a.base.className+=" dhxrb_highlight1"}}else{if(/dhxrb_highlight1/.test(a.base.className)){a.base.className=a.base.className.replace(/\s?dhxrb_highlight1/,"")}}a.conf.state=c;if(e){a.callEvent("onStateChange",[a.id,a.conf.state])}},getState:function(a){return(a.conf.state==true)}};dhtmlXRibbon.prototype.items.buttonSegment={click:function(a,g,c){return false},mousedown:function(a,g,c){this.setState(a,g,true);return false},callAfterInit:function(a){if(a.conf.state||dhtmlXRibbon.prototype.items.buttonSegment._getSelectedNeighbor(a,this)==null){if(a.conf.state){a.conf.state=false}dhtmlXRibbon.prototype.items.buttonSegment.setState(a,this,false)}},afterRender:function(){},setState:function(a,h,g){g=g||false;var e=null,c=dhx4.s2b(a.conf.state);if(c==false){e=this._getSelectedNeighbor(a,h);if(e!=null){this._unSelect(e)}if(!/dhxrb_highlight1/.test(a.base.className)){a.base.className+=" dhxrb_highlight1"}a.conf.state=true;if(g){h._callHandler(a.id,[a.id,(e?e.id:null)]);h.callEvent("onStateChange",[a.id,(e?e.id:null)])}}},remove:function(e,l){var h=dhx4.s2b(e.conf.state),j=null,a=0,c=l._items[e.parentId],g;if(h){while(c.childIds[a]&&j==null){g=l._items[c.childIds[a]];if(g.type=="buttonSegment"&&g!=e){j=g}a++}if(j){this.setState(j,l)}}},_unSelect:function(a){var c=dhx4.s2b(a.conf.state);if(c){if(/dhxrb_highlight1/.test(a.base.className)){a.base.className=a.base.className.replace(/\s?dhxrb_highlight1/,"")}a.conf.state=false}},_getSelectedNeighbor:function(g,m){var e=m._items[g.parentId],c,a,j,h=null;a=e.childIds.length;for(c=0;c<a;c++){j=m._items[e.childIds[c]];if(j.type=="buttonSegment"&&j.conf.state){h=j;break}}return h}};dhtmlXRibbon.prototype.items.buttonSelect={itemCollection:[],_isAttachedEventInWindow:false,afterRender:function(c){var a=c.base.childNodes[1];a.innerHTML+="<span class='dhxrb_arrow'>&nbsp;</span>";c.menu=null;this.itemCollection.push(c);this._attachEventToWindow();a=null},setText:function(a,e){var c=a.base.childNodes[1].lastChild;a.conf.text=e;a.base.childNodes[1].innerHTML=e;a.base.childNodes[1].appendChild(c)},setOptionText:function(a,e,c){if(a.menu!=null){a.menu.setItemText(e,c)}else{this._loopThroughItems(a.conf.items,e,c,false)}},getOptionText:function(a,c){if(a.menu!=null){return a.menu.getItemText(c)}return this._loopThroughItems(a.conf.items,c,null,true)},_loopThroughItems:function(a,j,h,g){for(var e=0;e<a.length;e++){if(a[e].id==j){if(g!=true){a[e].text=h;return true}else{return a[e].text}}if(a[e].items!=null){var c=this._loopThroughItems(a[e].items,j,h,g);if(c!=null){return c}}}return null},_attachEventToWindow:function(){if(this._isAttachedEventInWindow==false){if(typeof(window.addEventListener)=="function"){document.body.addEventListener("mousedown",this._hideAllMenus,false)}else{document.body.attachEvent("onmousedown",this._hideAllMenus)}this._isAttachedEventInWindow=true}},_detachEventFromWindow:function(){if(typeof(window.addEventListener)=="function"){document.body.removeEventListener("mousedown",this._hideAllMenus,false)}else{document.body.detachEvent("onmousedown",this._hideAllMenus)}this._isAttachedEventInWindow=false},_hideAllMenus:function(j){j=j||event;var g=j.target||j.srcElement;var a=true;while(g!=null&&a==true){if(g.className!=null&&/SubLevelArea_Polygon/i.test(g.className)){a=false}else{g=g.parentNode}}if(a==false){return}var c=dhtmlXRibbon.prototype.items.buttonSelect.itemCollection;for(var l in c){var h=c[l];if(h.menu instanceof dhtmlXMenuObject){if(h._skipHiding){h._skipHiding=false}else{dhtmlXRibbon.prototype.items.buttonSelect.hideMenu(h)}}}},mousedown:function(a,g,c){a._skipHiding=true;this.showMenu(a);return false},mouseup:function(a){return false},click:function(){},setState:function(){},showMenu:function(c){var a=dhx4.absLeft(c.base),e=dhx4.absTop(c.base)+c.base.offsetHeight;if(!(c.menu instanceof dhtmlXMenuObject)){c.menu=new dhtmlXMenuObject({parent:c.base,icons_path:c.conf.icons_path,context:true,items:c.conf.items,skin:c.conf.skin});if(c.conf.data){c.menu.loadStruct(c.conf.data);delete c.conf.data}c.menu.setAutoHideMode(false);c.menu.attachEvent("onHide",function(g){if(g==null){dhtmlXRibbon.prototype.items.buttonSelect._doOnHideMenu(c)}});c.menu.attachEvent("onShow",function(g){if(g==null){dhtmlXRibbon.prototype.items.buttonSelect._doOnShowMenu(c)}});c.menu.attachEvent("onClick",function(g){c.callEvent("onClick",[g,c.id])});c.base.oncontextmenu=function(){return false};dhtmlXRibbon.prototype.items.buttonSelect.showMenu(c)}else{c.menu.showContextMenu(a,e)}},hideMenu:function(a){if(a.menu instanceof dhtmlXMenuObject){a.menu.hideContextMenu()}},remove:function(c){var e,a;if(c.menu instanceof dhtmlXMenuObject){c.menu.unload();c.menu=null}c.base.oncontextmenu=null;e=dhtmlXRibbon.prototype._indexOf(dhtmlXRibbon.prototype.items.buttonSelect.itemCollection,c);if(e!=-1){dhtmlXRibbon.prototype.items.buttonSelect.itemCollection.splice(e,1)}if(dhtmlXRibbon.prototype.items.buttonSelect.itemCollection.length==0){this._detachEventFromWindow()}},setSkin:function(a,c){if(a.menu instanceof dhtmlXMenuObject){a.menu.setSkin(c)}},_doOnHideMenu:function(a){if(a._skipHiding){a._skipHiding=false}else{if(/dhxrb_highlight1/.test(a.base.className)){a.base.className=a.base.className.replace(/\s?dhxrb_highlight1/,"")}}},_doOnShowMenu:function(a){if(!/dhxrb_highlight1/.test(a.base.className)){a.base.className+=" dhxrb_highlight1"}}};dhtmlXRibbon.prototype.items.group={render:function(c,a){var e,g;g={base:c,id:a.id,type:a.type,conf:{disable:false,skin:a.skin},childIds:[]};c.className="dhxrb_group";for(e in a){if(e=="id"||e=="onclick"||e=="type"){continue}g.conf[e]=a[e]}return g},callAfterInit:function(h){this._detachEventFromItem(h.base);var g,a,j=h.conf.list,m,e,c;a=(j)?j.length:0;for(g=0;g<a;g++){m=this._addItem(h.id,null,null,j[g]);if(m==null){continue}e=m.base.childNodes[1];if(e&&!e.innerHTML&&!/\s?dhxrb_label_hide/i.test(e.className)){e.className+=" dhxrb_label_hide"}}dhtmlXRibbon.prototype.items.group.normalize(h);if(h.conf.disable){this.disable(h.id)}j=undefined},normalize:function(m){var a=m.base.children;var e=a.length,c=false,n=0;var g,j;for(var h=0;h<e;h++){if(!/dhxrb_separator_group/i.test(a[h].className)){if(/dhxrb_item_hide/i.test(a[h].className)){n++;continue}}if((Math.ceil((h-n)/2)-Math.floor((h-n)/2))==0){if(/dhxrb_separator_group/i.test(a[h].className)){a[h].parentNode.removeChild(a[h]);c=true;break}}else{if(!/dhxrb_separator_group/i.test(a[h].className)){g=document.createElement("div");g.className="dhxrb_separator_groupp";m.base.insertBefore(g,a[h]);c=true;break}}}if(c){this.normalize(m)}else{j=m.base.lastChild;if(j&&/dhxrb_separator_group/i.test(j.className)){j.parentNode.removeChild(j)}}},hideChild:function(c,g){var a=dhtmlXRibbon.prototype._indexOf(c.base.children,g.base);if(a==0){a++}else{if(a!=-1){a--}else{return}}var e=c.base.children[a];if(e&&/dhxrb_separator_group/i.test(e.className)){e.parentNode.removeChild(e)}},showChild:function(a){this.normalize(a)}};dhtmlXRibbon.prototype.items.input={render:function(c,a){var e,g;g={base:c,id:a.id,type:a.type,conf:{text:"",text_pos:(a.isbig)?"bottom":"right",img:null,imgdis:null,isbig:false,disable:false,skin:a.skin,value:""}};for(e in a){if(e=="id"||e=="onclick"||e=="type"){continue}g.conf[e]=a[e]}c.innerHTML="<input type='text' class='dhxrb_input'><div class='dhxrb_label_button'>"+g.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(g)}if(g.conf.disable){this.disable(g)}if(g.conf.width){this.setWidth(g,g.conf.width)}if(g.conf.value){this.setValue(g,g.conf.value)}return g},callAfterInit:function(c){var a=c.base.childNodes[0];this._detachEventFromItem(c.base);this._attachEventsToInput(a)},setText:dhtmlXRibbon.prototype.items.button.setText,getText:dhtmlXRibbon.prototype.items.button.getText,change:function(c){var a=c.base.childNodes[0];c.conf.value=a.value},keydown:function(c,h,g){if(g.keyCode==13){var a=c.base.childNodes[0];c.conf.value=a.value;h.callEvent("onEnter",[c.id,c.conf.value])}},remove:function(c,e){var a=c.base.childNodes[0];e._detachEventsFromInput(a)},getValue:function(c){var a=c.base.childNodes[0],e;e=a.value;a=undefined;return e},setValue:function(c,e){var a=c.base.childNodes[0],e;a.value=e;c.conf.value=e},setWidth:function(c,e){var a=c.base.childNodes[0];a.style.width=parseInt(e)+"px"},disable:function(e){var c=e.base.childNodes[0],a=e.base.childNodes[1];c.disabled=true;if(!/\s?dhxrb_disable_text_style/i.test(a.className)){a.className+=" dhxrb_disable_text_style"}return true},enable:function(e){var c=e.base.childNodes[0],a=e.base.childNodes[1];c.disabled=false;if(/\s?dhxrb_disable_text_style/i.test(a.className)){a.className=a.className.replace(/\s?dhxrb_disable_text_style/i,"")}return true},getInput:function(a){return a.base.childNodes[0]}};dhtmlXRibbon.prototype.getInput=function(c){var a=this._items[c];if(a==null||a.type!="input"){return null}return this.items[a.type].getInput(a)};dhtmlXRibbon.prototype.items.checkbox={render:function(c,a){var e,g;g={base:c,id:a.id,type:a.type,conf:{text:"",text_pos:(a.isbig)?"bottom":"right",disable:false,checked:false}};for(e in a){if(e=="id"||e=="onclick"||e=="type"){continue}g.conf[e]=a[e]}c.innerHTML="<div class='dhxrb_checkbox'></div><div class='dhxrb_label_checkbox'>"+g.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(g)}if(g.conf.checked){this.check(g)}return g},callAfterInit:function(a){if(a.conf.disable){this.disable(a.id)}},setText:dhtmlXRibbon.prototype.items.button.setText,getText:dhtmlXRibbon.prototype.items.button.getText,mousedown:function(a){return false},mouseup:function(a){return false},click:function(a,g,c){if(c.button!=0){return false}if(a.type=="checkbox"){if(a.conf.checked){this.uncheck(a,true)}else{this.check(a,true)}}},check:function(a,c){c=c||false;if(a.type!="checkbox"){return}a.conf.checked=true;if(!/\s?dhxrb_checked/i.test(a.base.className)){a.base.className+=" dhxrb_checked"}if(c){a.callEvent("onCheck",[a.id,a.conf.checked])}},uncheck:function(a,c){c=c||false;if(a.type!="checkbox"){return}a.conf.checked=false;if(/\s?dhxrb_checked/i.test(a.base.className)){a.base.className=a.base.className.replace(/\s?dhxrb_checked/i,"")}if(c){a.callEvent("onCheck",[a.id,a.conf.checked])}},isChecked:function(a){if(a.type!="checkbox"){return false}return(a.conf.checked==true)},disable:function(a){return true},enable:function(a){return true}};dhtmlXRibbon.prototype.items.text={render:function(a,g){var e={base:a,id:g.id,type:g.type,conf:{text:""}};for(var c in g){if(c=="id"||c=="type"){continue}e.conf[c]=g[c]}a.innerHTML="<div class='dhxrb_item_text'>"+e.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(e)}return e},callAfterInit:function(a){this._detachEventFromItem(a.base)},getText:function(a){return a.conf.text},setText:function(a,c){a.conf.text=c;a.base.firstChild.innerHTML=a.conf.text}};dhtmlXRibbon.prototype.items.buttonCombo={render:function(a,c){var e,g,h={};g={base:a,id:c.id,type:c.type,conf:{text:"",text_pos:"right",width:140,skin:c.skin,callEvent:true,mode:c.comboType,image_path:c.comboImagePath,default_image:c.comboDefaultImage,default_image_dis:c.comboDefaultImageDis}};for(e in c){if(e=="id"||e=="onclick"||e=="type"){continue}g.conf[e]=c[e]}for(e in g.conf){if(e=="text"||e=="text_pos"||e=="disable"||e=="data"){continue}h[e]=g.conf[e]}g.base.className+=" dhxrb_buttoncombo_cont";g.base.innerHTML="<div class='dhxrb_buttoncombo'></div><div class='dhxrb_label_button'>"+g.conf.text+"</div>";h.parent=g.base.firstChild;g.combo=new dhtmlXCombo(h);g.combo.setSkin(h.skin);g.combo.attachEvent("onChange",function(j,l){g._callHandler(g.id,[j,l]);if(g.conf.callEvent==true){g.callEvent("onSelectOption",[g.id,j,l])}g.conf.callEvent=true});if(g.conf.data){g.combo.load(g.conf.data);delete g.conf.data}if(typeof(this.afterRender)=="function"){this.afterRender(g)}if(g.conf.disable){this.disable(g)}return g},callAfterInit:function(a){this._detachEventFromItem(a.base)},disable:function(c){var a=c.base.lastChild;if(c.combo instanceof dhtmlXCombo){c.combo.disable()}if(!/\s?dhxrb_disable_text_style/i.test(a.className)){a.className+=" dhxrb_disable_text_style"}return true},enable:function(c){var a=c.base.lastChild;if(c.combo instanceof dhtmlXCombo){c.combo.enable()}if(/\s?dhxrb_disable_text_style/i.test(a.className)){a.className=a.className.replace(/\s?dhxrb_disable_text_style/i,"")}return true},remove:function(a){if(a.combo instanceof dhtmlXCombo){a.combo.unload();a.combo=null}},getValue:function(a){var c=null;if(a.combo instanceof dhtmlXCombo){c=a.combo.getSelectedValue()}return c},setValue:function(a,c,e){if(a.combo instanceof dhtmlXCombo){a.conf.callEvent=e;a.combo.setComboValue(c)}},setSkin:function(a,c){if(a.combo instanceof dhtmlXCombo){a.combo.setSkin(c)}}};dhtmlXRibbon.prototype.items.slider={render:function(a,h){var e,g,c={};g={base:a,id:h.id,type:h.type,conf:{text:"",text_pos:"right",size:150,vertical:false,min:0,max:99,value:0,step:1,margin:10,disabled:false,enableTooltip:false}};for(e in h){if(e=="id"||e=="onclick"||e=="type"){continue}g.conf[e]=h[e]}for(e in g.conf){if(e=="text"||e=="text_pos"||e=="isbig"){continue}c[e]=g.conf[e]}g.base.innerHTML="<center><div class='dhxrb_slider'></div></center><div class='dhxrb_label_button'>"+g.conf.text+"</div>";c.parent=g.base.firstChild.firstChild;g.slider=new dhtmlXSlider(c);if(typeof(this.afterRender)=="function"){this.afterRender(g)}if(g.conf.disable){this.disable(g)}g.slider.attachEvent("onChange",function(j){g._callHandler(g.id,[j]);g.callEvent("onValueChange",[g.id,j])});return g},callAfterInit:function(a){this._detachEventFromItem(a.base)},setSkin:function(a,c){if(a.slider instanceof dhtmlXSlider){a.slider.setSkin(c)}},disable:function(c){var a=c.base.childNodes[1];if(c.slider instanceof dhtmlXSlider){c.slider.disable()}if(!/\s?dhxrb_disable_text_style/i.test(a.className)){a.className+=" dhxrb_disable_text_style"}return true},enable:function(c){var a=c.base.childNodes[1];if(c.slider instanceof dhtmlXSlider){c.slider.enable()}if(/\s?dhxrb_disable_text_style/i.test(a.className)){a.className=a.className.replace(/\s?dhxrb_disable_text_style/i,"")}return true},remove:function(a){if(a.slider instanceof dhtmlXSlider){a.slider.unload();a.slider=null}},getValue:function(a){var c=null;if(a.slider instanceof dhtmlXSlider){c=a.slider.getValue()}return c},setValue:function(a,c){if(a.slider instanceof dhtmlXSlider){a.slider.setValue(c)}}};dhtmlXRibbon.prototype.items._extends=function(e,c){var a;for(a in c){e[a]=e[a]||c[a]}return e};dhtmlXRibbon.prototype._addNewLevel=function(e){var c,a;if(e.conf.mode=="rows"){c=e.contForItems.lastChild;if(c&&/dhxrb_block_rows/i.test(c.className)&&(c.childNodes.length<3)){a=document.createElement("div");a.className="dhxrb_block_row";c.appendChild(a)}else{c=document.createElement("div");c.className="dhxrb_block_rows";e.contForItems.appendChild(c);a=document.createElement("div");a.className="dhxrb_block_row";c.appendChild(a)}}else{var a=document.createElement("div");a.className="dhxrb_3rows_block";e.contForItems.appendChild(a)}};dhtmlXRibbon.prototype._attachEventForItem=function(a){if(typeof(window.addEventListener)=="function"){a.addEventListener("mouseover",this._doOnHighlight0,false);a.addEventListener("mouseout",this._doOffHighlight0,false);a.addEventListener("mousedown",this._doOnHighlight1,false);a.addEventListener("mouseup",this._doOffHighlight1,false);a.addEventListener("click",this._doOnClick,false)}else{a.attachEvent("onmouseover",this._doOnHighlight0);a.attachEvent("onmouseout",this._doOffHighlight0);a.attachEvent("onmousedown",this._doOnHighlight1);a.attachEvent("onmouseup",this._doOffHighlight1);a.attachEvent("onclick",this._doOnClick)}};dhtmlXRibbon.prototype._detachEventFromItem=function(a){if(typeof(window.addEventListener)=="function"){a.removeEventListener("mouseover",this._doOnHighlight0,false);a.removeEventListener("mouseout",this._doOffHighlight0,false);a.removeEventListener("mousedown",this._doOnHighlight1,false);a.removeEventListener("mouseup",this._doOffHighlight1,false);a.removeEventListener("click",this._doOnClick,false)}else{a.detachEvent("onmouseover",this._doOnHighlight0);a.detachEvent("onmouseout",this._doOffHighlight0);a.detachEvent("onmousedown",this._doOnHighlight1);a.detachEvent("onmouseup",this._doOffHighlight1);a.detachEvent("onclick",this._doOnClick)}};dhtmlXRibbon.prototype._attachEventsToInput=function(a){if(typeof(window.addEventListener)=="function"){a.addEventListener("focus",this._doOnFocus,false);a.addEventListener("blur",this._doOnBlur,false);a.addEventListener("change",this._doOnChange,false);a.addEventListener("keydown",this._doOnKeydown,false)}else{a.attachEvent("onfocus",this._doOnFocus);a.attachEvent("onblur",this._doOnBlur);a.attachEvent("onchange",this._doOnChange);a.attachEvent("onkeydown",this._doOnKeydown)}};dhtmlXRibbon.prototype._detachEventsFromInput=function(a){if(typeof(window.addEventListener)=="function"){a.removeEventListener("focus",this._doOnFocus,false);a.removeEventListener("blur",this._doOnBlur,false);a.removeEventListener("change",this._doOnChange,false);a.removeEventListener("keydown",this._doOnKeydown,false)}else{a.detachEvent("onfocus",this._doOnFocus);a.detachEvent("onblur",this._doOnBlur);a.detachEvent("onchange",this._doOnChange);a.detachEvent("onkeydown",this._doOnKeydown)}};dhtmlXRibbon.prototype._getContainerForSmallItem=function(e){var c=e.contForItems.lastChild,a=null;if(e.conf.mode=="rows"){if(c&&/\s?dhxrb_block_rows/i.test(c.className)){a=c.lastChild;if(!a){a=document.createElement("div");a.className="dhxrb_block_row";c.appendChild(a)}}else{c=document.createElement("div");c.className="dhxrb_block_rows";e.contForItems.appendChild(c);a=document.createElement("div");a.className="dhxrb_block_row";c.appendChild(a)}}else{if(c&&/dhxrb_3rows_block/i.test(c.className)&&(c.childNodes.length<3)){a=c}else{a=document.createElement("div");a.className="dhxrb_3rows_block";e.contForItems.appendChild(a)}}return a};dhtmlXRibbon.prototype._findItemByNode=function(a){while(a&&!a._dhx_ribbonId){a=a.parentNode}return a};dhtmlXRibbon.prototype._indexOf=function(a,g){var e,c;c=a.length;for(e=0;e<c;e++){if(a[e]==g){return e}}return -1};dhtmlXRibbon.prototype._removeItem=function(e){var a,g=-1,c=this._items[e.parentId];if(e.type=="group"){this._removeGroup(e);return}delete this._items[e.id];a=e.base.parentNode;this._detachEventFromItem(e.base);a.removeChild(e.base);if(c.type=="block"){if(a!=c.contForItems&&a.childNodes.length==0){a.parentNode.removeChild(a)}}else{if(c.type=="group"){dhtmlXRibbon.prototype.items.group.normalize(c)}}g=this._indexOf(c.childIds,e.id);if(g!=-1){c.childIds.splice(g,1)}if(this.items[e.type]&&(typeof(this.items[e.type].remove)=="function")){this.items[e.type].remove(e,this)}};dhtmlXRibbon.prototype._removeGroup=function(g){var c=[],j,e=this._items[g.parentId],a=g.base.parentNode;for(var h=0;h<g.childIds.length;h++){c.push(this._items[g.childIds[h]])}for(var h=0;h<c.length;h++){this._removeItem(c[h])}delete this._items[g.id];if(g.base.parentNode){a.removeChild(g.base)}if(a.childNodes.length==0){a.parentNode.removeChild(a)}j=this._indexOf(e.childIds,g.id);if(j!=-1){e.childIds.splice(j,1)}if(this.items[g.type]&&(typeof(this.items[g.type].remove)=="function")){this.items[g.type].remove(g)}};dhtmlXRibbon.prototype._removeBlock=function(h){var a=[],g,c;for(var e=0;e<h.childIds.length;e++){a.push(this._items[h.childIds[e]])}for(var e=0;e<a.length;e++){this._removeItem(a[e])}delete this._items[h.id];h.base.parentNode.removeChild(h.base);if(h.parentId){c=this._items[h.parentId]}else{c=this}g=this._indexOf(c.childIds,h.id);if(g!=-1){c.childIds.splice(g,1)}};dhtmlXRibbon.prototype._removeTab=function(c,a){var h=[],g;for(var e=0;e<c.childIds.length;e++){h.push(this._items[c.childIds[e]])}for(var e=0;e<h.length;e++){this._removeBlock(h[e])}delete this._items[c.id];g=this._indexOf(this.childIds,c.id);if(g!=-1){this.childIds.splice(g,1)}};dhtmlXRibbon.prototype._skinCollection={dhx_skyblue:true,dhx_web:true,dhx_terrace:true};dhtmlXRibbon.prototype._setSkinForItems=function(e){var a,c;for(a in this._items){c=this._items[a];c.conf.skin=e;if(dhtmlXRibbon.prototype.items[c.type]&&typeof(dhtmlXRibbon.prototype.items[c.type].setSkin)=="function"){dhtmlXRibbon.prototype.items[c.type].setSkin(c,e)}}c=undefined,a=undefined};dhtmlXRibbon.prototype._setBlockText=function(a,c){a.conf.text=c;a.contForText.innerHTML=c;if(!c&&(c!=0)&&a.contForText.parentNode){a.contForText.parentNode.removeChild(a.contForText)}else{if(!a.contForText.parentNode){if(a.conf.text_pos=="top"){a.base.insertBefore(a.contForText,a.contForItems)}else{a.base.appendChild(a.contForText)}}}};dhtmlXRibbon.prototype.hide=function(e){var c=this._items[e];if(this.items[c.type]&&(typeof(this.items[c.type].hide)=="function")){if(this.items[c.type].hide(c)!=true){return}}if(c.type=="tab"){return}else{if(!/\s?dhxrb_item_hide/i.test(c.base.className)){c.base.className+=" dhxrb_item_hide"}}var a=this._items[c.parentId];if(a&&this.items[a.type]&&(typeof(this.items[a.type].hideChild)=="function")){this.items[a.type].hideChild(a,c)}};dhtmlXRibbon.prototype.show=function(e){var c=this._items[e];if(this.items[c.type]&&(typeof(this.items[c.type].show)=="function")){if(this.items[c.type].show(c)!=true){return}}if(c.type=="tab"){return}else{if(/\s?dhxrb_item_hide/i.test(c.base.className)){c.base.className=c.base.className.replace(/\s?dhxrb_item_hide/i,"")}}var a=this._items[c.parentId];if(a&&this.items[a.type]&&(typeof(this.items[a.type].showChild)=="function")){this.items[a.type].showChild(a,c)}};dhtmlXRibbon.prototype.check=function(e,c){c=dhx4.s2b(c);var a=this._items[e];if(a&&!a.conf.checked&&typeof(this.items[a.type].check)=="function"){this.items[a.type].check(a);if(c){this.callEvent("onCheck",[a.id,a.conf.checked])}}};dhtmlXRibbon.prototype.uncheck=function(e,c){c=dhx4.s2b(c);var a=this._items[e];if(a&&a.conf.checked&&typeof(this.items[a.type].uncheck)=="function"){this.items[a.type].uncheck(a);if(c){this.callEvent("onCheck",[a.id,a.conf.checked])}}};dhtmlXRibbon.prototype.isChecked=function(c){var a=this._items[c];if(a&&typeof(this.items[a.type].isChecked)=="function"){return this.items[a.type].isChecked(a)}};dhtmlXRibbon.prototype.disable=function(g,a){var c=this._items[g];if(this.items[c.type]&&(typeof(this.items[c.type].disable)=="function")){if(this.items[c.type].disable(c)!=true){return}}if(c.type=="tab"){return}else{if(c.type=="block"||c.type=="group"){for(var e=0;e<c.childIds.length;e++){this.disable(c.childIds[e])}}}if(!/\s?dhxrb_item_disable/i.test(c.base.className)){c.base.className+=" dhxrb_item_disable"}c.conf.disable=true};dhtmlXRibbon.prototype.enable=function(e,a){var c=this._items[e];if(this.items[c.type]&&(typeof(this.items[c.type].enable)=="function")){if(this.items[c.type].enable(c)!=true){return}}if(c.type=="tab"){return}else{if(c.type=="block"||c.type=="group"){for(q=0;q<c.childIds.length;q++){this.enable(c.childIds[q])}}}if(/\s?dhxrb_item_disable/i.test(c.base.className)){c.base.className=c.base.className.replace(/\s?dhxrb_item_disable/i,"")}c.conf.disable=false};dhtmlXRibbon.prototype.isEnabled=function(c){var a=this._items[c];if(this.items[a.type]&&typeof(this.items[a.type].isEnabled)=="function"){return this.items[a.type].isEnabled(a)}if(a.type=="tab"){return}else{return a.conf.disable!=true}};dhtmlXRibbon.prototype.isVisible=function(c){var a=this._items[c];if(this.items[a.type]&&(typeof(this.items[a.type].isVisible)=="function")){return this.items[a.type].isVisible(a)}if(a.type=="tab"){return}else{return !/\s?dhxrb_item_hide/i.test(a.base.className)}};dhtmlXRibbon.prototype.setItemState=function(g,c,e){c=dhx4.s2b(c);e=dhx4.s2b(e);var a=this._items[g];if(a&&(typeof(this.items[a.type].setState)=="function")){switch(a.type){case"buttonSegment":this.items[a.type].setState(a,this,e);break;default:this.items[a.type].setState(a,c,e)}}};dhtmlXRibbon.prototype.getItemState=function(c){var a=this._items[c];if(a&&(typeof(this.items[a.type].getState)=="function")){switch(a.type){case"buttonTwoState":case"buttonSegment":return this.items[a.type].getState(a);break}}return null};dhtmlXRibbon.prototype.setIconPath=function(a){this.conf.icons_path=a};dhtmlXRibbon.prototype.removeItem=function(c){var a=this._items[c];if(a==null){return}switch(a.type){case"tab":break;case"block":this._removeBlock(a);break;case"group":this._removeGroup(a);break;default:this._removeItem(a)}};dhtmlXRibbon.prototype.setSkin=function(h){h=(typeof(h)=="string")?h.toLowerCase():"";if(this._skinCollection[h]!=true){return}var e,c=-1,a,g="dhtmlxribbon";e=this._base.className.match(/\S\w+/ig);if(e instanceof Array){for(a in this._skinCollection){if(c==-1){c=this._indexOf(e,g+"_"+a)}else{break}}c=(c==-1)?e.length:c}else{e=[];c=0}e[c]=g+"_"+h;this._base.className=e.join(" ");this.conf.skin=h;if(this._tabbar!=null){this._tabbar.setSkin(h)}this._setSkinForItems(h)};dhtmlXRibbon.prototype.tabs=function(a){if(this._tabbar instanceof dhtmlXTabBar){return this._tabbar.tabs(a)}else{return undefined}};dhtmlXRibbon.prototype.getItemType=function(c){var a=this._items[c];if(a){return a.type}else{return undefined}};dhtmlXRibbon.prototype.getValue=function(e){var a=this._items[e],c=undefined;if(a&&this.items[a.type]&&typeof(this.items[a.type].getValue)=="function"){c=this.items[a.type].getValue(a)}return c};dhtmlXRibbon.prototype.setValue=function(g,c,e){var a=this._items[g];e=(e===false?false:true);if(a&&this.items[a.type]&&typeof(this.items[a.type].setValue)=="function"){this.items[a.type].setValue(a,c,e)}};dhtmlXRibbon.prototype.getItemText=function(c){var a=this._items[c];if(!a){return null}else{if(a.type=="tab"){return this.tabs(a.id).getText()}else{if(a.type=="block"){return this.items.button.getText(a)}else{if(this.items[a.type]&&typeof(this.items[a.type].getText)=="function"){return this.items[a.type].getText(a)}else{return null}}}}};dhtmlXRibbon.prototype.setItemText=function(e,c){var a=this._items[e];if(!a){return}else{if(a.type=="tab"){this.tabs(a.id).setText(c)}else{if(a.type=="block"){this._setBlockText(a,c)}else{if(this.items[a.type]&&typeof(this.items[a.type].setText)=="function"){this.items[a.type].setText(a,c)}}}}};dhtmlXRibbon.prototype.setItemOptionText=function(g,e,c){var a=this._items[g];if(a.type=="buttonSelect"){this.items[a.type].setOptionText(a,e,c)}};dhtmlXRibbon.prototype.getItemOptionText=function(e,c){var a=this._items[e];if(a.type=="buttonSelect"){return this.items[a.type].getOptionText(a,c)}return null};dhtmlXRibbon.prototype.setItemImage=function(e,a){var c=this._items[e];if(c!=null&&this.items[c.type]!=null&&typeof(this.items[c.type].setImage)=="function"){this.items[c.type].setImage(c,a)}};dhtmlXRibbon.prototype.setItemImageDis=function(e,a){var c=this._items[e];if(c!=null&&this.items[c.type]!=null&&typeof(this.items[c.type].setImageDis)=="function"){this.items[c.type].setImageDis(c,a)}};dhtmlXRibbon.prototype.getCombo=function(c){var a=this._items[c];if(a!=null&&a.type=="buttonCombo"){return a.combo}return null};(function(){var a=dhtmlXRibbon.prototype.items;a.buttonTwoState=a._extends(a.buttonTwoState,a.button);a.buttonSelect=a._extends(a.buttonSelect,a.buttonTwoState);a.buttonSegment=a._extends(a.buttonSegment,a.buttonTwoState)})();if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype._createNode_ribbon=function(h,c,g,a,e){if(typeof(e)!="undefined"){h=e}else{h=document.createElement("DIV");h.className="dhx_cell_ribbon_"+(this.conf.borders?"def":"no_borders");h.appendChild(document.createElement("DIV"))}this.cell.insertBefore(h,this.cell.childNodes[this.conf.idx.cont]);this.conf.ofs_nodes.t.ribbon=true;this._updateIdx();this._adjustCont(this._idd);return h};dhtmlXCellObject.prototype.attachRibbon=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}this.callEvent("_onBeforeContentAttach",["ribbon"]);if(typeof(a)=="undefined"){a={}}if(typeof(a.skin)=="undefined"){a.skin=this.conf.skin}a.parent=this._attachObject("ribbon").firstChild;this.dataNodes.ribbon=new dhtmlXRibbon(a);var c=this;this.dataNodes.ribbon.attachEvent("_onHeightChanged",function(){c._adjustCont(c._idd)});this._adjustCont();a.parent=null;a=null;this.callEvent("_onContentAttach",[]);return this.dataNodes.ribbon};dhtmlXCellObject.prototype.detachRibbon=function(){if(!this.dataNodes.ribbon){return}this.dataNodes.ribbon.unload();this.dataNodes.ribbon=null;delete this.dataNodes.ribbon;this._detachObject("ribbon")};dhtmlXCellObject.prototype.showRibbon=function(){this._mtbShowHide("ribbon","")};dhtmlXCellObject.prototype.hideRibbon=function(){this._mtbShowHide("ribbon","none")};dhtmlXCellObject.prototype.getAttachedRibbon=function(){return this.dataNodes.ribbon}}function dhtmlXToolbarObject(c,e){var a=this;this.conf={skin:(e||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxtoolbar")||"dhx_skyblue"),align:"left",align_autostart:"left",icons_path:"",iconSize:18,sel_ofs_x:0,sel_ofs_y:0,xml_autoload:null,items_autoload:null};if(typeof(c)=="object"&&c!=null&&typeof(c.tagName)=="undefined"){if(c.icons_path!=null||c.icon_path!=null){this.conf.icons_path=(c.icons_path||c.icon_path)}if(c.icons_size!=null){this.conf.icons_size_autoload=c.icons_size}if(c.json!=null){this.conf.json_autoload=c.json}if(c.xml!=null){this.conf.xml_autoload=c.xml}if(c.onload!=null){this.conf.onload_autoload=c.onload}if(c.onclick!=null||c.onClick!=null){this.conf.auto_onclick=(c.onclick||c.onClick)}if(c.items!=null){this.conf.items_autoload=c.items}if(c.skin!=null){this.conf.skin=c.skin}if(c.align!=null){this.conf.align_autostart=c.align}c=c.parent}this.cont=(typeof(c)!="object")?document.getElementById(c):c;while(this.cont.childNodes.length>0){this.cont.removeChild(this.cont.childNodes[0])}c=null;this.cont.dir="ltr";this.base=document.createElement("DIV");this.base.className="dhxtoolbar_float_left";this.cont.appendChild(this.base);this.cont.ontouchstart=function(g){g=g||event;if((String(g.target.tagName||"").toLowerCase()=="input")){return true}if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}g.cancelBubble=true;return false};this.setSkin(this.conf.skin);this.objPull={};this.anyUsed="none";this._genStr=function(g){var h="dhxId_";var l="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var j=0;j<g;j++){h+=l.charAt(Math.round(Math.random()*(l.length-1)))}return h};this.rootTypes=new Array("button","buttonSelect","buttonTwoState","separator","label","slider","text","buttonInput");this.idPrefix=this._genStr(12);window.dhx4._enableDataLoading(this,"_initObj","_xmlToJson","toolbar",{struct:true});window.dhx4._eventable(this);this._getObj=function(l,g){var h=null;for(var j=0;j<l.childNodes.length;j++){if(l.childNodes[j].tagName!=null){if(String(l.childNodes[j].tagName).toLowerCase()==String(g).toLowerCase()){h=l.childNodes[j]}}}return h};this._addImgObj=function(h){var g=document.createElement("IMG");if(h.childNodes.length>0){h.insertBefore(g,h.childNodes[0])}else{h.appendChild(g)}return g};this._setItemImage=function(l,h,g){if(g==true){l.imgEn=h}else{l.imgDis=h}if((!l.state&&g==true)||(l.state&&g==false)){return}var j=this._getObj(l.obj,"img");if(j==null){j=this._addImgObj(l.obj)}j.src=this.conf.icons_path+h};this._clearItemImage=function(j,g){if(g==true){j.imgEn=""}else{j.imgDis=""}if((!j.state&&g==true)||(j.state&&g==false)){return}var h=this._getObj(j.obj,"img");if(h!=null){h.parentNode.removeChild(h)}};this._setItemText=function(g,j){var h=this._getObj(g.obj,"div");if(j==null||j.length==0){if(h!=null){h.parentNode.removeChild(h)}return}if(h==null){h=document.createElement("DIV");h.className="dhxtoolbar_text";g.obj.appendChild(h)}h.innerHTML=j};this._getItemText=function(g){var h=this._getObj(g.obj,"div");if(h!=null){return h.innerHTML}return""};this._enableItem=function(h){if(h.state){return}h.state=true;if(this.objPull[h.id]["type"]=="buttonTwoState"&&this.objPull[h.id]["obj"]["pressed"]==true){h.obj.className="dhx_toolbar_btn dhxtoolbar_btn_pres";h.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_over"}else{h.obj.className="dhx_toolbar_btn dhxtoolbar_btn_def";h.obj.renderAs=h.obj.className}if(h.arw){h.arw.className=String(h.obj.className).replace("btn","arw")}var g=this._getObj(h.obj,"img");if(h.imgEn!=""){if(g==null){g=this._addImgObj(h.obj)}g.src=this.conf.icons_path+h.imgEn}else{if(g!=null){g.parentNode.removeChild(g)}}};this._disableItem=function(h){if(!h.state){return}h.state=false;h.obj.className="dhx_toolbar_btn dhxtoolbar_btn_"+(this.objPull[h.id]["type"]=="buttonTwoState"&&h.obj.pressed?"pres_":"")+"dis";h.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";if(h.arw){h.arw.className=String(h.obj.className).replace("btn","arw")}var g=this._getObj(h.obj,"img");if(h.imgDis!=""){if(g==null){g=this._addImgObj(h.obj)}g.src=this.conf.icons_path+h.imgDis}else{if(g!=null){g.parentNode.removeChild(g)}}if(h.polygon!=null){if(h.polygon.style.display!="none"){window.dhx4.zim.clear(h.polygon._idd);h.polygon.style.display="none";if(h.polygon._ie6cover){h.polygon._ie6cover.style.display="none"}if(this.conf.skin=="dhx_terrace"){this._improveTerraceButtonSelect(h.id,true)}this.callEvent("onButtonSelectHide",[h.obj.idd])}}this.anyUsed="none"};this.clearAll=function(){for(var g in this.objPull){this._removeItem(String(g).replace(this.idPrefix,""))}};this._doOnClick=function(g){if(a&&a.forEachItem){a.forEachItem(function(j){if(a.objPull[a.idPrefix+j]["type"]=="buttonSelect"){var h=a.objPull[a.idPrefix+j];if(h.arw._skip===true){h.arw._skip=false}else{if(h.polygon.style.display!="none"){h.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";h.obj.className=h.obj.renderAs;h.arw.className=String(h.obj.renderAs).replace("btn","arw");a.anyUsed="none";window.dhx4.zim.clear(h.polygon._idd);h.polygon.style.display="none";if(h.polygon._ie6cover){h.polygon._ie6cover.style.display="none"}if(a.conf.skin=="dhx_terrace"){a._improveTerraceButtonSelect(h.id,true)}a.callEvent("onButtonSelectHide",[h.obj.idd])}}}})}};if(typeof(window.addEventListener)!="undefined"){window.addEventListener("mousedown",this._doOnClick,false);window.addEventListener("touchstart",this._doOnClick,false)}else{document.body.attachEvent("onmousedown",this._doOnClick)}if(this.conf.icons_size_autoload!=null){this.setIconSize(this.conf.icons_size_autoload);this.conf.icons_size_autoload=null}if(this.conf.items_autoload!=null){this.loadStruct(this.conf.items_autoload,this.conf.onload_autoload);this.conf.items_autoload=null}else{if(this.conf.json_autoload!=null){this.loadStruct(this.conf.json_autoload,this.conf.onload_autoload);this.conf.json_autoload=null}else{if(this.conf.xml_autoload!=null){this.loadStruct(this.conf.xml_autoload,this.conf.onload_autoload);this.conf.xml_autoload=null}}}if(this.conf.align_autostart!=this.conf.align){this.setAlign(this.conf.align_autostart);this.conf.align_autostart=null}if(typeof(this.conf.auto_onclick)=="function"){this.attachEvent("onClick",this.conf.auto_onclick)}else{if(typeof(this.conf.auto_onclick)=="string"&&typeof(window[this.conf.auto_onclick])=="function"){this.attachEvent("onClick",window[this.conf.auto_onclick])}}return this}dhtmlXToolbarObject.prototype.addSpacer=function(e){var c=this.idPrefix+e;if(this._spacer!=null){if(this._spacer.idd==e){return}if(this._spacer==this.objPull[c].obj.parentNode){var a=true;while(a){var l=this._spacer.childNodes[0].idd;this.base.appendChild(this._spacer.childNodes[0]);if(l==e||this._spacer.childNodes.length==0){if(this.objPull[c].arw!=null){this.base.appendChild(this.objPull[c].arw)}a=false}}this._spacer.idd=e;this._fixSpacer();return}if(this.base==this.objPull[c].obj.parentNode){var a=true;var j=(this.objPull[c].arw!=null);while(a){var g=this.base.childNodes.length-1;if(j==true){if(this.base.childNodes[g]==this.objPull[c].arw){a=false}}if(this.base.childNodes[g].idd==e){a=false}if(a){if(this._spacer.childNodes.length>0){this._spacer.insertBefore(this.base.childNodes[g],this._spacer.childNodes[0])}else{this._spacer.appendChild(this.base.childNodes[g])}}}this._spacer.idd=e;this._fixSpacer();return}}else{var h=null;for(var g=0;g<this.base.childNodes.length;g++){if(this.base.childNodes[g]==this.objPull[this.idPrefix+e].obj){h=g;if(this.objPull[this.idPrefix+e].arw!=null){h=g+1}}}if(h!=null){this._spacer=document.createElement("DIV");this._spacer.className=(this.conf.align=="right"?" dhxtoolbar_float_left":" dhxtoolbar_float_right");this._spacer.dir="ltr";this._spacer.idd=e;while(this.base.childNodes.length>h+1){this._spacer.appendChild(this.base.childNodes[h+1])}this.cont.appendChild(this._spacer);this._fixSpacer()}}if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype.removeSpacer=function(){if(!this._spacer){return}while(this._spacer.childNodes.length>0){this.base.appendChild(this._spacer.childNodes[0])}this._spacer.parentNode.removeChild(this._spacer);this._spacer=null;if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype._fixSpacer=function(){if(typeof(window.addEventListener)=="undefined"&&this._spacer!=null){this._spacer.style.borderLeft="1px solid #a4bed4";var a=this._spacer;window.setTimeout(function(){a.style.borderLeft="0px solid #a4bed4";a=null},1)}};dhtmlXToolbarObject.prototype.getType=function(e){var g=this.getParentId(e);if(g!=null){var c=null;var a=this.objPull[this.idPrefix+g]._listOptions[e];if(a!=null){if(a.sep!=null){c="buttonSelectSeparator"}else{c="buttonSelectButton"}}return c}else{if(this.objPull[this.idPrefix+e]==null){return null}return this.objPull[this.idPrefix+e]["type"]}};dhtmlXToolbarObject.prototype.getTypeExt=function(c){var a=this.getType(c);if(a=="buttonSelectButton"||a=="buttonSelectSeparator"){if(a=="buttonSelectButton"){a="button"}else{a="separator"}return a}return null};dhtmlXToolbarObject.prototype.inArray=function(e,c){for(var a=0;a<e.length;a++){if(e[a]==c){return true}}return false};dhtmlXToolbarObject.prototype.getParentId=function(g){var h=null;for(var e in this.objPull){if(this.objPull[e]._listOptions){for(var c in this.objPull[e]._listOptions){if(c==g){h=String(e).replace(this.idPrefix,"")}}}}return h};dhtmlXToolbarObject.prototype._addItem=function(a,c){if(typeof(a.text)=="string"){a.text=window.dhx4.trim(a.text);if(a.text.length==0){a.text=null}}this._addItemToStorage(a,c);if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype.addButton=function(h,g,c,a,e){this._addItem({id:h,type:"button",text:c,img:a,imgdis:e},g)};dhtmlXToolbarObject.prototype.addText=function(e,c,a){this._addItem({id:e,type:"text",text:a},c)};dhtmlXToolbarObject.prototype.addButtonSelect=function(g,m,r,a,c,n,l,v,h,j){var s=[];for(var e=0;e<a.length;e++){var o={};if(a[e] instanceof Array){o.id=a[e][0];o.type=(a[e][1]=="obj"?"button":"separator");o.text=(a[e][2]||null);o.img=(a[e][3]||null)}else{if(a[e] instanceof Object&&a[e]!=null&&typeof(a[e].id)!="undefined"&&typeof(a[e].type)!="undefined"){o.id=a[e].id;o.type=(a[e].type=="obj"?"button":"separator");o.text=a[e].text;o.img=a[e].img}}s.push(o)}this._addItem({id:g,type:"buttonSelect",text:r,img:c,imgdis:n,renderSelect:l,openAll:v,options:s,maxOpen:h,mode:j},m)};dhtmlXToolbarObject.prototype.addButtonTwoState=function(h,g,c,a,e){this._addItem({id:h,type:"buttonTwoState",img:a,imgdis:e,text:c},g)};dhtmlXToolbarObject.prototype.addSeparator=function(c,a){this._addItem({id:c,type:"separator"},a)};dhtmlXToolbarObject.prototype.addSlider=function(c,l,h,g,n,e,j,a,m){this._addItem({id:c,type:"slider",length:h,valueMin:g,valueMax:n,valueNow:e,textMin:j,textMax:a,toolTip:m},l)};dhtmlXToolbarObject.prototype.addInput=function(g,e,c,a){this._addItem({id:g,type:"buttonInput",value:c,width:a},e)};dhtmlXToolbarObject.prototype.forEachItem=function(e){for(var c in this.objPull){if(this.inArray(this.rootTypes,this.objPull[c]["type"])){e(this.objPull[c]["id"].replace(this.idPrefix,""))}}};(function(){var j="isVisible,enableItem,disableItem,isEnabled,setItemText,getItemText,setItemToolTip,getItemToolTip,getInput,setItemImage,setItemImageDis,clearItemImage,clearItemImageDis,setItemState,getItemState,setItemToolTipTemplate,getItemToolTipTemplate,setValue,getValue,setMinValue,getMinValue,setMaxValue,getMaxValue,setWidth,getWidth,setMaxOpen".split(",");var e=[false,"","",false,"","","","","","","","","",false,"","","",null,"",[null,null],"",[null,null],"",null];var c=function(l,m){return function(r,o,n){r=this.idPrefix+r;if(this.objPull[r][l]!=null){return this.objPull[r][l].call(this.objPull[r],o,n)}else{return m}}};for(var h=0;h<j.length;h++){var a=j[h];var g=e[h];dhtmlXToolbarObject.prototype[a]=c(a,g)}})();dhtmlXToolbarObject.prototype.showItem=function(a){a=this.idPrefix+a;if(this.objPull[a]!=null&&this.objPull[a].showItem!=null){this.objPull[a].showItem();if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}}};dhtmlXToolbarObject.prototype.hideItem=function(a){a=this.idPrefix+a;if(this.objPull[a]!=null&&this.objPull[a].hideItem!=null){this.objPull[a].hideItem();if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}}};dhtmlXToolbarObject.prototype.getPosition=function(a){return this._getPosition(a)};dhtmlXToolbarObject.prototype._getPosition=function(h,e){if(this.objPull[this.idPrefix+h]==null){return null}var g=null;var a=0;for(var c=0;c<this.base.childNodes.length;c++){if(this.base.childNodes[c].idd!=null){if(this.base.childNodes[c].idd==h){g=a}a++}}if(!g&&this._spacer!=null){for(var c=0;c<this._spacer.childNodes.length;c++){if(this._spacer.childNodes[c].idd!=null){if(this._spacer.childNodes[c].idd==h){g=a}a++}}}return g};dhtmlXToolbarObject.prototype.setPosition=function(a,c){this._setPosition(a,c)};dhtmlXToolbarObject.prototype._setPosition=function(h,g){if(this.objPull[this.idPrefix+h]==null){return}var a=null;if(this._spacer){a=this._spacer.idd;this.removeSpacer()}if(isNaN(g)){g=this.base.childNodes.length}if(g<0){g=0}var e=this.objPull[this.idPrefix+h];this.base.removeChild(e.obj);if(e.arw){this.base.removeChild(e.arw)}var c=this._getIdByPosition(g,true);if(c[0]==null){this.base.appendChild(e.obj);if(e.arw){this.base.appendChild(e.arw)}}else{this.base.insertBefore(e.obj,this.base.childNodes[c[1]]);if(e.arw){this.base.insertBefore(e.arw,this.base.childNodes[c[1]+1])}}if(a!=null){this.addSpacer(a)}};dhtmlXToolbarObject.prototype._getIdByPosition=function(j,c){var h=null;var a=0;var e=0;for(var g=0;g<this.base.childNodes.length;g++){if(this.base.childNodes[g]["idd"]!=null&&h==null){if((a++)==j){h=this.base.childNodes[g]["idd"]}}if(h==null){e++}}e=(h==null?null:e);return(c==true?new Array(h,e):h)};dhtmlXToolbarObject.prototype.removeItem=function(a){this._removeItem(a);if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype._removeItem=function(h){var e=this.getType(h);h=this.idPrefix+h;var g=this.objPull[h];if(e=="button"){g.obj._doOnMouseOver=null;g.obj._doOnMouseOut=null;g.obj._doOnMouseUp=null;g.obj._doOnMouseUpOnceAnywhere=null;g.obj.onclick=null;g.obj.onmouseover=null;g.obj.onmouseout=null;g.obj.onmouseup=null;g.obj.onmousedown=null;g.obj.onselectstart=null;g.obj.renderAs=null;g.obj.idd=null;g.obj.parentNode.removeChild(g.obj);g.obj=null;g.id=null;g.state=null;g.img=null;g.imgEn=null;g.imgDis=null;g.type=null;g.enableItem=null;g.disableItem=null;g.isEnabled=null;g.showItem=null;g.hideItem=null;g.isVisible=null;g.setItemText=null;g.getItemText=null;g.setItemImage=null;g.clearItemImage=null;g.setItemImageDis=null;g.clearItemImageDis=null;g.setItemToolTip=null;g.getItemToolTip=null}if(e=="buttonTwoState"){g.obj._doOnMouseOver=null;g.obj._doOnMouseOut=null;g.obj.onmouseover=null;g.obj.onmouseout=null;g.obj.onmousedown=null;g.obj.onselectstart=null;g.obj.renderAs=null;g.obj.idd=null;g.obj.parentNode.removeChild(g.obj);g.obj=null;g.id=null;g.state=null;g.img=null;g.imgEn=null;g.imgDis=null;g.type=null;g.enableItem=null;g.disableItem=null;g.isEnabled=null;g.showItem=null;g.hideItem=null;g.isVisible=null;g.setItemText=null;g.getItemText=null;g.setItemImage=null;g.clearItemImage=null;g.setItemImageDis=null;g.clearItemImageDis=null;g.setItemToolTip=null;g.getItemToolTip=null;g.setItemState=null;g.getItemState=null}if(e=="buttonSelect"){for(var c in g._listOptions){this.removeListOption(h,c)}g._listOptions=null;if(g.polygon._ie6cover){document.body.removeChild(g.polygon._ie6cover);g.polygon._ie6cover=null}g.p_tbl.removeChild(g.p_tbody);g.polygon.removeChild(g.p_tbl);g.polygon.onselectstart=null;document.body.removeChild(g.polygon);g.p_tbody=null;g.p_tbl=null;g.polygon=null;g.obj.onclick=null;g.obj.onmouseover=null;g.obj.onmouseout=null;g.obj.onmouseup=null;g.obj.onmousedown=null;g.obj.onselectstart=null;g.obj.idd=null;g.obj.iddPrefix=null;g.obj.parentNode.removeChild(g.obj);g.obj=null;g.arw.onclick=null;g.arw.onmouseover=null;g.arw.onmouseout=null;g.arw.onmouseup=null;g.arw.onmousedown=null;g.arw.onselectstart=null;g.arw.parentNode.removeChild(g.arw);g.arw=null;g.renderSelect=null;g.state=null;g.type=null;g.id=null;g.img=null;g.imgEn=null;g.imgDis=null;g.openAll=null;g._isListButton=null;g._separatorButtonSelectObject=null;g._buttonButtonSelectObject=null;g.setWidth=null;g.enableItem=null;g.disableItem=null;g.isEnabled=null;g.showItem=null;g.hideItem=null;g.isVisible=null;g.setItemText=null;g.getItemText=null;g.setItemImage=null;g.clearItemImage=null;g.setItemImageDis=null;g.clearItemImageDis=null;g.setItemToolTip=null;g.getItemToolTip=null;g.addListOption=null;g.removeListOption=null;g.showListOption=null;g.hideListOption=null;g.isListOptionVisible=null;g.enableListOption=null;g.disableListOption=null;g.isListOptionEnabled=null;g.setListOptionPosition=null;g.getListOptionPosition=null;g.setListOptionImage=null;g.getListOptionImage=null;g.clearListOptionImage=null;g.setListOptionText=null;g.getListOptionText=null;g.setListOptionToolTip=null;g.getListOptionToolTip=null;g.forEachListOption=null;g.getAllListOptions=null;g.setListOptionSelected=null;g.getListOptionSelected=null}if(e=="buttonInput"){g.obj.childNodes[0].onkeydown=null;g.obj.removeChild(g.obj.childNodes[0]);g.obj.w=null;g.obj.idd=null;g.obj.parentNode.removeChild(g.obj);g.obj=null;g.id=null;g.type=null;g.enableItem=null;g.disableItem=null;g.isEnabled=null;g.showItem=null;g.hideItem=null;g.isVisible=null;g.setItemToolTip=null;g.getItemToolTip=null;g.setWidth=null;g.getWidth=null;g.setValue=null;g.getValue=null;g.setItemText=null;g.getItemText=null}if(e=="slider"){if(window.dhx4.isIPad){document.removeEventListener("touchmove",pen._doOnMouseMoveStart,false);document.removeEventListener("touchend",pen._doOnMouseMoveEnd,false)}else{if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousemove",g.pen._doOnMouseMoveStart,false);window.removeEventListener("mouseup",g.pen._doOnMouseMoveEnd,false)}else{document.body.detachEvent("onmousemove",g.pen._doOnMouseMoveStart);document.body.detachEvent("onmouseup",g.pen._doOnMouseMoveEnd)}}g.pen.allowMove=null;g.pen.initXY=null;g.pen.maxX=null;g.pen.minX=null;g.pen.nowX=null;g.pen.newNowX=null;g.pen.valueMax=null;g.pen.valueMin=null;g.pen.valueNow=null;g.pen._definePos=null;g.pen._detectLimits=null;g.pen._doOnMouseMoveStart=null;g.pen._doOnMouseMoveEnd=null;g.pen.onmousedown=null;g.obj.removeChild(g.pen);g.pen=null;g.label.tip=null;document.body.removeChild(g.label);g.label=null;g.obj.onselectstart=null;g.obj.idd=null;while(g.obj.childNodes.length>0){g.obj.removeChild(g.obj.childNodes[0])}g.obj.parentNode.removeChild(g.obj);g.obj=null;g.id=null;g.type=null;g.state=null;g.enableItem=null;g.disableItem=null;g.isEnabled=null;g.setItemToolTipTemplate=null;g.getItemToolTipTemplate=null;g.setMaxValue=null;g.setMinValue=null;g.getMaxValue=null;g.getMinValue=null;g.setValue=null;g.getValue=null;g.showItem=null;g.hideItem=null;g.isVisible=null}if(e=="separator"){g.obj.onselectstart=null;g.obj.idd=null;g.obj.parentNode.removeChild(g.obj);g.obj=null;g.id=null;g.type=null;g.showItem=null;g.hideItem=null;g.isVisible=null}if(e=="text"){g.obj.onselectstart=null;g.obj.idd=null;g.obj.parentNode.removeChild(g.obj);g.obj=null;g.id=null;g.type=null;g.showItem=null;g.hideItem=null;g.isVisible=null;g.setWidth=null;g.setItemText=null;g.getItemText=null}e=null;g=null;this.objPull[this.idPrefix+h]=null;delete this.objPull[this.idPrefix+h]};(function(){var g="addListOption,removeListOption,showListOption,hideListOption,isListOptionVisible,enableListOption,disableListOption,isListOptionEnabled,setListOptionPosition,getListOptionPosition,setListOptionText,getListOptionText,setListOptionToolTip,getListOptionToolTip,setListOptionImage,getListOptionImage,clearListOptionImage,forEachListOption,getAllListOptions,setListOptionSelected,getListOptionSelected".split(",");var c=function(h){return function(r,l,j,o,n,m){r=this.idPrefix+r;if(this.objPull[r]==null){return}if(this.objPull[r]["type"]!="buttonSelect"){return}return this.objPull[r][h].call(this.objPull[r],l,j,o,n,m)}};for(var e=0;e<g.length;e++){var a=g[e];dhtmlXToolbarObject.prototype[a]=c(a)}})();dhtmlXToolbarObject.prototype._rtlParseBtn=function(c,a){return c+a};dhtmlXToolbarObject.prototype._separatorObject=function(a,e,c){this.id=a.idPrefix+e;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_sep";this.obj.style.display=(c.hidden!=null?"none":"");this.obj.idd=String(e);this.obj.title=(c.title||"");this.obj.onselectstart=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}};this.obj.ontouchstart=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}g.cancelBubble=true;return false};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,e,c){this.id=a.idPrefix+e;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_text";this.obj.style.display=(c.hidden!=null?"none":"");this.obj.idd=String(e);this.obj.title=(c.title||"");this.obj.onselectstart=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}};this.obj.ontouchstart=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}g.cancelBubble=true;return false};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(g){this.obj.innerHTML=g};this.getItemText=function(){return this.obj.innerHTML};this.setWidth=function(g){this.obj.style.width=g+"px"};this.setItemToolTip=function(g){this.obj.title=g};this.getItemToolTip=function(){return this.obj.title};return this};dhtmlXToolbarObject.prototype._buttonObject=function(a,g,c){this.id=a.idPrefix+g;this.state=(c.enabled!=null?false:true);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 dhxtoolbar_btn_"+(this.state?"def":"dis");this.obj.style.display=(c.hidden!=null?"none":"");this.obj.allowClick=false;this.obj.extAction=(c.action||null);this.obj.renderAs=this.obj.className;this.obj.idd=String(g);this.obj.title=(c.title||"");this.obj.pressed=false;this.obj.innerHTML=a._rtlParseBtn((this.img!=""?"<img src='"+a.conf.icons_path+this.img+"'>":""),(c.text!=null?"<div class='dhxtoolbar_text'>"+c.text+"</div>":""));var e=this;this.obj.onselectstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}};this.obj.onmouseover=function(){this._doOnMouseOver()};this.obj.onmouseout=function(){this._doOnMouseOut()};this.obj._doOnMouseOver=function(){this.allowClick=true;if(e.state==false){return}if(a.anyUsed!="none"){return}this.className="dhx_toolbar_btn dhxtoolbar_btn_over";this.renderAs=this.className};this.obj._doOnMouseOut=function(){this.allowClick=false;if(e.state==false){return}if(a.anyUsed!="none"){return}this.className="dhx_toolbar_btn dhxtoolbar_btn_def";this.renderAs=this.renderAs};this.obj.onclick=function(h){if(e.state==false){return}if(this.allowClick==false){return}h=h||event;var j=this.idd.replace(a.idPrefix,"");if(this.extAction){try{window[this.extAction](j)}catch(h){}}if(a&&a.callEvent){a.callEvent("onClick",[j])}};this.obj[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(h){if(e.state==false){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}h.cancelBubble=true;return false}if(a.anyUsed!="none"){return}a.anyUsed=this.idd;this.className="dhx_toolbar_btn dhxtoolbar_btn_pres";this.pressed=true;this.onmouseover=function(){this._doOnMouseOver()};this.onmouseout=function(){a.anyUsed="none";this._doOnMouseOut()};return false};this.obj[window.dhx4.isIPad?"ontouchend":"onmouseup"]=function(l){if(e.state==false){return}if(a.anyUsed!="none"){if(a.anyUsed!=this.idd){return}}var j=a.anyUsed;this._doOnMouseUp();if(window.dhx4.isIPad&&j!="none"){if(this.extAction){var h=this;window.setTimeout(function(){try{window[h.extAction](g)}catch(m){}h=null},1)}a.callEvent("onClick",[this.idd.replace(a.idPrefix,"")])}};if(window.dhx4.isIPad){this.obj.ontouchmove=function(h){this._doOnMouseUp()}}this.obj._doOnMouseUp=function(){a.anyUsed="none";this.className=this.renderAs;this.pressed=false};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(h){a._setItemText(this,h)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(h){a._setItemImage(this,h,true)};this.clearItemImage=function(){a._clearItemImage(this,true)};this.setItemImageDis=function(h){a._setItemImage(this,h,false)};this.clearItemImageDis=function(){a._clearItemImage(this,false)};this.setItemToolTip=function(h){this.obj.title=h};this.getItemToolTip=function(){return this.obj.title};return this};dhtmlXToolbarObject.prototype._buttonSelectObject=function(e,j,h){this.id=e.idPrefix+j;this.state=(h.enabled!=null?(h.enabled=="true"?true:false):true);this.imgEn=(h.img||"");this.imgDis=(h.imgdis||"");this.img=(this.state?(this.imgEn!=""?this.imgEn:""):(this.imgDis!=""?this.imgDis:""));this.mode=(h.mode||"button");if(this.mode=="select"){this.openAll=true;this.renderSelect=false;if(!h.text||h.text.length==0){h.text="&nbsp;"}}else{this.openAll=(window.dhx4.s2b(h.openAll)==true);this.renderSelect=(h.renderSelect==null?true:window.dhx4.s2b(h.renderSelect))}this.maxOpen=(!isNaN(h.maxOpen?h.maxOpen:"")?h.maxOpen:null);this._maxOpenTest=function(){if(!isNaN(this.maxOpen)){if(!e._sbw){var m=document.createElement("DIV");m.className="dhxtoolbar_maxopen_test";document.body.appendChild(m);var l=document.createElement("DIV");l.className="dhxtoolbar_maxopen_test2";m.appendChild(l);e._sbw=m.offsetWidth-l.offsetWidth;m.removeChild(l);l=null;document.body.removeChild(m);m=null}}};this._maxOpenTest();this.obj=document.createElement("DIV");this.obj.allowClick=false;this.obj.extAction=(h.action||null);this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_"+(this.state?"def":"dis");this.obj.style.display=(h.hidden!=null?"none":"");this.obj.renderAs=this.obj.className;this.obj.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}};this.obj.idd=String(j);this.obj.title=(h.title||"");this.obj.pressed=false;this.callEvent=false;this.obj.innerHTML=e._rtlParseBtn((this.img!=""?"<img src='"+e.conf.icons_path+this.img+"'>":""),(h.text!=null?"<div class='dhxtoolbar_text'>"+h.text+"</div>":""));e.base.appendChild(this.obj);this.arw=document.createElement("DIV");this.arw.className="dhx_toolbar_arw dhxtoolbar_btn_"+(this.state?"def":"dis");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(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}};e.base.appendChild(this.arw);var a=this;this.obj.onmouseover=function(l){l=l||event;if(e.anyUsed!="none"){return}if(!a.state){return}a.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_over";a.obj.className=a.obj.renderAs;a.arw.className=String(a.obj.renderAs).replace("btn","arw")};this.obj.onmouseout=function(){a.obj.allowClick=false;if(e.anyUsed!="none"){return}if(!a.state){return}a.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";a.obj.className=a.obj.renderAs;a.arw.className=String(a.obj.renderAs).replace("btn","arw");a.callEvent=false};this.arw.onmouseover=this.obj.onmouseover;this.arw.onmouseout=this.obj.onmouseout;if(this.openAll==true){}else{this.obj.onclick=function(l){l=l||event;if(!a.obj.allowClick){return}if(!a.state){return}if(e.anyUsed!="none"){return}var m=a.obj.idd.replace(e.idPrefix,"");if(a.obj.extAction){try{window[a.obj.extAction](m)}catch(l){}}e.callEvent("onClick",[m])};this.obj[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(l){l=l||event;if(e.anyUsed!="none"){return}if(!a.state){return}a.obj.allowClick=true;a.obj.className="dhx_toolbar_btn dhxtoolbar_btn_pres";a.arw.className="dhx_toolbar_arw dhxtoolbar_btn_pres";a.callEvent=true};this.obj[window.dhx4.isIPad?"ontouchend":"onmouseup"]=function(m){m=m||event;m.cancelBubble=true;if(e.anyUsed!="none"){return}if(!a.state){return}a.obj.className=a.obj.renderAs;a.arw.className=String(a.obj.renderAs).replace("btn","arw");if(window.dhx4.isIPad){if(this.extAction){var l=this;window.setTimeout(function(){try{window[l.extAction](n)}catch(o){}l=null},1)}if(a.callEvent){var n=a.obj.idd.replace(e.idPrefix,"");e.callEvent("onClick",[n])}}}}if(window.dhx4.isIPad){this.obj.ontouchmove=this.obj.onmouseout}this.arw[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(n){n=n||event;var w=(this.className.indexOf("dhx_toolbar_arw")===0?this:this.nextSibling);if(w._skip){n=n||event;n.cancelBubble=true}else{w._skip=true}w=null;if(!a.state){return}if(e.anyUsed==a.obj.idd){a.obj.className=a.obj.renderAs;a.arw.className=String(a.obj.renderAs).replace("btn","arw");e.anyUsed="none";window.dhx4.zim.clear(a.polygon._idd);a.polygon.style.display="none";if(a.polygon._ie6cover){a.polygon._ie6cover.style.display="none"}if(e.conf.skin=="dhx_terrace"){e._improveTerraceButtonSelect(a.id,true)}e.callEvent("onButtonSelectHide",[a.obj.idd])}else{if(e.anyUsed!="none"){if(e.objPull[e.idPrefix+e.anyUsed]["type"]=="buttonSelect"){var v=e.objPull[e.idPrefix+e.anyUsed];if(v.polygon.style.display!="none"){v.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";v.obj.className=v.obj.renderAs;v.arw.className=String(a.obj.renderAs).replace("btn","arw");window.dhx4.zim.clear(v.polygon._idd);v.polygon.style.display="none";if(v.polygon._ie6cover){v.polygon._ie6cover.style.display="none"}if(e.conf.skin=="dhx_terrace"){e._improveTerraceButtonSelect(v.id,true)}e.callEvent("onButtonSelectHide",[v.obj.idd])}}}a.obj.className="dhx_toolbar_btn dhxtoolbar_btn_over";a.arw.className="dhx_toolbar_arw dhxtoolbar_btn_pres";e.anyUsed=a.obj.idd;a.polygon.style.top="0px";a.polygon.style.visibility="hidden";a.polygon.style.zIndex=window.dhx4.zim.reserve(a.polygon._idd);a.polygon.style.display="";if(e.conf.skin=="dhx_terrace"){e._improveTerraceButtonSelect(a.id,false)}a._fixMaxOpenHeight(a.maxOpen||null);e._autoDetectVisibleArea();var o=window.dhx4.absTop(a.obj)+a.obj.offsetHeight+e.conf.sel_ofs_y;var s=a.polygon.offsetHeight;if(o+s>e.tY2){var r=(a.maxOpen!=null?Math.floor((e.tY2-o)/22):0);if(r>=1){a._fixMaxOpenHeight(r)}else{o=window.dhx4.absTop(a.obj)-s-e.conf.sel_ofs_y;if(o<0){o=0}}}a.polygon.style.top=o+"px";if(e.rtl){a.polygon.style.left=window.dhx4.absLeft(a.obj)+a.obj.offsetWidth-a.polygon.offsetWidth+e.conf.sel_ofs_x+"px"}else{var m=document.body.scrollLeft;var l=m+(window.innerWidth||document.body.clientWidth);var u=window.dhx4.absLeft(a.obj)+e.conf.sel_ofs_x;if(u+a.polygon.offsetWidth>l){u=window.dhx4.absLeft(a.arw)+a.arw.offsetWidth-a.polygon.offsetWidth}a.polygon.style.left=Math.max(u,5)+"px"}a.polygon.style.visibility="visible";if(a.polygon._ie6cover){a.polygon._ie6cover.style.left=a.polygon.style.left;a.polygon._ie6cover.style.top=a.polygon.style.top;a.polygon._ie6cover.style.width=a.polygon.offsetWidth+"px";a.polygon._ie6cover.style.height=a.polygon.offsetHeight+"px";a.polygon._ie6cover.style.display=""}e.callEvent("onButtonSelectShow",[a.obj.idd])}return false};this.arw.onclick=function(l){l=l||event;l.cancelBubble=true};this.arw[window.dhx4.isIPad?"ontouchend":"onmouseup"]=function(l){l=l||event;l.cancelBubble=true};if(this.openAll===true){this.obj.onclick=this.arw.onclick;this.obj.onmousedown=this.arw.onmousedown;this.obj.onmouseup=this.arw.onmouseup;if(window.dhx4.isIPad){this.obj.ontouchstart=this.arw.ontouchstart;this.obj.ontouchend=this.arw.ontouchend}}this.obj.iddPrefix=e.idPrefix;this._listOptions={};this._fixMaxOpenHeight=function(r){var o="auto";var n=false;if(r!==null){var m=0;for(var l in this._listOptions){m++}if(m>r){this._ph=22*r;o=this._ph+"px"}else{n=true}}this.polygon.style.width="auto";this.polygon.style.height="auto";if(!n&&a.maxOpen!=null){this.polygon.style.width=this.p_tbl.offsetWidth+e._sbw+"px";this.polygon.style.height=o}};this._separatorButtonSelectObject=function(n,l,m){this.obj={};this.obj.tr=document.createElement("TR");this.obj.tr.className="tr_sep";this.obj.tr.onselectstart=function(o){o=o||event;if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}return false};this.obj.td=document.createElement("TD");this.obj.td.colSpan="2";this.obj.td.className="td_btn_sep";this.obj.td.onselectstart=function(o){o=o||event;if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}return false};if(isNaN(m)){m=a.p_tbody.childNodes.length+1}else{if(m<1){m=1}}if(m>a.p_tbody.childNodes.length){a.p_tbody.appendChild(this.obj.tr)}else{a.p_tbody.insertBefore(this.obj.tr,a.p_tbody.childNodes[m-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(o){o=o||event;if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}return false};this.obj.td.appendChild(this.obj.sep);a._listOptions[n]=this.obj;return this};this._buttonButtonSelectObject=function(r,n,o){var m=true;if(typeof(n.enabled)!="undefined"){m=window.dhx4.s2b(n.enabled)}else{if(typeof(n.disabled)!="undefined"){m=window.dhx4.s2b(n.disabled)}}this.obj={};this.obj.tr=document.createElement("TR");this.obj.tr.en=m;this.obj.tr.extAction=(n.action||null);this.obj.tr._selected=(n.selected!=null);this.obj.tr.className="tr_btn"+(this.obj.tr.en?(this.obj.tr._selected&&a.renderSelect?" tr_btn_selected":""):" tr_btn_disabled");this.obj.tr.onselectstart=function(s){s=s||event;if(s.preventDefault){s.preventDefault()}else{s.returnValue=false}return false};this.obj.tr.idd=String(r);if(isNaN(o)){o=a.p_tbody.childNodes.length+1}else{if(o<1){o=1}}if(o>a.p_tbody.childNodes.length){a.p_tbody.appendChild(this.obj.tr)}else{a.p_tbody.insertBefore(this.obj.tr,a.p_tbody.childNodes[o-1])}this.obj.td_a=document.createElement("TD");this.obj.td_a.className="td_btn_img";this.obj.td_a.onselectstart=function(s){s=s||event;if(s.preventDefault){s.preventDefault()}else{s.returnValue=false}return false};this.obj.td_b=document.createElement("TD");this.obj.td_b.className="td_btn_txt";this.obj.td_b.onselectstart=function(s){s=s||event;if(s.preventDefault){s.preventDefault()}else{s.returnValue=false}return false};if(e.rtl){this.obj.tr.appendChild(this.obj.td_b);this.obj.tr.appendChild(this.obj.td_a)}else{this.obj.tr.appendChild(this.obj.td_a);this.obj.tr.appendChild(this.obj.td_b)}if(n.img!=null){this.obj.td_a.innerHTML="<img class='btn_sel_img' src='"+e.conf.icons_path+n.img+"' border='0'>";this.obj.tr._img=n.img}else{this.obj.td_a.innerHTML="&nbsp;"}var l=(n.text!=null?n.text:(n.itemText||""));this.obj.td_b.innerHTML="<div class='btn_sel_text'>"+l+"</div>";this.obj.tr.onmouseover=function(s){s=s||event;if(s.type.match(/touch/)!=null){return}if(!this.en||(this._selected&&a.renderSelect)){return}this.className="tr_btn tr_btn_over"};this.obj.tr.onmouseout=function(s){s=s||event;if(s.type.match(/touch/)!=null){return}if(!this.en){return}if(this._selected&&a.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.ontouchstart=this.obj.tr.onmousedown=function(s){s=s||event;if(this._etype==null){this._etype=s.type}};this.obj.tr.onclick=function(u){u=u||event;u.cancelBubble=true;if(!this.en){return}a.setListOptionSelected(this.idd.replace(e.idPrefix,""));a.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";a.obj.className=a.obj.renderAs;a.arw.className=String(a.obj.renderAs).replace("btn","arw");if(this._etype!=null&&this._etype.match(/touch/)==null){window.dhx4.zim.clear(a.polygon._idd);a.polygon.style.display="none";if(a.polygon._ie6cover){a.polygon._ie6cover.style.display="none"}}else{var s=a.polygon;window.setTimeout(function(){window.dhx4.zim.clear(s._idd);s.style.display="none";s=null},500)}this._etype=null;if(e.conf.skin=="dhx_terrace"){e._improveTerraceButtonSelect(a.id,true)}e.anyUsed="none";e.callEvent("onButtonSelectHide",[a.obj.idd]);var v=this.idd.replace(e.idPrefix,"");if(this.extAction){try{window[this.extAction](v)}catch(u){}}e.callEvent("onClick",[v])};a._listOptions[r]=this.obj;return this};this.polygon=document.createElement("DIV");this.polygon.dir="ltr";this.polygon.style.display="none";this.polygon.className="dhx_toolbar_poly_"+e.conf.skin+" dhxtoolbar_icons_"+e.conf.iconSize;this.polygon.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}};this.polygon.onmousedown=function(l){l=l||event;l.cancelBubble=true};this.polygon.style.overflowY="auto";this.polygon._idd=window.dhx4.newId();this.polygon.ontouchstart=function(l){l=l||event;l.cancelBubble=true};this.polygon.ontouchend=function(l){l=l||event;l.cancelBubble=true};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(h.options!=null){for(var g=0;g<h.options.length;g++){var c="_"+(h.options[g].type||"")+"ButtonSelectObject";if(h.options[g].id==null){h.options[g].id=e._genStr(24)}if(typeof(this[c])=="function"){new this[c](h.options[g].id,h.options[g])}}}document.body.appendChild(this.polygon);if(window.dhx4.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(l){this.obj.style.width=l-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(){e._enableItem(this)};this.disableItem=function(){e._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(l){e._setItemText(this,l)};this.getItemText=function(){return e._getItemText(this)};this.setItemImage=function(l){e._setItemImage(this,l,true)};this.clearItemImage=function(){e._clearItemImage(this,true)};this.setItemImageDis=function(l){e._setItemImage(this,l,false)};this.clearItemImageDis=function(){e._clearItemImage(this,false)};this.setItemToolTip=function(l){this.obj.title=l;this.arw.title=l};this.getItemToolTip=function(){return this.obj.title};this.addListOption=function(s,r,n,o,l){if(!(n=="button"||n=="separator")){return}var m={id:s,type:n,text:o,img:l};new this["_"+n+"ButtonSelectObject"](s,m,r)};this.removeListOption=function(n){if(!this._isListButton(n,true)){return}var l=this._listOptions[n];if(l.td_a!=null&&l.td_b!=null){l.td_a.onselectstart=null;l.td_b.onselectstart=null;while(l.td_a.childNodes.length>0){l.td_a.removeChild(l.td_a.childNodes[0])}while(l.td_b.childNodes.length>0){l.td_b.removeChild(l.td_b.childNodes[0])}l.tr.onselectstart=null;l.tr.onmouseover=null;l.tr.onmouseout=null;l.tr.onclick=null;l.tr.ontouchstart=null;l.tr.onmousedown=null;while(l.tr.childNodes.length>0){l.tr.removeChild(l.tr.childNodes[0])}l.tr.parentNode.removeChild(l.tr);l.td_a=null;l.td_b=null;l.tr=null}else{l.sep.onselectstart=null;l.td.onselectstart=null;l.tr.onselectstart=null;while(l.td.childNodes.length>0){l.td.removeChild(l.td.childNodes[0])}while(l.tr.childNodes.length>0){l.tr.removeChild(l.tr.childNodes[0])}l.tr.parentNode.removeChild(l.tr);l.sep=null;l.td=null;l.tr=null}l=null;this._listOptions[n]=null;try{delete this._listOptions[n]}catch(m){}};this.showListOption=function(l){if(!this._isListButton(l,true)){return}this._listOptions[l].tr.style.display=""};this.hideListOption=function(l){if(!this._isListButton(l,true)){return}this._listOptions[l].tr.style.display="none"};this.isListOptionVisible=function(l){if(!this._isListButton(l,true)){return}return(this._listOptions[l].tr.style.display!="none")};this.enableListOption=function(l){if(!this._isListButton(l)){return}this._listOptions[l].tr.en=true;this._listOptions[l].tr.className="tr_btn"+(this._listOptions[l].tr._selected&&e.renderSelect?" tr_btn_selected":"")};this.disableListOption=function(l){if(!this._isListButton(l)){return}this._listOptions[l].tr.en=false;this._listOptions[l].tr.className="tr_btn tr_btn_disabled"};this.isListOptionEnabled=function(l){if(!this._isListButton(l)){return}return this._listOptions[l].tr.en};this.setListOptionPosition=function(n,m){if(!this._listOptions[n]||this.getListOptionPosition(n)==m||isNaN(m)){return}if(m<1){m=1}var l=this._listOptions[n].tr;this.p_tbody.removeChild(l);if(m>this.p_tbody.childNodes.length){this.p_tbody.appendChild(l)}else{this.p_tbody.insertBefore(l,this.p_tbody.childNodes[m-1])}l=null};this.getListOptionPosition=function(n){var m=-1;if(!this._listOptions[n]){return m}for(var l=0;l<this.p_tbody.childNodes.length;l++){if(this.p_tbody.childNodes[l]==this._listOptions[n].tr){m=l+1}}return m};this.setListOptionImage=function(n,l){if(!this._isListButton(n)){return}var m=this._listOptions[n].tr.childNodes[(e.rtl?1:0)];m.innerHTML="<img src='"+e.conf.icons_path+l+"' class='btn_sel_img'>";m=null};this.getListOptionImage=function(n){if(!this._isListButton(n)){return}var m=this._listOptions[n].tr.childNodes[(e.rtl?1:0)];var l=null;if(m.childNodes.length>0){l=m.childNodes[0].src}m=null;return l};this.clearListOptionImage=function(m){if(!this._isListButton(m)){return}var l=this._listOptions[m].tr.childNodes[(e.rtl?1:0)];while(l.childNodes.length>0){l.removeChild(l.childNodes[0])}l.innerHTML="&nbsp;";l=null};this.setListOptionText=function(m,l){if(!this._isListButton(m)){return}this._listOptions[m].tr.childNodes[(e.rtl?0:1)].childNodes[0].innerHTML=l};this.getListOptionText=function(l){if(!this._isListButton(l)){return}return this._listOptions[l].tr.childNodes[(e.rtl?0:1)].childNodes[0].innerHTML};this.setListOptionToolTip=function(m,l){if(!this._isListButton(m)){return}this._listOptions[m].tr.title=l};this.getListOptionToolTip=function(l){if(!this._isListButton(l)){return}return this._listOptions[l].tr.title};this.forEachListOption=function(m){for(var l in this._listOptions){m(l)}};this.getAllListOptions=function(){var m=new Array();for(var l in this._listOptions){m[m.length]=l}return m};this.setListOptionSelected=function(n){for(var l in this._listOptions){var m=this._listOptions[l];if(m.td_a!=null&&m.td_b!=null&&m.tr.en){if(l==n){m.tr._selected=true;m.tr.className="tr_btn"+(this.renderSelect?" tr_btn_selected":"");if(this.mode=="select"){if(m.tr._img){this.setItemImage(m.tr._img)}else{this.clearItemImage()}this.setItemText(this.getListOptionText(n))}}else{m.tr._selected=false;m.tr.className="tr_btn"}}m=null}};this.getListOptionSelected=function(){var m=null;for(var l in this._listOptions){if(this._listOptions[l].tr._selected==true){m=l}}return m};this._isListButton=function(m,l){if(this._listOptions[m]==null){return false}if(!l&&this._listOptions[m].tr.className=="tr_sep"){return false}return true};this.setMaxOpen=function(l){this._ph=null;if(typeof(l)=="number"){this.maxOpen=l;this._maxOpenTest();return}this.maxOpen=null};if(h.width){this.setWidth(h.width)}if(this.mode=="select"&&typeof(h.selected)!="undefined"){this.setListOptionSelected(h.selected)}return this};dhtmlXToolbarObject.prototype._buttonInputObject=function(e,h,g){this.id=e.idPrefix+h;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_def";this.obj.style.display=(g.hidden!=null?"none":"");this.obj.idd=String(h);this.obj.w=(g.width!=null?g.width:100);this.obj.title=(g.title!=null?g.title:"");this.obj.innerHTML="<input class='dhxtoolbar_input' type='text' style='width:"+this.obj.w+"px;'"+(g.value!=null?" value='"+g.value+"'":"")+">";var c=e;var a=this;this.obj.childNodes[0].onkeydown=function(j){j=j||event;if(j.keyCode==13){c.callEvent("onEnter",[a.obj.idd,this.value])}};e.base.appendChild(this.obj);this.enableItem=function(){this.obj.childNodes[0].disabled=false};this.disableItem=function(){this.obj.childNodes[0].disabled=true};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(j){this.obj.childNodes[0].value=j};this.getValue=function(){return this.obj.childNodes[0].value};this.setWidth=function(j){this.obj.w=j;this.obj.childNodes[0].style.width=this.obj.w+"px"};this.getWidth=function(){return this.obj.w};this.setItemToolTip=function(j){this.obj.title=j};this.getItemToolTip=function(){return this.obj.title};this.getInput=function(){return this.obj.firstChild};if(typeof(g.enabled)!="undefined"&&window.dhx4.s2b(g.enabled)==false){this.disableItem()}return this};dhtmlXToolbarObject.prototype._buttonTwoStateObject=function(a,g,c){this.id=a.idPrefix+g;this.state=(c.enabled!=null?false:true);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 dhxtoolbar_btn_"+(this.obj.pressed?"pres"+(this.state?"":"_dis"):(this.state?"def":"dis"));this.obj.style.display=(c.hidden!=null?"none":"");this.obj.renderAs=this.obj.className;this.obj.idd=String(g);this.obj.title=(c.title||"");if(this.obj.pressed){this.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_over"}this.obj.innerHTML=a._rtlParseBtn((this.img!=""?"<img src='"+a.conf.icons_path+this.img+"'>":""),(c.text!=null?"<div class='dhxtoolbar_text'>"+c.text+"</div>":""));a.base.appendChild(this.obj);var e=this;this.obj.onselectstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}};this.obj.onmouseover=function(){this._doOnMouseOver()};this.obj.onmouseout=function(){this._doOnMouseOut()};this.obj._doOnMouseOver=function(){if(e.state==false){return}if(a.anyUsed!="none"){return}if(this.pressed){this.renderAs="dhx_toolbar_btn dhxtoolbar_btn_over";return}this.className="dhx_toolbar_btn dhxtoolbar_btn_over";this.renderAs=this.className};this.obj._doOnMouseOut=function(){if(e.state==false){return}if(a.anyUsed!="none"){return}if(this.pressed){this.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";return}this.className="dhx_toolbar_btn dhxtoolbar_btn_def";this.renderAs=this.className};this.obj[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(h){if(a.checkEvent("onBeforeStateChange")){if(!a.callEvent("onBeforeStateChange",[this.idd.replace(a.idPrefix,""),this.pressed])){return}}if(e.state==false){return}if(a.anyUsed!="none"){return}this.pressed=!this.pressed;this.className=(this.pressed?"dhx_toolbar_btn dhxtoolbar_btn_pres":this.renderAs);var j=this.idd.replace(a.idPrefix,"");if(this.extAction){try{window[this.extAction](j,this.pressed)}catch(h){}}a.callEvent("onStateChange",[j,this.pressed]);return false};this.setItemState=function(h,l){if(this.obj.pressed!=h){if(h==true){this.obj.pressed=true;this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_pres"+(this.state?"":"_dis");this.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_over"}else{this.obj.pressed=false;this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_"+(this.state?"def":"dis");this.obj.renderAs=this.obj.className}if(l==true){var m=this.obj.idd.replace(a.idPrefix,"");if(this.obj.extAction){try{window[this.obj.extAction](m,this.obj.pressed)}catch(j){}}a.callEvent("onStateChange",[m,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(h){a._setItemText(this,h)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(h){a._setItemImage(this,h,true)};this.clearItemImage=function(){a._clearItemImage(this,true)};this.setItemImageDis=function(h){a._setItemImage(this,h,false)};this.clearItemImageDis=function(){a._clearItemImage(this,false)};this.setItemToolTip=function(h){this.obj.title=h};this.getItemToolTip=function(){return this.obj.title};return this};dhtmlXToolbarObject.prototype._sliderObject=function(g,j,h){this.id=g.idPrefix+j;this.state=(h.enabled!=null?(h.enabled=="true"?true:false):true);this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_"+(this.state?"def":"dis");this.obj.style.display=(h.hidden!=null?"none":"");this.obj.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}};this.obj.idd=String(j);this.obj.len=(h.length!=null?Number(h.length):50);this.obj.innerHTML="<div class='dhxtoolbar_text'>"+(h.textMin||"")+"</div><div class='dhxtoolbar_sl_bg_l'></div><div class='dhxtoolbar_sl_bg_m' style='width:"+this.obj.len+"px;'></div><div class='dhxtoolbar_sl_bg_r'></div><div class='dhxtoolbar_text'>"+(h.textMax||"")+"</div>";g.base.appendChild(this.obj);var a=this;this.pen=document.createElement("DIV");this.pen.className="dhxtoolbar_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_"+g.conf.skin+(g.rtl?"_rtl":"");this.label.style.display="none";this.label.tip=(h.toolTip||"%v");this.label._zi=window.dhx4.newId();document.body.appendChild(this.label);var c=this.label;this.pen.valueMin=(h.valueMin!=null?Number(h.valueMin):0);this.pen.valueMax=(h.valueMax!=null?Number(h.valueMax):100);if(this.pen.valueMin>this.pen.valueMax){this.pen.valueMin=this.pen.valueMax}this.pen.valueNow=(h.valueNow!=null?Number(h.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=a.obj.childNodes[1].offsetLeft+2;this.maxX=a.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=false;this.pen[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(l){if(a.state==false){return}l=l||event;this.initXY=(window.dhx4.isIPad?l.touches[0].clientX:l.clientX);this.newValueNow=this.valueNow;this.allowMove=true;this.className="dhxtoolbar_sl_pen dhxtoolbar_over";if(c.tip!=""){c.style.visibility="hidden";c.style.display="";c.innerHTML=c.tip.replace("%v",this.valueNow);c.style.left=Math.round(window.dhx4.absLeft(this)+this.offsetWidth/2-c.offsetWidth/2)+"px";c.style.top=window.dhx4.absTop(this)-c.offsetHeight-3+"px";c.style.visibility="";c.style.zIndex=window.dhx4.zim.reserve(c._zi)}};this.pen._doOnMouseMoveStart=function(m){m=m||event;if(!e.allowMove){return}var l=(window.dhx4.isIPad?m.touches[0].clientX:m.clientX);var n=l-e.initXY;if(l<window.dhx4.absLeft(e)+Math.round(e.offsetWidth/2)&&e.nowX==e.minX){return}if(l>window.dhx4.absLeft(e)+Math.round(e.offsetWidth/2)&&e.nowX==e.maxX){return}e.newNowX=e.nowX+n;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=l;e.newValueNow=Math.round((e.valueMax-e.valueMin)*(e.newNowX-e.minX)/(e.maxX-e.minX)+e.valueMin);if(c.tip!=""){c.innerHTML=c.tip.replace(/%v/gi,e.newValueNow);c.style.left=Math.round(window.dhx4.absLeft(e)+e.offsetWidth/2-c.offsetWidth/2)+"px";c.style.top=window.dhx4.absTop(e)-c.offsetHeight-3+"px"}m.cancelBubble=true;if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}return false};this.pen._doOnMouseMoveEnd=function(){if(!e.allowMove){return}e.className="dhxtoolbar_sl_pen";e.allowMove=false;e.nowX=e.newNowX;e.valueNow=e.newValueNow;if(c.tip!=""){c.style.display="none";window.dhx4.zim.clear(c._zi)}g.callEvent("onValueChange",[a.obj.idd.replace(g.idPrefix,""),e.valueNow])};if(window.dhx4.isIPad){document.addEventListener("touchmove",e._doOnMouseMoveStart,false);document.addEventListener("touchend",e._doOnMouseMoveEnd,false)}else{if(typeof(window.addEventListener)!="undefined"){window.addEventListener("mousemove",e._doOnMouseMoveStart,false);window.addEventListener("mouseup",e._doOnMouseMoveEnd,false)}else{document.body.attachEvent("onmousemove",e._doOnMouseMoveStart);document.body.attachEvent("onmouseup",e._doOnMouseMoveEnd)}}this.enableItem=function(){if(this.state){return}this.state=true;this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_def"};this.disableItem=function(){if(!this.state){return}this.state=false;this.obj.className="dhx_toolbar_btn dhxtoolbar_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(l,m){l=Number(l);if(l<this.pen.valueMin){l=this.pen.valueMin}if(l>this.pen.valueMax){l=this.pen.valueMax}this.pen.valueNow=l;this.pen._definePos();if(m==true){g.callEvent("onValueChange",[this.obj.idd.replace(g.idPrefix,""),this.pen.valueNow])}};this.getValue=function(){return this.pen.valueNow};this.setMinValue=function(m,l){m=Number(m);if(m>this.pen.valueMax){return}this.obj.childNodes[0].innerHTML=l;this.obj.childNodes[0].style.display=(l.length>0?"":"none");this.pen.valueMin=m;if(this.pen.valueNow<this.pen.valueMin){this.pen.valueNow=this.pen.valueMin}this.pen._detectLimits();this.pen._definePos()};this.setMaxValue=function(m,l){m=Number(m);if(m<this.pen.valueMin){return}this.obj.childNodes[4].innerHTML=l;this.obj.childNodes[4].style.display=(l.length>0?"":"none");this.pen.valueMax=m;if(this.pen.valueNow>this.pen.valueMax){this.pen.valueNow=this.pen.valueMax}this.pen._detectLimits();this.pen._definePos()};this.getMinValue=function(){var l=this.obj.childNodes[0].innerHTML;var m=this.pen.valueMin;return new Array(m,l)};this.getMaxValue=function(){var l=this.obj.childNodes[4].innerHTML;var m=this.pen.valueMax;return new Array(m,l)};this.setItemToolTipTemplate=function(l){this.label.tip=l};this.getItemToolTipTemplate=function(){return this.label.tip};return this};dhtmlXToolbarObject.prototype.unload=function(){if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousedown",this._doOnClick,false);window.removeEventListener("touchstart",this._doOnClick,false)}else{document.body.detachEvent("onmousedown",this._doOnClick)}this._doOnClick=null;this.clearAll();this.objPull=null;if(this._xmlLoader){this._xmlLoader.destructor();this._xmlLoader=null}while(this.base.childNodes.length>0){this.base.removeChild(this.base.childNodes[0])}this.cont.removeChild(this.base);this.base=null;while(this.cont.childNodes.length>0){this.cont.removeChild(this.cont.childNodes[0])}this.cont.className="";this.cont=null;window.dhx4._enableDataLoading(this,null,null,null,"clear");window.dhx4._eventable(this,"clear");this.tX1=null;this.tX2=null;this.tY1=null;this.tY2=null;this.anyUsed=null;this.idPrefix=null;this.rootTypes=null;this._rtl=null;this._rtlParseBtn=null;this.setRTL=null;this._sbw=null;this._getObj=null;this._addImgObj=null;this._setItemImage=null;this._clearItemImage=null;this._setItemText=null;this._getItemText=null;this._enableItem=null;this._disableItem=null;this._xmlParser=null;this._addItemToStorage=null;this._genStr=null;this._addItem=null;this._getPosition=null;this._setPosition=null;this._getIdByPosition=null;this._separatorObject=null;this._textObject=null;this._buttonObject=null;this._buttonSelectObject=null;this._buttonInputObject=null;this._buttonTwoStateObject=null;this._sliderObject=null;this._autoDetectVisibleArea=null;this._removeItem=null;this.setAlign=null;this.setSkin=null;this.setIconsPath=null;this.setIconPath=null;this.loadXML=null;this.loadXMLString=null;this.clearAll=null;this.addSpacer=null;this.removeSpacer=null;this.getType=null;this.getTypeExt=null;this.inArray=null;this.getParentId=null;this.addButton=null;this.addText=null;this.addButtonSelect=null;this.addButtonTwoState=null;this.addSeparator=null;this.addSlider=null;this.addInput=null;this.forEachItem=null;this.showItem=null;this.hideItem=null;this.isVisible=null;this.enableItem=null;this.disableItem=null;this.isEnabled=null;this.setItemText=null;this.getItemText=null;this.setItemToolTip=null;this.getItemToolTip=null;this.setItemImage=null;this.setItemImageDis=null;this.clearItemImage=null;this.clearItemImageDis=null;this.setItemState=null;this.getItemState=null;this.setItemToolTipTemplate=null;this.getItemToolTipTemplate=null;this.setValue=null;this.getValue=null;this.setMinValue=null;this.getMinValue=null;this.setMaxValue=null;this.getMaxValue=null;this.setWidth=null;this.getWidth=null;this.getPosition=null;this.setPosition=null;this.removeItem=null;this.addListOption=null;this.removeListOption=null;this.showListOption=null;this.hideListOption=null;this.isListOptionVisible=null;this.enableListOption=null;this.disableListOption=null;this.isListOptionEnabled=null;this.setListOptionPosition=null;this.getListOptionPosition=null;this.setListOptionText=null;this.getListOptionText=null;this.setListOptionToolTip=null;this.getListOptionToolTip=null;this.setListOptionImage=null;this.getListOptionImage=null;this.clearListOptionImage=null;this.forEachListOption=null;this.getAllListOptions=null;this.setListOptionSelected=null;this.getListOptionSelected=null;this.unload=null;this.setUserData=null;this.getUserData=null;this.setMaxOpen=null;this.items=null;this.conf=null};dhtmlXToolbarObject.prototype._autoDetectVisibleArea=function(){var a=window.dhx4.screenDim();this.tX1=a.left;this.tX2=a.right;this.tY1=a.top;this.tY2=a.bottom};dhtmlXToolbarObject.prototype._initObj=function(c){for(var a=0;a<c.length;a++){this._addItemToStorage(c[a])}if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype._xmlToJson=function(s){var n=[];var y=s.getElementsByTagName("toolbar");if(y!=null&&y[0]!=null){y=y[0];var v=function(h){var e=null;for(var r=0;r<h.childNodes.length;r++){if(e==null&&h.childNodes[r].tagName=="itemText"){e=window.dhx4._xmlNodeValue(h.childNodes[r]);break}}return e};var D=["id","type","hidden","title","text","enabled","img","imgdis","action","openAll","renderSelect","mode","maxOpen","width","value","selected","length","textMin","textMax","toolTip","valueMin","valueMax","valueNow"];var g=["id","type","enabled","disabled","action","selected","img","text"];for(var c=0;c<y.childNodes.length;c++){if(y.childNodes[c].tagName=="item"){var m={};for(var A=0;A<D.length;A++){var j=y.childNodes[c].getAttribute(D[A]);if(j!=null){m[D[A]]=j}}for(var x=0;x<y.childNodes[c].childNodes.length;x++){if(y.childNodes[c].childNodes[x].tagName=="item"&&m.type=="buttonSelect"){var C={};for(var A=0;A<g.length;A++){var j=y.childNodes[c].childNodes[x].getAttribute(g[A]);if(j!=null){C[g[A]]=j}}var o=y.childNodes[c].childNodes[x].getElementsByTagName("userdata");for(var A=0;A<o.length;A++){if(!C.userdata){C.userdata={}}var a={};try{a.name=o[A].getAttribute("name")}catch(l){a.name=null}try{a.value=o[A].firstChild.nodeValue}catch(l){a.value=""}if(a.name!=null){C.userdata[a.name]=a.value}}C.text=v(y.childNodes[c].childNodes[x])||C.text;if(m.options==null){m.options=[]}m.options.push(C)}if(y.childNodes[c].childNodes[x].tagName=="userdata"){if(m.userdata==null){m.userdata={}}var C={};try{C.name=y.childNodes[c].childNodes[x].getAttribute("name")}catch(l){C.name=null}try{C.value=y.childNodes[c].childNodes[x].firstChild.nodeValue}catch(l){C.value=""}if(C.name!=null){m.userdata[C.name]=C.value}}}m.text=v(y.childNodes[c])||m.text;n.push(m)}}v=null}return n};dhtmlXToolbarObject.prototype._addItemToStorage=function(j,m){var l=(j.id||this._genStr(24));var g=(j.type||"");if(g=="spacer"){this.addSpacer(this._lastId)}else{this._lastId=l}if(g!=""&&this["_"+g+"Object"]!=null){if(g=="buttonSelect"){if(j.options!=null){for(var h=0;h<j.options.length;h++){if(j.options[h].type=="obj"){j.options[h].type="button"}if(j.options[h].type=="sep"){j.options[h].type="separator"}}}}if(g=="slider"){var e={tip_template:"toolTip",value_min:"valueMin",value_max:"valueMax",value_now:"valueNow",text_min:"textMin",text_max:"textMax"};for(var c in e){if(j[e[c]]==null&&j[c]!=null){j[e[c]]=j[c]}}}if(g=="buttonInput"){if(j.value==null&&j.text!=null){j.value=j.text}}if(g=="buttonTwoState"){if(typeof(j.selected)=="undefined"&&typeof(j.pressed)!="undefined"&&window.dhx4.s2b(j.pressed)){j.selected=true}}if(typeof(j.enabled)=="undefined"&&typeof(j.disabled)!="undefined"&&window.dhx4.s2b(j.disabled)){j.enabled=false}if(j.imgDis==null&&j.img_disabled!=null){j.imgdis=j.img_disabled}if((typeof(j.openAll)=="undefined"||j.openAll==null)&&this.conf.skin=="dhx_terrace"){j.openAll=true}this.objPull[this.idPrefix+l]=new this["_"+g+"Object"](this,l,j);this.objPull[this.idPrefix+l]["type"]=g;this.setPosition(l,m)}if(j.userdata!=null){for(var c in j.userdata){this.setUserData(l,c,j.userdata[c])}}if(j.options!=null){for(var h=0;h<j.options.length;h++){if(j.options[h].userdata!=null){for(var c in j.options[h].userdata){this.setListOptionUserData(j.id,j.options[h].id,c,j.options[h].userdata[c])}}}}};dhtmlXToolbarObject.prototype.setSkin=function(h,e){if(e===true){this.cont.className=this.cont.className.replace(/dhxtoolbar_icons_\d{1,}/,"dhxtoolbar_icons_"+this.conf.iconSize)}else{this.conf.skin=h;if(this.conf.skin=="dhx_skyblue"){this.conf.sel_ofs_y=1}if(this.conf.skin=="dhx_web"){this.conf.sel_ofs_y=1;this.conf.sel_ofs_x=1}if(this.conf.skin=="dhx_terrace"){this.conf.sel_ofs_y=-1;this.conf.sel_ofs_x=0}this.cont.className="dhx_toolbar_"+this.conf.skin+" dhxtoolbar_icons_"+this.conf.iconSize}for(var c in this.objPull){var g=this.objPull[c];if(g.type=="slider"){g.pen._detectLimits();g.pen._definePos();g.label.className="dhx_toolbar_slider_label_"+this.conf.skin}if(g.type=="buttonSelect"){g.polygon.className="dhx_toolbar_poly_"+this.conf.skin+" dhxtoolbar_icons_"+this.conf.iconSize}}if(h=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype.setAlign=function(a){this.conf.align=(a=="right"?"right":"left");this.base.className=(a=="right"?"dhxtoolbar_float_right":"dhxtoolbar_float_left");if(this._spacer){this._spacer.className=(a=="right"?" dhxtoolbar_float_left":" dhxtoolbar_float_right")}};dhtmlXToolbarObject.prototype.setIconSize=function(a){this.conf.iconSize=({18:true,24:true,32:true,48:true}[a]?a:18);this.setSkin(this.conf.skin,true);this.callEvent("_onIconSizeChange",[this.conf.iconSize])};dhtmlXToolbarObject.prototype.setIconsPath=function(a){this.conf.icons_path=a};dhtmlXToolbarObject.prototype.setUserData=function(e,a,c){e=this.idPrefix+e;if(this.objPull[e]!=null){if(this.objPull[e].userData==null){this.objPull[e].userData={}}this.objPull[e].userData[a]=c}};dhtmlXToolbarObject.prototype.getUserData=function(c,a){c=this.idPrefix+c;if(this.objPull[c]!=null&&this.objPull[c].userData!=null){return this.objPull[c].userData[a]||null}return null};dhtmlXToolbarObject.prototype._isListOptionExists=function(a,e){if(this.objPull[this.idPrefix+a]==null){return false}var c=this.objPull[this.idPrefix+a];if(c.type!="buttonSelect"){return false}if(c._listOptions[e]==null){return false}return true};dhtmlXToolbarObject.prototype.setListOptionUserData=function(a,h,c,g){if(!this._isListOptionExists(a,h)){return}var e=this.objPull[this.idPrefix+a]._listOptions[h];if(e.userData==null){e.userData={}}e.userData[c]=g};dhtmlXToolbarObject.prototype.getListOptionUserData=function(a,g,c){if(!this._isListOptionExists(a,g)){return null}var e=this.objPull[this.idPrefix+a]._listOptions[g];if(!e.userData){return null}return(e.userData[c]?e.userData[c]:null)};dhtmlXToolbarObject.prototype._improveTerraceSkin=function(){if(this.conf.terrace_radius==null){this.conf.terrace_radius="3px"}var g=[];var h={separator:true,text:true};var l=[this.base];if(this._spacer!=null){l.push(this._spacer)}for(var n=0;n<l.length;n++){g[n]=[];for(var c=0;c<l[n].childNodes.length;c++){if(l[n].childNodes[c].idd!=null&&l[n].childNodes[c].style.display!="none"){var m=this.idPrefix+l[n].childNodes[c].idd;if(this.objPull[m]!=null&&this.objPull[m].obj==l[n].childNodes[c]){g[n].push({a:m,type:this.objPull[m].type,node:this.objPull[m][this.objPull[m].type=="buttonSelect"?"arw":"obj"]})}}}l[n]=null}for(var n=0;n<g.length;n++){for(var c=0;c<g[n].length;c++){var o=g[n][c];var r=false;var j=false;if(!h[o.type]){if(c==g[n].length-1||(g[n][c+1]!=null&&h[g[n][c+1].type])){r=true}if(c==0||(c-1>=0&&g[n][c-1]!=null&&h[g[n][c-1].type])){j=true}}o.node.style.borderRightWidth=(r?"1px":"0px");o.node.style.borderTopRightRadius=o.node.style.borderBottomRightRadius=(r?this.conf.terrace_radius:"0px");if(o.type=="buttonSelect"){o.node.previousSibling.style.borderTopLeftRadius=o.node.previousSibling.style.borderBottomLeftRadius=(j?this.conf.terrace_radius:"0px");o.node.previousSibling._br=r;o.node.previousSibling._bl=j}else{o.node.style.borderTopLeftRadius=o.node.style.borderBottomLeftRadius=(j?this.conf.terrace_radius:"0px")}o.node._br=r;o.node._bl=j}}for(var n=0;n<g.length;n++){for(var c=0;c<g[n].length;c++){for(var m in g[n][c]){g[n][c][m]=null}g[n][c]=null}g[n]=null}g=l=null};dhtmlXToolbarObject.prototype._improveTerraceButtonSelect=function(e,c){var a=this.objPull[e];if(c==true){a.obj.style.borderBottomLeftRadius=(a.obj._bl?this.conf.terrace_radius:"0px");a.arw.style.borderBottomRightRadius=(a.obj._br?this.conf.terrace_radius:"0px")}else{a.obj.style.borderBottomLeftRadius="0px";a.arw.style.borderBottomRightRadius="0px"}a=null};if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype._createNode_toolbar=function(h,c,g,a,e){if(typeof(e)!="undefined"){h=e}else{h=document.createElement("DIV");h.className="dhx_cell_toolbar_"+(this.conf.borders?"def":"no_borders");h.appendChild(document.createElement("DIV"));h.firstChild.className="dhx_toolbar_base_18_dhx_skyblue"}this.cell.insertBefore(h,this.cell.childNodes[this.conf.idx.cont]);this.conf.ofs_nodes.t.toolbar=true;this._updateIdx();return h};dhtmlXCellObject.prototype.attachToolbar=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}this.callEvent("_onBeforeContentAttach",["toolbar"]);if(typeof(a)=="undefined"){a={}}else{if(typeof(a)=="string"){a={skin:a}}}if(typeof(a.skin)=="undefined"){a.skin=this.conf.skin}a.parent=this._attachObject("toolbar").firstChild;this.dataNodes.toolbar=new dhtmlXToolbarObject(a);this._adjustCont(this._idd);this.dataNodes.toolbar._masterCell=this;this.dataNodes.toolbar.attachEvent("_onIconSizeChange",function(){this._masterCell._adjustCont()});a.parent=null;a=null;this.callEvent("_onContentAttach",[]);return this.dataNodes.toolbar};dhtmlXCellObject.prototype.detachToolbar=function(){if(!this.dataNodes.toolbar){return}this.dataNodes.toolbar._masterCell=null;this.dataNodes.toolbar.unload();this.dataNodes.toolbar=null;delete this.dataNodes.toolbar;this._detachObject("toolbar")};dhtmlXCellObject.prototype.showToolbar=function(){this._mtbShowHide("toolbar","")};dhtmlXCellObject.prototype.hideToolbar=function(){this._mtbShowHide("toolbar","none")};dhtmlXCellObject.prototype.getAttachedToolbar=function(){return this.dataNodes.toolbar}}function dhtmlXEditor(e,g){var c=this;this.conf={content:"",contentHTML:"",resizeTM:null,resizeTMTime:100,roMode:false,toolbar:false,iconsPath:"",evs:["focus","blur","keydown","keyup","keypress","mouseup","mousedown","click","touchend"],iOSfix:(navigator.userAgent.match(/Mobile/gi)!=null&&navigator.userAgent.match(/iPad/gi)!=null&&navigator.userAgent.match(/AppleWebKit/gi)!=null)};this._doOnFocusChanged=null;this._doOnAccess=null;if(typeof(e)=="object"&&e!=null&&e.tagName==null){g=e.skin;if(e.content!=null){this.conf.content=e.content}if(e.contentHTML!=null){this.conf.contentHTML=e.contentHTML}if(e.iconsPath!=null){this.conf.iconsPath=e.iconsPath}if(e.toolbar!=null){this.conf.toolbar=window.dhx4.s2b(e.toolbar)}if(e.onFocusChanged!=null){this._doOnFocusChanged=e.onFocusChanged}if(e.onAccess!=null){this._doOnAccess=e.onAccess}e=e.parent}this.conf.skin=(g||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxeditor")||"dhx_skyblue");if(typeof(e)=="string"){e=document.getElementById(e)}this.base=e;this.base.className+=" dhxeditor_"+this.conf.skin;while(this.base.childNodes.length>0){this.base.removeChild(this.base.childNodes[0])}var h=(window.dhx4.isIE?this.base.currentStyle.position:(window.getComputedStyle!=null?window.getComputedStyle(this.base,null).getPropertyValue("position"):""));if(!(h=="relative"||h=="absolute")){this.base.style.position="relative"}this.cell=new dhtmlXEditorCell(window.dhx4.newId(),this);this.base.appendChild(this.cell.cell);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.editor.frameBorder=0;if(window.dhx4.isOpera){this.editor.scrolling="yes"}this.setSizes();var a=this.editor;if(typeof(window.addEventListener)!="undefined"){a.onload=function(){for(var j=0;j<c.conf.evs.length;j++){a.contentWindow.addEventListener(c.conf.evs[j],c._ev,false)}}}else{a.onreadystatechange=function(j){if(typeof(a.readyState)!="undefined"&&a.readyState=="complete"){try{for(var l=0;l<c.conf.evs.length;l++){a.contentWindow.document.body.attachEvent("on"+c.conf.evs[l],c._ev)}}catch(m){}}}}this._ev=function(l){l=l||event;var j=l.type;if(c.conf.iOSfix==true&&j=="touchend"){c.editor.contentWindow.focus();return}c.callEvent("onAccess",[j,l]);if(typeof(c._doOnAccess)=="function"){c._doOnAccess(j,l)}else{if(typeof(c._doOnAccess)=="string"&&typeof(window[c._doOnAccess])=="function"){window[c._doOnAccess](j,l)}}};this._focus=function(){if(window.dhx4.isIE){this.editor.contentWindow.document.body.focus()}else{this.editor.contentWindow.focus()}};this.cell.attachObject(this.editor);this.edWin=this.editor.contentWindow;this.edDoc=this.edWin.document;this._prepareContent=function(m,o){var l="";if(m===true&&this.getContent!=null){l=this.getContent()}var j=this.editor.contentWindow.document;j.open("text/html","replace");if(window.dhx4.isOpera){j.write("<html><head><style> html, body { overflow:auto;-webkit-overflow-scrolling: touch; padding:0px; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color:#ffffff;} </style></head><body "+(o!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}else{if(window.dhx4.isKHTML){j.write("<html><head><style> html {overflow-x: auto;-webkit-overflow-scrolling: touch; overflow-y: auto;} body { overflow: auto; overflow-y: scroll;} html,body { padding:0px; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color:#ffffff;} </style></head><body "+(o!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}else{if(window.dhx4.isIE){j.write("<html><head><style> html {overflow-y: auto;} body {overflow-y: scroll;-webkit-overflow-scrolling: touch;} html,body { overflow-x: auto; padding:0px; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color: #ffffff; outline: none; } </style></head><body "+(o!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}else{j.write("<html><head><style> html,body { overflow-x: auto; overflow-y:-webkit-overflow-scrolling: touch; scroll; padding:0px; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color:#ffffff;} </style></head><body "+(o!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}}}j.close();if(window.dhx4.isIE){j.contentEditable=(o!==true)}else{j.designMode=(o!==true?"On":"Off")}if(window.dhx4.isFF){try{j.execCommand("useCSS",false,true)}catch(n){}}if(m===true&&this.setContent!=null){this.setContent(l)}};this._prepareContent();this._doOnResize=function(){window.clearTimeout(c.conf.resizeTM);c.conf.resizeTM=window.setTimeout(function(){if(c.setSizes){c.setSizes()}},c.conf.resizeTMTime)};this._runCommand=function(m,o){if(this.conf.roMode===true){return}if(arguments.length<2){o=null}if(window.dhx4.isIE){this.edWin.focus()}try{var l=this.editor.contentWindow.document;l.execCommand(m,false,o)}catch(n){}if(window.dhx4.isIE){this.edWin.focus();var j=this;window.setTimeout(function(){j.edWin.focus();j=null},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");var j=this.getContent();j=j.replace(/<\/?h\d>/gi,"");this.setContent(j)};this._doOnClick=function(m){var l=m||window.event;var j=l.target||l.srcElement;c._showInfo(j)};this._doOnMouseDown=function(m){var l=m||window.event;var j=l.target||l.srcElement;c._showInfo(j)};this._doOnKeyUp=function(n){var m=n||window.event;var j=m.keyCode;var l=m.target||m.srcElement;if({37:1,38:1,39:1,40:1,13:1}[j]==1){c._showInfo(l)}};this._getParentByTag=function(j,m){m=m.toLowerCase();var l=j;do{if(m==""||l.nodeName.toLowerCase()==m){return l}}while(l=l.parentNode);return j};this._isStyleProperty=function(l,o,j,m){o=o.toLowerCase();var r=l;do{if((r.nodeName.toLowerCase()==o)&&(r.style[j]==m)){return true}}while(r=r.parentNode);return false};this._setStyleProperty=function(j,m){this.style[m]=false;var l=this._getParentByTag(j,m);if(l&&(l.tagName.toLowerCase()==m)){this.style[m]=true}if(m=="del"&&this._getParentByTag(j,"strike")&&this._getParentByTag(j,"strike").tagName.toLowerCase()=="strike"){this.style.del=true}};this._showInfo=function(l){var l=(this._getSelectionBounds().end)?this._getSelectionBounds().end:l;if(!l||!this._setStyleProperty){return}try{if(this.edWin.getComputedStyle){var j=this.edWin.getComputedStyle(l,null);var m=((j.getPropertyValue("font-weight")==401)?700:j.getPropertyValue("font-weight"));this.style={fontStyle:j.getPropertyValue("font-style"),fontSize:j.getPropertyValue("font-size"),textDecoration:j.getPropertyValue("text-decoration"),fontWeight:m,fontFamily:j.getPropertyValue("font-family"),textAlign:j.getPropertyValue("text-align")};if(window.dhx4.isKHTML){this.style.fontStyle=j.getPropertyValue("font-style");this.style.vAlign=j.getPropertyValue("vertical-align");this.style.del=this._isStyleProperty(l,"span","textDecoration","line-through");this.style.u=this._isStyleProperty(l,"span","textDecoration","underline")}}else{var j=l.currentStyle;this.style={fontStyle:j.fontStyle,fontSize:j.fontSize,textDecoration:j.textDecoration,fontWeight:j.fontWeight,fontFamily:j.fontFamily,textAlign:j.textAlign}}this._setStyleProperty(l,"h1");this._setStyleProperty(l,"h2");this._setStyleProperty(l,"h3");this._setStyleProperty(l,"h4");if(!window.dhx4.isKHTML){this._setStyleProperty(l,"del");this._setStyleProperty(l,"sub");this._setStyleProperty(l,"sup");this._setStyleProperty(l,"u")}this.callEvent("onFocusChanged",[this.style,j])}catch(n){return null}};this._getSelectionBounds=function(){var o,m,s,l;if(this.edWin.getSelection){var r=this.edWin.getSelection();if(window.dhx4.isEdge&&r.rangeCount==0){return{root:null,start:null,end:null}}o=r.getRangeAt(r.rangeCount-1);s=o.startContainer;l=o.endContainer;m=o.commonAncestorContainer;if(s.nodeName=="#text"){m=m.parentNode}if(s.nodeName=="#text"){s=s.parentNode}if(s.nodeName.toLowerCase()=="body"){s=s.firstChild}if(l.nodeName=="#text"){l=l.parentNode}if(l.nodeName.toLowerCase()=="body"){l=l.lastChild}if(s==l){m=s}return{root:m,start:s,end:l}}else{if(this.edWin.document.selection){o=this.edDoc.selection.createRange();if(!o.duplicate){return null}m=o.parentElement();var n=o.duplicate();var j=o.duplicate();n.collapse(true);j.moveToElementText(n.parentElement());j.setEndPoint("EndToStart",n);s=n.parentElement();n=o.duplicate();j=o.duplicate();j.collapse(false);n.moveToElementText(j.parentElement());n.setEndPoint("StartToEnd",j);l=j.parentElement();if(s.nodeName.toLowerCase()=="body"){s=s.firstChild}if(l.nodeName.toLowerCase()=="body"){l=l.lastChild}if(s==l){m=s}return{root:m,start:s,end:l}}}return null};this.getContent=function(){if(!this.edDoc.body){return""}else{if(window.dhx4.isFF){return this.editor.contentWindow.document.body.innerHTML.replace(/<\/{0,}br\/{0,}>\s{0,}$/gi,"")}if(window.dhx4.isIE&&this.edDoc.body.innerText.length==0){return""}return this.edDoc.body.innerHTML}};this.setContent=function(m){m=m||"";if(this.edDoc.body){var l=false;if(window.dhx4.isFF){var j=navigator.userAgent.match(/Firefox\/(\d*)/);l=(j!=null&&j[1]<28)}if(l){if(typeof(this.conf.ffTest)=="undefined"){this.editor.contentWindow.document.body.innerHTML="";this._runCommand("InsertHTML","test");this.conf.ffTest=(this.editor.contentWindow.document.body.innerHTML.length>0)}if(this.conf.ffTest){this.editor.contentWindow.document.body.innerHTML=m}else{this.editor.contentWindow.document.body.innerHTML="";if(m.length==0){m=" "}this._runCommand("InsertHTML",m)}}else{this.editor.contentWindow.document.body.innerHTML=m}this.callEvent("onContentSet",[])}else{if(!this.conf.firstLoadEv){this.conf.firstLoadEv=true;this.conf.firstLoadData=m;this._onFirstLoad=function(){c.setContent(c.conf.firstLoadData);if(typeof(window.addEventListener)=="function"){c.edWin.removeEventListener("load",c._onFirstLoad,false)}else{c.edWin.detachEvent("onload",c._onFirstLoad)}c.conf.firstLoadData=null;c.conf.firstLoadEv=false;c._onFirstLoad=null};if(typeof(window.addEventListener)=="function"){this.edWin.addEventListener("load",this._onFirstLoad,false)}else{this.edWin.attachEvent("onload",this._onFirstLoad)}}}};this.setContentHTML=function(j){window.dhx4.ajax.get(j,function(l){if(l.xmlDoc.responseText!=null){c.setContent(l.xmlDoc.responseText)}})};window.dhx4._eventable(this);this.attachEvent("onFocusChanged",function(j){if(typeof(this._doOnFocusChanged)=="function"){this._doOnFocusChanged(j)}else{if(typeof(this._doOnFocusChanged)=="string"&&typeof(window[this._doOnFocusChanged])=="function"){window[this._doOnFocusChanged](j)}}});if(typeof(window.addEventListener)=="function"){window.addEventListener("resize",this._doOnResize,false);this.edDoc.addEventListener("click",this._doOnClick,false);this.edDoc.addEventListener("keyup",this._doOnKeyUp,false);if(window.dhx4.isOpera){this.edDoc.addEventListener("mousedown",this._doOnMouseDown,false)}}else{window.attachEvent("onresize",this._doOnResize);this.edDoc.attachEvent("onclick",this._doOnClick);this.edDoc.attachEvent("onkeyup",this._doOnKeyUp)}this.unload=function(){if(typeof(window.addEventListener)=="function"){window.removeEventListener("resize",this._doOnResize,false);this.edDoc.removeEventListener("click",this._doOnClick,false);this.edDoc.removeEventListener("keyup",this._doOnKeyUp,false);if(window.dhx4.isOpera){this.edDoc.removeEventListener("mousedown",this._doOnMouseDown,false)}for(var j=0;j<c.conf.evs.length;j++){a.contentWindow.removeEventListener(c.conf.evs[j],c._ev,false)}if(this.tb!=null&&this.conf.iOSfix==true){this.tb.cont.removeEventListener("touchend",this._doOnIOSFix,false);this._doOnIOSFix=null}}else{window.detachEvent("onresize",this._doOnResize,false);this.edDoc.detachEvent("onclick",this._doOnClick);this.edDoc.detachEvent("onkeyup",this._doOnKeyUp);for(var j=0;j<c.conf.evs.length;j++){a.contentWindow.document.body.detachEvent("on"+c.conf.evs[j],c._ev)}}this._doOnAccess=null;this._doOnFocusChanged=null;if(typeof(window.addEventListener)=="function"){this.editor.onload=null}else{this.editor.onreadystatechange=null}this.editor.parentNode.removeChild(this.editor);this.editor=null;this.edDoc=null;this.edWin=null;this.cell._unload();this.cell=null;this.tb=null;window.dhx4._eventable(this,"clear");this.cBlock.parentNode.removeChild(this.cBlock);this.cBlock=null;this.base.className=String(this.base.className).replace(new RegExp("\\s{0,}dhxeditor_"+this.conf.skin),"");while(this.base.childNodes.length>0){this.base.removeChild(this.base.childNodes[0])}this.base=null;this._doOnClick=null;this._doOnKeyUp=null;this._doOnMouseDown=null;this._ev=null;this._focus=null;this._prepareContent=null;this._doOnResize=null;this.setIconsPath=null;this.init=null;this.setSizes=null;this._runCommand=null;this.applyBold=null;this.applyItalic=null;this.applyUnderscore=null;this.clearFormatting=null;this._showInfo=null;this._getSelectionBounds=null;this.getContent=null;this.setContent=null;this.setContentHTML=null;this.setReadonly=null;this.isReadonly=null;this.unload=null;c=a=null};if(this.conf.toolbar==true&&typeof(this.attachToolbar)=="function"&&typeof(window.dhtmlXToolbarObject)=="function"){this.attachToolbar(this.conf.iconsPath);if(this.conf.iOSfix==true){this._doOnIOSFix=function(){c.editor.contentWindow.focus()};this.tb.cont.addEventListener("touchend",this._doOnIOSFix,false)}}this.setIconsPath=function(j){this.conf.iconsPath=j};if(this.conf.content.length>0){this.setContent(this.conf.content);this.conf.content=""}else{if(this.conf.contentHTML.length>0){this.setContentHTML(this.conf.contentHTML);this.conf.contentHTML=""}}return this}dhtmlXEditor.prototype.setSizes=function(){this.cell._setSize(0,0,this.base.clientWidth,this.base.clientHeight);if(this.editor!=null){this.editor.style.left="5px";this.editor.style.width=this.base.clientWidth-5+"px"}};dhtmlXEditor.prototype.setReadonly=function(a){this.conf.roMode=(a===true);this._prepareContent(true,this.conf.roMode);this.cBlock.style.display=(this.conf.roMode?"":"none")};dhtmlXEditor.prototype.isReadonly=function(a){return(this.conf.roMode||false)};dhtmlXEditor.prototype.setSkin=function(a){this.base.className=String(this.base.className).replace(new RegExp("dhxeditor_"+this.conf.skin),"dhxeditor_"+a);this.conf.skin=this.cell.conf.skin=a;if(this.tb){this.cell.detachToolbar(a);this.tb=null;this.attachToolbar()}this.setSizes()};window.dhtmlXEditorCell=function(e,a){dhtmlXCellObject.apply(this,[e,"_editor"]);var c=this;this.editor=a;this.conf.skin=this.editor.conf.skin;this.attachEvent("_onCellUnload",function(){this._stbUnload();this.editor=null;c=null});this._stbInit();return this};dhtmlXEditorCell.prototype=new dhtmlXCellObject();dhtmlXEditorCell.prototype._stbInit=function(){var j=this;var h=document.createElement("DIV");h.className="dhx_cell_stb";this.cell.insertBefore(h,this.cell.childNodes[this.conf.idx.cont]);h.onselectstart=function(a){a=a||event;a.cancelBubble=true;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};var g={bold:"applyBold",italic:"applyItalic",underline:"applyUnderscore",clearformat:"clearFormatting"};for(var e in g){var c=document.createElement("A");c.href="javascript:void(0);";c.tabIndex=-1;h.appendChild(c);c.onmousedown=c.onclick=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};var l=document.createElement("DIV");l.className="dhx_cell_stb_button btn_"+e;l._actv=e.charAt(0);l._cmd=g[e];c.appendChild(l);l.onclick=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};l.onmousedown=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}j.editor[this._cmd]();j.editor.callEvent("onToolbarClick",[this._actv])};l=c=null}h=null;this._stbUnload=function(){var a=this.cell.childNodes[this.conf.idx.stb];a.onselectstart=null;while(a.childNodes.length>0){a.lastChild.onmousedown=a.lastChild.onclick=null;a.lastChild.firstChild.onmousedown=a.lastChild.firstChild.onclick=null;a.lastChild.firstChild._actv=a.lastChild.firstChild._cmd=null;a.lastChild.removeChild(a.lastChild.firstChild);a.removeChild(a.lastChild)}a.parentNode.removeChild(a);a=j=null;this.conf.idx_data.stb=this.conf.ofs_nodes.t._getStbHeight=null;delete this.conf.ofs_nodes.t._getStbHeight;delete this.conf.idx_data.stb;this._updateIdx()};this.conf.ofs_nodes.t._getStbHeight="func";this.conf.idx_data.stb="dhx_cell_stb";this._updateIdx()};dhtmlXEditorCell.prototype._stbHide=function(){this.cell.childNodes[this.conf.idx.stb].style.display="none"};dhtmlXEditorCell.prototype._getStbHeight=function(){return this.cell.childNodes[this.conf.idx.stb].offsetHeight};dhtmlXCellObject.prototype.attachEditor=function(a){this.callEvent("_onBeforeContentAttach",["editor"]);var e=document.createElement("DIV");e.style.width="100%";e.style.height="100%";e.style.position="relative";e.style.overflow="hidden";this._attachObject(e);if(!(typeof(a)=="object"&&a!=null)){a={}}a.parent=e;this.dataType="editor";this.dataObj=new dhtmlXEditor(a);e=null;a.parent=null;a=null;if(typeof(window.dhtmlXPortalCell)=="function"&&this instanceof window.dhtmlXPortalCell){if(this.portal.conf.editor_ev==null){var g=this.portal.attachEvent("onBeforeDrag",function(h){if(this.cdata[h].dataType=="editor"){this.cdata[h].conf.editor_cont=this.cdata[h].dataObj.getContent()}return true});var c=this.portal.attachEvent("onDrop",function(h){if(this.cdata[h].dataType=="editor"){this.cdata[h].dataObj.setContent(this.cdata[h].conf.editor_cont);this.cdata[h].dataObj._prepareContent(true);this.cdata[h].conf.editor_cont=null}});this.portal.conf.editor_ev=[g,c]}this.conf.editor_ev=this.attachEvent("_onBeforeContentDetach",function(){this.detachEvent(this.conf.editor_ev);this.conf.editor_ev=null;if(this instanceof window.dhtmlXPortalCell){var j=false;for(var h in this.portal.cdata){if(this.portal.cdata[h]!=this&&this.portal.cdata[h].dataType=="editor"){j=true}}if(j==false){for(var l=0;l<this.portal.conf.editor_ev.length;l++){this.portal.detachEvent(this.portal.conf.editor_ev[l])}this.portal.conf.editor_ev=null}}})}this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXEditor.prototype.attachToolbar=function(c){if(this.tb!=null){return}if(c!=null){this.conf.iconsPath=c}this.cell._stbHide();this.tb=this.cell.attachToolbar({icons_path:this.conf.iconsPath+"/dhxeditor_"+String(this.conf.skin).replace(/^dhx_/,"")+"/",skin:this.conf.skin});this.setSizes();this._availFonts=new Array("Arial","Arial Narrow","Comic Sans MS","Courier","Georgia","Impact","Tahoma","Times New Roman","Verdana");this._initFont=this._availFonts[0];this._xmlFonts="";for(var j=0;j<this._availFonts.length;j++){var g=String(this._availFonts[j]).replace(/\s/g,"_");this._xmlFonts+='<item type="button" id="applyFontFamily:'+g+'"><itemText><![CDATA[<img src="'+this.tb.imagePath+"font_"+String(g).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 e in this._availSizes){this._xmlSizes+='<item type="button" id="applyFontSize:'+e+":"+this._availSizes[e]+'" text="'+this._availSizes[e]+'"/>'}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.loadStruct(this.tbXML);this._checkAlign=function(a){this.tb.setItemState("alignCenter",false);this.tb.setItemState("alignRight",false);this.tb.setItemState("alignJustify",false);this.tb.setItemState("alignLeft",false);if(a){this.tb.setItemState(a,true)}};this._checkH=function(a){this.tb.setItemState("applyH1",false);this.tb.setItemState("applyH2",false);this.tb.setItemState("applyH3",false);this.tb.setItemState("applyH4",false);if(a){this.tb.setItemState(a,true)}};this._doOnFocusChanged=function(m){if(!m.h1&&!m.h2&&!m.h3&&!m.h4){var a=(String(m.fontWeight).search(/bold/i)!=-1)||(Number(m.fontWeight)>=700);this.tb.setItemState("applyBold",a)}else{this.tb.setItemState("applyBold",false)}var l="alignLeft";if(String(m.textAlign).search(/center/)!=-1){l="alignCenter"}if(String(m.textAlign).search(/right/)!=-1){l="alignRight"}if(String(m.textAlign).search(/justify/)!=-1){l="alignJustify"}this.tb.setItemState(l,true);this._checkAlign(l);this.tb.setItemState("applyH1",m.h1);this.tb.setItemState("applyH2",m.h2);this.tb.setItemState("applyH3",m.h3);this.tb.setItemState("applyH4",m.h4);if(window._KHTMLrv){m.sub=(m.vAlign=="sub");m.sup=(m.vAlign=="super")}this.tb.setItemState("applyItalic",(m.fontStyle=="italic"));this.tb.setItemState("applyStrikethrough",m.del);this.tb.setItemState("applySub",m.sub);this.tb.setItemState("applySuper",m.sup);this.tb.setItemState("applyUnderscore",m.u)};this._doOnToolbarClick=function(l){var a=String(l).split(":");if(this[a[0]]!=null){if(typeof(this[a[0]])=="function"){this[a[0]](a[1]);this.callEvent("onToolbarClick",[l])}}};this._doOnStateChange=function(l,a){this[l]();switch(l){case"alignLeft":case"alignCenter":case"alignRight":case"alignJustify":this._checkAlign(l);break;case"applyH1":case"applyH2":case"applyH3":case"applyH4":this._checkH(l);break}this.callEvent("onToolbarClick",[l])};this._doOnBeforeStateChange=function(l,a){if((l=="alignLeft"||l=="alignCenter"||l=="alignRight"||l=="alignJustify")&&a==true){return false}return true};var h=this;this.tb.attachEvent("onClick",function(a){h._doOnToolbarClick(a)});this.tb.attachEvent("onStateChange",function(l,a){h._doOnStateChange(l,a)});this.tb.attachEvent("onBeforeStateChange",function(l,a){return h._doOnBeforeStateChange(l,a)});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",false);this.tb.setItemState("applyItalic",false);this.tb.setItemState("applyStrikethrough",false);this.tb.setItemState("applySub",false);this.tb.setItemState("applySuper",false);this.tb.setItemState("applyUnderscore",false);var a=this.getContent();a=a.replace(/<\/?h\d>/gi,"");this.setContent(a)}};dhtmlx.Group={_init:function(){dhtmlx.assert(this.data,"DataStore required for grouping");this.data.attachEvent("onStoreLoad",dhtmlx.bind(function(){if(this._settings.group){this.group(this._settings.group,false)}},this));this.attachEvent("onBeforeRender",dhtmlx.bind(function(a){if(this._settings.sort){a.block();a.sort(this._settings.sort);a.unblock()}},this));this.data.attachEvent("onClearAll",dhtmlx.bind(function(){this.data._not_grouped_order=this.data._not_grouped_pull=null},this));this.attachEvent("onBeforeSort",dhtmlx.bind(function(){this._settings.sort=null},this))},_init_group_data_event:function(c,a){c.attachEvent("onClearAll",dhtmlx.bind(function(){this.ungroup(false);this.block();this.clearAll();this.unblock()},a))},sum:function(c,a){c=dhtmlx.Template.setter(c);a=a||this.data;var e=0;a.each(function(g){e+=c(g)*1});return e},min:function(e,c){e=dhtmlx.Template.setter(e);c=c||this.data;var a=Infinity;c.each(function(g){if(e(g)*1<a){a=e(g)*1}});return a*1},max:function(e,c){e=dhtmlx.Template.setter(e);c=c||this.data;var a=-Infinity;c.each(function(g){if(e(g)*1>a){a=e(g)*1}});return a},_split_data_by:function(j){var m=function(r,o){r=dhtmlx.Template.setter(r);return r(o[0])};var n=dhtmlx.Template.setter(j.by);if(!j.map[n]){j.map[n]=[n,m]}var e={};var l=[];this.data.each(function(o){var r=n(o);if(!e[r]){l.push({id:r});e[r]=dhtmlx.toArray()}e[r].push(o)});for(var a in j.map){var h=(j.map[a][1]||m);if(typeof h!="function"){h=this[h]}for(var g=0;g<l.length;g++){l[g][a]=h.call(this,j.map[a][0],e[l[g].id])}}this.data._not_grouped_order=this.data.order;this.data._not_grouped_pull=this.data.pull;this.data.order=dhtmlx.toArray();this.data.pull={};for(var g=0;g<l.length;g++){var c=this.data.id(l[g]);this.data.pull[c]=l[g];this.data.order.push(c)}this.callEvent("onStoreUpdated",[])},group:function(a,c){this.ungroup(false);this._split_data_by(a);if(c!==false){this.data.callEvent("onStoreUpdated",[])}},ungroup:function(a){if(this.data._not_grouped_order){this.data.order=this.data._not_grouped_order;this.data.pull=this.data._not_grouped_pull;this.data._not_grouped_pull=this.data._not_grouped_order=null}if(a!==false){this.data.callEvent("onStoreUpdated",[])}},group_setter:function(a){dhtmlx.assert(typeof a=="object","Incorrect group value");dhtmlx.assert(a.by,"group.by is mandatory");dhtmlx.assert(a.map,"group.map is mandatory");return a},sort_setter:function(a){if(typeof a!="object"){a={by:a}}this._mergeSettings(a,{as:"string",dir:"asc"});return a}};dhtmlx.Date={Locale:{month_full:["January","February","March","April","May","June","July","August","September","October","November","December"],month_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],day_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},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()/1000-a.getTimezoneOffset()*60)%86400},week_start:function(c){var a=c.getDay();if(this.config.start_on_monday){if(a===0){a=6}else{a--}}return this.date_part(this.add(c,-1*a,"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(c,e,g){var a=new Date(c.valueOf());switch(g){case"day":a.setDate(a.getDate()+e);break;case"week":a.setDate(a.getDate()+7*e);break;case"month":a.setMonth(a.getMonth()+e);break;case"year":a.setYear(a.getFullYear()+e);break;case"hour":a.setHours(a.getHours()+e);break;case"minute":a.setMinutes(a.getMinutes()+e);break;default:return dhtmlx.Date["add_"+g](c,e,g)}return a},to_fixed:function(a){if(a<10){return"0"+a}return a},copy:function(a){return new Date(a.valueOf())},date_to_str:function(c,a){c=c.replace(/%[a-zA-Z]/g,function(e){switch(e){case"%d":return'"+dhtmlx.Date.to_fixed(date.getDate())+"';case"%m":return'"+dhtmlx.Date.to_fixed((date.getMonth()+1))+"';case"%j":return'"+date.getDate()+"';case"%n":return'"+(date.getMonth()+1)+"';case"%y":return'"+dhtmlx.Date.to_fixed(date.getFullYear()%100)+"';case"%Y":return'"+date.getFullYear()+"';case"%D":return'"+dhtmlx.Date.Locale.day_short[date.getDay()]+"';case"%l":return'"+dhtmlx.Date.Locale.day_full[date.getDay()]+"';case"%M":return'"+dhtmlx.Date.Locale.month_short[date.getMonth()]+"';case"%F":return'"+dhtmlx.Date.Locale.month_full[date.getMonth()]+"';case"%h":return'"+dhtmlx.Date.to_fixed((date.getHours()+11)%12+1)+"';case"%g":return'"+((date.getHours()+11)%12+1)+"';case"%G":return'"+date.getHours()+"';case"%H":return'"+dhtmlx.Date.to_fixed(date.getHours())+"';case"%i":return'"+dhtmlx.Date.to_fixed(date.getMinutes())+"';case"%a":return'"+(date.getHours()>11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+dhtmlx.Date.to_fixed(date.getSeconds())+"';case"%W":return'"+dhtmlx.Date.to_fixed(dhtmlx.Date.getISOWeek(date))+"';default:return e}});if(a){c=c.replace(/date\.get/g,"date.getUTC")}return new Function("date",'return "'+c+'";')},str_to_date:function(h,e){var j="var temp=date.split(/[^0-9a-zA-Z]+/g);";var a=h.match(/%[a-zA-Z]/g);for(var c=0;c<a.length;c++){switch(a[c]){case"%j":case"%d":j+="set[2]=temp["+c+"]||1;";break;case"%n":case"%m":j+="set[1]=(temp["+c+"]||1)-1;";break;case"%y":j+="set[0]=temp["+c+"]*1+(temp["+c+"]>50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":j+="set[3]=temp["+c+"]||0;";break;case"%i":j+="set[4]=temp["+c+"]||0;";break;case"%Y":j+="set[0]=temp["+c+"]||0;";break;case"%a":case"%A":j+="set[3]=set[3]%12+((temp["+c+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":j+="set[5]=temp["+c+"]||0;";break}}var g="set[0],set[1],set[2],set[3],set[4],set[5]";if(e){g=" Date.UTC("+g+")"}return new Function("date","var set=[0,0,1,0,0,0]; "+j+" return new Date("+g+");")},getISOWeek:function(e){if(!e){return false}var c=e.getDay();if(c===0){c=7}var g=new Date(e.valueOf());g.setDate(e.getDate()+(4-c));var a=g.getFullYear();var j=Math.floor((g.getTime()-new Date(a,0,1).getTime())/86400000);var h=1+Math.floor(j/7);return h},getUTCISOWeek:function(a){return this.getISOWeek(a)}};dhtmlx.math={};dhtmlx.math._toHex=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];dhtmlx.math.toHex=function(c,a){c=parseInt(c,10);str="";while(c>0){str=this._toHex[c%16]+str;c=Math.floor(c/16)}while(str.length<a){str="0"+str}return str};dhtmlx.math.hexToDec=function(a){return parseInt(a,16)};dhtmlx.math.toRgb=function(c){var h,e,a,j;if(typeof(c)!="string"){h=c[0];e=c[1];a=c[2]}else{if(c.indexOf("rgb")!=-1){j=c.substr(c.indexOf("(")+1,c.lastIndexOf(")")-c.indexOf("(")-1).split(",");h=j[0];e=j[1];a=j[2]}else{if(c.substr(0,1)=="#"){c=c.substr(1)}h=this.hexToDec(c.substr(0,2));e=this.hexToDec(c.substr(2,2));a=this.hexToDec(c.substr(4,2))}}h=(parseInt(h,10)||0);e=(parseInt(e,10)||0);a=(parseInt(a,10)||0);if(h<0||h>255){h=0}if(e<0||e>255){e=0}if(a<0||a>255){a=0}return[h,e,a]};dhtmlx.math.hsvToRgb=function(l,x,u){var j,n,e,c,w,a,m,o;j=Math.floor((l/60))%6;n=l/60-j;e=u*(1-x);c=u*(1-n*x);w=u*(1-(1-n)*x);a=0;m=0;o=0;switch(j){case 0:a=u;m=w;o=e;break;case 1:a=c;m=u;o=e;break;case 2:a=e;m=u;o=w;break;case 3:a=e;m=c;o=u;break;case 4:a=w;m=e;o=u;break;case 5:a=u;m=e;o=c;break}a=Math.floor(a*255);m=Math.floor(m*255);o=Math.floor(o*255);return[a,m,o]};dhtmlx.math.rgbToHsv=function(c,m,n){var j,e,o,a,u,x,l,w;j=c/255;e=m/255;o=n/255;var a=Math.min(j,e,o);var u=Math.max(j,e,o);l=0;x=u==0?0:(1-a/u);w=u;if(u==a){l=0}else{if(u==j&&e>=o){l=60*(e-o)/(u-a)+0}else{if(u==j&&e<o){l=60*(e-o)/(u-a)+360}else{if(u==e){l=60*(o-j)/(u-a)+120}else{if(u==o){l=60*(j-e)/(u-a)+240}}}}}return[l,x,w]};if(!dhtmlx.presets){dhtmlx.presets={}}dhtmlx.presets.chart={simple:{item:{borderColor:"#ffffff",color:"#2b7100",shadow:false,borderWidth:2},line:{color:"#8ecf03",width:2}},plot:{color:"#1293f8",item:{borderColor:"#636363",borderWidth:1,color:"#ffffff",type:"r",shadow:false},line:{color:"#1293f8",width:2}},diamond:{color:"#b64040",item:{borderColor:"#b64040",color:"#b64040",type:"d",radius:3,shadow:true},line:{color:"#ff9000",width:2}},point:{color:"#fe5916",disableLines:true,fill:false,disableItems:false,item:{color:"#feb916",borderColor:"#fe5916",radius:2,borderWidth:1,type:"r"},alpha:1},line:{line:{color:"#3399ff",width:2},item:{color:"#ffffff",borderColor:"#3399ff",radius:2,borderWidth:2,type:"d"},fill:false,disableItems:false,disableLines:false,alpha:1},area:{fill:"#3399ff",line:{color:"#3399ff",width:1},disableItems:true,alpha:0.2,disableLines:false},round:{item:{radius:3,borderColor:"#3f83ff",borderWidth:1,color:"#3f83ff",type:"r",shadow:false,alpha:0.6}},square:{item:{radius:3,borderColor:"#447900",borderWidth:2,color:"#69ba00",type:"s",shadow:false,alpha:1}},column:{color:"RAINBOW",gradient:false,width:45,radius:0,alpha:1,border:true},stick:{width:5,gradient:false,color:"#67b5c9",radius:2,alpha:1,border:false},alpha:{color:"#b9a8f9",width:70,gradient:"falling",radius:0,alpha:0.5,border:true}};dhtmlx.ui.Map=function(a){this.name="Map";this._id="map_"+dhtmlx.uid();this._key=a;this._map=[];this._areas=[]};dhtmlx.ui.Map.prototype={addRect:function(e,c,a){this._areas.push({index:a,points:c});this._createMapArea(e,"RECT",c,a)},addPoly:function(e,c,a){this._createMapArea(e,"POLY",c,a)},_createMapArea:function(h,c,g,e){var a="";if(arguments.length==4){a="userdata='"+e+"'"}this._map.push("<area "+this._key+"='"+h+"' shape='"+c+"' coords='"+g.join()+"' "+a+"></area>")},addSector:function(a,o,n,l,h,e,g,j){var m=[];m.push(l);m.push(Math.floor(h*g));for(var c=o;c<n;c+=Math.PI/18){m.push(Math.floor(l+e*Math.cos(c)));m.push(Math.floor((h+e*Math.sin(c))*g))}m.push(Math.floor(l+e*Math.cos(n)));m.push(Math.floor((h+e*Math.sin(n))*g));m.push(l);m.push(Math.floor(h*g));return this.addPoly(a,m,j)},render:function(a){var e=dhtmlx.html.create("DIV");e.style.cssText="position:absolute; width:100%; height:100%; top:0px; left:0px;";a.appendChild(e);var c=dhtmlx._isIE?"":"src='data:image/gif;base64,R0lGODlhEgASAIAAAP///////yH5BAUUAAEALAAAAAASABIAAAIPjI+py+0Po5y02ouz3pwXADs='";e.innerHTML="<map id='"+this._id+"' name='"+this._id+"'>"+this._map.join("\n")+"</map><img "+c+" class='dhx_map_img' usemap='#"+this._id+"' onmousedown='return false;'>";a._htmlmap=e;this._map=[]}};dhtmlx.chart={};dhtmlx.chart.scatter={pvt_render_scatter:function(o,j,n,m,l,a){if(!this._settings.xValue){return dhtmlx.log("warning","Undefined propery: xValue")}var e=this._getLimits();var h=this._getLimits("h","xValue");if(!l){if(!this.canvases.x){this.canvases.x=new dhtmlx.ui.Canvas(this._obj,"axis_x")}if(!this.canvases.y){this.canvases.y=new dhtmlx.ui.Canvas(this._obj,"axis_y")}this._drawYAxis(this.canvases.y.getCanvas(),j,n,m,e.min,e.max);this._drawHXAxis(this.canvases.x.getCanvas(),j,n,m,h.min,h.max)}e={min:this._settings.yAxis.start,max:this._settings.yAxis.end};h={min:this._settings.xAxis.start,max:this._settings.xAxis.end};var c=this._getScatterParams(o,j,n,m,h,e);this._mapStart=n;for(var g=0;g<j.length;g++){this._drawScatterItem(o,a,n,m,c,h,e,j[g],l)}},_getScatterParams:function(a,g,e,c,l,j){var h={};h.totalHeight=c.y-e.y;h.totalWidth=c.x-e.x;this._calcScatterUnit(h,l.min,l.max,h.totalWidth,"X");this._calcScatterUnit(h,j.min,j.max,h.totalHeight,"Y");return h},_drawScatterItem:function(r,a,n,m,e,h,g,j,l){var c=this._calculateScatterItemPosition(e,m,n,h,j,"X");var o=this._calculateScatterItemPosition(e,n,m,g,j,"Y");this._drawItem(r,c,o,j,this._settings.label.call(this,j),l,a)},_calculateScatterItemPosition:function(e,m,l,a,h,c){var o=this._settings[c=="X"?"xValue":"value"].call(this,h);var g=e["valueFactor"+c];var r=(parseFloat(o||0)-a.min)*g;var n=e["unit"+c];var j=l[c.toLowerCase()]-(c=="X"?(-1):1)*Math.floor(n*r);if(r<0){j=l[c.toLowerCase()]}if(o>a.max){j=m[c.toLowerCase()]}if(o<a.min){j=l[c.toLowerCase()]}return j},_calcScatterUnit:function(j,e,a,c,g){var h=this._getRelativeValue(e,a);g=(g||"");j["relValue"+g]=h[0];j["valueFactor"+g]=h[1];j["unit"+g]=(j["relValue"+g]?c/j["relValue"+g]:10)}};dhtmlx.chart.radar={pvt_render_radar:function(c,g,a,j,e,h){this._renderRadarChart(c,g,a,j,e,h)},_renderRadarChart:function(u,h,r,o,n,a){if(!h.length){return}var l=this._getPieParameters(r,o);var m=(this._settings.radius?this._settings.radius:l.radius);var c=(this._settings.x?this._settings.x:l.x);var s=(this._settings.y?this._settings.y:l.y);var e=[];for(var g=0;g<h.length;g++){e.push(1)}var j=this._getRatios(e,h.length);this._mapStart=r;if(!n){this._drawRadarAxises(j,c,s,m,h)}this._drawRadarData(u,j,c,s,m,h,n,a)},_drawRadarData:function(C,s,m,l,h,N,D,M){var A,v,L,J,E,I,g,e,F,K,H,u,c,w,o,n,a,r,j;L=this._settings;E=L.yAxis.start;I=L.yAxis.end;j=this._getRelativeValue(E,I);u=j[0];r=(u?h/u:h/2);a=j[1];c=-Math.PI/2;A=v=c;F=[];e=0;for(J=0;J<N.length;J++){if(!n){w=L.value(N[J]);o=(parseFloat(w||0)-E)*a}else{o=n}K=Math.floor(r*o);w=L.value((J!=(N.length-1))?N[J+1]:N[0]);n=(parseFloat(w||0)-E)*a;H=Math.floor(r*n);A=v;v=((J!=(N.length-1))?(c+s[J]-0.0001):c);g=(e||this._getPositionByAngle(A,m,l,K));e=this._getPositionByAngle(v,m,l,H);F.push(g)}if(L.fill){this._fillRadarChart(C,F,N)}if(!L.disableLines){this._strokeRadarChart(C,F,N)}if(!L.disableItems){this._drawRadarItemMarkers(C,F,N,D,M)}F=null},_drawRadarItemMarkers:function(a,e,h,g,j){for(var c=0;c<e.length;c++){this._drawItem(a,e[c].x,e[c].y,h[c],this._settings.label.call(this,h),g,j)}},_fillRadarChart:function(a,g,j){var h,e;a.globalAlpha=this._settings.alpha.call(this,{});a.beginPath();for(var c=0;c<g.length;c++){a.fillStyle=this._settings.fill.call(this,j[c]);h=g[c];e=(g[c+1]||g[0]);if(!c){a.moveTo(h.x,h.y)}a.lineTo(e.x,e.y)}a.fill();a.globalAlpha=1},_strokeRadarChart:function(a,g,j){var h,e;for(var c=0;c<g.length;c++){h=g[c];e=(g[c+1]||g[0]);this._drawLine(a,h.x,h.y,e.x,e.y,this._settings.line.color.call(this,j[c]),this._settings.line.width)}},_drawRadarAxises:function(C,w,v,m,P){var a=this._settings.yAxis;var g=this._settings.xAxis;var n=a.start;var l=a.end;var r=a.step;var D={};var O=this._configYAxis;if(typeof O.step=="undefined"||typeof O.start=="undefined"||typeof O.end=="undefined"){var s=this._getLimits();D=this._calculateScale(s.min,s.max);n=D.start;l=D.end;r=D.step;a.end=l;a.start=n}var J=[];var M,L,E;var N=0;var e=m*r/(l-n);var u,A;if(r<1){u=Math.min(this._log10(r),(n<=0?0:this._log10(n)));A=Math.pow(10,-u)}var K=[];if(!this.canvases.scale){this.canvases.scale=new dhtmlx.ui.Canvas(this._obj,"radar_scale")}var I=this.canvases.scale.getCanvas();for(M=l;M>=n;M-=r){if(D.fixNum){M=parseFloat((new Number(M)).toFixed(D.fixNum))}J.push(Math.floor(N*e)+0.5);if(A){M=Math.round(M*A)/A}var o=v-m+J[J.length-1];this.canvases.scale.renderTextAt("middle","left",w,o,a.template(M.toString()),"dhx_axis_item_y dhx_radar");if(C.length<2){this._drawScaleSector(I,"arc",w,v,m-J[J.length-1],-Math.PI/2,3*Math.PI/2,M);return}var h=-Math.PI/2;var H=h;var F;for(L=0;L<C.length;L++){if(M==l){K.push(H)}F=h+C[L]-0.0001;this._drawScaleSector(I,(O.lineShape||"line"),w,v,m-J[J.length-1],H,F,M,L,P[M]);H=F}N++}for(M=0;M<K.length;M++){E=this._getPositionByAngle(K[M],w,v,m);if(g.lines.call(this,P[M],M)){this._drawLine(I,w,v,E.x,E.y,(g?g.lineColor.call(this,P[M]):"#cfcfcf"),1)}this._drawRadarScaleLabel(I,w,v,m,K[M],(g?g.template.call(this,P[M]):"&nbsp;"))}},_drawScaleSector:function(u,l,s,o,h,c,a,g,e){var r,n;if(h<0){return false}r=this._getPositionByAngle(c,s,o,h);n=this._getPositionByAngle(a,s,o,h);var m=this._settings.yAxis;if(m.bg){u.beginPath();u.moveTo(s,o);if(l=="arc"){u.arc(s,o,h,c,a,false)}else{u.lineTo(r.x,r.y);u.lineTo(n.x,n.y)}u.fillStyle=m.bg(g,e);u.moveTo(s,o);u.fill();u.closePath()}if(m.lines.call(this,g)){u.lineWidth=1;u.beginPath();if(l=="arc"){u.arc(s,o,h,c,a,false)}else{u.moveTo(r.x,r.y);u.lineTo(n.x,n.y)}u.strokeStyle=m.lineColor.call(this,g);u.stroke()}},_drawRadarScaleLabel:function(w,n,l,c,m,u){var v=this.canvases.scale.renderText(0,0,u,"dhx_axis_radar_title",1);var e=v.scrollWidth;var s=v.offsetHeight;var o=0.001;var j=this._getPositionByAngle(m,n,l,c+5);var h=0,g=0;if(m<0||m>Math.PI){g=-s}if(m>Math.PI/2){h=-e}if(Math.abs(m+Math.PI/2)<o||Math.abs(m-Math.PI/2)<o){h=-e/2}else{if(Math.abs(m)<o||Math.abs(m-Math.PI)<o){g=-s/2}}v.style.top=j.y+g+"px";v.style.left=j.x+h+"px";v.style.width=e+"px";v.style.whiteSpace="nowrap"}};dhtmlx.chart.area={pvt_render_area:function(m,E,h,g,n,A){var r,y,s,o,j,x,l,D,C,w,v,c,u,a,e;x=this._calculateLineParams(m,E,h,g,n);y=this._settings;o=(y.eventRadius||Math.floor(x.cellWidth/2));if(E.length){l=[];w=(!y.offset?h.x:h.x+x.cellWidth*0.5);for(s=0;s<E.length;s++){j=E[s];C=this._getPointY(j,h,g,x);u=w+x.cellWidth*s;if(C){a=(typeof C=="object"?C.y0:C);if(s&&this._settings.fixOverflow){D=this._getPointY(E[s-1],h,g,x);if(D.out&&D.out==C.out){continue}v=x.cellWidth*(s-1)-0.5+w;c=(typeof D=="object"?D.y0:D);if(D.out){e=(D.out=="min"?g.y:h.y);l.push([this._calcOverflowX(v,u,c,a,e),e])}if(C.out){e=(C.out=="min"?g.y:h.y);l.push([this._calcOverflowX(v,u,c,a,e),e]);if(s==(E.length-1)&&e==h.y){l.push([u,h.y])}}}if(!C.out){l.push([u,a]);A.addRect(j.id,[u-o-h.x,a-o-h.y,u+o-h.x,a+o-h.y],n)}if(!y.yAxis){r=(!y.offset&&(s==E.length-1)?"left":"center");this.canvases[n].renderTextAt(false,r,u,a-y.labelOffset,y.label(j))}}}if(l.length){l.push([u,g.y]);l.push([l[0][0],g.y])}m.globalAlpha=this._settings.alpha.call(this,E[0]);m.fillStyle=this._settings.color.call(this,E[0]);m.beginPath();this._path(m,l);m.fill();if(y.border){m.lineWidth=y.borderWidth||1;if(y.borderColor){m.strokeStyle=y.borderColor.call(this,E[0])}else{this._setBorderStyles(m,m.fillStyle)}m.beginPath();this._path(m,l);m.stroke()}m.lineWidth=1;m.globalAlpha=1}}};dhtmlx.chart.stackedArea={pvt_render_stackedArea:function(o,H,c,a,r,E){var J,I,v,D,A,w,h,u,l,C,n,g,e,m;C=this._calculateLineParams(o,H,c,a,r);D=this._settings;u=(D.eventRadius||Math.floor(C.cellWidth/2));if(H.length){n=[];m=[];g=(!D.offset?c.x:c.x+C.cellWidth*0.5);var F=function(j,x){return r?(H[j].$startY?x-a.y+H[j].$startY:0):x};var s=function(j,L,K){var y=(K.y-L.y)/(K.x-L.x);return y*j+L.y-y*L.x};for(A=0;A<H.length;A++){l=H[A];if(!A){e=F(A,a.y);n.push([g,e])}else{g+=C.cellWidth}e=F(A,this._getPointY(l,c,a,C));m.push((isNaN(e)&&!A)?(H[A].$startY||a.y):e);if(e){n.push([g,e]);E.addRect(l.id,[g-u-c.x,e-u-c.y,g+u-c.x,e+u-c.y],r);if(!D.yAxis){v=(!D.offset&&h?"left":"center");this.canvases[r].renderTextAt(false,v,g,e-D.labelOffset,D.label(l))}}}n.push([g,F(A-1,a.y)]);if(r){for(A=H.length-2;A>0;A--){g-=C.cellWidth;e=H[A].$startY;if(e){n.push([g,e])}}}n.push([n[0][0],n[0][1]]);o.globalAlpha=this._settings.alpha.call(this,H[0]);o.fillStyle=this._settings.color.call(this,H[0]);o.beginPath();this._path(o,n);o.fill();for(A=0;A<H.length;A++){e=m[A];if(!e){if(A==H.length-1){e=H[A].$startY}for(w=A+1;w<H.length;w++){if(m[w]){J={x:c.x,y:m[0]};I={x:(c.x+C.cellWidth*w),y:m[w]};e=s(c.x+C.cellWidth*A,J,I);break}}}H[A].$startY=e}}}};dhtmlx.chart.spline={pvt_render_spline:function(o,I,g,e,r,H){var F,u,n,s,E,m,l,A,w,v,h,c,a;E=this._calculateLineParams(o,I,g,e,r);F=this._settings;this._mapStart=g;n=[];if(I.length){A=(F.offset?g.x+E.cellWidth*0.5:g.x);for(u=0;u<I.length;u++){h=this._getPointY(I[u],g,e,E);if(h){l=((!u)?A:E.cellWidth*u-0.5+A);n.push({x:l,y:h,index:u})}}m=this._getSplineParameters(n);for(u=0;u<n.length;u++){w=n[u].x;c=n[u].y;if(u<n.length-1){v=n[u+1].x;a=n[u+1].y;for(s=w;s<v;s++){var D=this._getSplineYPoint(s,w,u,m.a,m.b,m.c,m.d);if(D<g.y){D=g.y}if(D>e.y){D=e.y}var C=this._getSplineYPoint(s+1,w,u,m.a,m.b,m.c,m.d);if(C<g.y){C=g.y}if(C>e.y){C=e.y}this._drawLine(o,s,D,s+1,C,F.line.color(I[u]),F.line.width)}this._drawLine(o,v-1,this._getSplineYPoint(s,w,u,m.a,m.b,m.c,m.d),v,a,F.line.color(I[u]),F.line.width)}this._drawItem(o,w,c,I[n[u].index],F.label(I[n[u].index]),r,H)}}},_getSplineParameters:function(y){var j,C,A,D,x,w,r,o,l=[],g=[],e=y.length;for(j=0;j<e-1;j++){l[j]=y[j+1].x-y[j].x;g[j]=(y[j+1].y-y[j].y)/l[j]}C=[];A=[];C[0]=0;C[1]=2*(l[0]+l[1]);A[0]=0;A[1]=6*(g[1]-g[0]);for(j=2;j<e-1;j++){C[j]=2*(l[j-1]+l[j])-l[j-1]*l[j-1]/C[j-1];A[j]=6*(g[j]-g[j-1])-l[j-1]*A[j-1]/C[j-1]}D=[];D[e-1]=D[0]=0;for(j=e-2;j>=1;j--){D[j]=(A[j]-l[j]*D[j+1])/C[j]}x=[];w=[];r=[];o=[];for(j=0;j<e-1;j++){x[j]=y[j].y;w[j]=-l[j]*D[j+1]/6-l[j]*D[j]/3+(y[j+1].y-y[j].y)/l[j];r[j]=D[j]/2;o[j]=(D[j+1]-D[j])/(6*l[j])}return{a:x,b:w,c:r,d:o}},_getSplineYPoint:function(g,j,l,h,e,n,m){return h[l]+(g-j)*(e[l]+(g-j)*(n[l]+(g-j)*m[l]))}};dhtmlx.chart.barH={pvt_render_barH:function(C,P,l,j,D,O){var s,v,F,E,a,I,o,M,w,N,c,y,m,J,x,h,A,u,L,g,r;F=(j.y-l.y)/P.length;o=this._getLimits("h");M=o.max;w=o.min;h=j.x-l.x;r=!!this._settings.yAxis;if(!D){this._drawHScales(C,P,l,j,w,M,F)}if(r){M=parseFloat(this._settings.xAxis.end);w=parseFloat(this._settings.xAxis.start)}J=this._getRelativeValue(w,M);y=J[0];c=J[1];u=(y?h/y:10);if(!r){x=10;u=(y?(h-x)/y:10)}v=parseInt(this._settings.width,10);var K=this._series.length;var n=this._settings.seriesMargin;var e=this._settings.seriesPadding;if(this._series&&(v*K+e+(K>2?n*K:0)>F)){v=F/K-e-(K>2?n:0)}s=(F-v*K-n*(K-1))/2;if(this._settings.border){v=parseInt(v,10);s=parseInt(s,10)}m=(typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(v/5));N=false;a=this._settings.gradient;if(a&&typeof(a)!="function"){N=a;a=false}else{if(a){a=C.createLinearGradient(l.x,l.y,j.x,l.y);this._settings.gradient(a)}}if(!r){this._drawLine(C,l.x-0.5,l.y,l.x-0.5,j.y,"#000000",1)}for(I=0;I<P.length;I++){A=parseFloat(this._settings.value(P[I]||0));if(A>M){A=M}A-=w;A*=c;L=l.x;g=l.y+s+(K>2?n*D:0)+parseInt(I*F,10)+v*D;if((A<0&&this._settings.origin=="auto")||(this._settings.xAxis&&A===0&&!(this._settings.origin!="auto"&&this._settings.origin>w))){this.canvases[D].renderTextAt("middle","right",L+10,g+v/2+s,this._settings.label(P[I]));continue}if(A<0&&this._settings.origin!="auto"&&this._settings.origin>w){A=0}if(!r){A+=x/u}E=a||this._settings.color.call(this,P[I]);if(this._settings.border){this._drawBarHBorder(C,L,g,v,w,m,u,A,E)}C.globalAlpha=this._settings.alpha.call(this,P[I]);var H=this._drawBarH(C,j,L,g,v,w,m,u,A,E,a,N);if(N!=false){this._drawBarHGradient(C,L,g,v,w,m,u,A,E,N)}C.globalAlpha=1;if(H[3]==g){this.canvases[D].renderTextAt("middle","left",H[0]-5,H[3]+Math.floor(v/2),this._settings.label(P[I]));O.addRect(P[I].id,[H[0]-l.x,H[3]-l.y,H[2]-l.x,H[3]+v-l.y],D)}else{this.canvases[D].renderTextAt("middle",false,H[2]+5,H[1]+Math.floor(v/2),this._settings.label(P[I]));O.addRect(P[I].id,[H[0]-l.x,g-l.y,H[2]-l.x,H[3]-l.y],D)}}},_setBarHPoints:function(w,g,u,x,l,v,s,j,h){var c=0;if(l>v*s){var r=(l-v*s)/l;c=-Math.asin(r)+Math.PI/2}w.moveTo(g,u+j);var e=g+v*s-l-(l?0:j);if(l<v*s){w.lineTo(e,u+j)}var o=u+l;if(l&&l>0){w.arc(e,o,l-j,-Math.PI/2+c,0,false)}var n=u+x-l-(l?0:j);var a=e+l-(l?j:0);w.lineTo(a,n);if(l&&l>0){w.arc(e,n,l-j,0,Math.PI/2-c,false)}var m=u+x-j;w.lineTo(g,m);if(!h){w.lineTo(g,u+j)}return[a,m]},_drawHScales:function(e,l,j,h,m,c,g){var a=0;if(this._settings.xAxis){if(!this.canvases.x){this.canvases.x=new dhtmlx.ui.Canvas(this._obj)}a=this._drawHXAxis(this.canvases.x.getCanvas(),l,j,h,m,c)}if(this._settings.yAxis){if(!this.canvases.y){this.canvases.y=new dhtmlx.ui.Canvas(this._obj)}this._drawHYAxis(this.canvases.y.getCanvas(),l,j,h,g,a)}},_drawHYAxis:function(s,h,n,l,e,a){if(!this._settings.yAxis){return}var j;var c=parseInt((a?a:n.x),10)-0.5;var o=l.y+0.5;var m=n.y;this._drawLine(s,c,o,c,m,this._settings.yAxis.color,1);for(var g=0;g<h.length;g++){var r=((this._settings.origin!="auto")&&(this._settings.view=="barH")&&(parseFloat(this._settings.value(h[g]))<this._settings.origin));j=m+e/2+g*e;this.canvases.y.renderTextAt("middle",(r?false:"left"),(r?c+5:c-5),j,this._settings.yAxis.template(h[g]),"dhx_axis_item_y",(r?0:c-10));if(this._settings.yAxis.lines.call(this,h[g])){this._drawLine(s,n.x,j,l.x,j,this._settings.yAxis.lineColor.call(this,h[g]),1)}}this._drawLine(s,n.x+0.5,m+0.5,l.x,m+0.5,this._settings.yAxis.lineColor.call(this,{}),1);this._setYAxisTitle(n,l)},_drawHXAxis:function(A,s,x,w,e,n){var l;var h={};var m=this._settings.xAxis;if(!m){return}var y=w.y+0.5;var g=x.x-0.5;var a=w.x-0.5;var r=x.x;this._drawLine(A,g,y,a,y,m.color,1);if(m.step){l=parseFloat(m.step)}if(typeof this._configXAxis.step=="undefined"||typeof this._configXAxis.start=="undefined"||typeof this._configXAxis.end=="undefined"){h=this._calculateScale(e,n);e=h.start;n=h.end;l=h.step;this._settings.xAxis.end=n;this._settings.xAxis.start=e;this._settings.xAxis.step=l}if(l===0){return}var j=(a-g)*l/(n-e);var v=0;for(var o=e;o<=n;o+=l){if(h.fixNum){o=parseFloat((new Number(o)).toFixed(h.fixNum))}var u=Math.floor(g+v*j)+0.5;if(!(o==e&&this._settings.origin=="auto")&&m.lines.call(this,o)){this._drawLine(A,u,y,u,x.y,this._settings.xAxis.lineColor.call(this,o),1)}if(o==this._settings.origin){r=u+1}this.canvases.x.renderTextAt(false,true,u,y+2,m.template(o.toString()),"dhx_axis_item_x");v++}this.canvases.x.renderTextAt(true,false,g,w.y+this._settings.padding.bottom-3,this._settings.xAxis.title,"dhx_axis_title_x",w.x-x.x);if(!m.lines.call(this,{})){this._drawLine(A,g,x.y-0.5,a,x.y-0.5,this._settings.xAxis.color,0.2)}return r},_correctBarHParams:function(m,h,e,j,l,n,g){var a=this._settings.yAxis;var c=h;if(!!a&&this._settings.origin!="auto"&&(this._settings.origin>g)){h+=(this._settings.origin-g)*l;c=h;j=j-(this._settings.origin-g);if(j<0){j*=(-1);m.translate(h,e+n);m.rotate(Math.PI);h=0.5;e=0}h+=0.5}return{value:j,x0:h,y0:e,start:c}},_drawBarH:function(u,h,A,g,n,o,j,m,s,v,a,l){var w;u.save();var r=this._correctBarHParams(u,A,g,s,m,n,o);u.fillStyle=v;u.beginPath();if(m*r.value>0){w=this._setBarHPoints(u,r.x0,r.y0,n,j,m,r.value,(this._settings.border?1:0));if(a&&!l){u.lineTo(h.x,r.y0+(this._settings.border?1:0))}}else{w=[r.x0,r.y0+1]}u.fill();u.restore();var e=r.y0;var c=(r.y0!=g?g:w[1]);var y=(r.y0!=g?(r.start-w[0]):r.start);var x=(r.y0!=g?r.start:w[0]);return[y,e,x,c]},_drawBarHBorder:function(n,c,l,o,h,g,m,j,e){n.save();var a=this._correctBarHParams(n,c,l,j,m,o,h);n.beginPath();this._setBorderStyles(n,e);n.globalAlpha=0.9;if(m*a.value>0){this._setBarHPoints(n,a.x0,a.y0,o,g,m,a.value,n.lineWidth/2,1)}n.stroke();n.restore()},_drawBarHGradient:function(r,e,n,s,l,j,o,m,g,a){r.save();var c=this._correctBarHParams(r,e,n,m,o,s,l);var h=this._setBarGradient(r,c.x0,c.y0+s,c.x0+o*c.value,c.y0,a,g,"x");r.fillStyle=h.gradient;r.beginPath();if(o*c.value>0){this._setBarHPoints(r,c.x0,c.y0+h.offset,s-h.offset*2,j,o,c.value,h.offset)}r.fill();r.globalAlpha=1;r.restore()}};dhtmlx.assert(dhtmlx.chart.barH);dhtmlx.chart.stackedBarH={pvt_render_stackedBarH:function(C,P,h,g,D,O){var N,v;var c;var w;var y=g.x-h.x;var m=!!this._settings.yAxis;var l=this._getStackedLimits(P);N=l.max;v=l.min;var F=Math.floor((g.y-h.y)/P.length);if(!D){this._drawHScales(C,P,h,g,v,N,F)}if(m){N=parseFloat(this._settings.xAxis.end);v=parseFloat(this._settings.xAxis.start)}var K=this._getRelativeValue(v,N);w=K[0];c=K[1];var s=(w?y/w:10);if(!m){var x=10;s=(w?(y-x)/w:10)}var u=parseInt(this._settings.width,10);if((u+4)>F){u=F-4}var n=(F-u)/2;var j=0;var o=false;var a=this._settings.gradient;if(a){o=true}if(!m){this._drawLine(C,h.x-0.5,h.y,h.x-0.5,g.y,"#000000",1)}var M=0;var J=0;for(I=0;I<this._series.length;I++){if(I==D){J=M}if(this._series[I].view=="stackedBarH"){M++}}for(var I=0;I<P.length;I++){if(!J){P[I].$startX=h.x}var A=parseFloat(this._settings.value(P[I]||0));if(A>N){A=N}A-=v;A*=c;var L=h.x;var e=h.y+n+I*F;if(!J){P[I].$startX=L}else{L=P[I].$startX}if(A<0||(this._settings.yAxis&&A===0)){this.canvases.y.renderTextAt("middle",true,L+10,e+u/2,this._settings.label(P[I]));continue}if(!m){A+=x/s}var E=this._settings.color.call(this,P[I]);C.globalAlpha=this._settings.alpha.call(this,P[I]);C.fillStyle=this._settings.color.call(this,P[I]);C.beginPath();var H=this._setBarHPoints(C,L,e,u,j,s,A,(this._settings.border?1:0));if(a&&!o){C.lineTo(h.x+y,e+(this._settings.border?1:0))}C.fill();if(o!=false){var r=this._setBarGradient(C,L,e+u,L,e,o,E,"x");C.fillStyle=r.gradient;C.beginPath();H=this._setBarHPoints(C,L,e,u,j,s,A,0);C.fill()}if(this._settings.border){this._drawBarHBorder(C,L,e,u,v,j,s,A,E)}C.globalAlpha=1;this.canvases[D].renderTextAt("middle",true,P[I].$startX+(H[0]-P[I].$startX)/2-1,e+(H[1]-e)/2,this._settings.label(P[I]));O.addRect(P[I].id,[P[I].$startX-h.x,e-h.y,H[0]-h.x,H[1]-h.y],D);P[I].$startX=H[0]}}};dhtmlx.chart.stackedBar={pvt_render_stackedBar:function(x,L,g,e,y,K){var I,s;var a;var u;var v=e.y-g.y;var j=!!this._settings.yAxis;var J=!!this._settings.xAxis;var h=this._getStackedLimits(L);I=h.max;s=h.min;var C=Math.floor((e.x-g.x)/L.length);if(!y){this._drawScales(L,g,e,s,I,C)}if(j){I=parseFloat(this._settings.yAxis.end);s=parseFloat(this._settings.yAxis.start)}var F=this._getRelativeValue(s,I);u=F[0];a=F[1];var o=(u?v/u:10);var r=parseInt(this._settings.width,10);if(r+4>C){r=C-4}var l=Math.floor((C-r)/2);var m=(this._settings.gradient?this._settings.gradient:false);if(!J){this._drawLine(x,g.x,e.y+0.5,e.x,e.y+0.5,"#000000",1)}for(var E=0;E<L.length;E++){var w=parseFloat(this._settings.value(L[E]||0));if(!w){if(!y||!L[E].$startY){L[E].$startY=e.y}continue}if(!y){w-=s}w*=a;var H=g.x+l+E*C;var c=e.y;if(!y){L[E].$startY=c}else{c=L[E].$startY}if(c<(g.y+1)){continue}if(w<0||(this._settings.yAxis&&w===0)){this.canvases.y.renderTextAt(true,true,H+Math.floor(r/2),c,this._settings.label(L[E]));continue}var A=this._settings.color.call(this,L[E]);x.globalAlpha=this._settings.alpha.call(this,L[E]);x.fillStyle=this._settings.color.call(this,L[E]);x.beginPath();var D=this._setStakedBarPoints(x,H-(this._settings.border?0.5:0),c,r+(this._settings.border?0.5:0),o,w,0,g.y);x.fill();if(m){x.save();var n=this._setBarGradient(x,H,c,H+r,D[1],m,A,"y");x.fillStyle=n.gradient;x.beginPath();D=this._setStakedBarPoints(x,H+n.offset,c,r-n.offset*2,o,w,(this._settings.border?1:0),g.y);x.fill();x.restore()}if(this._settings.border){x.save();this._setBorderStyles(x,A);x.beginPath();this._setStakedBarPoints(x,H-0.5,c,r+1,o,w,0,g.y,1);x.stroke();x.restore()}x.globalAlpha=1;this.canvases[y].renderTextAt(false,true,H+Math.floor(r/2),(D[1]+(c-D[1])/2)-7,this._settings.label(L[E]));K.addRect(L[E].id,[H-g.x,D[1]-g.y,D[0]-g.x,(L[E].$startY||c)-g.y],y);L[E].$startY=(this._settings.border?(D[1]+1):D[1])}},_setStakedBarPoints:function(s,c,n,u,o,m,g,e,h){s.moveTo(c,n);var l=n-o*m+g;if(l<e){l=e}s.lineTo(c,l);var a=c+u;var j=l;s.lineTo(a,j);var r=c+u;s.lineTo(r,n);if(!h){s.lineTo(c,n)}return[r,j-2*g]}};dhtmlx.chart.line={pvt_render_line:function(l,A,h,g,m,x){var w,n,j,u,s,r,o,c,a,e,y,v;u=this._calculateLineParams(l,A,h,g,m);w=this._settings;if(A.length){s=(w.offset?h.x+u.cellWidth*0.5:h.x);j=[];for(n=0;n<A.length;n++){v=this._getPointY(A[n],h,g,u);if(v){o=((!n)?s:u.cellWidth*n-0.5+s);a=(typeof v=="object"?v.y0:v);if(n&&this._settings.fixOverflow){y=this._getPointY(A[n-1],h,g,u);if(y.out&&y.out==v.out){continue}r=u.cellWidth*(n-1)-0.5+s;c=(typeof y=="object"?y.y0:y);if(y.out){e=(y.out=="min"?g.y:h.y);j.push({x:this._calcOverflowX(r,o,c,a,e),y:e})}if(v.out){e=(v.out=="min"?g.y:h.y);j.push({x:this._calcOverflowX(r,o,c,a,e),y:e})}}if(!v.out){j.push({x:o,y:v,index:n})}}}this._mapStart=h;for(n=1;n<=j.length;n++){r=j[n-1].x;c=j[n-1].y;if(n<j.length){o=j[n].x;a=j[n].y;this._drawLine(l,r,c,o,a,w.line.color.call(this,A[n-1]),w.line.width);if(w.line&&w.line.shadow){l.globalAlpha=0.3;this._drawLine(l,r+2,c+w.line.width+8,o+2,a+w.line.width+8,"#eeeeee",w.line.width+3);l.globalAlpha=1}}if(typeof j[n-1].index!="undefined"){this._drawItem(l,r,c,A[j[n-1].index],w.label(A[j[n-1].index]),m,x,h)}}}},_calcOverflowX:function(c,a,g,e,h){return c+(h-g)*(a-c)/(e-g)},_drawItem:function(u,e,s,n,r,o,c){var g=this._settings.item;var m=parseInt(g.radius.call(this,n),10)||0;var l=this._mapStart;if(m){u.save();if(g.shadow){u.lineWidth=1;u.strokeStyle="#bdbdbd";u.fillStyle="#bdbdbd";var a=[0.1,0.2,0.3];for(var j=(a.length-1);j>=0;j--){u.globalAlpha=a[j];u.strokeStyle="#d0d0d0";u.beginPath();this._strokeChartItem(u,e,s+2*m/3,m+j+1,g.type);u.stroke()}u.beginPath();u.globalAlpha=0.3;u.fillStyle="#bdbdbd";this._strokeChartItem(u,e,s+2*m/3,m+1,g.type);u.fill()}u.restore();if(g.type=="image"&&g.src){this._drawImage(u,e-m,s-m,g.src,m*2,m*2)}else{u.lineWidth=g.borderWidth;u.fillStyle=g.color.call(this,n);u.strokeStyle=g.borderColor.call(this,n);u.globalAlpha=g.alpha.call(this,n);u.beginPath();this._strokeChartItem(u,e,s,m+1,g.type);u.fill();u.stroke();u.globalAlpha=1}}if(r){this.canvases[o].renderTextAt(false,true,e,s-m-this._settings.labelOffset,this._settings.label.call(this,n))}var h=(this._settings.eventRadius||m+1);c.addRect(n.id,[e-h-l.x,s-h-l.y,e+h-l.x,s+h-l.y],o)},_drawImage:function(e,c,m,j,g,a){var h=document.createElement("img");h.style.display="none";h.style.width=g+"px";h.style.height=a+"px";document.body.appendChild(h);h.src=j;var l=function(){e.drawImage(h,c,m)};if(h.complete){l(h)}else{h.onload=l}},_strokeChartItem:function(a,c,h,g,e){var j=[];c=parseInt(c,10);h=parseInt(h,10);if(e&&(e=="square"||e=="s")){g*=Math.sqrt(2)/2;j=[[c-g-a.lineWidth/2,h-g],[c+g,h-g],[c+g,h+g],[c-g,h+g],[c-g,h-g]]}else{if(e&&(e=="diamond"||e=="d")){var l=(a.lineWidth>1?a.lineWidth*Math.sqrt(2)/4:0);j=[[c,h-g],[c+g,h],[c,h+g],[c-g,h],[c+l,h-g-l]]}else{if(e&&(e=="triangle"||e=="t")){j=[[c,h-g],[c+Math.sqrt(3)*g/2,h+g/2],[c-Math.sqrt(3)*g/2,h+g/2],[c,h-g]]}else{j=[[c,h,g,0,Math.PI*2,true]]}}}this._path(a,j)},_getPointY:function(e,m,j,a){var l=a.minValue;var g=a.maxValue;var o=a.unit;var c=a.valueFactor;var n=this._settings.value(e);var r=(parseFloat(n||0)-l)*c;if(!this._settings.yAxis){r+=a.startValue/o}var h=j.y-o*r;if(this._settings.fixOverflow&&(this._settings.view=="line"||this._settings.view=="area")){if(n>g){h={y:m.y,y0:h,out:"max"}}else{if(r<0||n<l){h={y:j.y,y0:h,out:"min"}}}}else{if(n>g){h=m.y}if(r<0||n<l){h=j.y}}return h},_calculateLineParams:function(n,g,l,j,h){var c={};var o;c.totalHeight=j.y-l.y;c.cellWidth=(j.x-l.x)/((!this._settings.offset)?(g.length-1):g.length);var e=!!this._settings.yAxis;var a=(this._settings.view.indexOf("stacked")!=-1?this._getStackedLimits(g):this._getLimits());c.maxValue=a.max;c.minValue=a.min;if(!h){this._drawScales(g,l,j,c.minValue,c.maxValue,c.cellWidth)}if(e){c.maxValue=parseFloat(this._settings.yAxis.end);c.minValue=parseFloat(this._settings.yAxis.start)}var m=this._getRelativeValue(c.minValue,c.maxValue);o=m[0];c.valueFactor=m[1];c.unit=(o?c.totalHeight/o:10);c.startValue=0;if(!e){c.startValue=10;if(c.unit!=c.totalHeight){c.unit=(o?(c.totalHeight-c.startValue)/o:10)}}return c}};dhtmlx.chart.bar={pvt_render_bar:function(C,S,j,h,D,Q){var v,F,J,n,O,w,x,c,K,y,u,N,o,P=h.y-j.y;o=!!this._settings.yAxis;N=!!this._settings.xAxis;n=this._getLimits();O=n.max;w=n.min;F=(h.x-j.x)/S.length;if(!D&&!(this._settings.origin!="auto"&&!o)){this._drawScales(S,j,h,w,O,F)}if(o){O=parseFloat(this._settings.yAxis.end);w=parseFloat(this._settings.yAxis.start)}K=this._getRelativeValue(w,O);x=K[0];c=K[1];u=(x?P/x:x);if(!o&&!(this._settings.origin!="auto"&&N)){y=10;u=(x?(P-y)/x:y)}if(!D&&(this._settings.origin!="auto"&&!o)&&this._settings.origin>w){this._drawXAxis(C,S,j,h,F,h.y-u*(this._settings.origin-w))}v=parseInt(this._settings.width,10);var M=0;var I=0;for(J=0;J<this._series.length;J++){if(J==D){I=M}if(this._series[J].view=="bar"){M++}}var m=this._settings.seriesMargin;var g=this._settings.seriesPadding;if(this._series&&(v*M+g+(M>2?m*M:0)>F)){v=F/M-g-(M>2?m:0)}var r=(F-v*M-m*(M-1))/2;if(this._settings.border){v=parseInt(v,10);r=parseInt(r,10)}var l=(typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(v/5));var s=false;var a=this._settings.gradient;if(a&&typeof(a)!="function"){s=a;a=false}else{if(a){a=C.createLinearGradient(0,h.y,0,j.y);this._settings.gradient(a)}}if(!N){this._drawLine(C,j.x,h.y+0.5,h.x,h.y+0.5,"#000000",1)}for(J=0;J<S.length;J++){var A=parseFloat(this._settings.value(S[J])||0);if(isNaN(A)){continue}if(A>O){A=O}A-=w;A*=c;var L=j.x+r+(M>2?m*I:0)+J*F+v*I;var e=h.y;if(A<0||(this._settings.yAxis&&A===0&&!(this._settings.origin!="auto"&&this._settings.origin>w))){this.canvases[D].renderTextAt(true,true,L+Math.floor(v/2),e,this._settings.label(S[J]));continue}if(!o&&!(this._settings.origin!="auto"&&N)){A+=y/u}var E=a||this._settings.color.call(this,S[J]);C.globalAlpha=this._settings.alpha.call(this,S[J]);var H=this._drawBar(C,j,L,e,v,w,l,u,A,E,a,s);if(s){this._drawBarGradient(C,L,e,v,w,l,u,A,E,s)}if(this._settings.border){this._drawBarBorder(C,L,e,v,w,l,u,A,E)}C.globalAlpha=1;if(H[0]!=L){this.canvases[D].renderTextAt(false,true,L+Math.floor(v/2),H[1],this._settings.label(S[J]))}else{this.canvases[D].renderTextAt(true,true,L+Math.floor(v/2),H[3],this._settings.label(S[J]))}Q.addRect(S[J].id,[L-j.x,H[3]-j.y,H[2]-j.x,H[1]-j.y],D)}},_correctBarParams:function(m,h,e,j,l,n,g){var a=this._settings.xAxis;var c=e;if(!!a&&this._settings.origin!="auto"&&(this._settings.origin>g)){e-=(this._settings.origin-g)*l;c=e;j=j-(this._settings.origin-g);if(j<0){j*=(-1);m.translate(h+n,e);m.rotate(Math.PI);h=0;e=0}e-=0.5}return{value:j,x0:h,y0:e,start:c}},_drawBar:function(u,h,A,g,n,o,j,m,s,v,a,l){var w;u.save();u.fillStyle=v;var r=this._correctBarParams(u,A,g,s,m,n,o);if(m*r.value>0){w=this._setBarPoints(u,r.x0,r.y0,n,j,m,r.value,(this._settings.border?1:0))}else{w=[r.x0,r.y0]}if(a&&!l){u.lineTo(r.x0+(this._settings.border?1:0),h.y)}u.fill();u.restore();var y=r.x0;var x=(r.x0!=A?A+w[0]:w[0]);var e=(r.x0!=A?(r.start-w[1]-r.y0):r.y0);var c=(r.x0!=A?r.start-r.y0:w[1]);return[y,e,x,c]},_drawBarBorder:function(n,c,l,o,h,g,m,j,e){var a;n.save();a=this._correctBarParams(n,c,l,j,m,o,h);this._setBorderStyles(n,e);if(m*a.value>0){this._setBarPoints(n,a.x0,a.y0,o,g,m,a.value,n.lineWidth/2,1)}n.stroke();n.restore()},_drawBarGradient:function(s,g,o,u,m,l,r,n,h,c){s.save();var e=this._correctBarParams(s,g,o,n,r,u,m);var j=this._setBarGradient(s,e.x0,e.y0,e.x0+u,e.y0-r*e.value+2,c,h,"y");var a=this._settings.border?1:0;s.fillStyle=j.gradient;if(r*e.value>0){this._setBarPoints(s,e.x0+j.offset,e.y0,u-j.offset*2,l,r,e.value,j.offset+a)}s.fill();s.restore()},_setBarPoints:function(w,g,s,x,m,u,r,h,l){w.beginPath();var c=0;if(m>u*r){var j=(m-u*r)/m;if(j<=1&&j>=-1){c=-Math.acos(j)+Math.PI/2}}w.moveTo(g+h,s);var o=s-Math.floor(u*r)+m+(m?0:h);if(m<u*r){w.lineTo(g+h,o)}var e=g+m;if(m&&m>0){w.arc(e,o,m-h,-Math.PI+c,-Math.PI/2,false)}var a=g+x-m-h;var n=o-m+(m?h:0);w.lineTo(a,n);if(m&&m>0){w.arc(a,o,m-h,-Math.PI/2,0-c,false)}var v=g+x-h;w.lineTo(v,s);if(!l){w.lineTo(g+h,s)}return[v,n]}};dhtmlx.chart.pie={pvt_render_pie:function(c,g,a,j,e,h){this._renderPie(c,g,a,j,1,h,e)},_renderPie:function(s,F,h,g,D,E,u){if(!F.length){return}var v=this._getPieParameters(h,g);var l=(this._settings.radius?this._settings.radius:v.radius);if(l<0){return}var a=this._getValues(F);var j=this._getTotalValue(a);var m=this._getRatios(a,j);var C=(this._settings.x?this._settings.x:v.x);var e=(this._settings.y?this._settings.y:v.y);if(D==1&&this._settings.shadow){this._addShadow(s,C,e,l)}e=e/D;var r=-Math.PI/2;var o;var x=[];s.scale(1,D);if(this._settings.gradient){var A=(D!=1?C+l/3:C);var c=(D!=1?e+l/3:e);this._showRadialGradient(s,C,e,l,A,c)}if(this._settings.labelLines){this._labelMargins=this._getLabelMargins(m,l)}for(var y=0;y<F.length;y++){if(!a[y]){continue}s.strokeStyle=(F.length==1?this._settings.color.call(this,F[y]):this._settings.lineColor.call(this,F[y]));s.beginPath();s.moveTo(C,e);x.push(r);o=-Math.PI/2+m[y]-0.0001;s.arc(C,e,l,r,o,false);s.lineTo(C,e);var w=this._settings.color.call(this,F[y]);s.fillStyle=w;s.fill();if(this._settings.pieInnerText){this._drawSectorLabel(C,e,5*l/6,r,o,D,this._settings.pieInnerText(F[y],j),true)}if(this._settings.label){this._drawSectorLabel(C,e,l,r,o,D,this._settings.label(F[y]),0,(this._labelMargins?this._labelMargins[y]:{}),s)}if(D!=1){this._createLowerSector(s,C,e,r,o,l,true);s.fillStyle="#000000";s.globalAlpha=0.2;this._createLowerSector(s,C,e,r,o,l,false);s.globalAlpha=1;s.fillStyle=w}E.addSector(F[y].id,r,o,C-h.x,e-h.y/D,l,D,u);r=o}s.globalAlpha=0.8;var n;if(x.length>1){for(y=0;y<x.length;y++){n=this._getPositionByAngle(x[y],C,e,l);this._drawLine(s,C,e,n.x,n.y,this._settings.lineColor.call(this,F[y]),2)}}if(D==1){s.lineWidth=2;s.strokeStyle="#ffffff";s.beginPath();s.arc(C,e,l+1,0,2*Math.PI,false);s.stroke()}s.globalAlpha=1;s.scale(1,1/D)},_getLabelMargins:function(v,l){var D,C,J,I,a=[],w=[];var M={1:[0]};for(J=1;J<v.length;J++){D=-Math.PI/2+(J>1?(v[J-1]-(v[J-1]-v[J-2])/2):v[J-1]/2);C=-Math.PI/2+v[J]-(v[J]-v[J-1])/2;var h=Math.cos(C);var y=Math.sin(C);var m=Math.cos(D);var A=Math.sin(D);var E=Math.round((l+8)*Math.abs(Math.sin(C)-Math.sin(D)));var s=(h<0?(y<0?4:3):(y<0?1:2));var u=(m<0?(A<0?4:3):(A<0?1:2));if(!M[s]){M[s]=[]}M[s].push(u==s?E:0)}var F=[];var L=0;for(var x in M){var g=0;var e=M[x].length;var o=0;var n=0;if(x==1||x==3){I=x-1;var K=0;while(I>0){if(M[I]){K+=M[I].length}I--}F[K+M[x].length-1]={y:0,x:0};var I=M[x].length-2;while(I>=0){if((o||I)&&M[x][I+1]-o<18){o+=18-M[x][I+1]}else{o=0}F[K+I]={y:o*(x==1?-1:1)};I--}for(var H=F.length-M[x].length;H<F.length;H++){if(F[H]["y"]!=0){n+=6;F[H]["x"]=n}else{F[H]["x"]=0;n=0}}}else{var I=1;F.push({y:0,x:0});while(I<M[x].length){if(M[x][I]-o<18){o+=18-M[x][I]}else{o=0}F.push({y:o*(x==4?-1:1)});I++}for(var H=F.length-1;H>=F.length-M[x].length;H--){if(F[H]["y"]!=0){n+=8;F[H]["x"]=n}else{n=0;F[H]["x"]=0}}}}return F},_getValues:function(e){var a=[];for(var c=0;c<e.length;c++){a.push(parseFloat(this._settings.value(e[c])||0))}return a},_getTotalValue:function(a){var e=0;for(var c=0;c<a.length;c++){e+=a[c]}return e},_getRatios:function(c,a){var j;var h=[];var g=0;a=a||this._getTotalValue(c);for(var e=0;e<c.length;e++){j=c[e];h[e]=Math.PI*2*(a?((j+g)/a):(1/c.length));g+=j}return h},_getPieParameters:function(l,h){var g=h.x-l.x;var c=h.y-l.y;var e=l.x+g/2;var j=l.y+c/2;var a=Math.min(g/2,c/2);return{x:e,y:j,radius:a}},_createLowerSector:function(g,h,l,e,a,j,c){g.lineWidth=1;if(!((e<=0&&a>=0)||(e>=0&&a<=Math.PI)||(Math.abs(e-Math.PI)>0.003&&e<=Math.PI&&a>=Math.PI))){return}if(e<=0&&a>=0){e=0;c=false;this._drawSectorLine(g,h,l,j,e,a)}if(e<=Math.PI&&a>=Math.PI){a=Math.PI;c=false;this._drawSectorLine(g,h,l,j,e,a)}var m=(this._settings.height||Math.floor(j/4))/this._settings.cant;g.beginPath();g.arc(h,l,j,e,a,false);g.lineTo(h+j*Math.cos(a),l+j*Math.sin(a)+m);g.arc(h,l+m,j,a,e,true);g.lineTo(h+j*Math.cos(e),l+j*Math.sin(e));g.fill();if(c){g.stroke()}},_drawSectorLine:function(e,g,j,h,c,a){e.beginPath();e.arc(g,j,h,c,a,false);e.stroke()},_addShadow:function(c,a,j,g){c.globalAlpha=0.5;var h=["#c4c4c4","#c6c6c6","#cacaca","#dcdcdc","#dddddd","#e0e0e0","#eeeeee","#f5f5f5","#f8f8f8"];for(var e=h.length-1;e>-1;e--){c.beginPath();c.fillStyle=h[e];c.arc(a+1,j+1,g+e,0,Math.PI*2,true);c.fill()}c.globalAlpha=1},_getGrayGradient:function(a){a.addColorStop(0,"#ffffff");a.addColorStop(0.7,"#7a7a7a");a.addColorStop(1,"#000000");return a},_showRadialGradient:function(e,c,l,a,g,h){e.beginPath();var j;if(typeof this._settings.gradient!="function"){j=e.createRadialGradient(g,h,a/4,c,l,a);j=this._getGrayGradient(j)}else{j=this._settings.gradient(j)}e.fillStyle=j;e.arc(c,l,a,0,Math.PI*2,true);e.fill();e.globalAlpha=0.7},_drawSectorLabel:function(M,g,l,E,D,N,A,a,C,H){var w=this.canvases[0].renderText(0,0,A,0,1);if(!w){return}var O=w.scrollWidth;w.style.width=O+"px";if(O>M){O=M}var F=(D-E<0.2?4:8);if(a){F=O/1.8}var j=E+(D-E)/2;var h=l;l=(a?5*l/6:l+this._settings.labelOffset);l=l-(F-8)/2;var r=-F;var o=-8;var I="right";if(j>=Math.PI/2&&j<Math.PI||j<=3*Math.PI/2&&j>=Math.PI){r=-O-r;I="left"}var m=0;if(!a&&N<1&&(j>0&&j<Math.PI)){m=(this._settings.height||Math.floor(l/4))/N}var s=(g+Math.floor(l+m)*Math.sin(j))*N+o;var u=M+Math.floor(l+F/2)*Math.cos(j)+r;var n=(D<Math.PI/2+0.01);var v=(E<Math.PI/2);if(v&&n){u=Math.max(u,M+3)}else{if(!v&&!n){u=Math.min(u,M-O)}else{if(!a&&!this._settings.labelLines&&(j>=Math.PI/2&&j<Math.PI||j<=3*Math.PI/2&&j>=Math.PI)){u+=O/3}}}if(this._settings.labelLines&&!a){var J=Math.abs((Math.abs(C||0)+Math.abs(h*Math.sin(j)))/Math.sin(j));if(C.y){s+=C.y}if(I=="left"){u-=C.x}else{u+=C.x}H.beginPath();H.strokeStyle="#555";var L=M+h*Math.cos(j);var e=g+h*Math.sin(j);H.moveTo(L,e);var K=u-(I=="left"?r-8:2);var c=s;if(I=="left"&&K>L){K=L-Math.abs(c-e+16)/Math.tan(j-Math.PI);c=c+16;if(j<Math.PI){c-=8}}else{c+=8}H.lineTo(K,c);H.lineTo(K+(I=="left"?-5:5),c);H.stroke();s=c-8;u=K+r+(I=="left"?-15:15)}w.style.top=s+"px";w.style.left=u+"px";w.style.width=O+"px";w.style.textAlign=I;w.style.whiteSpace="nowrap"}};dhtmlx.chart.pie3D={pvt_render_pie3D:function(c,g,a,j,e,h){this._renderPie(c,g,a,j,this._settings.cant,h)}};dhtmlx.chart.donut={pvt_render_donut:function(s,h,o,n,l,c){if(!h.length){return}this._renderPie(s,h,o,n,1,c);var g=this._settings;var j=this._getPieParameters(o,n);var a=(g.radius?g.radius:j.radius);var m=((g.innerRadius&&(g.innerRadius<a))?g.innerRadius:a/3);var e=(g.x?g.x:j.x);var r=(g.y?g.y:j.y);s.fillStyle="#ffffff";s.beginPath();s.arc(e,r,m,0,Math.PI*2,true);s.fill()}};dhtmlx.DataDriver.dhtmlxgrid={_grid_getter:"_get_cell_value",toObject:function(a){this._grid=a;return a},getRecords:function(a){return a.rowsBuffer},getDetails:function(e){var a={};for(var c=0;c<this._grid.getColumnsNum();c++){a["data"+c]=this._grid[this._grid_getter](e,c)}return a},getInfo:function(a){return{_size:0,_from:0}}};dhtmlx.ui.Canvas=function(c,e,h){this._canvas_labels=[];this._canvas_name=e;this._obj=c;var g=c.offsetWidth*(window.devicePixelRatio||1);var a=c.offsetHeight*(window.devicePixelRatio||1);var h=h||"";h+=";width:"+c.offsetWidth+"px;height:"+c.offsetHeight+"px;";this._prepareCanvas(e,h,g,a)};dhtmlx.ui.Canvas.prototype={_prepareCanvas:function(c,g,e,a){this._canvas=dhtmlx.html.create("canvas",{width:e,height:a,canvas_id:c,style:(g||"")});this._obj.appendChild(this._canvas);if(!this._canvas.getContext){if(dhtmlx._isIE){dhtmlx.require("thirdparty/excanvas/excanvas.js");G_vmlCanvasManager.init_(document);G_vmlCanvasManager.initElement(this._canvas)}else{dhtmlx.error("Canvas is not supported in the current browser")}}return this._canvas},getCanvas:function(c){var a=(this._canvas||this._prepareCanvas()).getContext(c||"2d");if(!this._webixDevicePixelRatio){this._webixDevicePixelRatio=true;a.scale(window.devicePixelRatio||1,window.devicePixelRatio||1)}return a},_resizeCanvas:function(){if(this._canvas){var a=this._canvas.parentNode.offsetWidth;var c=this._canvas.parentNode.offsetHeight;this._canvas.setAttribute("width",a*(window.devicePixelRatio||1));this._canvas.setAttribute("height",c*(window.devicePixelRatio||1));this._canvas.style.width=a+"px";this._canvas.style.height=c+"px";this._webixDevicePixelRatio=false}},renderText:function(a,j,h,g,c){if(!h){return}var e=dhtmlx.html.create("DIV",{"class":"dhx_canvas_text"+(g?(" "+g):""),style:"left:"+a+"px; top:"+j+"px;"},h);this._obj.appendChild(e);this._canvas_labels.push(e);if(c){e.style.width=c+"px"}return e},renderTextAt:function(h,n,a,m,g,l,e){var j=this.renderText.call(this,a,m,g,l,e);if(j){if(h){if(h=="middle"){j.style.top=parseInt(m-j.offsetHeight/2,10)+"px"}else{j.style.top=m-j.offsetHeight+"px"}}if(n){if(n=="left"){j.style.left=a-j.offsetWidth+"px"}else{j.style.left=parseInt(a-j.offsetWidth/2,10)+"px"}}}return j},clearCanvas:function(a){var c=[],e;for(e=0;e<this._canvas_labels.length;e++){this._obj.removeChild(this._canvas_labels[e])}this._canvas_labels=[];if(!a&&this._obj._htmlmap){c=this._getMapAreas();while(c.length){c[0].parentNode.removeChild(c[0]);c.splice(0,1)}c=null;if(!this._obj._htmlmap.getElementsByTagName("AREA").length){this._obj._htmlmap.parentNode.removeChild(this._obj._htmlmap);this._obj._htmlmap=null}}this.getCanvas().clearRect(0,0,this._canvas.width,this._canvas.height)},toggleCanvas:function(){this._toggleCanvas(this._canvas.style.display=="none")},showCanvas:function(){this._toggleCanvas(true)},hideCanvas:function(){this._toggleCanvas(false)},_toggleCanvas:function(a){var c,e;for(e=0;e<this._canvas_labels.length;e++){this._canvas_labels[e].style.display=(a?"":"none")}if(this._obj._htmlmap){c=this._getMapAreas();for(e=0;e<c.length;e++){if(a){c[e].removeAttribute("disabled")}else{c[e].setAttribute("disabled","true")}}}this._canvas.style.display=(a?"":"none")},_getMapAreas:function(){var e=[],a,c;a=this._obj._htmlmap.getElementsByTagName("AREA");for(c=0;c<a.length;c++){if(a[c].getAttribute("userdata")==this._canvas_name){e.push(a[c])}}return e}};dhtmlXChart=function(a){this.name="Chart";if(dhtmlx.assert_enabled()){this._assert()}dhtmlx.extend(this,dhtmlx.Settings);this._parseContainer(a,"dhx_chart");dhtmlx.extend(this,dhtmlx.AtomDataLoader);dhtmlx.extend(this,dhtmlx.DataLoader);this.data.provideApi(this,true);dhtmlx.extend(this,dhtmlx.EventSystem);dhtmlx.extend(this,dhtmlx.MouseEvents);dhtmlx.extend(this,dhtmlx.Destruction);dhtmlx.extend(this,dhtmlx.Group);dhtmlx.extend(this,dhtmlx.AutoTooltip);for(var c in dhtmlx.chart){dhtmlx.extend(this,dhtmlx.chart[c])}if(a.preset){this.definePreset(a)}this._parseSettings(a,this.defaults);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:{dhx_chart_legend_item:function(l,m,j){var h=j.getAttribute("series_id");if(this.callEvent("onLegendClick",[l,h,j])){var g=this._settings;var c=g.legend.values;var a=(c&&(typeof c[h].toggle!="undefined"))?c[h].toggle:g.legend.toggle;if((typeof h!="undefined")&&this._series.length>1){if(a){if(j.className.indexOf("hidden")!=-1){this.showSeries(h)}else{this.hideSeries(h)}}}}}},on_dblclick:{},on_mouse_move:{},bind:function(){dhx.BaseBind.legacyBind.apply(this,arguments)},sync:function(){dhx.BaseBind.legacySync.apply(this,arguments)},resize:function(){for(var a in this.canvases){this.canvases[a]._resizeCanvas()}this.render()},view_setter:function(a){if(!dhtmlx.chart[a]){dhtmlx.error("Chart type extension is not loaded: "+a)}if(typeof this._settings.offset=="undefined"){this._settings.offset=!(a=="area"||a=="stackedArea")}if(a=="radar"&&!this._settings.yAxis){this.define("yAxis",{})}if(a=="scatter"){if(!this._settings.yAxis){this.define("yAxis",{})}if(!this._settings.xAxis){this.define("xAxis",{})}}return a},clearCanvas:function(){if(this.canvases&&typeof this.canvases=="object"){for(var a in this.canvases){this.canvases[a].clearCanvas()}}},render:function(){var e,c,g,h,a;if(!this.callEvent("onBeforeRender",[this.data])){return}if(this.canvases&&typeof this.canvases=="object"){for(c in this.canvases){this.canvases[c].clearCanvas()}}else{this.canvases={}}if(this._settings.legend){if(!this.canvases.legend){this.canvases.legend=new dhtmlx.ui.Canvas(this._obj,"legend")}this._drawLegend(this.data.getRange(),this._obj.offsetWidth)}e=this._getChartBounds(this._obj.offsetWidth,this._obj.offsetHeight);this._map=h=new dhtmlx.ui.Map(this._id);a=this._settings;g=this._getChartData();for(c=0;c<this._series.length;c++){this._settings=this._series[c];if(!this.canvases[c]){this.canvases[c]=new dhtmlx.ui.Canvas(this._obj,c,"z-index:"+(2+c))}this["pvt_render_"+this._settings.view](this.canvases[c].getCanvas(),g,e.start,e.end,c,h)}h.render(this._obj);this._obj.lastChild.style.zIndex=1000;this._applyBounds(this._obj.lastChild,e);this.callEvent("onAfterRender",[]);this._settings=a},_applyBounds:function(e,c){var a={};a.left=c.start.x;a.top=c.start.y;a.width=c.end.x-c.start.x;a.height=c.end.y-c.start.y;for(var g in a){e.style[g]=a[g]+"px"}},_getChartData:function(){var g,l,e,h,j,o,a,m,n,c;h=this.data.getRange();g=(this._settings.view.toLowerCase().indexOf("barh")!=-1?"yAxis":"xAxis");l=this._settings[g];if(l&&l.units&&(typeof l.units=="object")){e=l.units;m=[];if(typeof e.start!="undefined"&&typeof e.end!="undefined"&&typeof e.next!="undefined"){a=e.start;while(a<=e.end){m.push(a);a=e.next.call(this,a)}}else{if(Object.prototype.toString.call(e)==="[object Array]"){m=e}}o=[];if(m.length){n=l.value;c={};for(j=0;j<h.length;j++){c[n(h[j])]=j}for(j=0;j<m.length;j++){if(typeof c[m[j]]!="undefined"){h[c[m[j]]].$unit=m[j];o.push(h[c[m[j]]])}else{o.push({$unit:m[j]})}}}return o}return h},value_setter:dhtmlx.Template.obj_setter,xValue_setter:dhtmlx.Template.obj_setter,yValue_setter:function(a){this.define("value",a)},alpha_setter:dhtmlx.Template.obj_setter,label_setter:dhtmlx.Template.obj_setter,lineColor_setter:dhtmlx.Template.obj_setter,borderColor_setter:dhtmlx.Template.obj_setter,pieInnerText_setter:dhtmlx.Template.obj_setter,gradient_setter:function(a){if((typeof(a)!="function")&&a&&(a===true)){a="light"}return a},colormap:{RAINBOW:function(a){var c=Math.floor(this.indexById(a.id)/this.dataCount()*1536);if(c==1536){c-=1}return this._rainbow[Math.floor(c/256)](c%256)}},color_setter:function(a){return this.colormap[a]||dhtmlx.Template.obj_setter(a)},fill_setter:function(a){return((!a||a==0)?false:dhtmlx.Template.obj_setter(a))},definePreset:function(a){this.define("preset",a.preset);delete a.preset},preset_setter:function(h){var e,c,g;this.defaults=dhtmlx.extend({},this.defaults);if(typeof dhtmlx.presets.chart[h]=="object"){g=dhtmlx.presets.chart[h];for(e in g){if(typeof g[e]=="object"){if(!this.defaults[e]||typeof this.defaults[e]!="object"){this.defaults[e]=dhtmlx.extend({},g[e])}else{this.defaults[e]=dhtmlx.extend({},this.defaults[e]);for(c in g[e]){this.defaults[e][c]=g[e][c]}}}else{this.defaults[e]=g[e]}}return h}return false},legend_setter:function(a){if(!a){if(this.legendObj){this.legendObj.innerHTML="";this.legendObj=null}return false}if(typeof(a)!="object"){a={template:a}}this._mergeSettings(a,{width:150,height:18,layout:"y",align:"left",valign:"bottom",template:"",toggle:(this._settings.view.toLowerCase().indexOf("stacked")!=-1?"":"hide"),marker:{type:"square",width:15,height:15,radius:3},margin:4,padding:3});a.template=dhtmlx.Template.setter(a.template);return a},defaults:{color:"RAINBOW",alpha:"1",label:false,value:"{obj.value}",padding:{},view:"pie",lineColor:"#ffffff",cant:0.5,width:30,labelWidth:100,line:{width:2,color:"#1293f8"},seriesMargin:1,seriesPadding:4,item:{radius:3,borderColor:"#636363",borderWidth:1,color:"#ffffff",alpha:1,type:"r",shadow:false},shadow:true,gradient:false,border:true,labelOffset:20,origin:"auto"},item_setter:function(a){if(typeof(a)!="object"){a={color:a,borderColor:a}}this._mergeSettings(a,dhtmlx.extend({},this.defaults.item));var e=["alpha","borderColor","color","radius"];for(var c=0;c<e.length;c++){a[e[c]]=dhtmlx.Template.setter(a[e[c]])}return a},line_setter:function(a){if(typeof(a)!="object"){a={color:a}}dhtmlx.extend(this.defaults.line,a);a=dhtmlx.extend({},this.defaults.line);a.color=dhtmlx.Template.setter(a.color);return a},padding_setter:function(a){if(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 false}if(typeof(a)!="object"){a={template:a}}if(!a.value){a.value=a.template}this._mergeSettings(a,{title:"",color:"#000000",lineColor:"#cfcfcf",template:"{obj}",value:"{obj}",lines:true});var c=["lineColor","template","lines","value"];this._converToTemplate(c,a);this._configXAxis=dhtmlx.extend({},a);return a},yAxis_setter:function(a){this._mergeSettings(a,{title:"",color:"#000000",lineColor:"#cfcfcf",template:"{obj}",lines:true,bg:"#ffffff"});var c=["lineColor","template","lines","bg"];this._converToTemplate(c,a);this._configYAxis=dhtmlx.extend({},a);return a},_converToTemplate:function(a,c){for(var e=0;e<a.length;e++){c[a[e]]=dhtmlx.Template.setter(c[a[e]])}},_drawScales:function(h,g,e,l,a,c){var j=0;if(this._settings.yAxis){if(!this.canvases.y){this.canvases.y=new dhtmlx.ui.Canvas(this._obj,"axis_y")}j=this._drawYAxis(this.canvases.y.getCanvas(),h,g,e,l,a)}if(this._settings.xAxis){if(!this.canvases.x){this.canvases.x=new dhtmlx.ui.Canvas(this._obj,"axis_x")}this._drawXAxis(this.canvases.x.getCanvas(),h,g,e,c,j)}return j},_drawXAxis:function(u,j,r,o,g,n){var e=r.x-0.5;var s=parseInt((n?n:o.y),10)+0.5;var c=o.x;var l;var a=true;for(var h=0;h<j.length;h++){if(this._settings.offset===true){l=e+g/2+h*g}else{l=(h==j.length-1)?o.x:e+h*g;a=!!h}l=Math.ceil(l)-0.5;var m=((this._settings.origin!="auto")&&(this._settings.view=="bar")&&(parseFloat(this._settings.value(j[h]))<this._settings.origin));this._drawXAxisLabel(l,s,j[h],a,m);if((this._settings.offset||h)&&this._settings.xAxis.lines.call(this,j[h])){this._drawXAxisLine(u,l,o.y,r.y,j[h])}}this.canvases.x.renderTextAt(true,false,e,o.y+this._settings.padding.bottom-3,this._settings.xAxis.title,"dhx_axis_title_x",o.x-r.x);this._drawLine(u,e,s,c,s,this._settings.xAxis.color,1);if(!this._settings.xAxis.lines.call(this,{})||!this._settings.offset){return}this._drawLine(u,c+0.5,o.y,c+0.5,r.y+0.5,this._settings.xAxis.color,0.2)},_drawYAxis:function(w,D,j,h,m,l){var n;var u={};if(!this._settings.yAxis){return}var y=j.x-0.5;var g=h.y;var e=j.y;var v=h.y;if(this._settings.yAxis.step){n=parseFloat(this._settings.yAxis.step)}if(typeof this._configYAxis.step=="undefined"||typeof this._configYAxis.start=="undefined"||typeof this._configYAxis.end=="undefined"){u=this._calculateScale(m,l);m=u.start;l=u.end;n=u.step;this._settings.yAxis.end=l;this._settings.yAxis.start=m}this._setYAxisTitle(j,h);if(n===0){l=m;n=1}var a=(l==m?g-e:(g-e)*n/(l-m));var A=0;for(var x=m;x<=l;x+=n){if(u.fixNum){x=parseFloat((new Number(x)).toFixed(u.fixNum))}var C=Math.floor(g-A*a)+0.5;if(!(x==m&&this._settings.origin=="auto")&&this._settings.yAxis.lines.call(this,x)){this._drawLine(w,y,C,h.x,C,this._settings.yAxis.lineColor.call(this,x),1)}if(x==this._settings.origin){v=C}var o=x;if(n<1){var r=Math.min(this._log10(n),(m<=0?0:this._log10(m)));var s=Math.pow(10,-r);o=Math.round(x*s)/s;x=o}this.canvases.y.renderText(0,C-5,this._settings.yAxis.template(o.toString()),"dhx_axis_item_y",j.x-5);A++}this._drawLine(w,y,g+1,y,e,this._settings.yAxis.color,1);return v},_setYAxisTitle:function(e,c){var a="dhx_axis_title_y"+(dhtmlx._isIE&&dhtmlx._isIE!=9?" dhx_ie_filter":"");var g=this.canvases.y.renderTextAt("middle",false,0,parseInt((c.y-e.y)/2+e.y,10),this._settings.yAxis.title,a);if(g){g.style.left=(dhtmlx.env.transform?(g.offsetHeight-g.offsetWidth)/2:0)+"px"}},_calculateScale:function(o,c){if(this._settings.origin!="auto"&&this._settings.origin<o){o=this._settings.origin}var h,g,l;h=((c-o)/8)||1;var e=Math.floor(this._log10(h));var a=Math.pow(10,e);var j=h/a;j=(j>5?10:5);h=parseInt(j,10)*a;if(h>Math.abs(o)){g=(o<0?-h:0)}else{var r=Math.abs(o);var n=Math.floor(this._log10(r));var m=r/Math.pow(10,n);g=Math.ceil(m*10)/10*Math.pow(10,n)-h;if(r>1&&h>0.1){g=Math.ceil(g)}while(o<0?g<=o:g>=o){g-=h}if(o<0){g=-g-2*h}}l=g;while(l<c){l+=h;l=parseFloat((new Number(l)).toFixed(Math.abs(e)))}return{start:g,end:l,step:h,fixNum:Math.abs(e)}},_getLimits:function(c,l){var m,j;var h=((arguments.length&&c=="h")?this._configXAxis:this._configYAxis);l=l||"value";if(h&&(typeof h.end!="undefined")&&(typeof h.start!="undefined")&&h.step){m=parseFloat(h.end);j=parseFloat(h.start)}else{m=this.max(this._series[0][l]);j=(h&&(typeof h.start!="undefined"))?parseFloat(h.start):this.min(this._series[0][l]);if(this._series.length>1){for(var g=1;g<this._series.length;g++){var a=this.max(this._series[g][l]);var e=this.min(this._series[g][l]);if(a>m){m=a}if(e<j){j=e}}}}return{max:m,min:j}},_log10:function(c){var a="log";return Math.floor((Math[a](c)/Math.LN10))},_drawXAxisLabel:function(c,j,h,a,g){if(!this._settings.xAxis){return}var e=this.canvases.x.renderTextAt(g,a,c,j-(g?2:0),this._settings.xAxis.template(h));if(e){e.className+=" dhx_axis_item_x"}},_drawXAxisLine:function(c,a,g,e,h){if(!this._settings.xAxis||!this._settings.xAxis.lines){return}this._drawLine(c,a,g,a,e,this._settings.xAxis.lineColor.call(this,h),1)},_drawLine:function(a,g,l,e,h,c,j){a.strokeStyle=c;a.lineWidth=j;a.beginPath();a.moveTo(g,l);a.lineTo(e,h);a.stroke();a.lineWidth=1},_getRelativeValue:function(g,h){var e,a;var c=1;if(h!=g){e=h-g}else{e=g}return[e,c]},_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(c){var a=this._settings;this._settings=dhtmlx.extend({},a);this._parseSettings(c,{});this._series.push(this._settings);this._settings=a},_switchSerie:function(j,a,h){var g;this._active_serie=(this._series.length==1?a.getAttribute("userdata"):this._getActiveSeries(h));if(!this._series[this._active_serie]){return}for(var c=0;c<this._series.length;c++){g=this._series[c].tooltip;if(g){g.disable()}}if(!a.getAttribute("disabled")){g=this._series[this._active_serie].tooltip;if(g){g.enable()}}},_getActiveSeries:function(j){var n,c,h,g,m,r,o,l;c=this._map._areas;g=dhtmlx.html.offset(this._obj._htmlmap);m=dhtmlx.html.pos(j);o=m.x-g.x;l=m.y-g.y;for(h=0;h<c.length;h++){n=c[h].points;if(o<=n[2]&&o>=n[0]&&l<=n[3]&&l>=n[1]){if(r){if(c[h].index>r.index){r=c[h]}}else{r=c[h]}}}return r?r.index:0},hideSeries:function(a){this.canvases[a].hideCanvas();if(this._settings.legend.values&&this._settings.legend.values[a]){this._settings.legend.values[a].$hidden=true}this._drawLegend()},showSeries:function(a){this.canvases[a].showCanvas();if(this._settings.legend.values&&this._settings.legend.values[a]){delete this._settings.legend.values[a].$hidden}this._drawLegend()},_changeColorSV:function(c,h,a){var g,e;e=dhtmlx.math.toRgb(c);g=dhtmlx.math.rgbToHsv(e[0],e[1],e[2]);g[1]*=h;g[2]*=a;return"rgb("+dhtmlx.math.hsvToRgb(g[0],g[1],g[2])+")"},_setBorderStyles:function(a,c){var g,e;e=dhtmlx.math.toRgb(c);g=dhtmlx.math.rgbToHsv(e[0],e[1],e[2]);g[2]/=2;c="rgb("+dhtmlx.math.hsvToRgb(g[0],g[1],g[2])+")";a.strokeStyle=c;if(a.globalAlpha==1){a.globalAlpha=0.9}},_drawLegend:function(h,c){var j,r,A,s,l,u,a,n=0,m=0,w,o,g,v;h=h||[];c=c||this._obj.offsetWidth;w=this.canvases.legend.getCanvas();r=this._settings.legend;a=(this._settings.legend.layout!="x"?"width:"+r.width+"px":"");if(this.legendObj){this.legendObj.innerHTML="";this.legendObj.parentNode.removeChild(this.legendObj)}this.canvases.legend.clearCanvas(true);A=dhtmlx.html.create("DIV",{"class":"dhx_chart_legend",style:"left:"+n+"px; top:"+m+"px;"+a},"");if(r.padding){A.style.padding=r.padding+"px"}this.legendObj=A;this._obj.appendChild(A);l=[];if(!r.values){for(j=0;j<h.length;j++){l.push(this._drawLegendText(A,r.template(h[j])))}}else{for(j=0;j<r.values.length;j++){l.push(this._drawLegendText(A,r.values[j].text,(typeof r.values[j].id!="undefined"?typeof r.values[j].id:j),r.values[j].$hidden))}}u=A.offsetWidth;s=A.offsetHeight;if(u<this._obj.offsetWidth){if(r.layout=="x"&&r.align=="center"){n=(this._obj.offsetWidth-u)/2}if(r.align=="right"){n=this._obj.offsetWidth-u}if(r.margin&&r.align!="center"){n+=(r.align=="left"?1:-1)*r.margin}}if(s<this._obj.offsetHeight){if(r.valign=="middle"&&r.align!="center"&&r.layout!="x"){m=(this._obj.offsetHeight-s)/2}else{if(r.valign=="bottom"){m=this._obj.offsetHeight-s}}if(r.margin&&r.valign!="middle"){m+=(r.valign=="top"?1:-1)*r.margin}}A.style.left=n+"px";A.style.top=m+"px";w.save();for(j=0;j<l.length;j++){v=l[j];if(r.values&&r.values[j].$hidden){g=true;o=(r.values[j].disableColor?r.values[j].disableColor:"#d9d9d9")}else{g=false;o=(r.values?r.values[j].color:this._settings.color.call(this,h[j]))}var e=(r.marker.position=="right"?v.offsetWidth-r.marker.width:0);this._drawLegendMarker(w,v.offsetLeft+n+e,v.offsetTop+m,o,v.offsetHeight,g,j)}w.restore();l=null},_drawLegendText:function(a,j,c,h){var g="";var e=this._settings.legend;if(e.layout=="x"){g="float:left;"}var m=e.marker.position;var l=dhtmlx.html.create("DIV",{style:g+"padding-"+(m&&m=="right"?"right":"left")+":"+(10+e.marker.width)+"px","class":"dhx_chart_legend_item"+(h?" hidden":"")},j);if(arguments.length>2){l.setAttribute("series_id",c)}a.appendChild(l);return l},_drawLegendMarker:function(A,s,r,h,w,j,m){var c=[];var l=this._settings.legend.marker;var v=this._settings.legend.values;var o=(v&&v[m].markerType?v[m].markerType:l.type);if(h){A.fillStyle=h;A.strokeStyle=this._getDarkenColor(h,0.75)}A.beginPath();if(o=="round"||!l.radius){A.lineWidth=l.height;A.lineCap=o;s+=A.lineWidth/2+5;r+=w/2;A.moveTo(s,r);var a=s+l.width-l.height+1;A.lineTo(a,r)}else{if(o=="item"){if(this._settings.line&&this._settings.view!="scatter"&&!this._settings.disableLines){A.beginPath();A.lineWidth=this._series[m].line.width;A.strokeStyle=j?h:this._series[m].line.color.call(this,{});var e=s+5;var u=r+w/2;A.moveTo(e,u);var a=e+l.width;A.lineTo(a,u);A.stroke()}var g=this._series[m].item;var n=parseInt(g.radius.call(this,{}),10)||0;if(n){if(g.type=="image"&&g.src){this._drawImage(A,s+5,r+l.height/2-5,g.src,n*2,n*2);return}else{A.beginPath();if(j){A.lineWidth=g.borderWidth;A.strokeStyle=h;A.fillStyle=h}else{A.lineWidth=g.borderWidth;A.fillStyle=g.color.call(this,{});A.strokeStyle=g.borderColor.call(this,{});A.globalAlpha=g.alpha.call(this,{})}A.beginPath();s+=l.width/2+5;r+=w/2;this._strokeChartItem(A,s,r,n+1,g.type);A.fill();A.stroke()}}A.globalAlpha=1}else{A.lineWidth=1;s+=5;r+=parseInt(w/2-l.height/2,10);c=[[s+l.radius,r+l.radius,l.radius,Math.PI,3*Math.PI/2,false],[s+l.width-l.radius,r],[s+l.width-l.radius,r+l.radius,l.radius,-Math.PI/2,0,false],[s+l.width,r+l.height-l.radius],[s+l.width-l.radius,r+l.height-l.radius,l.radius,0,Math.PI/2,false],[s+l.radius,r+l.height],[s+l.radius,r+l.height-l.radius,l.radius,Math.PI/2,Math.PI,false],[s,r+l.radius]];this._path(A,c)}}A.stroke();A.fill()},_getDarkenColor:function(a,g){var e,c;c=dhtmlx.math.toRgb(a);e=dhtmlx.math.rgbToHsv(c[0],c[1],c[2]);e[2]=e[2]*g;return"rgb("+dhtmlx.math.hsvToRgb(e[0],e[1],e[2])+")"},_getChartBounds:function(a,l){var n,e,m,c;n=this._settings.padding.left;e=this._settings.padding.top;m=a-this._settings.padding.right;c=l-this._settings.padding.bottom;if(this._settings.legend){var h=this._settings.legend;var j=this._settings.legend.width;var g=this._settings.legend.height;if(h.layout=="x"){if(h.valign=="center"){if(h.align=="right"){m-=j}else{if(h.align=="left"){n+=j}}}else{if(h.valign=="bottom"){c-=g}else{e+=g}}}else{if(h.align=="right"){m-=j}else{if(h.align=="left"){n+=j}}}}return{start:{x:n,y:e},end:{x:m,y:c}}},_getStackedLimits:function(h){var c,a,l,g,e;if(this._settings.yAxis&&(typeof this._settings.yAxis.end!="undefined")&&(typeof this._settings.yAxis.start!="undefined")&&this._settings.yAxis.step){l=parseFloat(this._settings.yAxis.end);g=parseFloat(this._settings.yAxis.start)}else{for(c=0;c<h.length;c++){h[c].$sum=0;h[c].$min=Infinity;for(a=0;a<this._series.length;a++){e=parseFloat(this._series[a].value(h[c])||0);if(isNaN(e)){continue}if(this._series[a].view.toLowerCase().indexOf("stacked")!=-1){h[c].$sum+=e}if(e<h[c].$min){h[c].$min=e}}}l=-Infinity;g=Infinity;for(c=0;c<h.length;c++){if(h[c].$sum>l){l=h[c].$sum}if(h[c].$min<g){g=h[c].$min}}if(g>0){g=0}}return{max:l,min:g}},_setBarGradient:function(v,c,r,a,n,m,g,e){var o,h,l,j,u,s;if(m=="light"){if(e=="x"){o=v.createLinearGradient(c,r,a,r)}else{o=v.createLinearGradient(c,r,c,n)}s=[[0,"#FFFFFF"],[0.9,g],[1,g]];h=2}else{if(m=="falling"||m=="rising"){if(e=="x"){o=v.createLinearGradient(c,r,a,r)}else{o=v.createLinearGradient(c,r,c,n)}l=dhtmlx.math.toRgb(g);j=dhtmlx.math.rgbToHsv(l[0],l[1],l[2]);j[1]*=1/2;u="rgb("+dhtmlx.math.hsvToRgb(j[0],j[1],j[2])+")";if(m=="falling"){s=[[0,u],[0.7,g],[1,g]]}else{if(m=="rising"){s=[[0,g],[0.3,g],[1,u]]}}h=0}else{v.globalAlpha=0.37;h=0;if(e=="x"){o=v.createLinearGradient(c,n,c,r)}else{o=v.createLinearGradient(c,r,a,r)}s=[[0,"#9d9d9d"],[0.3,"#e8e8e8"],[0.45,"#ffffff"],[0.55,"#ffffff"],[0.7,"#e8e8e8"],[1,"#9d9d9d"]]}}this._gradient(o,s);return{gradient:o,offset:h}},_getPositionByAngle:function(e,c,h,g){e*=(-1);c=c+Math.cos(e)*g;h=h-Math.sin(e)*g;return{x:c,y:h}},_gradient:function(e,c){for(var a=0;a<c.length;a++){e.addColorStop(c[a][0],c[a][1])}},_path:function(a,e){var c,g;for(c=0;c<e.length;c++){g=(c?"lineTo":"moveTo");if(e[c].length>2){g="arc"}a[g].apply(a,e[c])}},_circle:function(c,a,g,e){c.arc(a,g,e,Math.PI*2,true)},_addMapRect:function(g,h,a,e,c){g.addRect(h,[a[0].x-e.x,a[0].y-e.y,a[1].x-e.x,a[1].y-e.y],c)}};dhtmlx.compat("layout");if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype.attachChart=function(a){this.callEvent("_onBeforeContentAttach",["chart"]);var c=document.createElement("DIV");c.id="dhxChartObj_"+window.dhx4.newId();c.style.width="100%";c.style.height="100%";document.body.appendChild(c);this._attachObject(c);a.container=c.id;this.dataType="chart";this.dataObj=new dhtmlXChart(a);if(!this.dataObj.setSizes){this.dataObj.setSizes=function(){if(this.resize){this.resize()}else{this.render()}}}return this.dataObj}}dhtmlx.ui.pager=function(a){this.name="Pager";if(dhtmlx.assert_enabled()){this._assert()}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,c){this.select(c)}},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;break;default:break}if(a<0){a=0}if(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(e){var c="";if(e.page==-1){return""}e.min=e.page-Math.round((e.group-1)/2);e.max=e.min+e.group-1;if(e.min<0){e.max+=e.min*(-1);e.min=0}if(e.max>=e.limit){e.min-=Math.min(e.min,e.max-e.limit+1);e.max=e.limit-1}for(var a=(e.min||0);a<=e.max;a++){c+=this.button({id:a,index:(a+1),selected:(a==e.page?"_selected":"")})}return c},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 c=a.page;if(c!=-1&&(c!=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.DataProcessor={_dp_init:function(c){var a="_methods";c[a]=["setItemStyle","","changeId","remove"];this.attachEvent("onAfterAdd",function(e){c.setUpdated(e,true,"inserted")});this.data.attachEvent("onStoreLoad",dhtmlx.bind(function(g,e){if(g.getUserData){g.getUserData(e,this._userdata)}},this));this.attachEvent("onBeforeDelete",function(g){if(c._silent_mode){return true}var e=c.getState(g);if(e=="inserted"){c.setUpdated(g,false);return true}if(e=="deleted"){return false}if(e=="true_deleted"){return true}c.setUpdated(g,true,"deleted");return false});this.attachEvent("onAfterEditStop",function(e){c.setUpdated(e,true,"updated")});this.attachEvent("onBindUpdate",function(e){window.setTimeout(function(){c.setUpdated(e.id,true,"updated")},1)});a="_getRowData";c[a]=function(l,e){var h=this.obj.data.get(l);var j={};for(var g in h){if(g.indexOf("_")===0){continue}j[g]=h[g]}return j};a="_clearUpdateFlag";c[a]=function(){};this._userdata={};c.attachEvent("insertCallback",this._dp_callback);c.attachEvent("updateCallback",this._dp_callback);c.attachEvent("deleteCallback",function(e,g){this.obj.setUserData(g,this.action_param,"true_deleted");this.obj.remove(g)});dhtmlx.compat("dataProcessor",c)},_dp_callback:function(a,c){this.obj.data.set(c,dhtmlx.DataDriver.xml.getDetails(a.firstChild));this.obj.data.refresh(c)},setItemStyle:function(e,a){var c=this._locateHTML(e);if(c){c.style.cssText+=";"+a}},changeId:function(c,a){this.data.changeId(c,a);this.refresh()},setUserData:function(e,a,c){if(e){this.data.get(e)[a]=c}else{this._userdata[a]=c}},getUserData:function(c,a){return c?this.data.get(c)[a]:this._userdata[a]}};(function(){var a="_dp_init";dhtmlx.DataProcessor[a]=dhtmlx.DataProcessor._dp_init})();dhtmlx.compat.dnd=function(){if(window.dhtmlDragAndDropObject){var m="_dragged";var g=dhtmlDragAndDropObject.prototype.checkLanding;dhtmlDragAndDropObject.prototype.checkLanding=function(o,r,n){g.apply(this,arguments);if(!n){var s=dhtmlx.DragControl._drag_context=dhtmlx.DragControl._drag_context||{};if(!s.from){s.from=this.dragStartObject}dhtmlx.DragControl._checkLand(o,r,true)}};var c=dhtmlDragAndDropObject.prototype.stopDrag;dhtmlDragAndDropObject.prototype.stopDrag=function(r,n,o){if(!o){if(dhtmlx.DragControl._last){dhtmlx.DragControl._active=l.dragStartNode;dhtmlx.DragControl._stopDrag(r,true)}}c.apply(this,arguments)};var l=new dhtmlDragAndDropObject();var h=dhtmlx.DragControl._startDrag;dhtmlx.DragControl._startDrag=function(){h.apply(this,arguments);var s=dhtmlx.DragControl._drag_context;if(!s){return}var r=[];var o=[];for(var n=0;n<s.source.length;n++){r[n]={idd:s.source[n]};o.push(s.source[n])}l.dragStartNode={parentNode:{},parentObject:{idd:r,id:(o.length==1?o[0]:o),treeNod:{object:s.from}}};l.dragStartNode.parentObject.treeNod[m]=r;l.dragStartObject=s.from};var j=dhtmlx.DragControl._checkLand;dhtmlx.DragControl._checkLand=function(o,r,n){j.apply(this,arguments);if(!this._last&&!n){o=l.checkLanding(o,r,true)}};var a=dhtmlx.DragControl._stopDrag;dhtmlx.DragControl._stopDrag=function(o,n){a.apply(this,arguments);if(l.lastLanding&&!n){l.stopDrag(o,false,true)}};var e=dhtmlx.DragControl.getMaster;dhtmlx.DragControl.getMaster=function(o){var r=null;if(o){r=e.apply(this,arguments)}if(!r){r=l.dragStartObject;var s=[];var u=r[m];for(var n=0;n<u.length;n++){s.push(u[n].idd||u[n].id)}dhtmlx.DragControl._drag_context.source=s}return r}}};dhtmlx.DataMove={_init:function(){dhtmlx.assert(this.data,"DataMove :: Component doesn't have DataStore")},copy:function(c,h,a,g){var e=this.get(c);if(!e){dhtmlx.log("Warning","Incorrect ID in DataMove::copy");return}if(a){dhtmlx.assert(a.externalData,"DataMove :: External object doesn't support operation");e=a.externalData(e)}a=a||this;return a.add(a.externalData(e,g),h)},move:function(e,l,c,j){if(e instanceof Array){for(var g=0;g<e.length;g++){var a=(c||this).indexById(this.move(e[g],l,c,e[g]));if(e[g+1]){l=a+(this.indexById(e[g+1])<a?0:1)}}return}nid=e;if(l<0){dhtmlx.log("Info","DataMove::move - moving outside of bounds is ignored");return}var h=this.get(e);if(!h){dhtmlx.log("Warning","Incorrect ID in DataMove::move");return}if(!c||c==this){this.data.move(this.indexById(e),l)}else{dhtmlx.assert(c.externalData,"DataMove :: External object doesn't support operation");nid=c.add(c.externalData(h,j),l);this.remove(e)}return nid},moveUp:function(c,a){return this.move(c,this.indexById(c)-(a||1))},moveDown:function(c,a){return this.moveUp(c,(a||1)*-1)},moveTop:function(a){return this.move(a,0)},moveBottom:function(a){return this.move(a,this.data.dataCount()-1)},externalData:function(a,e){var c=dhtmlx.extend({},a);c.id=e||dhtmlx.uid();c.$selected=c.$template=null;return c}};dhtmlx.DragControl={_drag_masters:dhtmlx.toArray(["dummy"]),addDrop:function(c,e,a){c=dhtmlx.toNode(c);c.dhx_drop=this._getCtrl(e);if(a){c.dhx_master=true}},_getCtrl:function(c){c=c||dhtmlx.DragControl;var a=this._drag_masters.find(c);if(a<0){a=this._drag_masters.length;this._drag_masters.push(c)}return a},addDrag:function(a,c){a=dhtmlx.toNode(a);a.dhx_drag=this._getCtrl(c);dhtmlx.event(a,"mousedown",this._preStart,a)},_preStart:function(a){if(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=true;return false},_preStartFalse: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._dhx_drag_sc=dhtmlx.eventRemove(dhtmlx.DragControl._dhx_drag_sc)},_startDrag:function(a){var c={x:a.pageX,y:a.pageY};if(Math.abs(c.x-dhtmlx.DragControl._start_pos.x)<5&&Math.abs(c.y-dhtmlx.DragControl._start_pos.y)<5){return}dhtmlx.DragControl._preStartFalse();if(!dhtmlx.DragControl.createDrag(a)){return}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);if(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 c=dhtmlx.html.pos(a);dhtmlx.DragControl._html.style.top=c.y+dhtmlx.DragControl.top+"px";dhtmlx.DragControl._html.style.left=c.x+dhtmlx.DragControl.left+"px";if(dhtmlx.DragControl._skip){dhtmlx.DragControl._skip=false}else{dhtmlx.DragControl._checkLand((a.srcElement||a.target),a)}a.cancelBubble=true;return false},_checkLand:function(a,c){while(a&&a.tagName!="BODY"){if(a.dhx_drop){if(this._last&&(this._last!=a||a.dhx_master)){this.onDragOut(this._active,this._last,a,c)}if(!this._last||this._last!=a||a.dhx_master){this._last=null;this._landing=this.onDragIn(dhtmlx.DragControl._active,a,c);if(this._landing){this._last=a}return}return}a=a.parentNode}if(this._last){this._last=this._landing=this.onDragOut(this._active,this._last,null,c)}},sendSignal:function(a){dhtmlx.DragControl.active=(a=="start")},getMaster:function(a){return this._drag_masters[a.dhx_drag||a.dhx_drop]},getContext:function(a){return this._drag_context},createDrag:function(j){var g=dhtmlx.DragControl._active;var h=this._drag_masters[g.dhx_drag];var c;if(h.onDragCreate){c=h.onDragCreate(g,j);c.style.position="absolute";c.style.zIndex=dhtmlx.zIndex.drag;c.onmousemove=dhtmlx.DragControl._skip_mark}else{var l=dhtmlx.DragControl.onDrag(g,j);if(!l){return false}var c=document.createElement("DIV");c.innerHTML=l;c.className="dhx_drag_zone";c.onmousemove=dhtmlx.DragControl._skip_mark;document.body.appendChild(c)}dhtmlx.DragControl._html=c;return true},_skip_mark:function(){dhtmlx.DragControl._skip=true},destroyDrag:function(){var c=dhtmlx.DragControl._active;var e=this._drag_masters[c.dhx_drag];if(e&&e.onDragDestroy){e.onDragDestroy(c,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(g,c,h){var a=this._drag_masters[c.dhx_drop];if(a.onDragIn&&a!=this){return a.onDragIn(g,c,h)}c.className=c.className+" dhx_drop_zone";return c},onDragOut:function(g,c,j,h){var a=this._drag_masters[c.dhx_drop];if(a.onDragOut&&a!=this){return a.onDragOut(g,c,j,h)}c.className=c.className.replace("dhx_drop_zone","");return null},onDrop:function(g,c,j,h){var a=this._drag_masters[c.dhx_drop];dhtmlx.DragControl._drag_context.from=dhtmlx.DragControl.getMaster(g);if(a.onDrop&&a!=this){return a.onDrop(g,c,j,h)}c.appendChild(g)},onDrag:function(c,g){var a=this._drag_masters[c.dhx_drag];if(a.onDrag&&a!=this){return a.onDrag(c,g)}dhtmlx.DragControl._drag_context={source:c,from:c};return"<div style='"+c.style.cssText+"'>"+c.innerHTML+"</div>"}};dhtmlx.DragItem={_init:function(){dhtmlx.assert(this.move,"DragItem :: Component doesn't have DataMove interface");dhtmlx.assert(this.locate,"DragItem :: Component doesn't have RenderStack interface");dhtmlx.assert(dhtmlx.DragControl,"DragItem :: DragControl is not included");if(!this._settings||this._settings.drag){dhtmlx.DragItem._initHandlers(this)}else{if(this._settings){this.drag_setter=function(a){if(a){this._initHandlers(this);delete this.drag_setter}return a}}}if(this.dragMarker){this.attachEvent("onBeforeDragIn",this.dragMarker);this.attachEvent("onDragOut",this.dragMarker)}},_initHandlers:function(a){dhtmlx.DragControl.addDrop(a._obj,a,true);dhtmlx.DragControl.addDrag(a._obj,a)},onDragIn:function(h,g,j){var m=this.locate(j)||null;var c=dhtmlx.DragControl._drag_context;var l=dhtmlx.DragControl.getMaster(h);var a=(this._locateHTML(m)||this._obj);if(a==dhtmlx.DragControl._landing){return a}c.target=m;c.to=l;if(!this.callEvent("onBeforeDragIn",[c,j])){c.id=null;return null}dhtmlx.html.addCss(a,"dhx_drag_over");return a},onDragOut:function(h,g,m,j){var l=this.locate(j)||null;if(m!=this._dataobj){l=null}var c=(this._locateHTML(l)||(m?dhtmlx.DragControl.getMaster(m)._obj:window.undefined));if(c==dhtmlx.DragControl._landing){return null}var a=dhtmlx.DragControl._drag_context;dhtmlx.html.removeCss(dhtmlx.DragControl._landing,"dhx_drag_over");a.target=a.to=null;this.callEvent("onDragOut",[a,j]);return null},onDrop:function(g,c,j,h){var a=dhtmlx.DragControl._drag_context;a.to=this;a.index=a.target?this.indexById(a.target):this.dataCount();a.new_id=dhtmlx.uid();if(!this.callEvent("onBeforeDrop",[a,h])){return}if(a.from==a.to){this.move(a.source,a.index)}else{if(a.from){a.from.move(a.source,a.index,a.to,a.new_id)}else{dhtmlx.error("Unsopported d-n-d combination")}}this.callEvent("onAfterDrop",[a,h])},onDrag:function(g,j){var l=this.locate(j);var h=[l];if(l){if(this.getSelected){var c=this.getSelected();if(dhtmlx.PowerArray.find.call(c,l)!=-1){h=c}}var a=dhtmlx.DragControl._drag_context={source:h,start:l};a.from=this;if(this.callEvent("onBeforeDrag",[a,j])){return a.html||this._toHTML(this.get(l))}}return null}};dhtmlx.EditAbility={_init:function(a){this._edit_id=null;this._edit_bind=null;dhtmlx.assert(this.data,"EditAbility :: Component doesn't have DataStore");dhtmlx.assert(this._locateHTML,"EditAbility :: Component doesn't have RenderStack");this.attachEvent("onEditKeyPress",function(e,g,c){if(e==13&&!c){this.stopEdit()}else{if(e==27){this.stopEdit(true)}}});this.attachEvent("onBeforeRender",function(){this.stopEdit()})},isEdit:function(){return this._edit_id},edit:function(c){if(this.stopEdit(false,c)){if(!this.callEvent("onBeforeEditStart",[c])){return}var a=this.data.get(c);if(a.$template){return}a.$template="edit";this.data.refresh(c);this._edit_id=c;this._save_binding(c);this._edit_bind(true,a);this.callEvent("onAfterEditStart",[c])}},stopEdit:function(e,h){if(!this._edit_id){return true}if(this._edit_id==h){return false}var a={};if(!e){this._edit_bind(false,a)}else{a=null}if(!this.callEvent("onBeforeEditStop",[this._edit_id,a])){return false}var c=this.data.get(this._edit_id);c.$template=null;if(!e){this._edit_bind(false,c)}var g=this._edit_id;this._edit_bind=this._edit_id=null;this.data.refresh(g);this.callEvent("onAfterEditStop",[g,a]);return true},_save_binding:function(m){var a=this._locateHTML(m);var e="";var j="";var h=[];if(a){var g=a.getElementsByTagName("*");var l="";for(var c=0;c<g.length;c++){if(g[c].nodeType==1&&(l=g[c].getAttribute("bind"))){e+="els["+h.length+"].value="+l+";";j+=l+"=els["+h.length+"].value;";h.push(g[c]);g[c].className+=" dhx_allow_selection";g[c].onselectstart=this._block_native}}g=null}e=Function("obj","els",e);j=Function("obj","els",j);this._edit_bind=function(o,n){if(o){e(n,h);if(h.length&&h[0].select){h[0].select()}}else{j(n,h)}}},_block_native:function(a){(a||event).cancelBubble=true;return true}};dhtmlx.SelectionModel={_init:function(){this._selected=dhtmlx.toArray();dhtmlx.assert(this.data,"SelectionModel :: Component doesn't have DataStore");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(e,a){for(var c=this._selected.length-1;c>=0;c--){if(this._selected[c]==e){this._selected[c]=a}}},_data_filtered:function(){for(var a=this._selected.length-1;a>=0;a--){if(this.data.indexById(this._selected[a])<0){var e=this._selected[a];var c=this.item(e);if(c){delete c.$selected}this._selected.splice(a,1);this.callEvent("onSelectChange",[e])}}},_data_updated:function(e,c,a){if(a=="delete"){this._selected.remove(e)}else{if(!this.data.dataCount()&&!this.data._filter_order){this._selected=dhtmlx.toArray()}}},_data_loaded:function(){if(this._settings.select){this.data.each(function(a){if(a.$selected){this.select(a.id)}},this)}},_select_mark:function(e,c,a){if(!a&&!this.callEvent("onBeforeSelect",[e,c])){return false}this.data.item(e).$selected=c;if(a){a.push(e)}else{if(c){this._selected.push(e)}else{this._selected.remove(e)}this._refresh_selection(e)}return true},select:function(g,e,a){if(!g){return this.selectAll()}if(g instanceof Array){for(var c=0;c<g.length;c++){this.select(g[c],e,a)}return}if(!this.data.exists(g)){dhtmlx.error("Incorrect id in select command: "+g);return}if(a&&this._selected.length){return this.selectAll(this._selected[this._selected.length-1],g)}if(!e&&(this._selected.length!=1||this._selected[0]!=g)){this._silent_selection=true;this.unselectAll();this._silent_selection=false}if(this.isSelected(g)){if(e){this.unselect(g)}return}if(this._select_mark(g,true)){this.callEvent("onAfterSelect",[g])}},unselect:function(a){if(!a){return this.unselectAll()}if(!this.isSelected(a)){return}this._select_mark(a,false)},selectAll:function(g,e){var a;var c=[];if(g||e){a=this.data.getRange(g||null,e||null)}else{a=this.data.getRange()}a.each(function(h){var j=this.data.item(h.id);if(!j.$selected){this._selected.push(h.id);this._select_mark(h.id,true,c)}return h.id},this);this._refresh_selection(c)},unselectAll:function(){var a=[];this._selected.each(function(c){this._select_mark(c,false,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(c){if(typeof c!="object"){c=[c]}if(!c.length){return}if(this._is_mass_selection(c)){this.data.refresh()}else{for(var a=0;a<c.length;a++){this.render(c[a],this.data.item(c[a]),"update")}}if(!this._silent_selection){this.callEvent("onSelectChange",[c])}}};dhtmlx.RenderStack={_init:function(){dhtmlx.assert(this.data,"RenderStack :: Component doesn't have DataStore");dhtmlx.assert(dhtmlx.Template,"dhtmlx.Template :: dhtmlx.Template is not accessible");this._html=document.createElement("DIV")},_toHTML:function(a){dhtmlx.assert((!a.$template||this.type["template_"+a.$template]),"RenderStack :: Unknown template: "+a.$template);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={};var e=this._dataobj.childNodes;for(var c=0;c<e.length;c++){var g=e[c].getAttribute(this._id);if(g){this._htmlmap[g]=e[c]}}return this._locateHTML(a)},locate:function(a){return dhtmlx.html.locate(a,this._id)},show:function(c){var a=this._locateHTML(c);if(a){this._dataobj.scrollTop=a.offsetTop-this._dataobj.offsetTop}},render:function(j,g,e,h){if(j){var a=this._locateHTML(j);switch(e){case"update":if(!a){return}var c=this._htmlmap[j]=this._toHTMLObject(g);dhtmlx.html.insertBefore(c,a);dhtmlx.html.remove(a);break;case"delete":if(!a){return}dhtmlx.html.remove(a);delete this._htmlmap[j];break;case"add":var c=this._htmlmap[j]=this._toHTMLObject(g);dhtmlx.html.insertBefore(c,this._locateHTML(this.data.next(j)),this._dataobj);break;case"move":this.render(j,g,"delete");this.render(j,g,"add");break;default:dhtmlx.error("Unknown render command: "+e);break}}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(c){this.attachEvent("onBeforeRender",function(){var g=this._settings.pager._settings;if(g.page==-1){return false}this.data.min=g.page*g.size;this.data.max=(g.page+1)*g.size-1;return true});var a=new dhtmlx.ui.pager(c);var e=dhtmlx.bind(function(){this.data.refresh()},this);a.attachEvent("onRefresh",e);this.data.attachEvent("onStoreUpdated",function(h){var g=this.dataCount();if(g!=a._settings.count){a._settings.count=g;if(a._settings.page==-1){a._settings.page=0}a.refresh()}});return a},height_setter:function(a){if(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 c=this._dataobj.scrollHeight;if(c!=a){this._dataobj.style.height=c+"px"}}this._obj.style.height=this._dataobj.style.height},_getDimension:function(){var a=this.type;var c=(a.border||0)+(a.padding||0)*2+(a.margin||0)*2;return{x:a.width+c,y:a.height+c}},x_count_setter:function(c){var e=this._getDimension();var a=dhtmlx.$customScroll?0:18;this._dataobj.style.width=e.x*c+(this._settings.height!="auto"?a:0)+"px";return c},y_count_setter:function(a){var c=this._getDimension();this._dataobj.style.height=c.y*a+"px";return a}};dhtmlx.VirtualRenderStack={_init:function(){dhtmlx.assert(this.render,"VirtualRenderStack :: Object must use RenderStack first");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.data._unrendered_area=[];this.data.getIndexRange=this._getIndexRange},_locateHTML:function(a){return this._htmlmap[a]},show:function(e){range=this._getVisibleRange();var c=this.data.indexById(e);var a=Math.floor(c/range._dx)*range._y;this._dataobj.scrollTop=a},_getIndexRange:function(h,g){if(g!==0){g=Math.min((g||Infinity),this.dataCount()-1)}var a=dhtmlx.toArray();for(var c=(h||0);c<=g;c++){var e=this.item(this.order[c]);if(this.order.length>c){if(!e){this.order[c]=dhtmlx.uid();e={id:this.order[c],$template:"loading"};this._unrendered_area.push(this.order[c])}else{if(e.$template=="loading"){this._unrendered_area.push(this.order[c])}}a.push(e)}}return a},render:function(j,g,e,h){if(j){var a=this._locateHTML(j);switch(e){case"update":if(!a){return}var c=this._htmlmap[j]=this._toHTMLObject(g);dhtmlx.html.insertBefore(c,a);dhtmlx.html.remove(a);break;default:this._render_delayed();break}}else{if(this.callEvent("onBeforeRender",[this.data])){this._htmlmap={};this._render_visible_rows(null,true);this._wait_for_render=false;this.callEvent("onAfterRender",[])}}},_render_delayed:function(){if(this._wait_for_render){return}this._wait_for_render=true;window.setTimeout(dhtmlx.bind(function(){this.render()},this),1)},_create_placeholder:function(a){var c=document.createElement("DIV");c.className="dhxdataview_placeholder";c.style.cssText="height:"+a+"px; width:100%; overflow:hidden;";return c},_render_visible_rows:function(A,E){this.data._unrendered_area=[];var y=this._getVisibleRange();if(!this._dataobj.firstChild||E){this._dataobj.innerHTML="";this._dataobj.appendChild(this._create_placeholder(y._max));this._htmlrows=[this._dataobj.firstChild]}var j=Math.max(y._from,0);var x=(this.data.max||this.data.max===0)?this.data.max:Infinity;while(j<=y._height){while(this._htmlrows[j]&&this._htmlrows[j]._filled&&j<=y._height){j++}if(j>y._height){break}var n=j;while(!this._htmlrows[n]){n--}var a=this._htmlrows[n];var g=j*y._dx+(this.data.min||0);if(g>x){break}var l=Math.min(g+y._dx-1,x);var r=this._create_placeholder(y._y);var m=this.data.getIndexRange(g,l);if(!m.length){break}r.innerHTML=m.map(this._toHTML,this).join("");for(var v=0;v<m.length;v++){this._htmlmap[this.data.idByIndex(g+v)]=r.childNodes[v]}var w=parseInt(a.style.height,10);var D=(j-n)*y._y;var u=(w-D-y._y);dhtmlx.html.insertBefore(r,D?a.nextSibling:a,this._dataobj);this._htmlrows[j]=r;r._filled=true;if(D<=0&&u>0){a.style.height=u+"px";this._htmlrows[j+1]=a}else{if(D<0){dhtmlx.html.remove(a)}else{a.style.height=D+"px"}if(u>0){var o=this._htmlrows[j+1]=this._create_placeholder(u);dhtmlx.html.insertBefore(o,r.nextSibling,this._dataobj)}}j++}if(this.data._unrendered_area.length){var s=this.indexById(this.data._unrendered_area[0]);var c=this.indexById(this.data._unrendered_area.pop())+1;if(c>s){if(!this.callEvent("onDataRequest",[s,c-s])){return false}dhtmlx.assert(this.data.feed,"Data feed is missed");this.data.feed.call(this,s,c-s)}}if(dhtmlx._isIE){var C=this._getVisibleRange();if(C._from!=y._from){this._render_visible_rows()}}},_getVisibleRange:function(){var c=dhtmlx.$customScroll?0:18;var l=this._dataobj.scrollTop;var a=this._dataobj.scrollWidth;var m=this._dataobj.offsetHeight;var o=this.type;var g=this._getDimension();var r=Math.floor(a/g.x)||1;var e=Math.floor(l/g.y);var n=Math.ceil((m+l)/g.y)-1;var h=this.data.max?(this.data.max-this.data.min):this.data.dataCount();var j=Math.ceil(h/r)*g.y;return{_from:e,_height:n,_top:l,_max:j,_y:g.y,_dx:r}}};dhtmlXDataView=function(a){this.name="DataView";if(dhtmlx.assert_enabled()){this._assert()}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:false,edit:false,select:"multiselect",type:"default"});if(this._settings.height!="auto"&&!this._settings.renderAll){dhtmlx.extend(this,dhtmlx.VirtualRenderStack)}this.data.provideApi(this,true);if(this.config.autowidth){this.attachEvent("onBeforeRender",function(){this.type.width=Math.floor((this._dataobj.scrollWidth)/(this.config.autowidth*1||1))-this.type.padding*2-this.type.margin*2-this.type.border*2;this.type._item_start=dhtmlx.Template.fromHTML(this.template_item_start(this.type));this.type._item_end=this.template_item_end(this.type)});dhtmlx.event(window,"resize",function(){this.refresh()},this)}if(dhtmlx.$customScroll){dhtmlx.CustomScroll.enable(this)}};dhtmlXDataView.prototype={bind:function(){dhx.BaseBind.legacyBind.apply(this,arguments)},sync:function(){dhx.BaseBind.legacySync.apply(this,arguments)},dragMarker:function(e,h){var g=this._locateHTML(e.target);if(this.type.drag_marker){if(this._drag_marker){this._drag_marker.style.backgroundImage="";this._drag_marker.style.backgroundRepeat=""}if(g){g.style.backgroundImage="url("+(dhtmlx.image_path||"")+this.type.drag_marker+")";g.style.backgroundRepeat="no-repeat";this._drag_marker=g}}if(g&&this._settings.auto_scroll){var a=g.offsetTop;var j=g.offsetHeight;var c=this._obj.scrollTop;var l=this._obj.offsetHeight;if(a-j>=0&&a-j*0.75<c){c=Math.max(a-j,0)}else{if(a+j/0.75>c+l){c=c+j}}this._obj.scrollTop=c}return true},_id:"dhx_f_id",on_click:{dhx_dataview_item:function(a,c){if(this.stopEdit(false,c)){if(this._settings.select){if(this._settings.select=="multiselect"){this.select(c,a.ctrlKey,a.shiftKey)}else{this.select(c)}}}}},on_dblclick:{dhx_dataview_item:function(a,c){if(this._settings.edit){this.edit(c)}}},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");if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype.attachDataView=function(a){this.callEvent("_onBeforeContentAttach",["dataview"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";this._attachObject(c);if(typeof(a)=="undefined"){a={}}c.id="DataViewObject_"+new Date().getTime();a.container=c.id;a.skin=this.conf.skin;this.dataType="dataview";this.dataObj=new dhtmlXDataView(a);this.dataObj.setSizes=function(){this.render()};c=null;this.callEvent("_onContentAttach",[]);return this.dataObj}}dhtmlXList=function(a){this.name="List";dhtmlx.extend(this,dhtmlx.Settings);this._parseContainer(a,"dhx_list");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._getDimension=function(){var c=this.type;var e=(c.margin||0)*2;return{x:c.width+e,y:c.height+e}};this.data.attachEvent("onStoreUpdated",dhtmlx.bind(function(){this.render.apply(this,arguments)},this));this._parseSettings(a,{drag:false,edit:false,select:"multiselect",type:"default"});this.data.provideApi(this,true);if(dhtmlx.$customScroll){dhtmlx.CustomScroll.enable(this)}};dhtmlXList.prototype={bind:function(){dhx.BaseBind.legacyBind.apply(this,arguments)},sync:function(){dhx.BaseBind.legacySync.apply(this,arguments)},dragMarker:function(e,h){var g=this._locateHTML(e.target);if(g&&this._settings.auto_scroll){var a=g.offsetTop;var j=g.offsetHeight;var c=this._obj.scrollTop;var l=this._obj.offsetHeight;if(a-j>=0&&a-j*0.75<c){c=Math.max(a-j,0)}else{if(a+j/0.75>c+l){c=c+j}}this._obj.scrollTop=c}return true},_id:"dhx_f_id",on_click:{dhx_list_item:function(a,c){if(this.stopEdit(false,c)){if(this._settings.select){if(this._settings.select=="multiselect"){this.select(c,a.ctrlKey,a.shiftKey)}else{this.select(c)}}}}},on_dblclick:{dhx_list_item:function(a,c){if(this._settings.edit){this.edit(c)}}},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 bind='obj.text'></textarea></div>"),template_loading:dhtmlx.Template.fromHTML("<div style='padding:10px; white-space:nowrap; overflow:hidden;'>Loading...</div>"),height:50,margin:0,padding:10,border:1}},template_item_start:dhtmlx.Template.fromHTML("<div dhx_f_id='{-obj.id}' class='dhx_list_item dhx_list_{obj.css}_item{-obj.$selected?_selected:}' style='width:100%; height:{obj.height}px; padding:{obj.padding}px; margin:{obj.margin}px; overflow:hidden;'>"),template_item_end:dhtmlx.Template.fromHTML("</div>")};dhtmlx.compat("layout");if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype.attachList=function(a){this.callEvent("_onBeforeContentAttach",["list"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";this._attachObject(c);if(typeof(a)=="undefined"){a={}}c.id="ListObject_"+new Date().getTime();a.container=c.id;a.skin=this.conf.skin;this.dataType="list";this.dataObj=new dhtmlXList(a);this.dataObj.setSizes=function(){this.render()};c=null;this.callEvent("_onContentAttach",[]);return this.dataObj}}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.wholeText||this.d.firstChild.data):""},each:function(g,l,j,h){var e=this.d.childNodes;var m=new xmlPointer();if(e.length){for(h=h||0;h<e.length;h++){if(e[h].tagName==g){m.d=e[h];if(l.apply(j,[m,h])==-1){return}}}}},get_all:function(){var e={};var c=this.d.attributes;for(var g=0;g<c.length;g++){e[c[g].name]=c[g].value}return e},sub:function(g){var e=this.d.childNodes;var j=new xmlPointer();if(e.length){for(var h=0;h<e.length;h++){if(e[h].tagName==g){j.d=e[h];return j}}}},up:function(a){return new xmlPointer(this.d.parentNode)},set:function(a,c){this.d.setAttribute(a,c)},clone:function(a){return new xmlPointer(this.d)},sub_exists:function(e){var c=this.d.childNodes;if(c.length){for(var g=0;g<c.length;g++){if(c[g].tagName==e){return true}}}return false},through:function(e,l,o,h,r){var m=this.d.childNodes;if(m.length){for(var g=0;g<m.length;g++){if(m[g].tagName==e&&m[g].getAttribute(l)!=null&&m[g].getAttribute(l)!=""&&(!o||m[g].getAttribute(l)==o)){var j=new xmlPointer(m[g]);h.apply(r,[j,g])}var n=this.d;this.d=m[g];this.through(e,l,o,h,r);this.d=n}}}};function dhtmlXTreeObject(l,h,c,a){if(dhtmlxEvent.initTouch){dhtmlxEvent.initTouch()}if(_isIE){try{document.execCommand("BackgroundImageCache",false,true)}catch(j){}}if(typeof(l)!="object"){this.parentObject=document.getElementById(l)}else{this.parentObject=l}this.parentObject.style.overflow="hidden";this._itim_dg=true;this.dlmtr=",";this.dropLower=false;this.enableIEImageFix(true);this.xmlstate=0;this.mytype="tree";this.smcheck=true;this.width=h;this.height=c;this.rootId=a;this.childCalc=null;this.def_img_x="18px";this.def_img_y="18px";this.def_line_img_x="18px";this.def_line_img_y="24px";this._dragged=new Array();this._selected=new Array();this.style_pointer="pointer";this._aimgs=true;this.htmlcA=" [";this.htmlcB="]";this.lWin=window;this.cMenu=0;this.mlitems=0;this.iconURL="";this.dadmode=0;this.slowParse=false;this.autoScroll=true;this.hfMode=0;this.nodeCut=new Array();this.XMLsource=0;this.XMLloadingWarning=0;this._idpull={};this._pullSize=0;this.treeLinesOn=true;this.tscheck=false;this.timgen=true;this.dpcpy=false;this._ld_id=null;this._dynDeleteBranches={};this._oie_onXLE=[];this.imPath=window.dhx_globalImgPath||"";this.checkArray=new Array("iconUncheckAll.gif","iconCheckAll.gif","iconCheckGray.gif","iconUncheckDis.gif","iconCheckDis.gif","iconCheckDis.gif");this.radioArray=new Array("radio_off.gif","radio_on.gif","radio_on.gif","radio_off.gif","radio_on.gif","radio_on.gif");this.lineArray=new Array("line2.gif","line3.gif","line4.gif","blank.gif","blank.gif","line1.gif");this.minusArray=new Array("minus2.gif","minus3.gif","minus4.gif","minus.gif","minus5.gif");this.plusArray=new Array("plus2.gif","plus3.gif","plus4.gif","plus.gif","plus5.gif");this.imageArray=new Array("leaf.gif","folderOpen.gif","folderClosed.gif");this.cutImg=new Array(0,0,0);this.cutImage="but_cut.gif";dhx4._eventable(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(dhtmlx.$customScroll){dhtmlx.CustomScroll.enable(this)}if(_isFF){this.allTree.childNodes[0].width="100%";this.allTree.childNodes[0].style.overflow="hidden"}var g=this;this.allTree.onselectstart=new Function("return false;");if(_isMacOS){this.allTree.oncontextmenu=function(m){return g._doContClick(m||window.event,true)}}this.allTree.onmousedown=function(m){return g._doContClick(m||window.event)};this.XMLLoader=this._parseXMLTree;if(_isIE){this.preventIECashing(true)}this.selectionBar=document.createElement("DIV");this.selectionBar.className="selectionBar";this.selectionBar.innerHTML="&nbsp;";this.selectionBar.style.display="none";this.allTree.appendChild(this.selectionBar);if(window.addEventListener){window.addEventListener("unload",function(){try{g.destructor()}catch(m){}},false)}if(window.attachEvent){window.attachEvent("onunload",function(){try{g.destructor()}catch(m){}})}this.setImagesPath=this.setImagePath;this.setIconsPath=this.setIconPath;if(dhtmlx.image_path){this.setImagePath(dhtmlx.image_path)}this.setSkin(window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxtree")||"dhx_skyblue");return this}dhtmlXTreeObject.prototype.setDataMode=function(a){this._datamode=a};dhtmlXTreeObject.prototype._doContClick=function(l,a){if(!a&&l.button!=2){if(this._acMenu){if(this._acMenu.hideContextMenu){this._acMenu.hideContextMenu()}else{this.cMenu._contextEnd()}}return true}var c=(_isIE?l.srcElement:l.target);while((c)&&(c.tagName!="BODY")){if(c.parentObject){break}c=c.parentNode}if((!c)||(!c.parentObject)){return true}var h=c.parentObject;if(!this.callEvent("onRightClick",[h.id,l])){(l.srcElement||l.target).oncontextmenu=function(o){(o||event).cancelBubble=true;return false}}this._acMenu=(h.cMenu||this.cMenu);if(this._acMenu){if(!(this.callEvent("onBeforeContextMenu",[h.id]))){return true}if(!_isMacOS){(l.srcElement||l.target).oncontextmenu=function(o){(o||event).cancelBubble=true;return false}}if(this._acMenu.showContextMenu){var g=window.document.documentElement;var e=window.document.body;var m=new Array((g.scrollLeft||e.scrollLeft),(g.scrollTop||e.scrollTop));if(_isIE){var n=l.clientX+m[0];var j=l.clientY+m[1]}else{var n=l.pageX;var j=l.pageY}this._acMenu.showContextMenu(n-1,j-1);this.contextID=h.id;l.cancelBubble=true;this._acMenu._skip_hide=true}else{c.contextMenuId=h.id;c.contextMenu=this._acMenu;c.a=this._acMenu._contextStart;c.a(c,l);c.a=null}return false}return true};dhtmlXTreeObject.prototype.enableIEImageFix=function(a){if(!a){this._getImg=function(c){return document.createElement((c==this.rootId)?"div":"img")};this._setSrc=function(e,c){e.src=c};this._getSrc=function(c){return c.src}}else{this._getImg=function(){var c=document.createElement("DIV");c.innerHTML="&nbsp;";c.className="dhx_bg_img_fix";return c};this._setSrc=function(e,c){e.style.backgroundImage="url("+c+")"};this._getSrc=function(c){var e=c.style.backgroundImage;return e.substr(4,e.length-5).replace(/(^")|("$)/g,"")}}};dhtmlXTreeObject.prototype.destructor=function(){for(var c in this._idpull){var e=this._idpull[c];if(!e){continue}e.parentObject=null;e.treeNod=null;e.childNodes=null;e.span=null;e.tr.nodem=null;e.tr=null;e.htmlNode.objBelong=null;e.htmlNode=null;this._idpull[c]=null}this.parentObject.innerHTML="";this.allTree.onselectstart=null;this.allTree.oncontextmenu=null;this.allTree.onmousedown=null;for(var c in this){this[c]=null}};function cObject(){return this}cObject.prototype=new Object;cObject.prototype.clone=function(){function a(){}a.prototype=this;return new a()};function dhtmlXTreeItemObject(j,c,e,a,g,h){this.htmlNode="";this.acolor="";this.scolor="";this.tr=0;this.childsCount=0;this.tempDOMM=0;this.tempDOMU=0;this.dragSpan=0;this.dragMove=0;this.span=0;this.closeble=1;this.childNodes=new Array();this.userData=new cObject();this.checkstate=0;this.treeNod=a;this.label=c;this.parentObject=e;this.actionHandler=g;this.images=new Array(a.imageArray[0],a.imageArray[1],a.imageArray[2]);this.id=a._globalIdStorageAdd(j,this);if(this.treeNod.checkBoxOff){this.htmlNode=this.treeNod._createItem(1,this,h)}else{this.htmlNode=this.treeNod._createItem(0,this,h)}this.htmlNode.objBelong=this;return this}dhtmlXTreeObject.prototype._globalIdStorageAdd=function(c,a){if(this._globalIdStorageFind(c,1,1)){c=c+"_"+(new Date()).valueOf();return this._globalIdStorageAdd(c,a)}this._idpull[c]=a;this._pullSize++;return c};dhtmlXTreeObject.prototype._globalIdStorageSub=function(a){if(this._idpull[a]){this._unselectItem(this._idpull[a]);this._idpull[a]=null;this._pullSize--}if((this._locker)&&(this._locker[a])){this._locker[a]=false}};dhtmlXTreeObject.prototype._globalIdStorageFind=function(l,a,e,g){var h=this._idpull[l];if(h){if((h.unParsed)&&(!e)){this.reParse(h,0)}if(this._srnd&&!h.htmlNode){this._buildSRND(h,e)}if((g)&&(this._edsbpsA)){for(var c=0;c<this._edsbpsA.length;c++){if(this._edsbpsA[c][2]==l){dhx4.callEvent("ongetItemError",["Requested item still in parsing process.",l]);return null}}}return h}if((this.slowParse)&&(l!=0)&&(!a)){return this.preParse(l)}else{return null}};dhtmlXTreeObject.prototype._getSubItemsXML=function(a){var c=[];a.each("item",function(e){c.push(e.get("id"))},this);return c.join(this.dlmtr)};dhtmlXTreeObject.prototype.enableSmartXMLParsing=function(a){this.slowParse=dhx4.s2b(a)};dhtmlXTreeObject.prototype.findXML=function(c,a,e){};dhtmlXTreeObject.prototype._getAllCheckedXML=function(c,a,g){var e=[];if(g==2){c.through("item","checked",-1,function(h){e.push(h.get("id"))},this)}if(g==1){c.through("item","id",null,function(h){if(h.get("checked")&&(h.get("checked")!=-1)){e.push(h.get("id"))}},this)}if(g==0){c.through("item","id",null,function(h){if(!h.get("checked")||h.get("checked")==0){e.push(h.get("id"))}},this)}if(e.length){return a+(a?this.dlmtr:"")+e.join(this.dlmtr)}if(a){return a}else{return""}};dhtmlXTreeObject.prototype._setSubCheckedXML=function(a,c){var e=a?"1":"";c.through("item","id",null,function(g){if(!g.get("disabled")||g.get("disabled")==0){g.set("checked",e)}},this)};dhtmlXTreeObject.prototype._getAllScraggyItemsXML=function(e,a){var g=[];var c=function(h){if(!h.sub_exists("item")){g.push(h.get("id"))}else{h.each("item",c,this)}};c(e);return g.join(",")};dhtmlXTreeObject.prototype._getAllFatItemsXML=function(e,a){var g=[];var c=function(h){if(!h.sub_exists("item")){return}g.push(h.get("id"));h.each("item",c,this)};c(e);return g.join(",")};dhtmlXTreeObject.prototype._getAllSubItemsXML=function(e,c,a){var c=[];a.through("item","id",null,function(g){c.push(g.get("id"))},this);return c.join(",")};dhtmlXTreeObject.prototype.reParse=function(e){var j=this;if(!this.parsCount){j.callEvent("onXLS",[j,e.id])}this.xmlstate=1;var g=e.unParsed;e.unParsed=0;this.XMLloadingWarning=1;var a=this.parsingOn;var l=this.waitUpdateXML;var m=this.parsedArray;this.parsedArray=new Array();this.waitUpdateXML=false;this.parsingOn=e.id;this.parsedArray=new Array();this.setCheckList="";this._parse(g,e.id,2);var o=this.setCheckList.split(this.dlmtr);for(var h=0;h<this.parsedArray.length;h++){e.htmlNode.childNodes[0].appendChild(this.parsedArray[h])}if(g.get("order")&&g.get("order")!="none"){this._reorderBranch(e,g.get("order"),true)}this.oldsmcheck=this.smcheck;this.smcheck=false;for(var c=0;c<o.length;c++){if(o[c]){this.setCheck(o[c],1)}}this.smcheck=this.oldsmcheck;this.parsingOn=a;this.waitUpdateXML=l;this.parsedArray=m;this.XMLloadingWarning=0;this._redrawFrom(this,e);if(this._srnd&&!e._sready){this.prepareSR(e.id)}this.xmlstate=0;return true};dhtmlXTreeObject.prototype.preParse=function(c){if(!c||!this._p){return null}var a=false;this._p.clone().through("item","id",c,function(g){this._globalIdStorageFind(g.up().get("id"));return a=true},this);if(a){var e=this._globalIdStorageFind(c,true,false);if(!e){dhx4.callEvent("ongetItemError",["The item "+c+" not operable. Seems you have non-unique|incorrect IDs in tree's XML.",c])}}return e};dhtmlXTreeObject.prototype._escape=function(a){switch(this.utfesc){case"none":return a;break;case"utf8":return encodeURIComponent(a);break;default:return escape(a);break}};dhtmlXTreeObject.prototype._drawNewTr=function(h,e){var g=document.createElement("tr");var c=document.createElement("td");var a=document.createElement("td");c.appendChild(document.createTextNode(" "));a.colSpan=3;a.appendChild(h);g.appendChild(c);g.appendChild(a);return g};dhtmlXTreeObject.prototype.parse=function(g,e,a){if(typeof e=="string"){a=e;e=null}if(a==="json"){return this._loadJSONObject(g,e)}else{if(a==="csv"){return this._loadCSVString(g,e)}else{if(a==="jsarray"){return this._loadJSArray(g,e)}}}var c=this;if(!this.parsCount){this.callEvent("onXLS",[c,null])}this.xmlstate=1;this.XMLLoader({responseXML:dhx4.ajax.parse(g)},e)};dhtmlXTreeObject.prototype.loadXMLString=function(){if(window.console&&window.console.info){window.console.info("loadXMLString was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this.parse.apply(this,arguments)};dhtmlXTreeObject.prototype.load=function(c,h,e){if(typeof h=="string"){e=h;h=null}e=e||this._datamode;if(e==="json"){return this._loadJSON(c,h)}else{if(e==="csv"){return this._loadCSV(c,h)}else{if(e==="jsarray"){return this._loadJSArrayFile(xmlString,h)}}}var g=this;if(!this.parsCount){this.callEvent("onXLS",[g,this._ld_id])}this._ld_id=null;this.xmlstate=1;this.XMLLoader=this._parseXMLTree;var a=this;dhx4.ajax.get(c,function(j){a.XMLLoader(j.xmlDoc,h);a=null})};dhtmlXTreeObject.prototype.loadXML=function(){if(window.console&&window.console.info){window.console.info("loadXML was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this.load.apply(this,arguments)};dhtmlXTreeObject.prototype._attachChildNode=function(l,j,g,m,D,C,A,o,e,u,v){if(u&&u.parentObject){l=u.parentObject}if(((l.XMLload==0)&&(this.XMLsource))&&(!this.XMLloadingWarning)){l.XMLload=1;this._loadDynXML(l.id)}var r=l.childsCount;var E=l.childNodes;if(v&&v.tr.previousSibling){if(v.tr.previousSibling.previousSibling){u=v.tr.previousSibling.nodem}else{o=o.replace("TOP","")+",TOP"}}if(u){var h,y;for(h=0;h<r;h++){if(E[h]==u){for(y=r;y!=h;y--){E[1+y]=E[y]}break}}h++;r=h}if(o){var w=o.split(",");for(var x=0;x<w.length;x++){switch(w[x]){case"TOP":if(l.childsCount>0){u=new Object;u.tr=l.childNodes[0].tr.previousSibling}l._has_top=true;for(h=r;h>0;h--){E[h]=E[h-1]}r=0;break}}}var s;if(!(s=this._idpull[j])||s.span!=-1){s=E[r]=new dhtmlXTreeItemObject(j,g,l,this,m,1);j=E[r].id;l.childsCount++}if(!s.htmlNode){s.label=g;s.htmlNode=this._createItem((this.checkBoxOff?1:0),s);s.htmlNode.objBelong=s}if(D){s.images[0]=D}if(C){s.images[1]=C}if(A){s.images[2]=A}var c=this._drawNewTr(s.htmlNode);if((this.XMLloadingWarning)||(this._hAdI)){s.htmlNode.parentNode.parentNode.style.display="none"}if((u)&&u.tr&&(u.tr.nextSibling)){l.htmlNode.childNodes[0].insertBefore(c,u.tr.nextSibling)}else{if(this.parsingOn==l.id){this.parsedArray[this.parsedArray.length]=c}else{l.htmlNode.childNodes[0].appendChild(c)}}if((u)&&(!u.span)){u=null}if(this.XMLsource){if((e)&&(e!=0)){s.XMLload=0}else{s.XMLload=1}}s.tr=c;c.nodem=s;if(l.itemId==0){c.childNodes[0].className="hiddenRow"}if((l._r_logic)||(this._frbtr)){this._setSrc(s.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0],this.imPath+this.radioArray[0])}if(o){var w=o.split(",");for(var x=0;x<w.length;x++){switch(w[x]){case"SELECT":this.selectItem(j,false);break;case"CALL":this.selectItem(j,true);break;case"CHILD":s.XMLload=0;break;case"CHECKED":if(this.XMLloadingWarning){this.setCheckList+=this.dlmtr+j}else{this.setCheck(j,1)}break;case"HCHECKED":this._setCheck(s,"unsure");break;case"OPEN":s.openMe=1;break}}}if(!this.XMLloadingWarning){if((this._getOpenState(l)<0)&&(!this._hAdI)){this.openItem(l.id)}if(u){this._correctPlus(u);this._correctLine(u)}this._correctPlus(l);this._correctLine(l);this._correctPlus(s);if(l.childsCount>=2){this._correctPlus(E[l.childsCount-2]);this._correctLine(E[l.childsCount-2])}if(l.childsCount!=2){this._correctPlus(E[0])}if(this.tscheck){this._correctCheckStates(l)}if(this._onradh){if(this.xmlstate==1){var a=this.onXLE;this.onXLE=function(n){this._onradh(j);if(a){a(n)}}}else{this._onradh(j)}}}return s};dhtmlXTreeObject.prototype.enableContextMenu=function(a){if(a){this.cMenu=a}};dhtmlXTreeObject.prototype.setItemContextMenu=function(h,g){var a=h.toString().split(this.dlmtr);for(var e=0;e<a.length;e++){var c=this._globalIdStorageFind(a[e]);if(!c){continue}c.cMenu=g}};dhtmlXTreeObject.prototype.insertNewItem=function(g,m,o,e,l,j,h,c,a){var r=this._globalIdStorageFind(g);if(!r){return(-1)}var n=this._attachChildNode(r,m,o,e,l,j,h,c,a);if(!this._idpull[this.rootId].XMLload){this._idpull[this.rootId].XMLload=1}if((!this.XMLloadingWarning)&&(this.childCalc)){this._fixChildCountLabel(r)}return n};dhtmlXTreeObject.prototype.insertNewChild=function(g,m,n,e,l,j,h,c,a){return this.insertNewItem(g,m,n,e,l,j,h,c,a)};dhtmlXTreeObject.prototype._parseXMLTree=function(a,e){var c=new xmlPointer(dhx4.ajax.xmltop("tree",a));this._parse(c);this._p=c;if(e){e.call(this,a)}};dhtmlXTreeObject.prototype._parseItem=function(j,o,h,m){var e;if(this._srnd&&(!this._idpull[e=j.get("id")]||!this._idpull[e].span)){this._addItemSRND(o.id,e,j);return}var l=j.get_all();if((typeof(this.waitUpdateXML)=="object")&&(!this.waitUpdateXML[l.id])){this._parse(j,l.id,1);return}if((l.text===null)||(typeof(l.text)=="undefined")){l.text=j.sub("itemtext");if(l.text){l.text=l.text.content()}}var s=[];if(l.select){s.push("SELECT")}if(l.top){s.push("TOP")}if(l.call){this.nodeAskingCall=l.id}if(l.checked==-1){s.push("HCHECKED")}else{if(l.checked){s.push("CHECKED")}}if(l.open){s.push("OPEN")}if(this.waitUpdateXML){if(this._globalIdStorageFind(l.id)){var n=this.updateItem(l.id,l.text,l.im0,l.im1,l.im2,l.checked,l.child)}else{if(this.npl==0){s.push("TOP")}else{h=o.childNodes[this.npl]}var n=this._attachChildNode(o,l.id,l.text,0,l.im0,l.im1,l.im2,s.join(","),l.child,0,h);l.id=n.id;h=null}}else{var n=this._attachChildNode(o,l.id,l.text,0,l.im0,l.im1,l.im2,s.join(","),l.child,(m||0),h)}if(l.tooltip){n.span.parentNode.parentNode.title=l.tooltip}if(l.style){if(n.span.style.cssText){n.span.style.cssText+=(";"+l.style)}else{n.span.setAttribute("style",n.span.getAttribute("style")+"; "+l.style)}}if(l.radio){n._r_logic=true}if(l.nocheckbox){var r=n.span.parentNode.previousSibling.previousSibling;r.style.display="none";n.nocheckbox=true}if(l.disabled){if(l.checked!=null){this._setCheck(n,l.checked)}this.disableCheckbox(n,1)}n._acc=l.child||0;if(this.parserExtension){this.parserExtension._parseExtension.call(this,j,l,(o?o.id:0))}this.setItemColor(n,l.aCol,l.sCol);if(l.locked=="1"){this.lockItem(n.id,true,true)}if((l.imwidth)||(l.imheight)){this.setIconSize(l.imwidth,l.imheight,n)}if((l.closeable=="0")||(l.closeable=="1")){this.setItemCloseable(n,l.closeable)}var g="";if(l.topoffset){this.setItemTopOffset(n,l.topoffset)}if((!this.slowParse)||(typeof(this.waitUpdateXML)=="object")){if(j.sub_exists("item")){g=this._parse(j,l.id,1)}}else{if((!n.childsCount)&&j.sub_exists("item")){n.unParsed=j.clone()}j.each("userdata",function(a){this.setUserData(l.id,a.get("name"),a.content())},this)}if(g!=""){this.nodeAskingCall=g}j.each("userdata",function(a){this.setUserData(j.get("id"),a.get("name"),a.content())},this)};dhtmlXTreeObject.prototype._parse=function(e,j,a,c){if(this._srnd&&!this.parentObject.offsetHeight){var v=this;return window.setTimeout(function(){v._parse(e,j,a,c)},100)}if(!e.exists()){return}this.skipLock=true;if(!j){j=e.get("id");if(this._dynDeleteBranches[j]){this.deleteChildItems(j);this._dynDeleteBranches[j]--;if(!this._dynDeleteBranches[j]){delete this._dynDeleteBranches[j]}}var s=e.get("dhx_security");if(s){dhtmlx.security_key=s}if(e.get("radio")){this.htmlNode._r_logic=true}this.parsingOn=j;this.parsedArray=new Array();this.setCheckList="";this.nodeAskingCall=""}var u=this._globalIdStorageFind(j);if(!u){return dhx4.callEvent("onDataStructureError",["XML refers to not existing parent"])}this.parsCount=this.parsCount?(this.parsCount+1):1;this.XMLloadingWarning=1;if((u.childsCount)&&(!c)&&(!this._edsbps)&&(!u._has_top)){var l=0}else{var l=0}this.npl=0;e.each("item",function(w,n){u.XMLload=1;this._parseItem(w,u,0,l);if((this._edsbps)&&(this.npl==this._edsbpsC)){this._distributedStart(e,n+1,j,a,u.childsCount);return -1}this.npl++},this,c);if(!a){e.each("userdata",function(n){this.setUserData(e.get("id"),n.get("name"),n.content())},this);u.XMLload=1;if(this.waitUpdateXML){this.waitUpdateXML=false;for(var h=u.childsCount-1;h>=0;h--){if(u.childNodes[h]._dmark){this.deleteItem(u.childNodes[h].id)}}}var o=this._globalIdStorageFind(this.parsingOn);for(var h=0;h<this.parsedArray.length;h++){u.htmlNode.childNodes[0].appendChild(this.parsedArray[h])}this.parsedArray=[];this.lastLoadedXMLId=j;this.XMLloadingWarning=0;var r=this.setCheckList.split(this.dlmtr);for(var g=0;g<r.length;g++){if(r[g]){this.setCheck(r[g],1)}}if((this.XMLsource)&&(this.tscheck)&&(this.smcheck)&&(u.id!=this.rootId)){if(u.checkstate===0){this._setSubChecked(0,u)}else{if(u.checkstate===1){this._setSubChecked(1,u)}}}this._redrawFrom(this,null,c);if(e.get("order")&&e.get("order")!="none"){this._reorderBranch(u,e.get("order"),true)}if(this.nodeAskingCall!=""){this.callEvent("onClick",[this.nodeAskingCall,this.getSelectedItemId()])}if(this._branchUpdate){this._branchUpdateNext(e)}}if(this.parsCount==1){this.parsingOn=null;if(this._srnd&&u.id!=this.rootId){this.prepareSR(u.id);if(this.XMLsource){this.openItem(u.id)}}e.through("item","open",null,function(n){this.openItem(n.get("id"))},this);if((!this._edsbps)||(!this._edsbpsA.length)){var m=this;window.setTimeout(function(){m.callEvent("onXLE",[m,j])},1);this.xmlstate=0}this.skipLock=false}this.parsCount--;var m=this;if(this._edsbps){window.setTimeout(function(){m._distributedStep(j)},this._edsbpsD)}if(!a&&this.onXLE){this.onXLE(this,j)}return this.nodeAskingCall};dhtmlXTreeObject.prototype._branchUpdateNext=function(a){a.each("item",function(g){var e=g.get("id");if(this._idpull[e]&&(!this._idpull[e].XMLload)){return}this._branchUpdate++;this.smartRefreshItem(g.get("id"),g)},this);this._branchUpdate--};dhtmlXTreeObject.prototype.checkUserData=function(c,e){if((c.nodeType==1)&&(c.tagName=="userdata")){var a=c.getAttribute("name");if((a)&&(c.childNodes[0])){this.setUserData(e,a,c.childNodes[0].data)}}};dhtmlXTreeObject.prototype._redrawFrom=function(m,c,l,e){if(!c){var h=m._globalIdStorageFind(m.lastLoadedXMLId);m.lastLoadedXMLId=-1;if(!h){return 0}}else{h=c}var j=0;for(var g=(l?l-1:0);g<h.childsCount;g++){if((!this._branchUpdate)||(this._getOpenState(h)==1)){if((!c)||(e==1)){h.childNodes[g].htmlNode.parentNode.parentNode.style.display=""}}if(h.childNodes[g].openMe==1){this._openItem(h.childNodes[g]);h.childNodes[g].openMe=0}m._redrawFrom(m,h.childNodes[g]);if(this.childCalc!=null){if((h.childNodes[g].unParsed)||((!h.childNodes[g].XMLload)&&(this.XMLsource))){if(h.childNodes[g]._acc){h.childNodes[g].span.innerHTML=h.childNodes[g].label+this.htmlcA+h.childNodes[g]._acc+this.htmlcB}else{h.childNodes[g].span.innerHTML=h.childNodes[g].label}}if((h.childNodes[g].childNodes.length)&&(this.childCalc)){if(this.childCalc==1){h.childNodes[g].span.innerHTML=h.childNodes[g].label+this.htmlcA+h.childNodes[g].childsCount+this.htmlcB}if(this.childCalc==2){var a=h.childNodes[g].childsCount-(h.childNodes[g].pureChilds||0);if(a){h.childNodes[g].span.innerHTML=h.childNodes[g].label+this.htmlcA+a+this.htmlcB}if(h.pureChilds){h.pureChilds++}else{h.pureChilds=1}}if(this.childCalc==3){h.childNodes[g].span.innerHTML=h.childNodes[g].label+this.htmlcA+h.childNodes[g]._acc+this.htmlcB}if(this.childCalc==4){var a=h.childNodes[g]._acc;if(a){h.childNodes[g].span.innerHTML=h.childNodes[g].label+this.htmlcA+a+this.htmlcB}}}else{if(this.childCalc==4){j++}}j+=h.childNodes[g]._acc;if(this.childCalc==3){j++}}}if((!h.unParsed)&&((h.XMLload)||(!this.XMLsource))){h._acc=j}m._correctLine(h);m._correctPlus(h);if((this.childCalc)&&(!c)){m._fixChildCountLabel(h)}};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(c){if(c.unParsed){return}if(this.rootId!=c.id){if(!c.htmlNode){return}var g=c.htmlNode.childNodes[0].childNodes;var a=g.length;for(var e=1;e<a;e++){g[e].style.display="none"}this._correctPlus(c)}for(var e=0;e<c.childsCount;e++){if(c.childNodes[e].childsCount){this._xcloseAll(c.childNodes[e])}}};dhtmlXTreeObject.prototype._xopenAll=function(a){this._HideShow(a,2);for(var c=0;c<a.childsCount;c++){this._xopenAll(a.childNodes[c])}};dhtmlXTreeObject.prototype._correctPlus=function(c){if(!c.htmlNode){return}var e=c.htmlNode.childNodes[0].childNodes[0].childNodes[0].lastChild;var h=c.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0];var a=this.lineArray;if((this.XMLsource)&&(!c.XMLload)){var a=this.plusArray;this._setSrc(h,this.iconURL+c.images[2]);if(this._txtimg){return(e.innerHTML="[+]")}}else{if((c.childsCount)||(c.unParsed)){if((c.htmlNode.childNodes[0].childNodes[1])&&(c.htmlNode.childNodes[0].childNodes[1].style.display!="none")){if(!c.wsign){var a=this.minusArray}this._setSrc(h,this.iconURL+c.images[1]);if(this._txtimg){return(e.innerHTML="[-]")}}else{if(!c.wsign){var a=this.plusArray}this._setSrc(h,this.iconURL+c.images[2]);if(this._txtimg){return(e.innerHTML="[+]")}}}else{this._setSrc(h,this.iconURL+c.images[0])}}var g=2;if(!c.treeNod.treeLinesOn){this._setSrc(e,this.imPath+a[3])}else{if(c.parentObject){g=this._getCountStatus(c.id,c.parentObject)}this._setSrc(e,this.imPath+a[g])}};dhtmlXTreeObject.prototype._correctLine=function(c){if(!c.htmlNode){return}var a=c.parentObject;if(a){if((this._getLineStatus(c.id,a)==0)||(!this.treeLinesOn)){for(var e=1;e<=c.childsCount;e++){if(!c.htmlNode.childNodes[0].childNodes[e]){break}c.htmlNode.childNodes[0].childNodes[e].childNodes[0].style.backgroundImage="";c.htmlNode.childNodes[0].childNodes[e].childNodes[0].style.backgroundRepeat=""}}else{for(var e=1;e<=c.childsCount;e++){if(!c.htmlNode.childNodes[0].childNodes[e]){break}c.htmlNode.childNodes[0].childNodes[e].childNodes[0].style.backgroundImage="url("+this.imPath+this.lineArray[5]+")";c.htmlNode.childNodes[0].childNodes[e].childNodes[0].style.backgroundRepeat="repeat-y"}}}};dhtmlXTreeObject.prototype._getCountStatus=function(c,a){if(a.childsCount<=1){if(a.id==this.rootId){return 4}else{return 0}}if(a.childNodes[0].id==c){if(a.id==this.rootId){return 2}else{return 1}}if(a.childNodes[a.childsCount-1].id==c){return 0}return 1};dhtmlXTreeObject.prototype._getLineStatus=function(c,a){if(a.childNodes[a.childsCount-1].id==c){return 0}return 1};dhtmlXTreeObject.prototype._HideShow=function(c,h){if((this.XMLsource)&&(!c.XMLload)){if(h==1){return}c.XMLload=1;this._loadDynXML(c.id);return}if(c.unParsed){this.reParse(c)}var g=c.htmlNode.childNodes[0].childNodes;var a=g.length;if(a>1){if(((g[1].style.display!="none")||(h==1))&&(h!=2)){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0";nodestyle="none"}else{nodestyle=""}for(var e=1;e<a;e++){g[e].style.display=nodestyle}}this._correctPlus(c)};dhtmlXTreeObject.prototype._getOpenState=function(a){if(!a.htmlNode){return 0}var c=a.htmlNode.childNodes[0].childNodes;if(c.length<=1){return 0}if(c[1].style.display!="none"){return 1}else{return -1}};dhtmlXTreeObject.prototype.onRowClick2=function(){var a=this.parentObject.treeNod;if(!a.callEvent("onDblClick",[this.parentObject.id,a])){return false}if((this.parentObject.closeble)&&(this.parentObject.closeble!="0")){a._HideShow(this.parentObject)}else{a._HideShow(this.parentObject,2)}if(a.checkEvent("onOpenEnd")){if(!a.xmlstate){a.callEvent("onOpenEnd",[this.parentObject.id,a._getOpenState(this.parentObject)])}else{a._oie_onXLE.push(a.onXLE);a.onXLE=a._epnFHe}}return false};dhtmlXTreeObject.prototype.onRowClick=function(){var a=this.parentObject.treeNod;if(!a.callEvent("onOpenStart",[this.parentObject.id,a._getOpenState(this.parentObject)])){return 0}if((this.parentObject.closeble)&&(this.parentObject.closeble!="0")){a._HideShow(this.parentObject)}else{a._HideShow(this.parentObject,2)}if(a.checkEvent("onOpenEnd")){if(!a.xmlstate){a.callEvent("onOpenEnd",[this.parentObject.id,a._getOpenState(this.parentObject)])}else{a._oie_onXLE.push(a.onXLE);a.onXLE=a._epnFHe}}};dhtmlXTreeObject.prototype._epnFHe=function(c,e,a){if(e!=this.rootId){this.callEvent("onOpenEnd",[e,c.getOpenState(e)])}c.onXLE=c._oie_onXLE.pop();if(!a&&!c._oie_onXLE.length){if(c.onXLE){c.onXLE(c,e)}}};dhtmlXTreeObject.prototype.onRowClickDown=function(c){c=c||window.event;var a=this.parentObject.treeNod;a._selectItem(this.parentObject,c)};dhtmlXTreeObject.prototype.getSelectedItemId=function(){var c=new Array();for(var a=0;a<this._selected.length;a++){c[a]=this._selected[a].id}return(c.join(this.dlmtr))};dhtmlXTreeObject.prototype._selectItem=function(l,m){if(this.checkEvent("onSelect")){this._onSSCFold=this.getSelectedItemId()}if((!this._amsel)||(!m)||((!m.ctrlKey)&&(!m.metaKey)&&(!m.shiftKey))){this._unselectItems()}if((l.i_sel)&&(this._amsel)&&(m)&&(m.ctrlKey||m.metaKey)){this._unselectItem(l)}else{if((!l.i_sel)&&((!this._amselS)||(this._selected.length==0)||(this._selected[0].parentObject==l.parentObject))){if((this._amsel)&&(m)&&(m.shiftKey)&&(this._selected.length!=0)&&(this._selected[this._selected.length-1].parentObject==l.parentObject)){var h=this._getIndex(this._selected[this._selected.length-1]);var g=this._getIndex(l);if(g<h){var o=h;h=g;g=o}for(var j=h;j<=g;j++){if(!l.parentObject.childNodes[j].i_sel){this._markItem(l.parentObject.childNodes[j])}}}else{this._markItem(l)}}}if(this.checkEvent("onSelect")){var n=this.getSelectedItemId();if(n!=this._onSSCFold){this.callEvent("onSelect",[n])}}};dhtmlXTreeObject.prototype._markItem=function(a){if(a.scolor){a.span.style.color=a.scolor}a.span.className="selectedTreeRow";a.i_sel=true;this._selected[this._selected.length]=a};dhtmlXTreeObject.prototype.getIndexById=function(c){var a=this._globalIdStorageFind(c);if(!a){return null}return this._getIndex(a)};dhtmlXTreeObject.prototype._getIndex=function(a){var e=a.parentObject;for(var c=0;c<e.childsCount;c++){if(e.childNodes[c]==a){return c}}};dhtmlXTreeObject.prototype._unselectItem=function(c){if((c)&&(c.i_sel)){c.span.className="standartTreeRow";if(c.acolor){c.span.style.color=c.acolor}c.i_sel=false;for(var a=0;a<this._selected.length;a++){if(!this._selected[a].i_sel){this._selected.splice(a,1);break}}}};dhtmlXTreeObject.prototype._unselectItems=function(){for(var a=0;a<this._selected.length;a++){var c=this._selected[a];c.span.className="standartTreeRow";if(c.acolor){c.span.style.color=c.acolor}c.i_sel=false}this._selected=new Array()};dhtmlXTreeObject.prototype.onRowSelect=function(h,g,l){h=h||window.event;var c=this.parentObject;if(g){c=g.parentObject}var a=c.treeNod;var j=a.getSelectedItemId();if((!h)||(!h.skipUnSel)){a._selectItem(c,h)}if(!l){if(c.actionHandler){c.actionHandler(c.id,j)}else{a.callEvent("onClick",[c.id,j])}}};dhtmlXTreeObject.prototype._correctCheckStates=function(h){if(!this.tscheck){return}if(!h){return}if(h.id==this.rootId){return}var e=h.childNodes;var c=0;var a=0;if(h.childsCount==0){return}for(var g=0;g<h.childsCount;g++){if(e[g].dscheck){continue}if(e[g].checkstate==0){c=1}else{if(e[g].checkstate==1){a=1}else{c=1;a=1;break}}}if((c)&&(a)){this._setCheck(h,"unsure")}else{if(c){this._setCheck(h,false)}else{this._setCheck(h,true)}}this._correctCheckStates(h.parentObject)};dhtmlXTreeObject.prototype.onCheckBoxClick=function(a){if(!this.treeNod.callEvent("onBeforeCheck",[this.parentObject.id,this.parentObject.checkstate])){return}if(this.parentObject.dscheck){return true}if(this.treeNod.tscheck){if(this.parentObject.checkstate==1){this.treeNod._setSubChecked(false,this.parentObject)}else{this.treeNod._setSubChecked(true,this.parentObject)}}else{if(this.parentObject.checkstate==1){this.treeNod._setCheck(this.parentObject,false)}else{this.treeNod._setCheck(this.parentObject,true)}}this.treeNod._correctCheckStates(this.parentObject.parentObject);return this.treeNod.callEvent("onCheck",[this.parentObject.id,this.parentObject.checkstate])};dhtmlXTreeObject.prototype._createItem=function(s,r,m){var u=document.createElement("table");u.cellSpacing=0;u.cellPadding=0;u.border=0;if(this.hfMode){u.style.tableLayout="fixed"}u.style.margin=0;u.style.padding=0;var l=document.createElement("tbody");var o=document.createElement("tr");var g=document.createElement("td");g.className="standartTreeImage";if(this._txtimg){var h=document.createElement("div");g.appendChild(h);h.className="dhx_tree_textSign"}else{var h=this._getImg(r.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}var e=document.createElement("td");var n=this._getImg(this.cBROf?this.rootId:r.id);n.checked=0;this._setSrc(n,this.imPath+this.checkArray[0]);n.style.width="18px";n.style.height="18px";if(!s){e.style.display="none"}e.appendChild(n);if((!this.cBROf)&&(n.tagName=="IMG")){n.align="absmiddle"}n.onclick=this.onCheckBoxClick;n.treeNod=this;n.parentObject=r;if(!window._KHTMLrv){e.width="20px"}else{e.width="16px"}var c=document.createElement("td");c.className="standartTreeImage";var j=this._getImg(this.timgen?r.id:this.rootId);j.onmousedown=this._preventNsDrag;j.ondragstart=this._preventNsDrag;j.border="0";if(this._aimgs){j.parentObject=r;if(j.tagName=="IMG"){j.align="absmiddle"}j.onclick=this.onRowSelect}if(!m){this._setSrc(j,this.iconURL+this.imageArray[0])}c.appendChild(j);j.style.padding=0;j.style.margin=0;if(this.timgen){c.style.width=j.style.width=this.def_img_x;j.style.height=this.def_img_y}else{j.style.width="0px";j.style.height="0px";if(_isOpera||window._KHTMLrv){c.style.display="none"}}var a=document.createElement("td");a.className="standartTreeRow";r.span=document.createElement("span");r.span.className="standartTreeRow";if(this.mlitems){r.span.style.width=this.mlitems;r.span.style.display="block"}else{a.noWrap=true}if(dhx4.isIE8){a.style.width="99999px"}else{if(!window._KHTMLrv){a.style.width="100%"}}r.span.innerHTML=r.label;a.appendChild(r.span);a.parentObject=r;g.parentObject=r;a.onclick=this.onRowSelect;g.onclick=this.onRowClick;a.ondblclick=this.onRowClick2;if(this.ettip){o.title=r.label}if(this.dragAndDropOff){if(this._aimgs){this.dragger.addDraggableItem(c,this);c.parentObject=r}this.dragger.addDraggableItem(a,this)}r.span.style.paddingLeft="5px";r.span.style.paddingRight="5px";a.style.verticalAlign="";a.style.fontSize="10pt";a.style.cursor=this.style_pointer;o.appendChild(g);o.appendChild(e);o.appendChild(c);o.appendChild(a);l.appendChild(o);u.appendChild(l);if(this.ehlt||this.checkEvent("onMouseIn")||this.checkEvent("onMouseOut")){o.onmousemove=this._itemMouseIn;o[(_isIE)?"onmouseleave":"onmouseout"]=this._itemMouseOut}return u};dhtmlXTreeObject.prototype.setImagePath=function(a){this.imPath=a;this.iconURL=a};dhtmlXTreeObject.prototype.setIconPath=function(a){this.iconURL=a};dhtmlXTreeObject.prototype._getLeafCount=function(g){var e=0;for(var c=0;c<g.childsCount;c++){if(g.childNodes[c].childsCount==0){e++}}return e};dhtmlXTreeObject.prototype._getChildCounterValue=function(c){var a=this._globalIdStorageFind(c);if(!a){return 0}if((a.unParsed)||((!a.XMLload)&&(this.XMLsource))){return a._acc}switch(this.childCalc){case 1:return a.childsCount;break;case 2:return this._getLeafCount(a);break;case 3:return a._acc;break;case 4:return a._acc;break}};dhtmlXTreeObject.prototype._fixChildCountLabel=function(j,g){if(this.childCalc==null){return}if((j.unParsed)||((!j.XMLload)&&(this.XMLsource))){if(j._acc){j.span.innerHTML=j.label+this.htmlcA+j._acc+this.htmlcB}else{j.span.innerHTML=j.label}return}switch(this.childCalc){case 1:if(j.childsCount!=0){j.span.innerHTML=j.label+this.htmlcA+j.childsCount+this.htmlcB}else{j.span.innerHTML=j.label}break;case 2:var h=this._getLeafCount(j);if(h!=0){j.span.innerHTML=j.label+this.htmlcA+h+this.htmlcB}else{j.span.innerHTML=j.label}break;case 3:if(j.childsCount!=0){var e=0;for(var c=0;c<j.childsCount;c++){if(!j.childNodes[c]._acc){j.childNodes[c]._acc=0}e+=j.childNodes[c]._acc*1}e+=j.childsCount*1;j.span.innerHTML=j.label+this.htmlcA+e+this.htmlcB;j._acc=e}else{j.span.innerHTML=j.label;j._acc=0}if((j.parentObject)&&(j.parentObject!=this.htmlNode)){this._fixChildCountLabel(j.parentObject)}break;case 4:if(j.childsCount!=0){var e=0;for(var c=0;c<j.childsCount;c++){if(!j.childNodes[c]._acc){j.childNodes[c]._acc=1}e+=j.childNodes[c]._acc*1}j.span.innerHTML=j.label+this.htmlcA+e+this.htmlcB;j._acc=e}else{j.span.innerHTML=j.label;j._acc=1}if((j.parentObject)&&(j.parentObject!=this.htmlNode)){this._fixChildCountLabel(j.parentObject)}break}};dhtmlXTreeObject.prototype.setChildCalcMode=function(a){switch(a){case"child":this.childCalc=1;break;case"leafs":this.childCalc=2;break;case"childrec":this.childCalc=3;break;case"leafsrec":this.childCalc=4;break;case"disabled":this.childCalc=null;break;default:this.childCalc=4}};dhtmlXTreeObject.prototype.setChildCalcHTML=function(c,a){this.htmlcA=c;this.htmlcB=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(c){var a=this._globalIdStorageFind(c);if(!a){return 0}this._xopenAll(a)};dhtmlXTreeObject.prototype.getOpenState=function(c){var a=this._globalIdStorageFind(c);if(!a){return""}return this._getOpenState(a)};dhtmlXTreeObject.prototype.closeAllItems=function(c){if(c===window.undefined){c=this.rootId}var a=this._globalIdStorageFind(c);if(!a){return 0}this._xcloseAll(a);this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"};dhtmlXTreeObject.prototype.setUserData=function(g,c,e){var a=this._globalIdStorageFind(g,0,true);if(!a){return}if(c=="hint"){a.htmlNode.childNodes[0].childNodes[0].title=e}if(typeof(a.userData["t_"+c])=="undefined"){if(!a._userdatalist){a._userdatalist=c}else{a._userdatalist+=","+c}}a.userData["t_"+c]=e};dhtmlXTreeObject.prototype.getUserData=function(e,c){var a=this._globalIdStorageFind(e,0,true);if(!a){return}return a.userData["t_"+c]};dhtmlXTreeObject.prototype.getItemColor=function(e){var a=this._globalIdStorageFind(e);if(!a){return 0}var c=new Object();if(a.acolor){c.acolor=a.acolor}if(a.scolor){c.scolor=a.scolor}return c};dhtmlXTreeObject.prototype.setItemColor=function(e,c,g){if((e)&&(e.span)){var a=e}else{var a=this._globalIdStorageFind(e)}if(!a){return 0}else{if(a.i_sel){if(g||c){a.span.style.color=g||c}}else{if(c){a.span.style.color=c}}if(g){a.scolor=g}if(c){a.acolor=c}}};dhtmlXTreeObject.prototype.getItemText=function(c){var a=this._globalIdStorageFind(c);if(!a){return 0}return(a.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML)};dhtmlXTreeObject.prototype.getParentId=function(c){var a=this._globalIdStorageFind(c);if((!a)||(!a.parentObject)){return""}return a.parentObject.id};dhtmlXTreeObject.prototype.changeItemId=function(c,e){if(c==e){return}var a=this._globalIdStorageFind(c);if(!a){return 0}a.id=e;a.span.contextMenuId=e;this._idpull[e]=this._idpull[c];delete this._idpull[c]};dhtmlXTreeObject.prototype.doCut=function(){if(this.nodeCut){this.clearCut()}this.nodeCut=(new Array()).concat(this._selected);for(var a=0;a<this.nodeCut.length;a++){var c=this.nodeCut[a];c._cimgs=new Array();c._cimgs[0]=c.images[0];c._cimgs[1]=c.images[1];c._cimgs[2]=c.images[2];c.images[0]=c.images[1]=c.images[2]=this.cutImage;this._correctPlus(c)}};dhtmlXTreeObject.prototype.doPaste=function(e){var a=this._globalIdStorageFind(e);if(!a){return 0}for(var c=0;c<this.nodeCut.length;c++){if(this._checkPNodes(a,this.nodeCut[c])){continue}this._moveNode(this.nodeCut[c],a)}this.clearCut()};dhtmlXTreeObject.prototype.clearCut=function(){for(var a=0;a<this.nodeCut.length;a++){var c=this.nodeCut[a];c.images[0]=c._cimgs[0];c.images[1]=c._cimgs[1];c.images[2]=c._cimgs[2];this._correctPlus(c)}this.nodeCut=new Array()};dhtmlXTreeObject.prototype._moveNode=function(a,c){var j=this.dadmodec;if(j==1){var h=c;if(this.dadmodefix<0){while(true){h=this._getPrevNode(h);if((h==-1)){h=this.htmlNode;break}if((h.tr==0)||(h.tr.style.display=="")||(!h.parentObject)){break}}var g=h;var e=c}else{if((h.tr)&&(h.tr.nextSibling)&&(h.tr.nextSibling.nodem)&&(this._getOpenState(h)<1)){h=h.tr.nextSibling.nodem}else{h=this._getNextNode(h);if((h==-1)){h=this.htmlNode}}var e=h;var g=c}if(this._getNodeLevel(g,0)>this._getNodeLevel(e,0)){if(!this.dropLower){return this._moveNodeTo(a,g.parentObject)}else{if(e.id!=this.rootId){return this._moveNodeTo(a,e.parentObject,e)}else{return this._moveNodeTo(a,this.htmlNode,null)}}}else{return this._moveNodeTo(a,e.parentObject,e)}}else{return this._moveNodeTo(a,c)}};dhtmlXTreeObject.prototype._fixNodesCollection=function(m,j){var c=0;var g=0;var l=m.childNodes;var a=m.childsCount-1;if(j==l[a]){return}for(var h=0;h<a;h++){if(l[h]==l[a]){l[h]=l[h+1];l[h+1]=l[a]}}for(var h=0;h<a+1;h++){if(c){var e=l[h];l[h]=c;c=e}else{if(l[h]==j){c=l[h];l[h]=l[a]}}}};dhtmlXTreeObject.prototype._recreateBranch=function(j,m,h,a){var c;var n="";if(h){for(c=0;c<m.childsCount;c++){if(m.childNodes[c]==h){break}}if(c!=0){h=m.childNodes[c-1]}else{n="TOP";h=""}}var e=this._onradh;this._onradh=null;var l=this._attachChildNode(m,j.id,j.label,0,j.images[0],j.images[1],j.images[2],n,0,h);l._userdatalist=j._userdatalist;l.userData=j.userData.clone();if(j._attrs){l._attrs={};for(var g in j._attrs){l._attrs[g]=j._attrs[g]}}l.XMLload=j.XMLload;if(e){this._onradh=e;this._onradh(l.id)}if(j.treeNod.dpcpy){j.treeNod._globalIdStorageFind(j.id)}else{l.unParsed=j.unParsed}this._correctPlus(l);for(var c=0;c<j.childsCount;c++){this._recreateBranch(j.childNodes[c],l,0,1)}if((!a)&&(this.childCalc)){this._redrawFrom(this,m)}return l};dhtmlXTreeObject.prototype._moveNodeTo=function(s,v,r){if(s.treeNod._nonTrivialNode){return s.treeNod._nonTrivialNode(this,v,r,s)}if(this._checkPNodes(v,s)){return false}if(v.mytype){var l=(s.treeNod.lWin!=v.lWin)}else{var l=(s.treeNod.lWin!=v.treeNod.lWin)}if(!this.callEvent("onDrag",[s.id,v.id,(r?r.id:null),s.treeNod,v.treeNod])){return false}if((v.XMLload==0)&&(this.XMLsource)){v.XMLload=1;this._loadDynXML(v.id)}this.openItem(v.id);var e=s.treeNod;var n=s.parentObject.childsCount;var o=s.parentObject;if((l)||(e.dpcpy)){var g=s.id;s=this._recreateBranch(s,v,r);if(!e.dpcpy){e.deleteItem(g)}}else{var h=v.childsCount;var u=v.childNodes;if(h==0){v._open=true}e._unselectItem(s);u[h]=s;s.treeNod=v.treeNod;v.childsCount++;var m=this._drawNewTr(u[h].htmlNode);if(!r){v.htmlNode.childNodes[0].appendChild(m);if(this.dadmode==1){this._fixNodesCollection(v,r)}}else{v.htmlNode.childNodes[0].insertBefore(m,r.tr);this._fixNodesCollection(v,r);u=v.childNodes}}if((!e.dpcpy)&&(!l)){var a=s.tr;if((document.all)&&(navigator.appVersion.search(/MSIE\ 5\.0/gi)!=-1)){window.setTimeout(function(){a.parentNode.removeChild(a)},250)}else{s.parentObject.htmlNode.childNodes[0].removeChild(s.tr)}if((!r)||(v!=s.parentObject)){for(var j=0;j<o.childsCount;j++){if(o.childNodes[j].id==s.id){o.childNodes[j]=0;break}}}else{o.childNodes[o.childsCount-1]=0}e._compressChildList(o.childsCount,o.childNodes);o.childsCount--}if((!l)&&(!e.dpcpy)){s.tr=m;m.nodem=s;s.parentObject=v;if(e!=v.treeNod){if(s.treeNod._registerBranch(s,e)){return}this._clearStyles(s);this._redrawFrom(this,s.parentObject);if(this._onradh){this._onradh(s.id)}}this._correctPlus(v);this._correctLine(v);this._correctLine(s);this._correctPlus(s);if(r){this._correctPlus(r)}else{if(v.childsCount>=2){this._correctPlus(u[v.childsCount-2]);this._correctLine(u[v.childsCount-2])}}this._correctPlus(u[v.childsCount-1]);if(this.tscheck){this._correctCheckStates(v)}if(e.tscheck){e._correctCheckStates(o)}}if(n>1){e._correctPlus(o.childNodes[n-2]);e._correctLine(o.childNodes[n-2])}e._correctPlus(o);e._correctLine(o);this._fixChildCountLabel(v);e._fixChildCountLabel(o);this.callEvent("onDrop",[s.id,v.id,(r?r.id:null),e,v.treeNod]);return s.id};dhtmlXTreeObject.prototype._clearStyles=function(a){if(!a.htmlNode){return}var g=a.htmlNode.childNodes[0].childNodes[0].childNodes[1];var c=g.nextSibling.nextSibling;a.span.innerHTML=a.label;a.i_sel=false;if(a._aimgs){this.dragger.removeDraggableItem(g.nextSibling)}if(this.checkBoxOff){g.childNodes[0].style.display="";g.childNodes[0].onclick=this.onCheckBoxClick;this._setSrc(g.childNodes[0],this.imPath+this.checkArray[a.checkstate])}else{g.style.display="none"}g.childNodes[0].treeNod=this;this.dragger.removeDraggableItem(c);if(this.dragAndDropOff){this.dragger.addDraggableItem(c,this)}if(this._aimgs){this.dragger.addDraggableItem(g.nextSibling,this)}c.childNodes[0].className="standartTreeRow";c.onclick=this.onRowSelect;c.ondblclick=this.onRowClick2;g.previousSibling.onclick=this.onRowClick;this._correctLine(a);this._correctPlus(a);for(var e=0;e<a.childsCount;e++){this._clearStyles(a.childNodes[e])}};dhtmlXTreeObject.prototype._registerBranch=function(c,a){if(a){a._globalIdStorageSub(c.id)}c.id=this._globalIdStorageAdd(c.id,c);c.treeNod=this;for(var e=0;e<c.childsCount;e++){this._registerBranch(c.childNodes[e],a)}return 0};dhtmlXTreeObject.prototype.enableThreeStateCheckboxes=function(a){this.tscheck=dhx4.s2b(a)};dhtmlXTreeObject.prototype.setOnMouseInHandler=function(a){this.ehlt=true;this.attachEvent("onMouseIn",a)};dhtmlXTreeObject.prototype.setOnMouseOutHandler=function(a){this.ehlt=true;this.attachEvent("onMouseOut",a)};dhtmlXTreeObject.prototype.enableMercyDrag=function(a){this.dpcpy=dhx4.s2b(a)};dhtmlXTreeObject.prototype.enableTreeImages=function(a){this.timgen=dhx4.s2b(a)};dhtmlXTreeObject.prototype.enableFixedMode=function(a){this.hfMode=dhx4.s2b(a)};dhtmlXTreeObject.prototype.enableCheckBoxes=function(c,a){this.checkBoxOff=dhx4.s2b(c);this.cBROf=(!(this.checkBoxOff||dhx4.s2b(a)))};dhtmlXTreeObject.prototype.setStdImages=function(a,e,c){this.imageArray[0]=a;this.imageArray[1]=e;this.imageArray[2]=c};dhtmlXTreeObject.prototype.enableTreeLines=function(a){this.treeLinesOn=dhx4.s2b(a)};dhtmlXTreeObject.prototype.setImageArrays=function(g,a,j,h,e,c){switch(g){case"plus":this.plusArray[0]=a;this.plusArray[1]=j;this.plusArray[2]=h;this.plusArray[3]=e;this.plusArray[4]=c;break;case"minus":this.minusArray[0]=a;this.minusArray[1]=j;this.minusArray[2]=h;this.minusArray[3]=e;this.minusArray[4]=c;break}};dhtmlXTreeObject.prototype.openItem=function(c){this.skipLock=true;var a=this._globalIdStorageFind(c);if(!a){return 0}else{return this._openItem(a)}this.skipLock=false};dhtmlXTreeObject.prototype._openItem=function(a){var c=this._getOpenState(a);if((c<0)||(((this.XMLsource)&&(!a.XMLload)))){if(!this.callEvent("onOpenStart",[a.id,c])){return 0}this._HideShow(a,2);if(this.checkEvent("onOpenEnd")){if(this.onXLE==this._epnFHe){this._epnFHe(this,a.id,true)}if(!this.xmlstate||!this.XMLsource){this.callEvent("onOpenEnd",[a.id,this._getOpenState(a)])}else{this._oie_onXLE.push(this.onXLE);this.onXLE=this._epnFHe}}}else{if(this._srnd){this._HideShow(a,2)}}if(a.parentObject&&!this._skip_open_parent){this._openItem(a.parentObject)}};dhtmlXTreeObject.prototype.closeItem=function(c){if(this.rootId==c){return 0}this.skipLock=true;var a=this._globalIdStorageFind(c);if(!a){return 0}if(a.closeble){this._HideShow(a,1)}this.skipLock=false};dhtmlXTreeObject.prototype.getLevel=function(c){var a=this._globalIdStorageFind(c);if(!a){return 0}return this._getNodeLevel(a,0)};dhtmlXTreeObject.prototype.setItemCloseable=function(e,a){a=dhx4.s2b(a);if((e)&&(e.span)){var c=e}else{var c=this._globalIdStorageFind(e)}if(!c){return 0}c.closeble=a};dhtmlXTreeObject.prototype._getNodeLevel=function(a,c){if(a.parentObject){return this._getNodeLevel(a.parentObject,c+1)}return(c)};dhtmlXTreeObject.prototype.hasChildren=function(c){var a=this._globalIdStorageFind(c);if(!a){return 0}else{if((this.XMLsource)&&(!a.XMLload)){return true}else{return a.childsCount}}};dhtmlXTreeObject.prototype._getLeafCount=function(g){var e=0;for(var c=0;c<g.childsCount;c++){if(g.childNodes[c].childsCount==0){e++}}return e};dhtmlXTreeObject.prototype.setItemText=function(g,e,c){var a=this._globalIdStorageFind(g);if(!a){return 0}a.label=e;a.span.innerHTML=e;if(this.childCalc){this._fixChildCountLabel(a)}a.span.parentNode.parentNode.title=c||""};dhtmlXTreeObject.prototype.getItemTooltip=function(c){var a=this._globalIdStorageFind(c);if(!a){return""}return(a.span.parentNode.parentNode._dhx_title||a.span.parentNode.parentNode.title||"")};dhtmlXTreeObject.prototype.refreshItem=function(c){if(!c){c=this.rootId}var a=this._globalIdStorageFind(c);this._dynDeleteBranches[c]=(this._dynDeleteBranches[c]||0)+1;this._loadDynXML(c)};dhtmlXTreeObject.prototype.setItemImage2=function(g,a,h,e){var c=this._globalIdStorageFind(g);if(!c){return 0}c.images[1]=h;c.images[2]=e;c.images[0]=a;this._correctPlus(c)};dhtmlXTreeObject.prototype.setItemImage=function(e,a,g){var c=this._globalIdStorageFind(e);if(!c){return 0}if(g){c.images[1]=a;c.images[2]=g}else{c.images[0]=a}this._correctPlus(c)};dhtmlXTreeObject.prototype.getSubItems=function(e){var a=this._globalIdStorageFind(e,0,1);if(!a){return 0}if(a.unParsed){return(this._getSubItemsXML(a.unParsed))}var c="";for(i=0;i<a.childsCount;i++){if(!c){c=""+a.childNodes[i].id}else{c+=this.dlmtr+a.childNodes[i].id}}return c};dhtmlXTreeObject.prototype._getAllScraggyItems=function(e){var g="";for(var c=0;c<e.childsCount;c++){if((e.childNodes[c].unParsed)||(e.childNodes[c].childsCount>0)){if(e.childNodes[c].unParsed){var a=this._getAllScraggyItemsXML(e.childNodes[c].unParsed,1)}else{var a=this._getAllScraggyItems(e.childNodes[c])}if(a){if(g){g+=this.dlmtr+a}else{g=a}}}else{if(!g){g=""+e.childNodes[c].id}else{g+=this.dlmtr+e.childNodes[c].id}}}return g};dhtmlXTreeObject.prototype._getAllFatItems=function(e){var g="";for(var c=0;c<e.childsCount;c++){if((e.childNodes[c].unParsed)||(e.childNodes[c].childsCount>0)){if(!g){g=""+e.childNodes[c].id}else{g+=this.dlmtr+e.childNodes[c].id}if(e.childNodes[c].unParsed){var a=this._getAllFatItemsXML(e.childNodes[c].unParsed,1)}else{var a=this._getAllFatItems(e.childNodes[c])}if(a){g+=this.dlmtr+a}}}return g};dhtmlXTreeObject.prototype._getAllSubItems=function(j,h,g){if(g){c=g}else{var c=this._globalIdStorageFind(j)}if(!c){return 0}h="";for(var e=0;e<c.childsCount;e++){if(!h){h=""+c.childNodes[e].id}else{h+=this.dlmtr+c.childNodes[e].id}var a=this._getAllSubItems(0,h,c.childNodes[e]);if(a){h+=this.dlmtr+a}}if(c.unParsed){h=this._getAllSubItemsXML(j,h,c.unParsed)}return h};dhtmlXTreeObject.prototype.selectItem=function(g,e,c){e=dhx4.s2b(e);var a=this._globalIdStorageFind(g);if((!a)||(!a.parentObject)){return 0}if(this.XMLloadingWarning){a.parentObject.openMe=1}else{this._openItem(a.parentObject)}var h=null;if(c){h=new Object;h.ctrlKey=true;if(a.i_sel){h.skipUnSel=true}}if(e){this.onRowSelect(h,a.htmlNode.childNodes[0].childNodes[0].childNodes[3],false)}else{this.onRowSelect(h,a.htmlNode.childNodes[0].childNodes[0].childNodes[3],true)}};dhtmlXTreeObject.prototype.getSelectedItemText=function(){var c=new Array();for(var a=0;a<this._selected.length;a++){c[a]=this._selected[a].span.innerHTML}return(c.join(this.dlmtr))};dhtmlXTreeObject.prototype._compressChildList=function(a,e){a--;for(var c=0;c<a;c++){if(e[c]==0){e[c]=e[c+1];e[c+1]=0}}};dhtmlXTreeObject.prototype._deleteNode=function(l,h,n){if((!h)||(!h.parentObject)){return 0}var a=0;var c=0;if(h.tr.nextSibling){a=h.tr.nextSibling.nodem}if(h.tr.previousSibling){c=h.tr.previousSibling.nodem}var j=h.parentObject;var e=j.childsCount;var m=j.childNodes;for(var g=0;g<e;g++){if(m[g].id==l){if(!n){j.htmlNode.childNodes[0].removeChild(m[g].tr)}m[g]=0;break}}this._compressChildList(e,m);if(!n){j.childsCount--}if(a){this._correctPlus(a);this._correctLine(a)}if(c){this._correctPlus(c);this._correctLine(c)}if(this.tscheck){this._correctCheckStates(j)}if(!n){this._globalIdStorageRecSub(h)}};dhtmlXTreeObject.prototype.setCheck=function(e,c){var a=this._globalIdStorageFind(e,0,1);if(!a){return}if(c==="unsure"){this._setCheck(a,c)}else{c=dhx4.s2b(c);if((this.tscheck)&&(this.smcheck)){this._setSubChecked(c,a)}else{this._setCheck(a,c)}}if(this.smcheck){this._correctCheckStates(a.parentObject)}};dhtmlXTreeObject.prototype._setCheck=function(a,e){if(!a){return}if(((a.parentObject._r_logic)||(this._frbtr))&&(e)){if(this._frbtrs){if(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 g=a.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];if(e=="unsure"){a.checkstate=2}else{if(e){a.checkstate=1}else{a.checkstate=0}}if(a.dscheck){a.checkstate=a.dscheck}this._setSrc(g,this.imPath+((a.parentObject._r_logic||this._frbtr)?this.radioArray:this.checkArray)[a.checkstate])};dhtmlXTreeObject.prototype.setSubChecked=function(e,c){var a=this._globalIdStorageFind(e);this._setSubChecked(c,a);this._correctCheckStates(a.parentObject)};dhtmlXTreeObject.prototype._setSubChecked=function(e,a){e=dhx4.s2b(e);if(!a){return}if(((a.parentObject._r_logic)||(this._frbtr))&&(e)){for(var c=0;c<a.parentObject.childsCount;c++){this._setSubChecked(0,a.parentObject.childNodes[c])}}if(a.unParsed){this._setSubCheckedXML(e,a.unParsed)}if(a._r_logic||this._frbtr){this._setSubChecked(e,a.childNodes[0])}else{for(var c=0;c<a.childsCount;c++){this._setSubChecked(e,a.childNodes[c])}}var g=a.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];if(e){a.checkstate=1}else{a.checkstate=0}if(a.dscheck){a.checkstate=a.dscheck}this._setSrc(g,this.imPath+((a.parentObject._r_logic||this._frbtr)?this.radioArray:this.checkArray)[a.checkstate])};dhtmlXTreeObject.prototype.isItemChecked=function(c){var a=this._globalIdStorageFind(c);if(!a){return}return a.checkstate};dhtmlXTreeObject.prototype.deleteChildItems=function(g){var a=this._globalIdStorageFind(g);if(!a){return}var c=a.childsCount;for(var e=0;e<c;e++){this._deleteNode(a.childNodes[0].id,a.childNodes[0])}};dhtmlXTreeObject.prototype.deleteItem=function(e,a){if((!this._onrdlh)||(this._onrdlh(e))){var c=this._deleteItem(e,a);if(c){this._fixChildCountLabel(c)}}this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"};dhtmlXTreeObject.prototype._deleteItem=function(j,c,h){c=dhx4.s2b(c);var a=this._globalIdStorageFind(j);if(!a){return}var e=this.getParentId(j);var g=a.parentObject;this._deleteNode(j,a,h);if(this._editCell&&this._editCell.id==j){this._editCell=null}this._correctPlus(g);this._correctLine(g);if((c)&&(e!=this.rootId)){this.selectItem(e,1)}return g};dhtmlXTreeObject.prototype._globalIdStorageRecSub=function(a){for(var c=0;c<a.childsCount;c++){this._globalIdStorageRecSub(a.childNodes[c]);this._globalIdStorageSub(a.childNodes[c].id)}this._globalIdStorageSub(a.id);var e=a;e.span=null;e.tr.nodem=null;e.tr=null;e.htmlNode=null};dhtmlXTreeObject.prototype.insertNewNext=function(m,r,o,e,j,h,g,c,a){var l=this._globalIdStorageFind(m);if((!l)||(!l.parentObject)){return(0)}var n=this._attachChildNode(0,r,o,e,j,h,g,c,a,l);if((!this.XMLloadingWarning)&&(this.childCalc)){this._fixChildCountLabel(l.parentObject)}return n};dhtmlXTreeObject.prototype.getItemIdByIndex=function(e,a){var c=this._globalIdStorageFind(e);if((!c)||(a>=c.childsCount)){return null}return c.childNodes[a].id};dhtmlXTreeObject.prototype.getChildItemIdByIndex=function(e,a){var c=this._globalIdStorageFind(e);if((!c)||(a>=c.childsCount)){return null}return c.childNodes[a].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.selectionBar.style.display="none";this.allTree.className=this.allTree.className.replace(" selectionBox","")};dhtmlXTreeObject.prototype.enableDragAndDrop=function(c,a){if(c=="temporary_disabled"){this.dADTempOff=false;c=true}else{this.dADTempOff=true}this.dragAndDropOff=dhx4.s2b(c);if(this.dragAndDropOff){this.dragger.addDragLanding(this.allTree,this)}if(arguments.length>1){this._ddronr=(!dhx4.s2b(a))}};dhtmlXTreeObject.prototype._setMove=function(h,e,l){if(h.parentObject.span){var g=dhx4.absTop(h);var c=dhx4.absTop(this.allTree)-this.allTree.scrollTop;this.dadmodec=this.dadmode;this.dadmodefix=0;if(this.dadmode==2){var j=l-g+(document.body.scrollTop||document.documentElement.scrollTop)-2-h.offsetHeight/2;if((Math.abs(j)-h.offsetHeight/6)>0){this.dadmodec=1;if(j<0){this.dadmodefix=0-h.offsetHeight}}else{this.dadmodec=0}}if(this.dadmodec==0){var a=h.parentObject.span;a.className+=" dragAndDropRow";this._lastMark=a}else{this._clearMove();this.selectionBar.style.top=(g-c+((parseInt(h.parentObject.span.parentNode.previousSibling.childNodes[0].style.height)||18)-1)+this.dadmodefix)+"px";this.selectionBar.style.left="5px";if(this.allTree.offsetWidth>20){this.selectionBar.style.width=(this.allTree.offsetWidth-(_isFF?30:25))+"px"}this.selectionBar.style.display=""}this._autoScroll(null,g,c)}};dhtmlXTreeObject.prototype._autoScroll=function(e,c,a){if(this.autoScroll){if(e){c=dhx4.absTop(e);a=dhx4.absTop(this.allTree)-this.allTree.scrollTop}if((c-a-parseInt(this.allTree.scrollTop))>(parseInt(this.allTree.offsetHeight)-50)){this.allTree.scrollTop=parseInt(this.allTree.scrollTop)+20}if((c-a)<(parseInt(this.allTree.scrollTop)+30)){this.allTree.scrollTop=parseInt(this.allTree.scrollTop)-20}}};dhtmlXTreeObject.prototype._createDragNode=function(j,h){if(!this.dADTempOff){return null}var g=j.parentObject;if(!this.callEvent("onBeforeDrag",[g.id,h])){return null}if(!g.i_sel){this._selectItem(g,h)}this._checkMSelectionLogic();var c=document.createElement("div");var l=new Array();if(this._itim_dg){for(var a=0;a<this._selected.length;a++){l[a]="<table cellspacing='0' cellpadding='0'><tr><td><img width='18px' height='18px' src='"+this._getSrc(this._selected[a].span.parentNode.previousSibling.childNodes[0])+"'></td><td>"+this._selected[a].span.innerHTML+"</td></tr></table>"}}else{l=this.getSelectedItemText().split(this.dlmtr)}c.innerHTML=l.join("");c.style.position="absolute";c.className="dragSpanDiv";this._dragged=(new Array()).concat(this._selected);return c};dhtmlXTreeObject.prototype._focusNode=function(a){var c=dhx4.absTop(a.htmlNode)-dhx4.absTop(this.allTree);if((c>(this.allTree.offsetHeight-30))||(c<0)){this.allTree.scrollTop=c+this.allTree.scrollTop}};dhtmlXTreeObject.prototype._preventNsDrag=function(a){if((a)&&(a.preventDefault)){a.preventDefault();return false}return false};dhtmlXTreeObject.prototype._drag=function(l,m,a){if(this._autoOpenTimer){clearTimeout(this._autoOpenTimer)}if(!a.parentObject){a=this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];this.dadmodec=0}this._clearMove();var j=l.parentObject.treeNod;if((j)&&(j._clearMove)){j._clearMove("")}if((!this.dragMove)||(this.dragMove())){if((!j)||(!j._clearMove)||(!j._dragged)){var g=new Array(l.parentObject)}else{var g=j._dragged}var c=a.parentObject;for(var h=0;h<g.length;h++){var e=this._moveNode(g[h],c);if((this.dadmodec)&&(e!==false)){c=this._globalIdStorageFind(e,true,true)}if((e)&&(!this._sADnD)){this.selectItem(e,0,1)}}}if(j){j._dragged=new Array()}};dhtmlXTreeObject.prototype._dragIn=function(g,c,j,h){if(!this.dADTempOff){return 0}var l=c.parentObject;var a=g.parentObject;if((!a)&&(this._ddronr)){return}if(!this.callEvent("onDragIn",[l.id,a?a.id:null,l.treeNod,this])){if(a){this._autoScroll(g)}return 0}if(!a){this.allTree.className+=" selectionBox"}else{if(l.childNodes==null){this._setMove(g,j,h);return g}var n=l.treeNod;for(var e=0;e<n._dragged.length;e++){if(this._checkPNodes(a,n._dragged[e])){this._autoScroll(g);return 0}}this.selectionBar.parentNode.removeChild(this.selectionBar);a.span.parentNode.appendChild(this.selectionBar);this._setMove(g,j,h);if(this._getOpenState(a)<=0){var m=this;this._autoOpenId=a.id;this._autoOpenTimer=window.setTimeout(function(){m._autoOpenItem(null,m);m=null},1000)}}return g};dhtmlXTreeObject.prototype._autoOpenItem=function(c,a){a.openItem(a._autoOpenId)};dhtmlXTreeObject.prototype._dragOut=function(a){this._clearMove();if(this._autoOpenTimer){clearTimeout(this._autoOpenTimer)}};dhtmlXTreeObject.prototype._getNextNode=function(a,c){if((!c)&&(a.childsCount)){return a.childNodes[0]}if(a==this.htmlNode){return -1}if((a.tr)&&(a.tr.nextSibling)&&(a.tr.nextSibling.nodem)){return a.tr.nextSibling.nodem}return this._getNextNode(a.parentObject,true)};dhtmlXTreeObject.prototype._lastChild=function(a){if(a.childsCount){return this._lastChild(a.childNodes[a.childsCount-1])}else{return a}};dhtmlXTreeObject.prototype._getPrevNode=function(a,c){if((a.tr)&&(a.tr.previousSibling)&&(a.tr.previousSibling.nodem)){return this._lastChild(a.tr.previousSibling.nodem)}if(a.parentObject){return a.parentObject}else{return -1}};dhtmlXTreeObject.prototype.findItem=function(a,e,c){var g=this._findNodeByLabel(a,e,(c?this.htmlNode:null));if(g){this.selectItem(g.id,true);this._focusNode(g);return g.id}else{return null}};dhtmlXTreeObject.prototype.findItemIdByLabel=function(a,e,c){var g=this._findNodeByLabel(a,e,(c?this.htmlNode:null));if(g){return g.id}else{return null}};dhtmlXTreeObject.prototype.findStrInXML=function(c,e,h){if(!c.childNodes&&c.item){return this.findStrInJSON(c,e,h)}if(!c.childNodes){return false}for(var a=0;a<c.childNodes.length;a++){if(c.childNodes[a].nodeType==1){var g=c.childNodes[a].getAttribute(e);if(!g&&c.childNodes[a].tagName=="itemtext"){g=c.childNodes[a].firstChild.data}if((g)&&(g.toLowerCase().search(h)!=-1)){return true}if(this.findStrInXML(c.childNodes[a],e,h)){return true}}}return false};dhtmlXTreeObject.prototype.findStrInJSON=function(c,e,h){for(var a=0;a<c.item.length;a++){var g=c.item[a].text;if((g)&&(g.toLowerCase().search(h)!=-1)){return true}if(c.item[a].item&&this.findStrInJSON(c.item[a],e,h)){return true}}return false};dhtmlXTreeObject.prototype._findNodeByLabel=function(a,h,g){var a=a.replace(new RegExp("^( )+"),"").replace(new RegExp("( )+$"),"");a=new RegExp(a.replace(/([\^\.\?\*\+\\\[\]\(\)]{1})/gi,"\\$1").replace(/ /gi,".*"),"gi");if(!g){g=this._selected[0];if(!g){g=this.htmlNode}}var c=g;if(!h){if((g.unParsed)&&(this.findStrInXML(g.unParsed.d,"text",a))){this.reParse(g)}g=this._getNextNode(c);if(g==-1){g=this.htmlNode.childNodes[0]}}else{var e=this._getPrevNode(c);if(e==-1){e=this._lastChild(this.htmlNode)}if((e.unParsed)&&(this.findStrInXML(e.unParsed.d,"text",a))){this.reParse(e);g=this._getPrevNode(c)}else{g=e}if(g==-1){g=this._lastChild(this.htmlNode)}}while((g)&&(g!=c)){if((g.label)&&(g.label.search(a)!=-1)){return(g)}if(!h){if(g==-1){if(c==this.htmlNode){break}g=this.htmlNode.childNodes[0]}if((g.unParsed)&&(this.findStrInXML(g.unParsed.d,"text",a))){this.reParse(g)}g=this._getNextNode(g);if(g==-1){g=this.htmlNode}}else{var e=this._getPrevNode(g);if(e==-1){e=this._lastChild(this.htmlNode)}if((e.unParsed)&&(this.findStrInXML(e.unParsed.d,"text",a))){this.reParse(e);g=this._getPrevNode(g)}else{g=e}if(g==-1){g=this._lastChild(this.htmlNode)}}}return null};dhtmlXTreeObject.prototype.moveItem=function(m,c,n,a){var h=this._globalIdStorageFind(m);if(!h){return(0)}var j=null;switch(c){case"right":alert("Not supported yet");break;case"item_child":var e=(a||this)._globalIdStorageFind(n);if(!e){return(0)}j=(a||this)._moveNodeTo(h,e,0);break;case"item_sibling":var e=(a||this)._globalIdStorageFind(n);if(!e){return(0)}j=(a||this)._moveNodeTo(h,e.parentObject,e);break;case"item_sibling_next":var e=(a||this)._globalIdStorageFind(n);if(!e){return(0)}if((e.tr)&&(e.tr.nextSibling)&&(e.tr.nextSibling.nodem)){j=(a||this)._moveNodeTo(h,e.parentObject,e.tr.nextSibling.nodem)}else{j=(a||this)._moveNodeTo(h,e.parentObject)}break;case"left":if(h.parentObject.parentObject){j=this._moveNodeTo(h,h.parentObject.parentObject,h.parentObject)}break;case"up":var l=this._getPrevNode(h);if((l==-1)||(!l.parentObject)){return null}j=this._moveNodeTo(h,l.parentObject,l);break;case"up_strict":var l=this._getIndex(h);if(l!=0){j=this._moveNodeTo(h,h.parentObject,h.parentObject.childNodes[l-1])}break;case"down_strict":var l=this._getIndex(h);var g=h.parentObject.childsCount-2;if(l==g){j=this._moveNodeTo(h,h.parentObject)}else{if(l<g){j=this._moveNodeTo(h,h.parentObject,h.parentObject.childNodes[l+2])}}break;case"down":var l=this._getNextNode(this._lastChild(h));if((l==-1)||(!l.parentObject)){return}if(l.parentObject==h.parentObject){var l=this._getNextNode(l)}if(l==-1){j=this._moveNodeTo(h,h.parentObject)}else{if((l==-1)||(!l.parentObject)){return}j=this._moveNodeTo(h,l.parentObject,l)}break}if(_isIE&&_isIE<8){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"}return j};dhtmlXTreeObject.prototype.setDragBehavior=function(c,a){this._sADnD=(!dhx4.s2b(a));switch(c){case"child":this.dadmode=0;break;case"sibling":this.dadmode=1;break;case"complex":this.dadmode=2;break}};dhtmlXTreeObject.prototype._loadDynXML=function(e,c){c=c||this.XMLsource;var a=(new Date()).valueOf();this._ld_id=e;if(this.xmlalb=="function"){if(c){c(this._escape(e))}}else{if(this.xmlalb=="name"){this.load(c+this._escape(e))}else{if(this.xmlalb=="xmlname"){this.load(c+this._escape(e)+".xml?uid="+a)}else{this.load(c+dhtmlx.url(c)+"uid="+a+"&id="+this._escape(e))}}}};dhtmlXTreeObject.prototype.enableMultiselection=function(c,a){this._amsel=dhx4.s2b(c);this._amselS=dhx4.s2b(a)};dhtmlXTreeObject.prototype._checkMSelectionLogic=function(){var e=new Array();for(var c=0;c<this._selected.length;c++){for(var a=0;a<this._selected.length;a++){if((c!=a)&&(this._checkPNodes(this._selected[a],this._selected[c]))){e[e.length]=this._selected[a]}}}for(var c=0;c<e.length;c++){this._unselectItem(e[c])}};dhtmlXTreeObject.prototype._checkPNodes=function(c,a){if(this._dcheckf){return false}if(a==c){return 1}if(c.parentObject){return this._checkPNodes(c.parentObject,a)}else{return 0}};dhtmlXTreeObject.prototype.disableDropCheck=function(a){this._dcheckf=dhx4.s2b(a)};dhtmlXTreeObject.prototype.enableDistributedParsing=function(e,c,a){this._edsbps=dhx4.s2b(e);this._edsbpsA=new Array();this._edsbpsC=c||10;this._edsbpsD=a||250};dhtmlXTreeObject.prototype.getDistributedParsingState=function(){return(!((!this._edsbpsA)||(!this._edsbpsA.length)))};dhtmlXTreeObject.prototype.getItemParsingState=function(e){var c=this._globalIdStorageFind(e,true,true);if(!c){return 0}if(this._edsbpsA){for(var a=0;a<this._edsbpsA.length;a++){if(this._edsbpsA[a][2]==e){return -1}}}return 1};dhtmlXTreeObject.prototype._distributedStart=function(c,h,g,e,a){if(!this._edsbpsA){this._edsbpsA=new Array()}this._edsbpsA[this._edsbpsA.length]=[c,h,g,e,a]};dhtmlXTreeObject.prototype._distributedStep=function(g){var c=this;if((!this._edsbpsA)||(!this._edsbpsA.length)){c.XMLloadingWarning=0;return}var h=this._edsbpsA[0];this.parsedArray=new Array();this._parse(h[0],h[2],h[3],h[1]);var a=this._globalIdStorageFind(h[2]);this._redrawFrom(this,a,h[4],this._getOpenState(a));var e=this.setCheckList.split(this.dlmtr);for(var j=0;j<e.length;j++){if(e[j]){this.setCheck(e[j],1)}}this._edsbpsA=(new Array()).concat(this._edsbpsA.slice(1));if((!this._edsbpsA.length)){window.setTimeout(function(){if(c.onXLE){c.onXLE(c,g)}c.callEvent("onXLE",[c,g])},1);c.xmlstate=0}};dhtmlXTreeObject.prototype.enableTextSigns=function(a){this._txtimg=dhx4.s2b(a)};dhtmlXTreeObject.prototype.preventIECaching=function(a){dhx4.ajax.cache=!a};dhtmlXTreeObject.prototype.preventIECashing=dhtmlXTreeObject.prototype.preventIECaching;dhtmlXTreeObject.prototype.disableCheckbox=function(e,c){if(typeof(e)!="object"){var a=this._globalIdStorageFind(e,0,1)}else{var a=e}if(!a){return}a.dscheck=dhx4.s2b(c)?(((a.checkstate||0)%3)+3):((a.checkstate>2)?(a.checkstate-3):a.checkstate);this._setCheck(a);if(a.dscheck<3){a.dscheck=false}};dhtmlXTreeObject.prototype.smartRefreshBranch=function(c,a){this._branchUpdate=1;this.smartRefreshItem(c,a)};dhtmlXTreeObject.prototype.smartRefreshItem=function(g,e){var a=this._globalIdStorageFind(g);for(var c=0;c<a.childsCount;c++){a.childNodes[c]._dmark=true}this.waitUpdateXML=true;if(e&&e.exists){this._parse(e,g)}else{this._loadDynXML(g,e)}};dhtmlXTreeObject.prototype.refreshItems=function(c,e){var g=c.toString().split(this.dlmtr);this.waitUpdateXML=new Array();for(var a=0;a<g.length;a++){this.waitUpdateXML[g[a]]=true}this.load((e||this.XMLsource)+dhtmlx.url(e||this.XMLsource)+"ids="+this._escape(c))};dhtmlXTreeObject.prototype.updateItem=function(l,j,g,e,c,h,m){var a=this._globalIdStorageFind(l);a.userData=new cObject();if(j){a.label=j}a.images=new Array(g||this.imageArray[0],e||this.imageArray[1],c||this.imageArray[2]);this.setItemText(l,j);if(h){this._setCheck(a,true)}if(m=="1"&&!this.hasChildren(l)){a.XMLload=0}this._correctPlus(a);a._dmark=false;return a};dhtmlXTreeObject.prototype.setDropHandler=function(a){this.attachEvent("onDrop",a)};dhtmlXTreeObject.prototype.setOnLoadingStart=function(a){this.attachEvent("onXLS",a)};dhtmlXTreeObject.prototype.setOnLoadingEnd=function(a){this.attachEvent("onXLE",a)};dhtmlXTreeObject.prototype.setXMLAutoLoadingBehaviour=function(a){this.xmlalb=a};dhtmlXTreeObject.prototype.enableSmartCheckboxes=function(a){this.smcheck=dhx4.s2b(a)};dhtmlXTreeObject.prototype.getXMLState=function(){return(this.xmlstate==1)};dhtmlXTreeObject.prototype.setItemTopOffset=function(j,g){var e;if(typeof(j)!="object"){e=this._globalIdStorageFind(j)}else{e=j}var h=e.span.parentNode.parentNode;e.span.style.paddingBottom="1px";for(var c=0;c<h.childNodes.length;c++){if(c!=0){if(_isIE){h.childNodes[c].style.height="18px";h.childNodes[c].style.paddingTop=parseInt(g)+"px"}else{h.childNodes[c].style.height=18+parseInt(g)+"px"}}else{var a=h.childNodes[c].firstChild;if(h.childNodes[c].firstChild.tagName!="DIV"){a=document.createElement("DIV");h.childNodes[c].insertBefore(a,h.childNodes[c].firstChild)}if((e.parentObject.id!=this.rootId||e.parentObject.childNodes[0]!=e)&&this.treeLinesOn){h.childNodes[c].style.backgroundImage="url("+this.imPath+this.lineArray[5]+")"}a.innerHTML="&nbsp;";a.style.overflow="hidden"}a.style.verticalAlign=h.childNodes[c].style.verticalAlign="bottom";if(_isIE){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"}}};dhtmlXTreeObject.prototype.setIconSize=function(g,c,h){if(h){if((h)&&(h.span)){var a=h}else{var a=this._globalIdStorageFind(h)}if(!a){return(0)}var e=a.span.parentNode.previousSibling.childNodes[0];if(g){e.style.width=g+"px";if(window._KHTMLrv){e.parentNode.style.width=g+"px"}}if(c){e.style.height=c+"px";if(window._KHTMLrv){e.parentNode.style.height=c+"px"}}}else{this.def_img_x=g;this.def_img_y=c}};dhtmlXTreeObject.prototype.getItemImage=function(h,g,c){var e=this._globalIdStorageFind(h);if(!e){return""}var a=e.images[g||0];if(c){a=this.iconURL+a}return a};dhtmlXTreeObject.prototype.enableRadioButtons=function(g,e){if(arguments.length==1){this._frbtr=dhx4.s2b(g);this.checkBoxOff=this.checkBoxOff||this._frbtr;return}var c=this._globalIdStorageFind(g);if(!c){return""}e=dhx4.s2b(e);if((e)&&(!c._r_logic)){c._r_logic=true;for(var a=0;a<c.childsCount;a++){this._setCheck(c.childNodes[a],c.childNodes[a].checkstate)}}if((!e)&&(c._r_logic)){c._r_logic=false;for(var a=0;a<c.childsCount;a++){this._setCheck(c.childNodes[a],c.childNodes[a].checkstate)}}};dhtmlXTreeObject.prototype.enableSingleRadioMode=function(a){this._frbtrs=dhx4.s2b(a)};dhtmlXTreeObject.prototype.openOnItemAdded=function(a){this._hAdI=!dhx4.s2b(a)};dhtmlXTreeObject.prototype.openOnItemAdding=function(a){this._hAdI=!dhx4.s2b(a)};dhtmlXTreeObject.prototype.enableMultiLineItems=function(a){if(a===true){this.mlitems="100%"}else{this.mlitems=a}};dhtmlXTreeObject.prototype.enableAutoTooltips=function(a){this.ettip=dhx4.s2b(a)};dhtmlXTreeObject.prototype.clearSelection=function(a){if(a){this._unselectItem(this._globalIdStorageFind(a))}else{this._unselectItems()}};dhtmlXTreeObject.prototype.showItemSign=function(g,c){var a=this._globalIdStorageFind(g);if(!a){return 0}var e=a.span.parentNode.previousSibling.previousSibling.previousSibling;if(!dhx4.s2b(c)){this._openItem(a);a.closeble=false;a.wsign=true}else{a.closeble=true;a.wsign=false}this._correctPlus(a)};dhtmlXTreeObject.prototype.showItemCheckbox=function(h,g){if(!h){for(var c in this._idpull){this.showItemCheckbox(this._idpull[c],g)}}if(typeof(h)!="object"){h=this._globalIdStorageFind(h,0,0)}if(!h){return 0}h.nocheckbox=!dhx4.s2b(g);var e=h.span.parentNode.previousSibling.previousSibling.childNodes[0];e.parentNode.style.display=(!h.nocheckbox)?"":"none"};dhtmlXTreeObject.prototype.setListDelimeter=function(a){this.dlmtr=a};dhtmlXTreeObject.prototype.setEscapingMode=function(a){this.utfesc=a};dhtmlXTreeObject.prototype.enableHighlighting=function(a){this.ehlt=true;this.ehlta=dhx4.s2b(a)};dhtmlXTreeObject.prototype._itemMouseOut=function(){var c=this.childNodes[3].parentObject;var a=c.treeNod;a.callEvent("onMouseOut",[c.id]);if(c.id==a._l_onMSI){a._l_onMSI=null}if(!a.ehlta){return}c.span.className=c.span.className.replace("_lor","")};dhtmlXTreeObject.prototype._itemMouseIn=function(){var c=this.childNodes[3].parentObject;var a=c.treeNod;if(a._l_onMSI!=c.id){a.callEvent("onMouseIn",[c.id])}a._l_onMSI=c.id;if(!a.ehlta){return}c.span.className=c.span.className.replace("_lor","");c.span.className=c.span.className.replace(/((standart|selected)TreeRow)/,"$1_lor")};dhtmlXTreeObject.prototype.enableActiveImages=function(a){this._aimgs=dhx4.s2b(a)};dhtmlXTreeObject.prototype.focusItem=function(c){var a=this._globalIdStorageFind(c);if(!a){return(0)}this._focusNode(a)};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(e){var g="";for(var c=0;c<e.childsCount;c++){if((e.childNodes[c].unParsed)||(e.childNodes[c].childsCount>0)){if(e.childNodes[c].unParsed){var a=this._getAllScraggyItemsXML(e.childNodes[c].unParsed,1)}else{var a=this._getAllScraggyItems(e.childNodes[c])}if(a){if(g){g+=this.dlmtr+a}else{g=a}}}else{if(!g){g=""+e.childNodes[c].id}else{g+=this.dlmtr+e.childNodes[c].id}}}return g};dhtmlXTreeObject.prototype._getAllFatItems=function(e){var g="";for(var c=0;c<e.childsCount;c++){if((e.childNodes[c].unParsed)||(e.childNodes[c].childsCount>0)){if(!g){g=""+e.childNodes[c].id}else{g+=this.dlmtr+e.childNodes[c].id}if(e.childNodes[c].unParsed){var a=this._getAllFatItemsXML(e.childNodes[c].unParsed,1)}else{var a=this._getAllFatItems(e.childNodes[c])}if(a){g+=this.dlmtr+a}}}return g};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){if(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)];var c=this._getAllChecked("","",2);if(c){a.push(c)}return a.join(this.dlmtr)};dhtmlXTreeObject.prototype._getAllChecked=function(g,e,h){if(!g){g=this.htmlNode}if(g.checkstate==h){if(!g.nocheckbox){if(e){e+=this.dlmtr+g.id}else{e=""+g.id}}}var a=g.childsCount;for(var c=0;c<a;c++){e=this._getAllChecked(g.childNodes[c],e,h)}if(g.unParsed){e=this._getAllCheckedXML(g.unParsed,e,h)}if(e){return e}else{return""}};dhtmlXTreeObject.prototype.setItemStyle=function(g,e,c){var c=c||false;var a=this._globalIdStorageFind(g);if(!a){return 0}if(!a.span.style.cssText){a.span.setAttribute("style",a.span.getAttribute("style")+"; "+e)}else{a.span.style.cssText=c?e:a.span.style.cssText+";"+e}};dhtmlXTreeObject.prototype.enableImageDrag=function(a){this._itim_dg=dhx4.s2b(a)};dhtmlXTreeObject.prototype.setOnDragIn=function(a){this.attachEvent("onDragIn",a)};dhtmlXTreeObject.prototype.enableDragAndDropScrolling=function(a){this.autoScroll=dhx4.s2b(a)};dhtmlXTreeObject.prototype.setSkin=function(a){var c=this.parentObject.className.replace(/dhxtree_[^ ]*/gi,"");this.parentObject.className=c+" dhxtree_"+a;if(a=="dhx_terrace"||a=="dhx_web"){this.enableTreeLines(false)}};(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(g,j,c){var e=dhx4.ajax.xpath(".//item",g);var h=e[0].getAttribute("text");this.obj.insertNewItem(c,j,h,0,0,0,0,"CHILD")});a.attachEvent("updateCallback",function(g,j,c){var e=dhx4.ajax.xpath(".//item",g);var h=e[0].getAttribute("text");this.obj.setItemText(j,h);if(this.obj.getParentId(j)!=c){this.obj.moveItem(j,"item_child",c)}this.setUpdated(j,true,"updated")});a.attachEvent("deleteCallback",function(e,g,c){this.obj.setUserData(g,this.action_param,"true_deleted");this.obj.deleteItem(g,false)});a._methods=["setItemStyle","","changeItemId","deleteItem"];this.attachEvent("onEdit",function(c,e){if(c==3){a.setUpdated(e,true)}return true});this.attachEvent("onDrop",function(j,h,g,e,c){if(e==c){a.setUpdated(j,true)}});this._onrdlh=function(c){var e=a.getState(c);if(e=="inserted"){a.set_invalid(c,false);a.setUpdated(c,false);return true}if(e=="true_deleted"){a.setUpdated(c,false);return true}a.setUpdated(c,true,"deleted");return false};this._onradh=function(c){a.setUpdated(c,true,"inserted")};a._getRowData=function(h){var g={};var j=this.obj._globalIdStorageFind(h);var e=j.parentObject;var c=0;for(c=0;c<e.childsCount;c++){if(e.childNodes[c]==j){break}}g.tr_id=j.id;g.tr_pid=e.id;g.tr_order=c;g.tr_text=j.span.innerHTML;e=(j._userdatalist||"").split(",");for(c=0;c<e.length;c++){g[e[c]]=j.userData["t_"+e[c]]}return g}};if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype.attachTree=function(a){this.callEvent("_onBeforeContentAttach",["tree"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";this._attachObject(c);this.dataType="tree";this.dataObj=new dhtmlXTreeObject(c,"100%","100%",(a||0));this.dataObj.setSkin(this.conf.skin);this.dataObj.allTree.childNodes[0].style.marginTop="2px";this.dataObj.allTree.childNodes[0].style.marginBottom="2px";c=null;this.callEvent("_onContentAttach",[]);return this.dataObj}}dhtmlXTreeObject.prototype.makeDraggable=function(c,a){if(typeof(c)!="object"){c=document.getElementById(c)}dragger=new dhtmlDragAndDropObject();dropper=new dhx_dragSomethingInTree();dragger.addDraggableItem(c,dropper);c.dragLanding=null;c.ondragstart=dropper._preventNsDrag;c.onselectstart=new Function("return false;");c.parentObject=new Object;c.parentObject.img=c;c.parentObject.treeNod=dropper;dropper._customDrop=a};dhtmlXTreeObject.prototype.makeDragable=dhtmlXTreeObject.prototype.makeDraggable;dhtmlXTreeObject.prototype.makeAllDraggable=function(c){var e=document.getElementsByTagName("div");for(var a=0;a<e.length;a++){if(e[a].getAttribute("dragInDhtmlXTree")){this.makeDragable(e[a],c)}}};function dhx_dragSomethingInTree(){this.lWin=window;this._createDragNode=function(c){var a=document.createElement("div");a.style.position="absolute";a.innerHTML=(c.innerHTML||c.value);a.className="dragSpanDiv";return a};this._preventNsDrag=function(a){(a||window.event).cancelBubble=true;if((a)&&(a.preventDefault)){a.preventDefault();return false}return false};this._nonTrivialNode=function(c,e,a,g){if(this._customDrop){return this._customDrop(c,g.img.id,e.id,a?a.id:null)}var h=(g.img.getAttribute("image")||"");var l=g.img.id||"new";var j=(g.img.getAttribute("text")||(_isIE?g.img.innerText:g.img.textContent));c[a?"insertNewNext":"insertNewItem"](a?a.id:e.id,l,j,"",h,h,h)}}dhtmlXTreeObject.prototype.enableItemEditor=function(a){this._eItEd=dhx4.s2b(a);if(!this._eItEdFlag){this._edn_click_IE=true;this._edn_dblclick=true;this._ie_aFunc=this.aFunc;this._ie_dblclickFuncHandler=this.dblclickFuncHandler;this.setOnDblClickHandler(function(e,c){if(this._edn_dblclick){this._editItem(e,c)}return true});this.setOnClickHandler(function(e,c){this._stopEditItem(e,c);if((this.ed_hist_clcik==e)&&(this._edn_click_IE)){this._editItem(e,c)}this.ed_hist_clcik=e;return true});this._eItEdFlag=true}};dhtmlXTreeObject.prototype.setOnEditHandler=function(a){this.attachEvent("onEdit",a)};dhtmlXTreeObject.prototype.setEditStartAction=function(a,c){this._edn_click_IE=dhx4.s2b(a);this._edn_dblclick=dhx4.s2b(c)};dhtmlXTreeObject.prototype._stopEdit=function(c,j){if(this._editCell){this.dADTempOff=this.dADTempOffEd;if(this._editCell.id!=c){var g=true;if(!j){g=this.callEvent("onEdit",[2,this._editCell.id,this,this._editCell.span.childNodes[0].value])}else{g=false;this.callEvent("onEditCancel",[this._editCell.id,this._editCell._oldValue])}if(g===true){g=this._editCell.span.childNodes[0].value}else{if(g===false){g=this._editCell._oldValue}}var h=(g!=this._editCell._oldValue);this._editCell.span.innerHTML=g;this._editCell.label=this._editCell.span.innerHTML;var e=this._editCell.i_sel?"selectedTreeRow":"standartTreeRow";this._editCell.span.className=e;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 l=this._editCell.id;if(this.childCalc){this._fixChildCountLabel(this._editCell)}this._editCell=null;if(!j){this.callEvent("onEdit",[3,l,this,h])}if(this._enblkbrd){this.parentObject.lastChild.focus();this.parentObject.lastChild.focus()}}}};dhtmlXTreeObject.prototype._stopEditItem=function(c,a){this._stopEdit(c)};dhtmlXTreeObject.prototype.stopEdit=function(a){if(this._editCell){this._stopEdit(this._editCell.id+"_non",a)}};dhtmlXTreeObject.prototype.editItem=function(a){this._editItem(a,this)};dhtmlXTreeObject.prototype._editItem=function(h,a){if(this._eItEd){this._stopEdit();var e=this._globalIdStorageFind(h);if(!e){return}var g=this.callEvent("onEdit",[0,h,this,e.span.innerHTML]);if(g===true){g=(typeof e.span.innerText!="undefined"?e.span.innerText:e.span.textContent)}else{if(g===false){return}}this.dADTempOffEd=this.dADTempOff;this.dADTempOff=false;this._editCell=e;e._oldValue=g;e.span.innerHTML="<input type='text' class='intreeeditRow' />";e.span.style.paddingRight=e.span.style.paddingLeft="0px";e.span.onclick=e.span.ondblclick=function(j){(j||event).cancelBubble=true};e.span.childNodes[0].value=g;e.span.childNodes[0].onselectstart=function(j){(j||event).cancelBubble=true;return true};e.span.childNodes[0].onmousedown=function(j){(j||event).cancelBubble=true;return true};e.span.childNodes[0].focus();e.span.childNodes[0].focus();e.span.onclick=function(j){(j||event).cancelBubble=true;return false};e.span.className="";e.span.parentNode.className="";var c=this;e.span.childNodes[0].onkeydown=function(j){if(!j){j=window.event}if(j.keyCode==13){j.cancelBubble=true;c._stopEdit(window.undefined)}else{if(j.keyCode==27){c._stopEdit(window.undefined,true)}}(j||event).cancelBubble=true};this.callEvent("onEdit",[1,h,this])}};function jsonPointer(c,a){this.d=c;this.dp=a}jsonPointer.prototype={text:function(){var a=function(h){var g=[];for(var e=0;e<h.length;e++){g.push("{"+c(h[e])+"}")}return g.join(",")};var c=function(h){var g=[];for(var e in h){if(typeof(h[e])=="object"){if(e.length){g.push('"'+e+'":['+a(h[e])+"]")}else{g.push('"'+e+'":{'+c(h[e])+"}")}}else{g.push('"'+e+'":"'+h[e]+'"')}}return g.join(",")};return"{"+c(this.d)+"}"},get:function(a){return this.d[a]},exists:function(){return !!this.d},content:function(){return this.d.content},each:function(g,l,j){var e=this.d[g];var m=new jsonPointer();if(e){for(var h=0;h<e.length;h++){m.d=e[h];l.apply(j,[m,h])}}},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(g,m,l,j,h){var e=this.d[g];var n=new jsonPointer(0,this.d);if(e){for(h=h||0;h<e.length;h++){if(e[h][m]){n.d=e[h];if(l.apply(j,[n,h])==-1){return}}}}},up:function(a){return new jsonPointer(this.dp,this.d)},set:function(a,c){this.d[a]=c},clone:function(a){return new jsonPointer(this.d,this.dp)},through:function(e,l,o,h,r){var m=this.d[e];if(m.length){for(var g=0;g<m.length;g++){if(m[g][l]!=null&&m[g][l]!=""&&(!o||m[g][l]==o)){var j=new jsonPointer(m[g],this.d);h.apply(r,[j,g])}var n=this.d;this.d=m[g];if(this.sub_exists(e)){this.through(e,l,o,h,r)}this.d=n}}}};dhtmlXTreeObject.prototype.loadJSArrayFile=function(a,c){if(window.console&&window.console.info){window.console.info("loadJSArrayFile was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this._loadJSArrayFile(a,c)};dhtmlXTreeObject.prototype._loadJSArrayFile=function(file,callback){if(!this.parsCount){this.callEvent("onXLS",[this,this._ld_id])}this._ld_id=null;this.xmlstate=1;var that=this;this.XMLLoader=function(xml,callback){eval("var z="+xml.responseText);this._loadJSArray(z);if(callback){callback.call(this,xml)}};dhx4.ajax.get(file,function(obj){that.XMLLoader(obj.xmlDoc,callback)})};dhtmlXTreeObject.prototype.loadCSV=function(a,c){if(window.console&&window.console.info){window.console.info("loadCSV was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this._loadCSV(a,c)};dhtmlXTreeObject.prototype._loadCSV=function(a,e){if(!this.parsCount){this.callEvent("onXLS",[this,this._ld_id])}this._ld_id=null;this.xmlstate=1;var c=this;this.XMLLoader=function(g,h){this._loadCSVString(g.responseText);if(h){h.call(this,g)}};dhx4.ajax.get(a,function(g){c.XMLLoader(g.xmlDoc,e)})};dhtmlXTreeObject.prototype.loadJSArray=function(a,c){if(window.console&&window.console.info){window.console.info("loadJSArray was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this._loadJSArray(a,c)};dhtmlXTreeObject.prototype._loadJSArray=function(a,g){var j=[];for(var c=0;c<a.length;c++){if(!j[a[c][1]]){j[a[c][1]]=[]}j[a[c][1]].push({id:a[c][0],text:a[c][2]})}var h={id:this.rootId};var e=function(n,m){if(j[n.id]){n.item=j[n.id];for(var l=0;l<n.item.length;l++){m(n.item[l],m)}}};e(h,e);this._loadJSONObject(h,g)};dhtmlXTreeObject.prototype.loadCSVString=function(a,c){if(window.console&&window.console.info){window.console.info("loadCSVString was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this._loadCSVString(a,c)};dhtmlXTreeObject.prototype._loadCSVString=function(a,j){var m=[];var c=a.split("\n");for(var g=0;g<c.length;g++){var e=c[g].split(",");if(!m[e[1]]){m[e[1]]=[]}m[e[1]].push({id:e[0],text:e[2]})}var l={id:this.rootId};var h=function(r,o){if(m[r.id]){r.item=m[r.id];for(var n=0;n<r.item.length;n++){o(r.item[n],o)}}};h(l,h);this._loadJSONObject(l,j)};dhtmlXTreeObject.prototype.loadJSONObject=function(a,c){if(window.console&&window.console.info){window.console.info("loadJSONObject was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this._loadJSONObject(a,c)};dhtmlXTreeObject.prototype._loadJSONObject=function(a,c){if(!this.parsCount){this.callEvent("onXLS",[this,null])}this.xmlstate=1;var e=new jsonPointer(a);this._parse(e);this._p=e;if(c){c()}};dhtmlXTreeObject.prototype.loadJSON=function(a,c){if(window.console&&window.console.info){window.console.info("loadJSON was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}return this._loadJSON(a,c)};dhtmlXTreeObject.prototype._loadJSON=function(file,callback){if(!this.parsCount){this.callEvent("onXLS",[this,this._ld_id])}this._ld_id=null;this.xmlstate=1;var that=this;this.XMLLoader=function(xml,callback){try{eval("var t="+xml.responseText)}catch(e){dhx4.callEvent("onLoadXMLerror",["Incorrect JSON",(xml),this]);return}var p=new jsonPointer(t);this._parse(p);this._p=p;if(callback){callback.call(this,xml)}};dhx4.ajax.get(file,function(obj){that.XMLLoader(obj.xmlDoc,callback)})};dhtmlXTreeObject.prototype.serializeTreeToJSON=function(){var a=['{"id":"'+this.rootId+'", "item":['];var e=[];for(var c=0;c<this.htmlNode.childsCount;c++){e.push(this._serializeItemJSON(this.htmlNode.childNodes[c]))}a.push(e.join(","));a.push("]}");return a.join("")};dhtmlXTreeObject.prototype._serializeItemJSON=function(l){var a=[];if(l.unParsed){return(l.unParsed.text())}if(this._selected.length){var e=this._selected[0].id}else{e=""}var j=l.span.innerHTML;j=j.replace(/\"/g,'\\"',j);if(!this._xfullXML){a.push('{ "id":"'+l.id+'", '+(this._getOpenState(l)==1?' "open":"1", ':"")+(e==l.id?' "select":"1",':"")+' "text":"'+j+'"'+(((this.XMLsource)&&(l.XMLload==0))?', "child":"1" ':""))}else{a.push('{ "id":"'+l.id+'", '+(this._getOpenState(l)==1?' "open":"1", ':"")+(e==l.id?' "select":"1",':"")+' "text":"'+j+'", "im0":"'+l.images[0]+'", "im1":"'+l.images[1]+'", "im2":"'+l.images[2]+'" '+(l.acolor?(', "aCol":"'+l.acolor+'" '):"")+(l.scolor?(', "sCol":"'+l.scolor+'" '):"")+(l.checkstate==1?', "checked":"1" ':(l.checkstate==2?', "checked":"-1"':""))+(l.closeable?', "closeable":"1" ':"")+(((this.XMLsource)&&(l.XMLload==0))?', "child":"1" ':""))}if((this._xuserData)&&(l._userdatalist)){a.push(', "userdata":[');var h=l._userdatalist.split(",");var g=[];for(var c=0;c<h.length;c++){g.push('{ "name":"'+h[c]+'" , "content":"'+l.userData["t_"+h[c]]+'" }')}a.push(g.join(","));a.push("]")}if(l.childsCount){a.push(', "item":[');var g=[];for(var c=0;c<l.childsCount;c++){g.push(this._serializeItemJSON(l.childNodes[c]))}a.push(g.join(","));a.push("]\n")}a.push("}\n");return a.join("")};function dhtmlXTreeFromHTML(obj){if(typeof(obj)!="object"){obj=document.getElementById(obj)}var n=obj;var id=n.id;var cont="";for(var j=0;j<obj.childNodes.length;j++){if(obj.childNodes[j].nodeType=="1"){if(obj.childNodes[j].tagName=="XMP"){var cHead=obj.childNodes[j];for(var m=0;m<cHead.childNodes.length;m++){cont+=cHead.childNodes[m].data}}else{if(obj.childNodes[j].tagName.toLowerCase()=="ul"){cont=dhx_li2trees(obj.childNodes[j],new Array(),0)}}break}}obj.innerHTML="";var t=new dhtmlXTreeObject(obj,"100%","100%",0);var z_all=new Array();for(b in t){z_all[b.toLowerCase()]=b}var atr=obj.attributes;for(var a=0;a<atr.length;a++){if((atr[a].name.indexOf("set")==0)||(atr[a].name.indexOf("enable")==0)){var an=atr[a].name;if(!t[an]){an=z_all[atr[a].name]}t[an].apply(t,atr[a].value.split(","))}}if(typeof(cont)=="object"){t.XMLloadingWarning=1;for(var i=0;i<cont.length;i++){var n=t.insertNewItem(cont[i][0],cont[i][3],cont[i][1]);if(cont[i][2]){t._setCheck(n,cont[i][2])}}t.XMLloadingWarning=0;t.lastLoadedXMLId=0;t._redrawFrom(t)}else{t.parse("<tree id='0'>"+cont+"</tree>")}window[id]=t;var oninit=obj.getAttribute("oninit");if(oninit){eval(oninit)}return t}function dhx_init_trees(){var c=document.getElementsByTagName("div");for(var a=0;a<c.length;a++){if(c[a].className=="dhtmlxTree"){dhtmlXTreeFromHTML(c[a])}}}function dhx_li2trees(s,l,e){for(var m=0;m<s.childNodes.length;m++){var r=s.childNodes[m];if((r.nodeType==1)&&(r.tagName.toLowerCase()=="li")){var o="";var n=null;var a=r.getAttribute("checked");for(var h=0;h<r.childNodes.length;h++){var g=r.childNodes[h];if(g.nodeType==3){o+=g.data}else{if(g.tagName.toLowerCase()!="ul"){o+=dhx_outer_html(g)}else{n=g}}}l[l.length]=[e,o,a,(r.id||(l.length+1))];if(n){l=dhx_li2trees(n,l,(r.id||l.length))}}}return l}function dhx_outer_html(c){if(c.outerHTML){return c.outerHTML}var a=document.createElement("DIV");a.appendChild(c.cloneNode(true));a=a.innerHTML;return a}if(window.addEventListener){window.addEventListener("load",dhx_init_trees,false)}else{if(window.attachEvent){window.attachEvent("onload",dhx_init_trees)}}var globalActiveDHTMLGridObject;String.prototype._dhx_trim=function(){return this.replace(/&nbsp;/g," ").replace(/(^[ \t]*)|([ \t]*$)/g,"")};function dhtmlxArray(a){return dhtmlx.extend((a||new Array()),dhtmlxArray._master)}dhtmlxArray._master={_dhx_find:function(c){for(var a=0;a<this.length;a++){if(c==this[a]){return a}}return -1},_dhx_insertAt:function(e,c){this[this.length]=null;for(var a=this.length-1;a>=e;a--){this[a]=this[a-1]}this[e]=c},_dhx_removeAt:function(a){this.splice(a,1)},_dhx_swapItems:function(a,e){var c=this[a];this[a]=this[e];this[e]=c}};function dhtmlXGridObject(id){if(dhtmlxEvent.initTouch){dhtmlxEvent.initTouch()}if(_isIE){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}if(id){if(typeof(id)=="object"){this.entBox=id;if(!this.entBox.id){this.entBox.id="cgrid2_"+this.uid()}}else{this.entBox=document.getElementById(id)}}else{this.entBox=document.createElement("DIV");this.entBox.id="cgrid2_"+this.uid()}this.entBox.innerHTML="";dhx4._eventable(this);var self=this;this._wcorr=0;this.fontWidth=7;this.cell=null;this.row=null;this.iconURL="";this.editor=null;this._f2kE=true;this._dclE=true;this.combos=new Array(0);this.defVal=new Array(0);this.rowsAr={};this.rowsBuffer=dhtmlxArray();this.rowsCol=dhtmlxArray();this._data_cache={};this._ecache={};this._ud_enabled=true;this.xmlLoader=this.doLoadDetails;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 false};var t_creator=function(name){var t=document.createElement("TABLE");t.cellSpacing=t.cellPadding=0;t.style.cssText="width:100%;table-layout:fixed;";t.className=name.substr(2);return t};this.obj=t_creator("c_obj");this.hdr=t_creator("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";if(dhtmlx.$customScroll){dhtmlx.CustomScroll.enable(this)}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=new Array(0);this.sortImg=document.createElement("DIV");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=false;this.isEditable=true;this.useImagesInHeader=false;this.pagingOn=false;this.rowsBufferOutSize=0;dhtmlxEvent(window,"unload",function(){try{if(self.destructor){self.destructor()}}catch(e){}});this.setSkin=function(name){this._srdh=window.dhx4.readFromCss("dhxgrid_rh_"+name)+4;this.skin_name=name;if(this._imgURL){this.setImagePath(this._imgURL)}var classname=this.entBox.className.split(" gridbox")[0];this.entBox.className=classname+" gridbox gridbox_"+name+(_isIE?" isIE":" isModern");this.skin_h_correction=0;this.enableAlterCss("ev_"+name,"odd_"+name,this.isTreeGrid());this._fixAlterCss();switch(name){case"dhx_terrace":this._srdh=33;this.forceDivInHeader=true;break;case"dhx_web":this.forceDivInHeader=true;this._srdh=31;break;case"dhx_skyblue":this.forceDivInHeader=true;break}if(_isIE&&this.hdr){var d=this.hdr.parentNode;d.removeChild(this.hdr);d.appendChild(this.hdr)}this.setSizes()};if(_isIE){this.preventIECaching(true)}if(window.dhtmlDragAndDropObject){this.dragger=new dhtmlDragAndDropObject()}this._doOnScroll=function(e,mode){this.callEvent("onScroll",[this.objBox.scrollLeft,this.objBox.scrollTop]);this.doOnScroll(e,mode)};this.doOnScroll=function(e,mode){this.hdrBox.scrollLeft=this.objBox.scrollLeft;if(this.ftr){this.ftr.parentNode.scrollLeft=this.objBox.scrollLeft}if(mode){return}if(this._srnd){if(this._dLoadTimer){window.clearTimeout(this._dLoadTimer)}this._dLoadTimer=window.setTimeout(function(){if(self._update_srnd_view){self._update_srnd_view()}},100)}};this.attachToObject=function(obj){obj.appendChild(this.globalBox?this.globalBox:this.entBox);this.setSizes()};this.init=function(fl){if((this.isTreeGrid())&&(!this._h2)){this._h2=this._createHierarchy();if((this._fake)&&(!this._realfake)){this._fake._h2=this._h2}this._tgc={imgURL:null}}if(!this._hstyles){return}if(!this.skin_name){this.setSkin(window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxgrid")||"dhx_skyblue")}this.editStop();this.lastClicked=null;this.resized=null;this.fldSorted=this.r_fldSorted=null;this.cellWidthPX=[];this.cellWidthPC=[];if(this.hdr.rows.length>0){var temp=this.xmlFileUrl;this.clearAll(true);this.xmlFileUrl=temp}var hdrRow=this.hdr.insertRow(0);for(var i=0;i<this.hdrLabels.length;i++){hdrRow.appendChild(document.createElement("TH"));hdrRow.childNodes[i]._cellIndex=i;hdrRow.childNodes[i].style.height="0px"}if(_isIE&&_isIE<8&&document.body.style.msTouchAction==this.undefined){hdrRow.style.position="absolute"}else{hdrRow.style.height="auto"}var hdrRow=this.hdr.insertRow(_isKHTML?2:1);hdrRow._childIndexes=new Array();var col_ex=0;for(var i=0;i<this.hdrLabels.length;i++){hdrRow._childIndexes[i]=i-col_ex;if((this.hdrLabels[i]==this.splitSign)&&(i!=0)){if(_isKHTML){hdrRow.insertCell(i-col_ex)}hdrRow.cells[i-col_ex-1].colSpan=(hdrRow.cells[i-col_ex-1].colSpan||1)+1;hdrRow.childNodes[i-col_ex-1]._cellIndex++;col_ex++;hdrRow._childIndexes[i]=i-col_ex;continue}hdrRow.insertCell(i-col_ex);hdrRow.childNodes[i-col_ex]._cellIndex=i;hdrRow.childNodes[i-col_ex]._cellIndexS=i;this.setColumnLabel(i,this.hdrLabels[i])}if(col_ex==0){hdrRow._childIndexes=null}this._cCount=this.hdrLabels.length;if(_isIE){window.setTimeout(function(){if(self.setSizes){self.setSizes()}},1)}if(!this.obj.firstChild){this.obj.appendChild(document.createElement("TBODY"))}var tar=this.obj.firstChild;if(!tar.firstChild){tar.appendChild(document.createElement("TR"));tar=tar.firstChild;if(_isIE&&_isIE<8&&document.body.style.msTouchAction==this.undefined){tar.style.position="absolute"}else{tar.style.height="auto"}for(var i=0;i<this.hdrLabels.length;i++){tar.appendChild(document.createElement("TH"));tar.childNodes[i].style.height="0px"}}this._c_order=null;if(this.multiLine!=true){this.obj.className+=" row20px"}this.sortImg.style.position="absolute";this.sortImg.style.display="none";this.sortImg.className="dhxgrid_sort_desc";this.sortImg.defLeft=0;if(this.noHeader){this.hdrBox.style.display="none"}else{this.noHeader=false}if(this._ivizcol){this.setColHidden()}this.attachHeader();this.attachHeader(0,0,"_aFoot");this.setSizes();if(fl){this.parseXML()}this.obj.scrollTop=0;if(this.dragAndDropOff){this.dragger.addDragLanding(this.entBox,this)}if(this._initDrF){this._initD()}dhx4.callEvent("onGridCreated",[this])};this.setColumnSizes=function(gridWidth){var summ=0;var fcols=[];var fix=0;for(var i=0;i<this._cCount;i++){if((this.initCellWidth[i]=="*")&&!this._hrrar[i]){this._awdth=false;fcols.push(i);continue}if(this.cellWidthType=="%"){if(typeof this.cellWidthPC[i]=="undefined"){this.cellWidthPC[i]=this.initCellWidth[i]}var cwidth=(gridWidth*this.cellWidthPC[i]/100)||0;if(fix>0.5){cwidth++;fix--}var rwidth=this.cellWidthPX[i]=Math.floor(cwidth);var fix=fix+cwidth-rwidth}else{if(typeof this.cellWidthPX[i]=="undefined"){this.cellWidthPX[i]=this.initCellWidth[i]}}if(!this._hrrar[i]){summ+=this.cellWidthPX[i]*1}}if(fcols.length){var ms=Math.floor((gridWidth-summ)/fcols.length);if(ms<0){ms=1}for(var i=0;i<fcols.length;i++){var next=Math.max((this._drsclmW?(this._drsclmW[fcols[i]]||0):0),ms);this.cellWidthPX[fcols[i]]=next;summ+=next}if(gridWidth>summ){var last=fcols[fcols.length-1];this.cellWidthPX[last]=this.cellWidthPX[last]+(gridWidth-summ);summ=gridWidth}this._setAutoResize()}this.obj.style.width=summ+"px";this.hdr.style.width=summ+"px";if(this.ftr){this.ftr.style.width=summ+"px"}this.chngCellWidth();return summ};this.setSizes=function(){if((!this.hdr.rows[0])){return}var quirks=this.quirks=(_isIE&&document.compatMode=="BackCompat");var outerBorder=(this.entBox.offsetWidth-this.entBox.clientWidth)/2;if(!this.dontSetSizes){if(this.globalBox){if(!this.globalBox.clientWidth){return}var ow=this.globalBox.clientWidth;var splitOuterBorder=(this.globalBox.offsetWidth-ow)/2;if(this._delta_x&&!this._realfake){this.globalBox.style.width=this._delta_x;var owu=this.globalBox.clientWidth;this.entBox.style.width=Math.max(0,(owu+(quirks?splitOuterBorder*2:0))-this._fake.entBox.clientWidth)+"px";if(owu!=this._lastTimeSplitWidth){this._fake._correctSplit(this._fake.entBox.clientWidth);this._lastTimeSplitWidth=owu}}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+(quirks?splitOuterBorder*2:0)+"px"}}else{if(this._delta_x){if(this.entBox.parentNode&&this.entBox.parentNode.tagName=="TD"){this.entBox.style.width="1px";this.entBox.style.width=parseInt(this._delta_x)*this.entBox.parentNode.clientWidth/100-outerBorder*2+"px"}else{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(){if(self.setSizes){self.setSizes()}},250);return}var border_x=((!this._wthB)&&((this.entBox.cmp||this._delta_x)&&(this.skin_name||"").indexOf("dhx")==0&&!quirks)?2:0);var border_y=((!this._wthB)&&((this.entBox.cmp||this._delta_y)&&(this.skin_name||"").indexOf("dhx")==0&&!quirks)?2:0);if(this._sizeFix){border_x-=this._sizeFix;border_y-=this._sizeFix}var isVScroll=this.parentGrid?false:(this.objBox.scrollHeight>this.objBox.offsetHeight);var scrfix=dhtmlx.$customScroll?0:18;var gridWidth=this.entBox.clientWidth-(this.skin_h_correction||0)*(quirks?0:1)-border_x;var gridWidthActive=this.entBox.clientWidth-(this.skin_h_correction||0)-border_x;var gridHeight=this.entBox.clientHeight-border_y;var summ=this.setColumnSizes(gridWidthActive-(isVScroll?scrfix:0)-(this._correction_x||0));var isHScroll=this.parentGrid?false:((this.objBox.scrollWidth>this.objBox.offsetWidth)||(this.objBox.style.overflowX=="scroll"));var headerHeight=this.hdr.clientHeight;var footerHeight=this.ftr?this.ftr.clientHeight:0;var newWidth=gridWidth;var newHeight=gridHeight-headerHeight-footerHeight;if(this._awdth&&this._awdth[0]&&this._awdth[1]==99999){isHScroll=0}if(this._ahgr){if(this._ahgrMA){newHeight=this.entBox.parentNode.clientHeight-headerHeight-footerHeight}else{newHeight=this.obj.offsetHeight+(isHScroll?scrfix:0)+(this._correction_y||0)}if(this._ahgrM){if(this._ahgrF){newHeight=Math.min(this._ahgrM,newHeight+headerHeight+footerHeight)-headerHeight-footerHeight}else{newHeight=Math.min(this._ahgrM,newHeight)}}if(isVScroll&&newHeight>=this.obj.scrollHeight+(isHScroll?scrfix:0)){isVScroll=false;this.setColumnSizes(gridWidthActive-(this._correction_x||0))}}if((this._awdth)&&(this._awdth[0])){if(this.cellWidthType=="%"){this.cellWidthType="px"}if(this._fake){summ+=this._fake.entBox.clientWidth}var newWidth=Math.min(Math.max(summ+(isVScroll?scrfix:0),this._awdth[2]),this._awdth[1])+(this._correction_x||0);this.objBox.style.overflowX=(!isVScroll&&this.objBox.scrollWidth<=newWidth)?"hidden":"auto";if(this._fake){newWidth-=this._fake.entBox.clientWidth}}newHeight=Math.max(0,newHeight);this._ff_size_delta=(this._ff_size_delta==0.1)?0.2:0.1;if(!_isFF){this._ff_size_delta=0}if(!this.dontSetSizes){this.entBox.style.width=Math.max(0,newWidth+(quirks?2:0)*outerBorder+this._ff_size_delta)+"px";this.entBox.style.height=newHeight+(quirks?2:0)*outerBorder+headerHeight+footerHeight+"px"}this.objBox.style.height=newHeight+((quirks&&!isVScroll)?2:0)*outerBorder+"px";this.hdrBox.style.height=headerHeight+"px";if(newHeight!=gridHeight){this.doOnScroll(0,!this._srnd)}var ext=this["setSizes_"+this.skin_name];if(ext){ext.call(this)}this.setSortImgPos();if(headerHeight!=this.hdr.clientHeight&&this._ahgr){this.setSizes()}this.callEvent("onSetSizes",[])};this.chngCellWidth=function(){if((_isOpera)&&(this.ftr)){this.ftr.width=this.objBox.scrollWidth+"px"}var l=this._cCount;for(var i=0;i<l;i++){this.hdr.rows[0].cells[i].style.width=this.cellWidthPX[i]+"px";this.obj.rows[0].childNodes[i].style.width=this.cellWidthPX[i]+"px";if(this.ftr){this.ftr.rows[0].cells[i].style.width=this.cellWidthPX[i]+"px"}}};this.setDelimiter=function(delim){this.delim=delim};this.setInitWidthsP=function(wp){this.cellWidthType="%";this.initCellWidth=wp.split(this.delim.replace(/px/gi,""));if(!arguments[1]){this._setAutoResize()}};this._setAutoResize=function(){if(this._realfake){return}var el=window;var self=this;dhtmlxEvent(window,"resize",function(){window.clearTimeout(self._resize_timer);if(self._setAutoResize){self._resize_timer=window.setTimeout(function(){if(self.setSizes){self.setSizes()}if(self._fake){self._fake._correctSplit()}},100)}})};this.setInitWidths=function(wp){this.cellWidthType="px";this.initCellWidth=wp.split(this.delim);if(_isFF){for(var i=0;i<this.initCellWidth.length;i++){if(this.initCellWidth[i]!="*"){this.initCellWidth[i]=parseInt(this.initCellWidth[i])}}}};this.enableMultiline=function(state){this.multiLine=dhx4.s2b(state)};this.enableMultiselect=function(state){this.selMultiRows=dhx4.s2b(state)};this.setImagePath=function(path){path=path.replace(/imgs\/dhxgrid_[a-z]*\/$/,"imgs/");this._imgURL=path;this.imgURL=path+"dhxgrid_"+(this.skin_name||"dhx_skyblue").replace("dhx_","")+"/";this.iconTree=this.imgURL+"tree/"};this.setImagesPath=this.setImagePath;this.setIconPath=function(path){this.iconURL=path};this.setIconsPath=this.setIconPath;this.changeCursorState=function(ev){var el=ev.target||ev.srcElement;if(el.tagName!="TD"){el=this.getFirstParentOfType(el,"TD")}if(!el){return}if((el.tagName=="TD")&&(this._drsclmn)&&(!this._drsclmn[el._cellIndex])){return el.style.cursor="default"}var check=(ev.layerX||0)+(((!_isIE)&&(ev.target.tagName=="DIV"))?el.offsetLeft:0);if((el.offsetWidth-(ev.offsetX||(parseInt(this.getPosition(el,this.hdrBox))-check)*-1))<(_isOpera?20:10)){el.style.cursor="E-resize"}else{el.style.cursor="default"}if(_isOpera){this.hdrBox.scrollLeft=this.objBox.scrollLeft}};this.startColResize=function(ev){if(this.resized){this.stopColResize()}this.resized=null;var el=ev.target||ev.srcElement;if(el.tagName!="TD"){el=this.getFirstParentOfType(el,"TD")}var x=ev.clientX;var tabW=this.hdr.offsetWidth;var startW=parseInt(el.offsetWidth);if(el.tagName=="TD"&&el.style.cursor!="default"){if((this._drsclmn)&&(!this._drsclmn[el._cellIndex])){return}self._old_d_mm=document.body.onmousemove;self._old_d_mu=document.body.onmouseup;document.body.onmousemove=function(e){if(self){self.doColResize(e||window.event,el,startW,x,tabW)}};document.body.onmouseup=function(){if(self){self.stopColResize()}}}};this.stopColResize=function(){document.body.onmousemove=self._old_d_mm||"";document.body.onmouseup=self._old_d_mu||"";this.setSizes();this.doOnScroll(0,1);this.callEvent("onResizeEnd",[this])};this.doColResize=function(ev,el,startW,x,tabW){el.style.cursor="E-resize";this.resized=el;var fcolW=startW+(ev.clientX-x);var wtabW=tabW+(ev.clientX-x);if(!(this.callEvent("onResize",[el._cellIndex,fcolW,this]))){return}if(_isIE){this.objBox.scrollLeft=this.hdrBox.scrollLeft}var result=false;if(el.colSpan>1){var a_sizes=new Array();for(var i=0;i<el.colSpan;i++){a_sizes[i]=Math.round(fcolW*this.hdr.rows[0].childNodes[el._cellIndexS+i].offsetWidth/el.offsetWidth)}for(var i=0;i<el.colSpan;i++){result=this._setColumnSizeR(el._cellIndexS+i*1,a_sizes[i])}}else{result=this._setColumnSizeR(el._cellIndex,fcolW)}this.doOnScroll(0,1);this.setSizes();if(this._fake&&this._awdth){this._fake._correctSplit()}return result};this._setColumnSizeR=function(ind,fcolW){if(fcolW>((this._drsclmW&&!this._notresize)?(this._drsclmW[ind]||10):10)){this.obj.rows[0].childNodes[ind].style.width=fcolW+"px";this.hdr.rows[0].childNodes[ind].style.width=fcolW+"px";if(this.ftr){this.ftr.rows[0].childNodes[ind].style.width=fcolW+"px"}if(this.cellWidthType=="px"){this.cellWidthPX[ind]=fcolW}else{var gridWidth=parseInt(this.entBox.offsetWidth);if(this.objBox.scrollHeight>this.objBox.offsetHeight){gridWidth-=17}var pcWidth=Math.round(fcolW/gridWidth*100);this.cellWidthPC[ind]=pcWidth}if(this.sortImg.style.display!="none"){this.setSortImgPos()}}else{return false}};this.setSortImgState=function(state,ind,order,row){order=(order||"asc").toLowerCase();if(!dhx4.s2b(state)){this.sortImg.style.display="none";this.fldSorted=this.r_fldSorted=null;return}if(order=="asc"){this.sortImg.className="dhxgrid_sort_asc"}else{this.sortImg.className="dhxgrid_sort_desc"}this.sortImg.style.display="";this.fldSorted=this.hdr.rows[0].childNodes[ind];var r=this.hdr.rows[row||1];if(!r){return}for(var i=0;i<r.childNodes.length;i++){if(r.childNodes[i]._cellIndexS==ind){this.r_fldSorted=r.childNodes[i];return this.setSortImgPos()}}return this.setSortImgState(state,ind,order,(row||1)+1)};this.setSortImgPos=function(ind,mode,hRowInd,el){if(this._hrrar&&this._hrrar[this.r_fldSorted?this.r_fldSorted._cellIndex:ind]){return}if(!el){if(!ind){var el=this.r_fldSorted}else{var el=this.hdr.rows[hRowInd||0].cells[ind]}}if(el!=null){var pos=this.getPosition(el,this.hdrBox);var wdth=el.offsetWidth;this.sortImg.style.left=Number(pos[0]+wdth-13)+"px";this.sortImg.defLeft=parseInt(this.sortImg.style.left);this.sortImg.style.top=Number(pos[1]+5)+"px";if((!this.useImagesInHeader)&&(!mode)){this.sortImg.style.display="inline"}this.sortImg.style.left=this.sortImg.defLeft+"px"}};this.setActive=function(fl){if(arguments.length==0){var fl=true}if(fl==true){if(globalActiveDHTMLGridObject&&(globalActiveDHTMLGridObject!=this)){globalActiveDHTMLGridObject.editStop();globalActiveDHTMLGridObject.callEvent("onBlur",[globalActiveDHTMLGridObject])}globalActiveDHTMLGridObject=this;this.isActive=true}else{this.isActive=false;this.callEvent("onBlur",[this])}};this._doClick=function(ev){var selMethod=0;var el=this.getFirstParentOfType(_isIE?ev.srcElement:ev.target,"TD");if(!el||!el.parentNode||!el.parentNode.idd){return}var fl=true;if(this.markedCells){var markMethod=0;if(ev.shiftKey||ev.metaKey){markMethod=1}if(ev.ctrlKey){markMethod=2}this.doMark(el,markMethod);return true}if(this.selMultiRows!=false){if(ev.shiftKey&&this.row!=null&&this.selectedRows.length){selMethod=1}if(ev.ctrlKey||ev.metaKey){selMethod=2}}return this.doClick(el,fl,selMethod,false)};this._doContClick=function(ev){var el=this.getFirstParentOfType(_isIE?ev.srcElement:ev.target,"TD");if((!el)||(typeof(el.parentNode.idd)=="undefined")){this.callEvent("onEmptyClick",[ev]);return true}if(ev.button==2||(_isMacOS&&ev.ctrlKey)){if(!this.callEvent("onRightClick",[el.parentNode.idd,el._cellIndex,ev])){var z=function(e){(e||event).cancelBubble=true;return false};(ev.srcElement||ev.target).oncontextmenu=z;return z(ev)}if(this._ctmndx){if(!(this.callEvent("onBeforeContextMenu",[el.parentNode.idd,el._cellIndex,this]))){return true}if(_isIE){ev.srcElement.oncontextmenu=function(){event.cancelBubble=true;return false}}if(this._ctmndx.showContextMenu){var dEl0=window.document.documentElement;var dEl1=window.document.body;var corrector=new Array((dEl0.scrollLeft||dEl1.scrollLeft),(dEl0.scrollTop||dEl1.scrollTop));if(_isIE){var x=ev.clientX+corrector[0];var y=ev.clientY+corrector[1]}else{var x=ev.pageX;var y=ev.pageY}this._ctmndx.showContextMenu(x-1,y-1);this.contextID=this._ctmndx.contextMenuZoneId=el.parentNode.idd+"_"+el._cellIndex;this._ctmndx._skip_hide=true}else{el.contextMenuId=el.parentNode.idd+"_"+el._cellIndex;el.contextMenu=this._ctmndx;el.a=this._ctmndx._contextStart;el.a(el,ev);el.a=null}ev.cancelBubble=true;return false}}else{if(this._ctmndx){if(this._ctmndx.hideContextMenu){this._ctmndx.hideContextMenu()}else{this._ctmndx._contextEnd()}}}return true};this.doClick=function(el,fl,selMethod,show){if(!this.selMultiRows){selMethod=0}var psid=this.row?this.row.idd:0;this.setActive(true);if(!selMethod){selMethod=0}if(this.cell!=null){this.cell.className=this.cell.className.replace(/cellselected/g,"")}if(el.tagName=="TD"){if(this.checkEvent("onSelectStateChanged")){var initial=this.getSelectedId()}var prow=this.row;if(selMethod==1){var elRowIndex=this.rowsCol._dhx_find(el.parentNode);var lcRowIndex=this.rowsCol._dhx_find(this.lastClicked);if(elRowIndex>lcRowIndex){var strt=lcRowIndex;var end=elRowIndex}else{var strt=elRowIndex;var end=lcRowIndex}for(var i=0;i<this.rowsCol.length;i++){if((i>=strt&&i<=end)){if(this.rowsCol[i]&&(!this.rowsCol[i]._sRow)){if(!this.rowsCol[i].idd){continue}if(this.rowsCol[i].className.indexOf("rowselected")==-1&&(this.callEvent("onBeforeSelect",[this.rowsCol[i].idd,psid,el._cellIndex]))){this.rowsCol[i].className+=" rowselected";this.selectedRows[this.selectedRows.length]=this.rowsCol[i]}}else{this.clearSelection();return this.doClick(el,fl,0,show)}}}}else{if(selMethod==2){if(el.parentNode.className.indexOf("rowselected")!=-1){el.parentNode.className=el.parentNode.className.replace(/rowselected/g,"");this.selectedRows._dhx_removeAt(this.selectedRows._dhx_find(el.parentNode));var skipRowSelection=true;show=false}}}this.editStop();if(typeof(el.parentNode.idd)=="undefined"){return true}if((!skipRowSelection)&&(!el.parentNode._sRow)){if(this.callEvent("onBeforeSelect",[el.parentNode.idd,psid,el._cellIndex])){if(this.getSelectedRowId()!=el.parentNode.idd){if(selMethod==0){this.clearSelection()}this.cell=el;if((prow==el.parentNode)&&(this._chRRS)){fl=false}this.row=el.parentNode;this.row.className+=" rowselected";if(this.selectedRows._dhx_find(this.row)==-1){this.selectedRows[this.selectedRows.length]=this.row}}else{this.cell=el;this.row=el.parentNode}}else{fl=false}}if(this.cell&&this.cell.parentNode.className.indexOf("rowselected")!=-1){this.cell.className=this.cell.className.replace(/cellselected/g,"")+" cellselected"}if(selMethod!=1){if(!this.row){return}}this.lastClicked=el.parentNode;var rid=this.row.idd;var cid=this.cell;if(fl&&typeof(rid)!="undefined"&&cid&&!skipRowSelection){self.onRowSelectTime=setTimeout(function(){if(self.callEvent){self.callEvent("onRowSelect",[rid,cid._cellIndex])}},100)}else{this.callEvent("onRowSelectRSOnly",[rid])}if(this.checkEvent("onSelectStateChanged")){var afinal=this.getSelectedId();if(initial!=afinal){this.callEvent("onSelectStateChanged",[afinal,initial])}}if(skipRowSelection){return false}}this.isActive=true;if(show!==false&&this.cell&&this.cell.parentNode.idd){this.moveToVisible(this.cell)}};this.selectAll=function(){this.clearSelection();var coll=this.rowsBuffer;if(this.pagingOn){coll=this.rowsCol}for(var i=0;i<coll.length;i++){this.render_row(i).className+=" rowselected"}this.selectedRows=dhtmlxArray([].concat(coll));if(this.selectedRows.length){this.row=this.selectedRows[0];this.cell=this.row.cells[0]}if((this._fake)&&(!this._realfake)){this._fake.selectAll()}};this.selectCell=function(r,cInd,fl,preserve,edit,show){if(!fl){fl=false}if(typeof(r)!="object"){r=this.render_row(r)}if(!r||r==-1){return null}if(r._childIndexes){var c=r.childNodes[r._childIndexes[cInd]]}else{var c=r.childNodes[cInd]}if(!c){c=r.childNodes[0]}if(!this.markedCells){if(preserve){this.doClick(c,fl,3,show)}else{this.doClick(c,fl,0,show)}}else{this.doMark(c,preserve?2:0)}if(edit){this.editCell()}};this.moveToVisible=function(cell_obj,onlyVScroll){if(this.pagingOn){var newPage=Math.floor(this.getRowIndex(cell_obj.parentNode.idd)/this.rowsBufferOutSize)+1;if(newPage!=this.currentPage){this.changePage(newPage)}}try{if(cell_obj.offsetHeight){var distance=cell_obj.offsetLeft+cell_obj.offsetWidth+20;var scrollLeft=0;if(distance>(this.objBox.offsetWidth+this.objBox.scrollLeft)){if(cell_obj.offsetLeft>this.objBox.scrollLeft){scrollLeft=cell_obj.offsetLeft-(this.objBox.offsetWidth-cell_obj.offsetWidth)+5}}else{if(cell_obj.offsetLeft<this.objBox.scrollLeft){distance-=cell_obj.offsetWidth*2/3;if(distance<this.objBox.scrollLeft){scrollLeft=cell_obj.offsetLeft-5}}}if((scrollLeft)&&(!onlyVScroll)){this.objBox.scrollLeft=scrollLeft}}if(!cell_obj.offsetHeight){var mask=this._realfake?this._fake.rowsAr[cell_obj.parentNode.idd]:cell_obj.parentNode;distance=this.rowsBuffer._dhx_find(mask)*this._srdh}else{distance=cell_obj.offsetTop}var distancemax=distance+cell_obj.offsetHeight+38;if(distancemax>(this.objBox.offsetHeight+this.objBox.scrollTop)){var scrollTop=distance}else{if(distance<this.objBox.scrollTop){var scrollTop=distance-5}}if(scrollTop){this.objBox.scrollTop=scrollTop}}catch(er){}};this.editCell=function(){if(this.editor&&this.cell==this.editor.cell){return}this.editStop();if((this.isEditable!=true)||(!this.cell)){return false}var c=this.cell;if(c.parentNode._locked){return false}this.editor=this.cells4(c);if(this.editor!=null){if(this.editor.isDisabled()){this.editor=null;return false}if(this.callEvent("onEditCell",[0,this.row.idd,this.cell._cellIndex])!=false&&this.editor.edit){this._Opera_stop=(new Date).valueOf();this.editor.edit();c.className+=" editable";this.callEvent("onEditCell",[1,this.row.idd,this.cell._cellIndex])}else{this.editor=null}}};this.editStop=function(mode){if(_isOpera){if(this._Opera_stop){if((this._Opera_stop*1+50)>(new Date).valueOf()){return}this._Opera_stop=null}}if(this.editor&&this.editor!=null){this.editor.cell.className=this.editor.cell.className.replace("editable","");if(mode){var t=this.editor.val;this.editor.detach();this.editor.setValue(t);this.editor=null;this.callEvent("onEditCancel",[this.row.idd,this.cell._cellIndex,t]);return}if(this.editor.detach()){this.cell.wasChanged=true}var g=this.editor;if(g==null){return}this.editor=null;var z=this.callEvent("onEditCell",[2,this.row.idd,this.cell._cellIndex,g.getValue(),g.val]);if((typeof(z)=="string")||(typeof(z)=="number")){g[g.setImage?"setLabel":"setValue"](z)}else{if(!z){g[g.setImage?"setLabel":"setValue"](g.val)}}if(this._ahgr&&this.multiLine){this.setSizes()}}};this._nextRowCell=function(row,dir,pos){row=this._nextRow((this._groups?this.rowsCol:this.rowsBuffer)._dhx_find(row),dir);if(!row){return null}return row.childNodes[row._childIndexes?row._childIndexes[pos]:pos]};this._getNextCell=function(acell,dir,i){acell=acell||this.cell;var arow=acell.parentNode;if(this._tabOrder){i=this._tabOrder[acell._cellIndex];if(typeof i!="undefined"){if(i<0){acell=this._nextRowCell(arow,dir,Math.abs(i)-1)}else{acell=arow.childNodes[i]}}}else{var i=acell._cellIndex+dir;if(i>=0&&i<this._cCount){if(arow._childIndexes){i=arow._childIndexes[acell._cellIndex]+dir}acell=arow.childNodes[i]}else{acell=this._nextRowCell(arow,dir,(dir==1?0:(this._cCount-1)))}}if(!acell){if((dir==1)&&this.tabEnd){this.tabEnd.focus();this.tabEnd.focus();this.setActive(false)}if((dir==-1)&&this.tabStart){this.tabStart.focus();this.tabStart.focus();this.setActive(false)}return null}if(acell.style.display!="none"&&(!this.smartTabOrder||!this.cells(acell.parentNode.idd,acell._cellIndex).isDisabled())){return acell}return this._getNextCell(acell,dir)};this._nextRow=function(ind,dir){var r=this.render_row(ind+dir);if(!r||r==-1){return null}if(r&&r.style.display=="none"){return this._nextRow(ind+dir,dir)}return r};this.scrollPage=function(dir){if(!this.rowsBuffer.length){return}var master=this._realfake?this._fake:this;var new_ind=Math.floor((master._r_select||this.getRowIndex(this.row.idd)||0)+(dir)*this.objBox.offsetHeight/(this._srdh||20));if(new_ind<0){new_ind=0}if(new_ind>=this.rowsBuffer.length){new_ind=this.rowsBuffer.length-1}if(this._srnd&&!this.rowsBuffer[new_ind]){this.objBox.scrollTop+=Math.floor((dir)*this.objBox.offsetHeight/(this._srdh||20))*(this._srdh||20);if(this._fake){this._fake.objBox.scrollTop=this.objBox.scrollTop}master._r_select=new_ind}else{this.selectCell(new_ind,this.cell._cellIndex,true,false,false,(this.multiLine||this._srnd));if(!this.multiLine&&!this._srnd&&!this._realfake){this.objBox.scrollTop=this.getRowById(this.getRowId(new_ind)).offsetTop;if(this._fake){this._fake.objBox.scrollTop=this.objBox.scrollTop}}master._r_select=null}};this.doKey=function(ev){if(!ev){return true}if((ev.target||ev.srcElement).value!==window.undefined){var zx=(ev.target||ev.srcElement);if(zx.className!="dhxcombo_input"&&((!zx.parentNode)||(zx.parentNode.className.indexOf("editable")==-1))){return true}}if((globalActiveDHTMLGridObject)&&(this!=globalActiveDHTMLGridObject)){return globalActiveDHTMLGridObject.doKey(ev)}if(this.isActive==false){return true}if(this._htkebl){return true}if(!this.callEvent("onKeyPress",[ev.keyCode,ev.ctrlKey,ev.shiftKey,ev])){return false}var code="k"+ev.keyCode+"_"+(ev.ctrlKey?1:0)+"_"+(ev.shiftKey?1:0);if(this.cell){if(this._key_events[code]){if(false===this._key_events[code].call(this)){return true}if(ev.preventDefault){ev.preventDefault()}ev.cancelBubble=true;return false}if(this._key_events.k_other){this._key_events.k_other.call(this,ev)}}return true};this.selectRow=function(r,fl,preserve,show){if(typeof(r)!="object"){r=this.render_row(r)}this.selectCell(r,0,fl,preserve,false,show)};this.wasDblClicked=function(ev){var el=this.getFirstParentOfType(_isIE?ev.srcElement:ev.target,"TD");if(el){var rowId=el.parentNode.idd;return this.callEvent("onRowDblClicked",[rowId,el._cellIndex,ev])}};this._onHeaderClick=function(e,el){var that=this.grid;el=el||that.getFirstParentOfType(_isIE?event.srcElement:e.target,"TD");if(this.grid.resized==null){if(!(this.grid.callEvent("onHeaderClick",[el._cellIndexS,(e||window.event)]))){return false}that.sortField(el._cellIndexS,false,el)}this.grid.resized=null};this.deleteSelectedRows=function(){var num=this.selectedRows.length;if(num==0){return}var tmpAr=this.selectedRows;this.selectedRows=dhtmlxArray();for(var i=num-1;i>=0;i--){var node=tmpAr[i];if(!this.deleteRow(node.idd,node)){this.selectedRows[this.selectedRows.length]=node}else{if(node==this.row){var ind=i}}}if(ind){try{if(ind+1>this.rowsCol.length){ind--}this.selectCell(ind,0,true)}catch(er){this.row=null;this.cell=null}}};this.getSelectedRowId=function(){var selAr=new Array(0);var uni={};for(var i=0;i<this.selectedRows.length;i++){var id=this.selectedRows[i].idd;if(uni[id]){continue}selAr[selAr.length]=id;uni[id]=true}if(selAr.length==0){return null}else{return selAr.join(this.delim)}};this.getSelectedCellIndex=function(){if(this.cell!=null){return this.cell._cellIndex}else{return -1}};this.getColWidth=function(ind){return parseInt(this.cellWidthPX[ind])};this.setColWidth=function(ind,value){if(value=="*"){this.initCellWidth[ind]="*"}else{if(this._hrrar[ind]){return}if(this.cellWidthType=="px"){this.cellWidthPX[ind]=parseInt(value)}else{this.cellWidthPC[ind]=parseInt(value)}}this.setSizes()};this.getRowIndex=function(row_id){for(var i=0;i<this.rowsBuffer.length;i++){if(this.rowsBuffer[i]&&this.rowsBuffer[i].idd==row_id){return i}}return -1};this.getRowId=function(ind){return this.rowsBuffer[ind]?this.rowsBuffer[ind].idd:this.undefined};this.setRowId=function(ind,row_id){this.changeRowId(this.getRowId(ind),row_id)};this.changeRowId=function(oldRowId,newRowId){if(oldRowId==newRowId){return}var row=this.rowsAr[oldRowId];row.idd=newRowId;if(this.UserData[oldRowId]){this.UserData[newRowId]=this.UserData[oldRowId];this.UserData[oldRowId]=null}if(this._h2&&this._h2.get[oldRowId]){this._h2.get[newRowId]=this._h2.get[oldRowId];this._h2.get[newRowId].id=newRowId;delete this._h2.get[oldRowId]}this.rowsAr[oldRowId]=null;this.rowsAr[newRowId]=row;for(var i=0;i<row.childNodes.length;i++){if(row.childNodes[i]._code){row.childNodes[i]._code=this._compileSCL(row.childNodes[i]._val,row.childNodes[i])}}if(this._mat_links&&this._mat_links[oldRowId]){var a=this._mat_links[oldRowId];delete this._mat_links[oldRowId];for(var c in a){for(var i=0;i<a[c].length;i++){this._compileSCL(a[c][i].original,a[c][i])}}}this.callEvent("onRowIdChange",[oldRowId,newRowId])};this.setColumnIds=function(ids){this.columnIds=ids.split(this.delim)};this.setColumnId=function(ind,id){this.columnIds[ind]=id};this.getColIndexById=function(id){for(var i=0;i<this.columnIds.length;i++){if(this.columnIds[i]==id){return i}}};this.getColumnId=function(cin){return this.columnIds[cin]};this.getColumnLabel=function(cin,ind,hdr){var z=(hdr||this.hdr).rows[(ind||0)+1];for(var i=0;i<z.cells.length;i++){if(z.cells[i]._cellIndexS==cin){return(_isIE?z.cells[i].innerText:z.cells[i].textContent)}}return""};this.getColLabel=this.getColumnLabel;this.getFooterLabel=function(cin,ind){return this.getColumnLabel(cin,ind,this.ftr)};this.setRowTextBold=function(row_id){var r=this.getRowById(row_id);if(r){r.style.fontWeight="bold"}};this.setRowTextStyle=function(row_id,styleString){var r=this.getRowById(row_id);if(!r){return}for(var i=0;i<r.childNodes.length;i++){var pfix=r.childNodes[i]._attrs.style||"";if((this._hrrar)&&(this._hrrar[i])){pfix="display:none;"}if(_isIE){r.childNodes[i].style.cssText=pfix+"width:"+r.childNodes[i].style.width+";"+styleString}else{r.childNodes[i].style.cssText=pfix+"width:"+r.childNodes[i].style.width+";"+styleString}}};this.setRowColor=function(row_id,color){var r=this.getRowById(row_id);for(var i=0;i<r.childNodes.length;i++){r.childNodes[i].bgColor=color}};this.setCellTextStyle=function(row_id,ind,styleString){var r=this.getRowById(row_id);if(!r){return}var cell=r.childNodes[r._childIndexes?r._childIndexes[ind]:ind];if(!cell){return}var pfix="";if((this._hrrar)&&(this._hrrar[ind])){pfix="display:none;"}if(_isIE){cell.style.cssText=pfix+"width:"+cell.style.width+";"+styleString}else{cell.style.cssText=pfix+"width:"+cell.style.width+";"+styleString}};this.setRowTextNormal=function(row_id){var r=this.getRowById(row_id);if(r){r.style.fontWeight="normal"}};this.doesRowExist=function(row_id){if(this.getRowById(row_id)!=null){return true}else{return false}};this.getColumnsNum=function(){return this._cCount};this.moveRowUp=function(row_id){var r=this.getRowById(row_id);if(this.isTreeGrid()){return this.moveRowUDTG(row_id,-1)}var rInd=this.rowsCol._dhx_find(r);if((r.previousSibling)&&(rInd!=0)){r.parentNode.insertBefore(r,r.previousSibling);this.rowsCol._dhx_swapItems(rInd,rInd-1);this.setSizes();var bInd=this.rowsBuffer._dhx_find(r);this.rowsBuffer._dhx_swapItems(bInd,bInd-1);if(this._cssEven){this._fixAlterCss(rInd-1)}}};this.moveRowDown=function(row_id){var r=this.getRowById(row_id);if(this.isTreeGrid()){return this.moveRowUDTG(row_id,1)}var rInd=this.rowsCol._dhx_find(r);if(r.nextSibling){this.rowsCol._dhx_swapItems(rInd,rInd+1);if(r.nextSibling.nextSibling){r.parentNode.insertBefore(r,r.nextSibling.nextSibling)}else{r.parentNode.appendChild(r)}this.setSizes();var bInd=this.rowsBuffer._dhx_find(r);this.rowsBuffer._dhx_swapItems(bInd,bInd+1);if(this._cssEven){this._fixAlterCss(rInd)}}};this.getCombo=function(col_ind){if(!this.combos[col_ind]){this.combos[col_ind]=new dhtmlXGridComboObject()}return this.combos[col_ind]};this.setUserData=function(row_id,name,value){if(!row_id){row_id="gridglobaluserdata"}if(!this.UserData[row_id]){this.UserData[row_id]=new Hashtable()}this.UserData[row_id].put(name,value)};this.getUserData=function(row_id,name){if(!row_id){row_id="gridglobaluserdata"}this.getRowById(row_id);var z=this.UserData[row_id];return(z?z.get(name):"")};this.setEditable=function(fl){this.isEditable=dhx4.s2b(fl)};this.selectRowById=function(row_id,multiFL,show,call){if(!call){call=false}this.selectCell(this.getRowById(row_id),0,call,multiFL,false,show)};this.clearSelection=function(){this.editStop();for(var i=0;i<this.selectedRows.length;i++){var r=this.rowsAr[this.selectedRows[i].idd];if(r){r.className=r.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(from_row_id,to_row_id){var frRow=this.getRowById(from_row_id);if(!this.isTreeGrid()){for(var i=0;i<frRow.cells.length;i++){this.cells(to_row_id,i).setValue(this.cells(from_row_id,i).getValue())}}else{this._copyTreeGridRowContent(frRow,from_row_id,to_row_id)}if(!_isIE){this.getRowById(from_row_id).cells[0].height=frRow.cells[0].offsetHeight}};this.setFooterLabel=function(c,label,ind){return this.setColumnLabel(c,label,ind,this.ftr)};this.setColumnLabel=function(c,label,ind,hdr){var z=(hdr||this.hdr).rows[ind||1];var col=(z._childIndexes?z._childIndexes[c]:c);if(!z.cells[col]){return}if(!this.useImagesInHeader){var hdrHTML="<div class='hdrcell'>";if(label.indexOf("img:[")!=-1){var imUrl=label.replace(/.*\[([^>]+)\].*/,"$1");label=label.substr(label.indexOf("]")+1,label.length);hdrHTML+="<img width='18px' height='18px' align='absmiddle' src='"+imUrl+"' hspace='2'>"}hdrHTML+=label;hdrHTML+="</div>";z.cells[col].innerHTML=hdrHTML;if(this._hstyles[col]){z.cells[col].style.cssText=this._hstyles[c]}}else{z.cells[col].style.textAlign="left";z.cells[col].innerHTML="<img src='"+label+"'>";var a=new Image();a.src=""+label.replace(/(\.[a-z]+)/,".des$1");this.preloadImagesAr[this.preloadImagesAr.length]=a;var b=new Image();b.src=""+label.replace(/(\.[a-z]+)/,".asc$1");this.preloadImagesAr[this.preloadImagesAr.length]=b}if((label||"").indexOf("#")!=-1){var t=label.match(/(^|{)#([^}]+)(}|$)/);if(t){var tn="_in_header_"+t[2];if(this[tn]){this[tn]((this.forceDivInHeader?z.cells[col].firstChild:z.cells[col]),col,label.split(t[0]))}}}};this.setColLabel=function(a,b,ind,c){return this.setColumnLabel(a,b,(ind||0)+1,c)};this.clearAll=function(header){if(!this.obj.rows[0]){return}if(this._h2){this._h2=this._createHierarchy();if(this._fake){if(this._realfake){this._h2=this._fake._h2}else{this._fake._h2=this._h2}}}this.limit=this._limitC=0;this.editStop(true);if(this._dLoadTimer){window.clearTimeout(this._dLoadTimer)}if(this._dload){this.objBox.scrollTop=0;this.limit=this._limitC||0;this._initDrF=true}var len=this.rowsCol.length;len=this.obj.rows.length;for(var i=len-1;i>0;i--){var t_r=this.obj.rows[i];t_r.parentNode.removeChild(t_r)}if(header){this._master_row=null;this.obj.rows[0].parentNode.removeChild(this.obj.rows[0]);for(var i=this.hdr.rows.length-1;i>=0;i--){var t_r=this.hdr.rows[i];t_r.parentNode.removeChild(t_r)}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._strangeParams=[];this.defVal=[];this._ivizcol=null}this.row=null;this.cell=null;this.rowsCol=dhtmlxArray();this.rowsAr={};this._RaSeCol=[];this.rowsBuffer=dhtmlxArray();this.UserData=[];this.selectedRows=dhtmlxArray();if(this.pagingOn||this._srnd){this.xmlFileUrl=""}if(this.pagingOn){this.changePage(1)}if(this._contextCallTimer){window.clearTimeout(this._contextCallTimer)}if(this._sst){this.enableStableSorting(true)}this._fillers=this.undefined;this.setSortImgState(false);this.setSizes();this.callEvent("onClearAll",[])};this.sortField=function(ind,repeatFl,r_el){if(this.getRowsNum()==0){return false}var el=this.hdr.rows[0].cells[ind];if(!el){return}if(el.tagName=="TH"&&(this.fldSort.length-1)>=el._cellIndex&&this.fldSort[el._cellIndex]!="na"){var data=this.getSortingState();var sortType=(data[0]==ind&&data[1]=="asc")?"des":"asc";if(!this.callEvent("onBeforeSorting",[ind,this.fldSort[ind],sortType])){return}this.sortImg.className="dhxgrid_sort_"+(sortType=="asc"?"asc":"desc");if(this.useImagesInHeader){var cel=this.hdr.rows[1].cells[el._cellIndex].firstChild;if(this.fldSorted!=null){var celT=this.hdr.rows[1].cells[this.fldSorted._cellIndex].firstChild;celT.src=celT.src.replace(/(\.asc\.)|(\.des\.)/,".")}cel.src=cel.src.replace(/(\.[a-z]+)$/,"."+sortType+"$1")}this.sortRows(el._cellIndex,this.fldSort[el._cellIndex],sortType);this.fldSorted=el;this.r_fldSorted=r_el;var c=this.hdr.rows[1];var c=r_el.parentNode;var real_el=c._childIndexes?c._childIndexes[el._cellIndex]:el._cellIndex;this.setSortImgPos(false,false,false,r_el)}};this.setCustomSorting=function(func,col){if(!this._customSorts){this._customSorts=new Array()}this._customSorts[col]=(typeof(func)=="string")?eval(func):func;this.fldSort[col]="cus"};this.enableHeaderImages=function(fl){this.useImagesInHeader=fl};this.setHeader=function(hdrStr,splitSign,styles){if(typeof(hdrStr)!="object"){var arLab=this._eSplit(hdrStr)}else{arLab=[].concat(hdrStr)}var arWdth=new Array(0);var arTyp=new dhtmlxArray(0);var arAlg=new Array(0);var arVAlg=new Array(0);var arSrt=new Array(0);for(var i=0;i<arLab.length;i++){arWdth[arWdth.length]=Math.round(100/arLab.length);arTyp[arTyp.length]="ed";arAlg[arAlg.length]="left";arVAlg[arVAlg.length]="middle";arSrt[arSrt.length]="na"}this.splitSign=splitSign||"#cspan";this.hdrLabels=arLab;this.cellWidth=arWdth;if(!this.initCellWidth.length){this.setInitWidthsP(arWdth.join(this.delim),true)}this.cellType=arTyp;this.cellAlign=arAlg;this.cellVAlign=arVAlg;this.fldSort=arSrt;this._hstyles=styles||[]};this._eSplit=function(str){if(![].push){return str.split(this.delim)}var a="r"+(new Date()).valueOf();var z=this.delim.replace(/([\|\+\*\^])/g,"\\$1");return(str||"").replace(RegExp(z,"g"),a).replace(RegExp("\\\\"+a,"g"),this.delim).split(a)};this.getColType=function(cInd){return this.cellType[cInd]};this.getColTypeById=function(cID){return this.cellType[this.getColIndexById(cID)]};this.setColTypes=function(typeStr){this.cellType=dhtmlxArray(typeStr.split(this.delim));this._strangeParams=new Array();for(var i=0;i<this.cellType.length;i++){if((this.cellType[i].indexOf("[")!=-1)){var z=this.cellType[i].split(/[\[\]]+/g);this.cellType[i]=z[0];this.defVal[i]=z[1];if(z[1].indexOf("=")==0){this.cellType[i]="math";this._strangeParams[i]=z[0]}}if(!window["eXcell_"+this.cellType[i]]){dhx4.callEvent("onConfigurationError",["Incorrect cell type: "+this.cellType[i],this,this.cellType[i]])}}};this.setColSorting=function(sortStr){this.fldSort=sortStr.split(this.delim);var check={str:1,"int":1,date:1};for(var i=0;i<this.fldSort.length;i++){if((!check[this.fldSort[i]])&&(typeof(window[this.fldSort[i]])=="function")){if(!this._customSorts){this._customSorts=new Array()}this._customSorts[i]=window[this.fldSort[i]];this.fldSort[i]="cus"}}};this.setColAlign=function(alStr){this.cellAlign=alStr.split(this.delim);for(var i=0;i<this.cellAlign.length;i++){this.cellAlign[i]=this.cellAlign[i]._dhx_trim()}};this.setColVAlign=function(valStr){this.cellVAlign=valStr.split(this.delim)};this.setNoHeader=function(fl){this.noHeader=dhx4.s2b(fl)};this.showRow=function(rowID){this.getRowById(rowID);if(this._h2){this.openItem(this._h2.get[rowID].parent.id)}var c=this.getRowById(rowID).childNodes[0];while(c&&c.style.display=="none"){c=c.nextSibling}if(c){this.moveToVisible(c,true)}};this.setStyle=function(ss_header,ss_grid,ss_selCell,ss_selRow){this.ssModifier=[ss_header,ss_grid,ss_selCell,ss_selCell,ss_selRow];var prefs=["#"+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"];var index=0;while(!_isIE){try{var temp=document.styleSheets[index].cssRules.length}catch(e){index++;continue}break}for(var i=0;i<prefs.length;i++){if(this.ssModifier[i]){if(_isIE){document.styleSheets[0].addRule(prefs[i],this.ssModifier[i])}else{document.styleSheets[index].insertRule(prefs[i]+(" { "+this.ssModifier[i]+" }"),document.styleSheets[index].cssRules.length)}}}};this.setColumnColor=function(clr){this.columnColor=clr.split(this.delim)};this.enableAlterCss=function(cssE,cssU,perLevel,levelUnique){if(cssE||cssU){this.attachEvent("onGridReconstructed",function(){this._fixAlterCss();if(this._fake){this._fake._fixAlterCss()}})}this._cssSP=perLevel;this._cssSU=levelUnique;this._cssEven=cssE;this._cssUnEven=cssU};this._fixAlterCss=function(ind){if(this._h2&&(this._cssSP||this._cssSU)){return this._fixAlterCssTGR(ind)}if(!this._cssEven&&!this._cssUnEven){return}ind=ind||0;var j=ind;for(var i=ind;i<this.rowsCol.length;i++){if(!this.rowsCol[i]){continue}if(this.rowsCol[i].style.display!="none"){if(this.rowsCol[i]._cntr){j=1;continue}if(this.rowsCol[i].className.indexOf("rowselected")!=-1){if(j%2==1){this.rowsCol[i].className=this._cssUnEven+" rowselected "+(this.rowsCol[i]._css||"")}else{this.rowsCol[i].className=this._cssEven+" rowselected "+(this.rowsCol[i]._css||"")}}else{if(j%2==1){this.rowsCol[i].className=this._cssUnEven+" "+(this.rowsCol[i]._css||"")}else{this.rowsCol[i].className=this._cssEven+" "+(this.rowsCol[i]._css||"")}}j++}}};this.clearChangedState=function(){for(var i=0;i<this.rowsCol.length;i++){var row=this.rowsCol[i];if(row&&row.childNodes){var cols=row.childNodes.length;for(var j=0;j<cols;j++){row.childNodes[j].wasChanged=false}}}};this.getChangedRows=function(and_added){var res=new Array();this.forEachRow(function(id){var row=this.rowsAr[id];if(row.tagName!="TR"){return}var cols=row.childNodes.length;if(and_added&&row._added){res[res.length]=row.idd}else{for(var j=0;j<cols;j++){if(row.childNodes[j].wasChanged){res[res.length]=row.idd;break}}}});return res.join(this.delim)};this._sUDa=false;this._sAll=false;this.setSerializationLevel=function(userData,fullXML,config,changedAttr,onlyChanged,asCDATA){this._sUDa=userData;this._sAll=fullXML;this._sConfig=config;this._chAttr=changedAttr;this._onlChAttr=onlyChanged;this._asCDATA=asCDATA};this.setSerializableColumns=function(list){if(!list){this._srClmn=null;return}this._srClmn=(list||"").split(",");for(var i=0;i<this._srClmn.length;i++){this._srClmn[i]=dhx4.s2b(this._srClmn[i])}};this._serialise=function(rCol,inner,closed){this.editStop();var out=[];var close="</"+this.xml.s_row+">";if(this.isTreeGrid()){this._h2.forEachChildF(0,function(el){var temp=this._serializeRow(this.render_row_tree(-1,el.id));out.push(temp);if(temp){return true}else{return false}},this,function(){out.push(close)})}else{for(var i=0;i<this.rowsBuffer.length;i++){if(this.rowsBuffer[i]){if(this._chAttr&&this.rowsBuffer[i]._locator){continue}var temp=this._serializeRow(this.render_row(i));out.push(temp);if(temp){out.push(close)}}}}return[out.join("")]};this._serializeRow=function(r,i){var out=[];var ra=this.xml.row_attrs;var ca=this.xml.cell_attrs;out.push("<"+this.xml.s_row);out.push(" id='"+r.idd+"'");if((this._sAll)&&this.selectedRows._dhx_find(r)!=-1){out.push(" selected='1'")}if(this._h2&&this._h2.get[r.idd].state=="minus"){out.push(" open='1'")}if(ra.length){for(var i=0;i<ra.length;i++){out.push(" "+ra[i]+"='"+r._attrs[ra[i]]+"'")}}out.push(">");if(this._sUDa&&this.UserData[r.idd]){keysAr=this.UserData[r.idd].getKeys();for(var ii=0;ii<keysAr.length;ii++){out.push("<userdata name='"+keysAr[ii]+"'>"+(this._asCDATA?"<![CDATA[":"")+this.UserData[r.idd].get(keysAr[ii])+(this._asCDATA?"]]>":"")+"</userdata>")}}var changeFl=false;for(var jj=0;jj<this._cCount;jj++){if((!this._srClmn)||(this._srClmn[jj])){var zx=this.cells3(r,jj);out.push("<cell");if(ca.length){for(var i=0;i<ca.length;i++){out.push(" "+ca[i]+"='"+zx.cell._attrs[ca[i]]+"'")}}zxVal=zx[this._agetm]();if(this._asCDATA){zxVal="<![CDATA["+zxVal+"]]>"}if((this._ecspn)&&(zx.cell.colSpan)&&zx.cell.colSpan>1){out.push(' colspan="'+zx.cell.colSpan+'" ')}if(this._chAttr){if(zx.wasChanged()){out.push(' changed="1"');changeFl=true}}else{if((this._onlChAttr)&&(zx.wasChanged())){changeFl=true}}if(this._sAll&&this.cellType[jj]=="tree"){out.push((this._h2?(" image='"+this._h2.get[r.idd].image+"'"):"")+">"+zxVal+"</cell>")}else{out.push(">"+zxVal+"</cell>")}if((this._ecspn)&&(zx.cell.colSpan)){for(var u=0;u<zx.cell.colSpan-1;u++){out.push("<cell/>");jj++}}}}if((this._onlChAttr)&&(!changeFl)&&(!r._added)){return""}return out.join("")};this._serialiseConfig=function(){var out="<head>";for(var i=0;i<this.hdr.rows[0].cells.length;i++){if(this._srClmn&&!this._srClmn[i]){continue}var sort=this.fldSort[i];if(sort=="cus"){sort=this._customSorts[i].toString();sort=sort.replace(/function[\ ]*/,"").replace(/\([^\f]*/,"")}out+="<column width='"+this.getColWidth(i)+"' align='"+this.cellAlign[i]+"' type='"+this.cellType[i]+"' sort='"+(sort||"na")+"' color='"+(this.columnColor[i]||"")+"'"+(this.columnIds[i]?(" id='"+this.columnIds[i]+"'"):"")+">";if(this._asCDATA){out+="<![CDATA["+this.getColumnLabel(i)+"]]>"}else{out+=this.getColumnLabel(i)}var z=this.getCombo(i);if(z){for(var j=0;j<z.keys.length;j++){out+="<option value='"+z.keys[j]+"'>"+z.values[j]+"</option>"}}out+="</column>"}return out+="</head>"};this.serialize=function(){var out='<?xml version="1.0"?><rows>';if(this._mathSerialization){this._agetm="getMathValue"}else{this._agetm="getValue"}if(this._sUDa&&this.UserData.gridglobaluserdata){var keysAr=this.UserData.gridglobaluserdata.getKeys();for(var i=0;i<keysAr.length;i++){out+="<userdata name='"+keysAr[i]+"'>"+this.UserData.gridglobaluserdata.get(keysAr[i])+"</userdata>"}}if(this._sConfig){out+=this._serialiseConfig()}out+=this._serialise();out+="</rows>";return out};this.getPosition=function(oNode,pNode){if(!pNode){var pos=dhx4.getOffset(oNode);return[pos.left,pos.top]}pNode=pNode||document.body;var oCurrentNode=oNode;var iLeft=0;var iTop=0;while((oCurrentNode)&&(oCurrentNode!=pNode)){iLeft+=oCurrentNode.offsetLeft-oCurrentNode.scrollLeft;iTop+=oCurrentNode.offsetTop-oCurrentNode.scrollTop;oCurrentNode=oCurrentNode.offsetParent}if(pNode==document.body){if(_isIE){iTop+=document.body.offsetTop||document.documentElement.offsetTop;iLeft+=document.body.offsetLeft||document.documentElement.offsetLeft}else{if(!_isFF){iLeft+=document.body.offsetLeft;iTop+=document.body.offsetTop}}}return[iLeft,iTop]};this.getFirstParentOfType=function(obj,tag){while(obj&&obj.tagName!=tag&&obj.tagName!="BODY"){obj=obj.parentNode}return obj};this.objBox.onscroll=function(){this.grid._doOnScroll()};this.hdrBox.onscroll=function(){if(this._try_header_sync){return}this._try_header_sync=true;if(Math.abs(this.grid.objBox.scrollLeft-this.scrollLeft)>1){this.grid.objBox.scrollLeft=this.scrollLeft}this._try_header_sync=false};if((!_isOpera)||(_OperaRv>8.5)){this.hdr.onmousemove=function(e){this.grid.changeCursorState(e||window.event)};this.hdr.onmousedown=function(e){return this.grid.startColResize(e||window.event)}}this.obj.onmousemove=this._drawTooltip;this.objBox.onclick=function(e){e=e||event;e.cancelBubble=true;this.firstChild.grid.setActive(true);window.dhx4.callEvent("_onGridClick",[e,this.firstChild.grid])};this.obj.onclick=function(e){if(this.grid._doClick(e||window.event)!==false){if(this.grid._sclE){this.grid.editCell(e||window.event)}else{this.grid.editStop()}}e=e||event;e.cancelBubble=true;window.dhx4.callEvent("_onGridClick",[e,this.grid])};if(_isMacOS){this.entBox.oncontextmenu=function(e){e.cancelBubble=true;if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}var that=this.grid;if(that._realfake){that=that._fake}return that._doContClick(e||window.event)}}else{this.entBox.onmousedown=function(e){return this.grid._doContClick(e||window.event)};this.entBox.oncontextmenu=function(e){if(this.grid._ctmndx){(e||event).cancelBubble=true}return !this.grid._ctmndx}}this.obj.ondblclick=function(e){if(!this.grid.wasDblClicked(e||window.event)){return false}if(this.grid._dclE){var row=this.grid.getFirstParentOfType((_isIE?event.srcElement:e.target),"TR");if(row==this.grid.row){this.grid.editCell(e||window.event)}}(e||event).cancelBubble=true;if(_isOpera){return false}};this.hdr.onclick=this._onHeaderClick;this.sortImg.onclick=function(){self._onHeaderClick.apply({grid:self},[null,self.r_fldSorted])};this.hdr.ondblclick=this._onHeaderDblClick;if(!document.body._dhtmlxgrid_onkeydown){dhtmlxEvent(document,"keydown",function(e){if(globalActiveDHTMLGridObject){return globalActiveDHTMLGridObject.doKey(e||window.event)}});document.body._dhtmlxgrid_onkeydown=true}dhtmlxEvent(document.body,"click",function(){if(self.editStop){self.editStop()}if(self.isActive){self.setActive(false)}});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}if(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;if(dhtmlx.image_path){this.setImagePath(dhtmlx.image_path)}if(dhtmlx.skin){this.setSkin(dhtmlx.skin)}return this}dhtmlXGridObject.prototype={getRowAttribute:function(c,a){return this.getRowById(c)._attrs[a]},setRowAttribute:function(e,a,c){this.getRowById(e)._attrs[a]=c},isTreeGrid:function(){return(this.cellType._dhx_find("tree")!=-1)},setRowHidden:function(j,e){var c=dhx4.s2b(e);var h=this.getRowById(j);if(!h){return}if(h.expand===""){this.collapseKids(h)}if((e)&&(h.style.display!="none")){h.style.display="none";var g=this.selectedRows._dhx_find(h);if(g!=-1){h.className=h.className.replace("rowselected","");for(var a=0;a<h.childNodes.length;a++){h.childNodes[a].className=h.childNodes[a].className.replace(/cellselected/g,"")}this.selectedRows._dhx_removeAt(g)}this.callEvent("onGridReconstructed",[])}if((!e)&&(h.style.display=="none")){h.style.display="";this.callEvent("onGridReconstructed",[])}this.callEvent("onRowHide",[j,e]);this.setSizes()},setColumnHidden:function(e,c){if(!this.hdr.rows.length){if(!this._ivizcol){this._ivizcol=[]}return this._ivizcol[e]=c}if((this.fldSorted)&&(this.fldSorted.cellIndex==e)&&(c)){this.sortImg.style.display="none"}var a=dhx4.s2b(c);if(a){if(!this._hrrar){this._hrrar=new Array()}else{if(this._hrrar[e]){return}}this._hrrar[e]="display:none;";this._hideShowColumn(e,"none")}else{if((!this._hrrar)||(!this._hrrar[e])){return}this._hrrar[e]="";this._hideShowColumn(e,"")}if((this.fldSorted)&&(this.fldSorted.cellIndex==e)&&(!c)){this.sortImg.style.display="inline"}this.setSortImgPos();this.callEvent("onColumnHidden",[e,c])},isColumnHidden:function(a){if((this._hrrar)&&(this._hrrar[a])){return true}return false},setColumnsVisibility:function(c){if(c){this._ivizcol=c.split(this.delim)}if(this.hdr.rows.length&&this._ivizcol){for(var a=0;a<this._ivizcol.length;a++){this.setColumnHidden(a,this._ivizcol[a])}}},_fixHiddenRowsAll:function(n,e,a,c,l){l=l||"_cellIndex";var m=n.rows.length;for(var h=0;h<m;h++){var o=n.rows[h].childNodes;if(o.length!=this._cCount){for(var g=0;g<o.length;g++){if(o[g][l]==e){o[g].style[a]=c;break}}}else{o[e].style[a]=c}}},_hideShowColumn:function(h,g){var a=h;if(this.hdr.rows[1]&&(this.hdr.rows[1]._childIndexes)&&(this.hdr.rows[1]._childIndexes[h]!=h)){a=this.hdr.rows[1]._childIndexes[h]}if(g=="none"){this.hdr.rows[0].cells[h]._oldWidth=this.hdr.rows[0].cells[h].style.width||(this.initCellWidth[h]+"px");this.hdr.rows[0].cells[h]._oldWidthP=this.cellWidthPC[h];this.obj.rows[0].cells[h].style.width="0px";var c={rows:[this.obj.rows[0]]};this.forEachRow(function(j){if(this.rowsAr[j].tagName=="TR"){c.rows.push(this.rowsAr[j])}});this._fixHiddenRowsAll(c,h,"display","none");if(this.isTreeGrid()){this._fixHiddenRowsAllTG(h,"none")}if((_isOpera&&_OperaRv<9)||_isKHTML||(_isFF)){this._fixHiddenRowsAll(this.hdr,h,"display","none","_cellIndexS")}if(this.ftr){this._fixHiddenRowsAll(this.ftr.childNodes[0],h,"display","none")}this._fixHiddenRowsAll(this.hdr,h,"whiteSpace","nowrap","_cellIndexS");if(!this.cellWidthPX.length&&!this.cellWidthPC.length){this.cellWidthPX=[].concat(this.initCellWidth)}if(this.cellWidthPX[h]){this.cellWidthPX[h]=0}if(this.cellWidthPC[h]){this.cellWidthPC[h]=0}}else{if(this.hdr.rows[0].cells[h]._oldWidth){var e=this.hdr.rows[0].cells[h];if(_isOpera||_isKHTML||(_isFF)){this._fixHiddenRowsAll(this.hdr,h,"display","","_cellIndexS")}if(this.ftr){this._fixHiddenRowsAll(this.ftr.childNodes[0],h,"display","")}var c={rows:[this.obj.rows[0]]};this.forEachRow(function(j){if(this.rowsAr[j].tagName=="TR"){c.rows.push(this.rowsAr[j])}});this._fixHiddenRowsAll(c,h,"display","");if(this.isTreeGrid()){this._fixHiddenRowsAllTG(h,"")}this._fixHiddenRowsAll(this.hdr,h,"whiteSpace","normal","_cellIndexS");if(e._oldWidthP){this.cellWidthPC[h]=e._oldWidthP}if(e._oldWidth){this.cellWidthPX[h]=parseInt(e._oldWidth)}}}this.setSizes();if((!_isIE)&&(!_isFF)){this.obj.border=1;this.obj.border=0}},enableColSpan:function(a){this._ecspn=dhx4.s2b(a)},enableRowsHover:function(c,a){this._unsetRowHover(false,true);this._hvrCss=a;if(dhx4.s2b(c)){if(!this._elmnh){this.obj._honmousemove=this.obj.onmousemove;this.obj.onmousemove=this._setRowHover;if(_isIE){this.obj.onmouseleave=this._unsetRowHover}else{this.obj.onmouseout=this._unsetRowHover}this._elmnh=true}}else{if(this._elmnh){this.obj.onmousemove=this.obj._honmousemove;if(_isIE){this.obj.onmouseleave=null}else{this.obj.onmouseout=null}this._elmnh=false}}},enableEditEvents:function(c,e,a){this._sclE=dhx4.s2b(c);this._dclE=dhx4.s2b(e);this._f2kE=dhx4.s2b(a)},enableLightMouseNavigation:function(a){if(dhx4.s2b(a)){if(!this._elmn){this.entBox._onclick=this.entBox.onclick;this.entBox.onclick=function(){return true};this.obj._onclick=this.obj.onclick;this.obj.onclick=function(g){var h=this.grid.getFirstParentOfType(g?g.target:event.srcElement,"TD");if(!h){return}this.grid.editStop();this.grid.doClick(h);this.grid.editCell();(g||event).cancelBubble=true};this.obj._onmousemove=this.obj.onmousemove;this.obj.onmousemove=this._autoMoveSelect;this._elmn=true}}else{if(this._elmn){this.entBox.onclick=this.entBox._onclick;this.obj.onclick=this.obj._onclick;this.obj.onmousemove=this.obj._onmousemove;this._elmn=false}}},_unsetRowHover:function(g,h){if(h){that=this}else{that=this.grid}if((that._lahRw)&&(that._lahRw!=h)){for(var a=0;a<that._lahRw.childNodes.length;a++){that._lahRw.childNodes[a].className=that._lahRw.childNodes[a].className.replace(that._hvrCss,"")}that._lahRw=null}},_setRowHover:function(g){var h=this.grid.getFirstParentOfType(g?g.target:event.srcElement,"TD");if(h&&h.parentNode!=this.grid._lahRw){this.grid._unsetRowHover(0,h);h=h.parentNode;if(!h.idd||h.idd=="__filler__"){return}for(var a=0;a<h.childNodes.length;a++){h.childNodes[a].className+=" "+this.grid._hvrCss}this.grid._lahRw=h}this._honmousemove(g)},_autoMoveSelect:function(a){if(!this.grid.editor){var g=this.grid.getFirstParentOfType(a?a.target:event.srcElement,"TD");if(g.parentNode.idd){this.grid.doClick(g,true,0)}}this._onmousemove(a)},enableDistributedParsing:function(e,a,c){if(dhx4.s2b(e)){this._ads_count=a||10;this._ads_time=c||250}else{this._ads_count=0}},destructor:function(){this.editStop(true);if(this._sizeTime){this._sizeTime=window.clearTimeout(this._sizeTime)}this.entBox.className=(this.entBox.className||"").replace(/gridbox.*/,"");if(this.formInputs){for(var e=0;e<this.formInputs.length;e++){this.parentForm.removeChild(this.formInputs[e])}}var c;for(var e=0;e<this.rowsCol.length;e++){if(this.rowsCol[e]){this.rowsCol[e].grid=null}}for(e in this.rowsAr){if(this.rowsAr[e]){this.rowsAr[e]=null}}this.rowsCol=new dhtmlxArray();this.rowsAr={};this.entBox.innerHTML="";var g=function(){};this.entBox.onclick=this.entBox.onmousedown=this.entBox.onbeforeactivate=this.entBox.onbeforedeactivate=this.entBox.onbeforedeactivate=this.entBox.onselectstart=g;this.setSizes=this._update_srnd_view=this.callEvent=g;this.entBox.grid=this.objBox.grid=this.hdrBox.grid=this.obj.grid=this.hdr.grid=null;if(this._fake){this.globalBox.innerHTML="";this._fake.setSizes=this._fake._update_srnd_view=this._fake.callEvent=g;this.globalBox.onclick=this.globalBox.onmousedown=this.globalBox.onbeforeactivate=this.globalBox.onbeforedeactivate=this.globalBox.onbeforedeactivate=this.globalBox.onselectstart=g}for(c in this){if((this[c])&&(this[c].m_obj)){this[c].m_obj=null}this[c]=null}if(this==globalActiveDHTMLGridObject){globalActiveDHTMLGridObject=null}return null},getSortingState:function(){var a=new Array();if(this.fldSorted){a[0]=this.fldSorted._cellIndex;a[1]=(this.sortImg.className=="dhxgrid_sort_desc"?"des":"asc")}return a},enableAutoHeight:function(e,c,a){this._ahgr=dhx4.s2b(e);this._ahgrF=dhx4.s2b(a);this._ahgrM=c||null;if(arguments.length==1){this.objBox.style.overflowY=e?"hidden":"auto"}if(c=="auto"){this._ahgrM=null;this._ahgrMA=true;this._setAutoResize()}},enableStableSorting:function(a){this._sst=dhx4.s2b(a);this.rowsCol.stablesort=function(l){var h=this.length-1;for(var g=0;g<this.length-1;g++){for(var e=0;e<h;e++){if(l(this[e],this[e+1])>0){var c=this[e];this[e]=this[e+1];this[e+1]=c}}h--}}},enableKeyboardSupport:function(a){this._htkebl=!dhx4.s2b(a)},enableContextMenu:function(a){this._ctmndx=a},setScrollbarWidthCorrection:function(a){},enableTooltips:function(c){this._enbTts=c.split(",");for(var a=0;a<this._enbTts.length;a++){this._enbTts[a]=dhx4.s2b(this._enbTts[a])}},enableResizing:function(c){this._drsclmn=c.split(",");for(var a=0;a<this._drsclmn.length;a++){this._drsclmn[a]=dhx4.s2b(this._drsclmn[a])}},setColumnMinWidth:function(a,c){if(arguments.length==2){if(!this._drsclmW){this._drsclmW=new Array()}this._drsclmW[c]=a}else{this._drsclmW=a.split(",")}},enableCellIds:function(a){this._enbCid=dhx4.s2b(a)},lockRow:function(a,e){var c=this.getRowById(a);if(c){c._locked=dhx4.s2b(e);if((this.cell)&&(this.cell.parentNode.idd==a)){this.editStop()}}},_getRowArray:function(h){var g=new Array();for(var e=0;e<h.childNodes.length;e++){var c=this.cells3(h,e);g[e]=c.getValue()}return g},setDateFormat:function(c,a){this._dtmask=c;this._dtmask_inc=a},setNumberFormat:function(m,e,h,l){var g=m.replace(/[^0\,\.]*/g,"");var a=g.indexOf(".");if(a>-1){a=g.length-a-1}var c=g.indexOf(",");if(c>-1){c=g.length-a-2-c}if(typeof h!="string"){h=this.i18n.decimal_separator}if(typeof l!="string"){l=this.i18n.group_separator}var n=m.split(g)[0];var j=m.split(g)[1];this._maskArr[e]=[a,c,n,j,h,l]},_aplNFb:function(h,g){var c=this._maskArr[g];if(!c){return h}var e=parseFloat(h.toString().replace(/[^0-9]*/g,""));if(h.toString().substr(0,1)=="-"){e=e*-1}if(c[0]>0){e=e/Math.pow(10,c[0])}return e},_aplNF:function(l,h){var e=this._maskArr[h];if(!e){return l}var m=(parseFloat(l)<0?"-":"")+e[2];l=Math.abs(Math.round(parseFloat(l)*Math.pow(10,e[0]>0?e[0]:0))).toString();l=(l.length<e[0]?Math.pow(10,e[0]+1-l.length).toString().substr(1,e[0]+1)+l.toString():l).split("").reverse();l[e[0]]=(l[e[0]]||"0")+e[4];if(e[1]>0){for(var g=(e[0]>0?0:1)+e[0]+e[1];g<l.length;g+=e[1]){l[g]+=e[5]}}return m+l.reverse().join("")+e[3]},_launchCommands:function(a){for(var g=0;g<a.length;g++){var e=new Array();for(var c=0;c<a[g].childNodes.length;c++){if(a[g].childNodes[c].nodeType==1){e[e.length]=a[g].childNodes[c].firstChild.data}}this[a[g].getAttribute("command")].apply(this,e)}},_parseHead:function(h){var g=dhx4.ajax.xpath("./head",h);if(g.length){var l=dhx4.ajax.xpath("./column",g[0]);var m=dhx4.ajax.xpath("./settings",g[0]);var C="setInitWidths";var w=false;if(m[0]){for(var n=0;n<m[0].childNodes.length;n++){switch(m[0].childNodes[n].tagName){case"colwidth":if(m[0].childNodes[n].firstChild&&m[0].childNodes[n].firstChild.data=="%"){C="setInitWidthsP"}break;case"splitat":w=(m[0].childNodes[n].firstChild?m[0].childNodes[n].firstChild.data:false);break}}}this._launchCommands(dhx4.ajax.xpath("./beforeInit/call",g[0]));if(l.length>0){if(this.hdr.rows.length>0){this.clearAll(true)}var a=[[],[],[],[],[],[],[],[],[]];var v=["","width","type","align","sort","color","format","hidden","id"];var u=["",C,"setColTypes","setColAlign","setColSorting","setColumnColor","","","setColumnIds"];for(var A=0;A<l.length;A++){for(var y=1;y<v.length;y++){a[y].push(l[A].getAttribute(v[y]))}a[0].push((l[A].firstChild?l[A].firstChild.data:"").replace(/^\s*((\s\S)*.+)\s*$/gi,"$1"))}this.setHeader(a[0]);for(var A=0;A<u.length;A++){if(u[A]){this[u[A]](a[A].join(this.delim))}}for(var A=0;A<l.length;A++){if((this.cellType[A].indexOf("co")==0)||(this.cellType[A]=="clist")){var o=dhx4.ajax.xpath("./option",l[A]);if(o.length){var x=new Array();if(this.cellType[A]=="clist"){for(var y=0;y<o.length;y++){x[x.length]=o[y].firstChild?o[y].firstChild.data:""}this.registerCList(A,x)}else{var D=this.getCombo(A);for(var y=0;y<o.length;y++){D.put(o[y].getAttribute("value"),o[y].firstChild?o[y].firstChild.data:"")}}}}else{if(a[6][A]){if((this.cellType[A].toLowerCase().indexOf("calendar")!=-1)||(this.fldSort[A]=="date")){this.setDateFormat(a[6][A])}else{this.setNumberFormat(a[6][A],A)}}}}this.init();var e=a[7].join(this.delim);if(this.setColHidden&&e.replace(/,/g,"")!=""){this.setColHidden(e)}if((w)&&(this.splitAt)){this.splitAt(w)}}this._launchCommands(dhx4.ajax.xpath("./afterInit/call",g[0]))}var c=dhx4.ajax.xpath("//rows/userdata",h);if(c.length>0){if(!this.UserData.gridglobaluserdata){this.UserData.gridglobaluserdata=new Hashtable()}for(var y=0;y<c.length;y++){var E="";for(var r=0;r<c[y].childNodes.length;r++){E+=c[y].childNodes[r].nodeValue}this.UserData.gridglobaluserdata.put(c[y].getAttribute("name"),E)}}},getCheckedRows:function(a){var c=new Array();this.forEachRowA(function(g){var e=this.cells(g,a);if(e.changeState&&e.getValue()!=0){c.push(g)}},true);return c.join(",")},checkAll:function(){var c=arguments.length?arguments[0]:1;for(var a=0;a<this.getColumnsNum();a++){if(this.getColType(a)=="ch"){this.setCheckedRows(a,c)}}},uncheckAll:function(){this.checkAll(0)},setCheckedRows:function(c,a){this.forEachRowA(function(e){if(this.cells(e,c).isCheckbox()){this.cells(e,c).setValue(a)}})},_drawTooltip:function(j){var l=this.grid.getFirstParentOfType(j?j.target:event.srcElement,"TD");if(!l||((this.grid.editor)&&(this.grid.editor.cell==l))){return true}var h=l.parentNode;if(!h.idd||h.idd=="__filler__"){return}var g=(j?j.target:event.srcElement);if(h.idd==window.unknown){return true}if(!this.grid.callEvent("onMouseOver",[h.idd,l._cellIndex,(j||window.event)])){return true}if((this.grid._enbTts)&&(!this.grid._enbTts[l._cellIndex])){if(g.title){g.title=""}return true}if(l._cellIndex>=this.grid._cCount){return}var a=this.grid.cells3(h,l._cellIndex);if(!a||!a.cell||!a.cell._attrs){return}if(g._title){a.cell.title=""}if(!a.cell._attrs.title){g._title=true}if(a){g.title=a.cell._attrs.title||(a.getTitle?a.getTitle():(a.getValue()||"").toString().replace(/<[^>]*>/gi,""))}return true},enableCellWidthCorrection:function(a){if(_isFF){this._wcorr=parseInt(a)}},getAllRowIds:function(e){var a=[];for(var c=0;c<this.rowsBuffer.length;c++){if(this.rowsBuffer[c]){a.push(this.rowsBuffer[c].idd)}}return a.join(e||this.delim)},getAllItemIds:function(){return this.getAllRowIds()},setColspan:function(e,x,g){if(!this._ecspn){return}var a=this.getRowById(e);if((a._childIndexes)&&(a.childNodes[a._childIndexes[x]])){var o=a._childIndexes[x];var h=a.childNodes[o];var l=h.colSpan;h.colSpan=1;if((l)&&(l!=1)){for(var u=1;u<l;u++){var w=document.createElement("TD");if(h.nextSibling){a.insertBefore(w,h.nextSibling)}else{a.appendChild(w)}a._childIndexes[x+u]=o+u;w._cellIndex=x+u;w.style.textAlign=this.cellAlign[u];w.style.verticalAlign=this.cellVAlign[u];h=w;this.cells3(a,x+u).setValue("")}}for(var v=x*1+1*l;v<a._childIndexes.length;v++){a._childIndexes[v]+=(l-1)*1}}if((g)&&(g>1)){if(a._childIndexes){var o=a._childIndexes[x]}else{var o=x;a._childIndexes=new Array();for(var v=0;v<a.childNodes.length;v++){a._childIndexes[v]=v}}a.childNodes[o].colSpan=g;for(var v=1;v<g;v++){a._childIndexes[a.childNodes[o+1]._cellIndex]=o;a.removeChild(a.childNodes[o+1])}var s=a.childNodes[a._childIndexes[x]]._cellIndex;for(var v=s*1+1*g;v<a._childIndexes.length;v++){a._childIndexes[v]-=(g-1)}}},preventIECaching:function(a){dhx4.ajax.cache=!a},enableColumnAutoSize:function(a){this._eCAS=dhx4.s2b(a)},_onHeaderDblClick:function(g){var c=this.grid;var a=c.getFirstParentOfType(_isIE?event.srcElement:g.target,"TD");if(!c._eCAS){return false}c.adjustColumnSize(a._cellIndexS)},adjustColumnSize:function(o,c){if(this._hrrar&&this._hrrar[o]){return}this._notresize=true;var e=0;this._setColumnSizeR(o,20);for(var h=1;h<this.hdr.rows.length;h++){var s=this.hdr.rows[h];s=s.childNodes[(s._childIndexes)?s._childIndexes[o]:o];if((s)&&((!s.colSpan)||(s.colSpan<2))&&s._cellIndex==o){if((s.childNodes[0])&&(s.childNodes[0].className=="hdrcell")){s=s.childNodes[0]}e=Math.max(e,s.scrollWidth)}}var g=this.obj.rows.length;var r=0;var v=this.cellType._dhx_find("tree");for(var n=1;n<g;n++){var u=this.obj.rows[n];if(!this.rowsAr[u.idd]){continue}if(u._childIndexes&&u._childIndexes[o]!=o||!u.childNodes[o]){continue}r=(u.childNodes[o].innerText||u.childNodes[o].textContent||"").length*this.fontWidth;if(this._h2&&o==v){r+=this._h2.get[u.idd].level*22}if(r>e){e=r}}e+=20+(c||0);this._setColumnSizeR(o,e);this._notresize=false;this.setSizes()},detachHeader:function(a,e){e=e||this.hdr;var c=e.rows[a+1];if(c){c.parentNode.removeChild(c)}this.setSizes()},detachFooter:function(a){this.detachHeader(a,this.ftr)},attachHeader:function(a,g,c){if(typeof(a)=="string"){a=this._eSplit(a)}if(typeof(g)=="string"){g=g.split(this.delim)}c=c||"_aHead";if(this.hdr.rows.length){if(a){this._createHRow([a,g],this[(c=="_aHead")?"hdr":"ftr"])}else{if(this[c]){for(var e=0;e<this[c].length;e++){this.attachHeader.apply(this,this[c][e])}}}}else{if(!this[c]){this[c]=new Array()}this[c][this[c].length]=[a,g,c]}},_createHRow:function(e,r){if(!r){if(this.entBox.style.position!="absolute"){this.entBox.style.position="relative"}var m=document.createElement("DIV");m.className="c_ftr".substr(2);this.entBox.appendChild(m);var v=document.createElement("TABLE");v.cellPadding=v.cellSpacing=0;if(!_isIE||_isIE==8){v.width="100%";v.style.paddingRight="20px"}v.style.marginRight="20px";v.style.tableLayout="fixed";m.appendChild(v);v.appendChild(document.createElement("TBODY"));this.ftr=r=v;var l=v.insertRow(0);var a=((this.hdrLabels.length<=1)?e[0].length:this.hdrLabels.length);for(var g=0;g<a;g++){l.appendChild(document.createElement("TH"));l.childNodes[g]._cellIndex=g}if(_isIE&&_isIE<8){l.style.position="absolute"}else{l.style.height="auto"}}var h=e[1];var m=document.createElement("TR");r.rows[0].parentNode.appendChild(m);for(var g=0;g<e[0].length;g++){if(e[0][g]=="#cspan"){var n=m.cells[m.cells.length-1];n.colSpan=(n.colSpan||1)+1;continue}if((e[0][g]=="#rspan")&&(r.rows.length>1)){var y=r.rows.length-2;var x=false;var n=null;while(!x){var n=r.rows[y];for(var c=0;c<n.cells.length;c++){if(n.cells[c]._cellIndex==g){x=c+1;break}}y--}n=n.cells[x-1];n.rowSpan=(n.rowSpan||1)+1;continue}var o=document.createElement("TD");o._cellIndex=o._cellIndexS=g;if(this._hrrar&&this._hrrar[g]&&!_isIE){o.style.display="none"}if(typeof e[0][g]=="object"){o.appendChild(e[0][g])}else{if(this.forceDivInHeader){o.innerHTML="<div class='hdrcell'>"+(e[0][g]||"&nbsp;")+"</div>"}else{o.innerHTML=(e[0][g]||"&nbsp;")}if((e[0][g]||"").indexOf("#")!=-1){var v=e[0][g].match(/(^|{)#([^}]+)(}|$)/);if(v){var s="_in_header_"+v[2];if(this[s]){this[s]((this.forceDivInHeader?o.firstChild:o),g,e[0][g].split(v[0]))}}}}if(h){o.style.cssText=h[g]}m.appendChild(o)}var u=r;if(_isKHTML){if(r._kTimer){window.clearTimeout(r._kTimer)}r._kTimer=window.setTimeout(function(){r.rows[1].style.display="none";window.setTimeout(function(){r.rows[1].style.display=""},1)},500)}},attachFooter:function(a,c){this.attachHeader(a,c,"_aFoot")},setCellExcellType:function(e,a,c){this.changeCellType(this.getRowById(e),a,c)},changeCellType:function(e,g,c){c=c||this.cellType[g];var h=this.cells3(e,g);var a=h.getValue();h.cell._cellType=c;var h=this.cells3(e,g);h.setValue(a)},setRowExcellType:function(e,c){var g=this.rowsAr[e];for(var a=0;a<g.childNodes.length;a++){this.changeCellType(g,a,c)}},setColumnExcellType:function(a,e){for(var c=0;c<this.rowsBuffer.length;c++){if(this.rowsBuffer[c]&&this.rowsBuffer[c].tagName=="TR"){this.changeCellType(this.rowsBuffer[c],a,e)}}if(this.cellType[a]=="math"){this._strangeParams[c]=e}else{this.cellType[a]=e}},forEachRow:function(e){for(var c in this.rowsAr){if(this.rowsAr[c]&&this.rowsAr[c].idd){e.apply(this,[this.rowsAr[c].idd])}}},forEachRowA:function(e){for(var c=0;c<this.rowsBuffer.length;c++){if(this.rowsBuffer[c]){e.call(this,this.render_row(c).idd)}}},forEachCell:function(e,c){var g=this.getRowById(e);if(!g){return}for(var a=0;a<this._cCount;a++){c(this.cells3(g,a),a)}},enableAutoWidth:function(e,a,c){this._awdth=[dhx4.s2b(e),parseInt(a||99999),parseInt(c||0)];if(arguments.length==1){this.objBox.style.overflowX=e?"hidden":"auto"}},updateFromXML:function(a,g,c,e){if(typeof g=="undefined"){g=true}this._refresh_mode=[true,g,c];this.load(a,e)},_refreshFromXML:function(g){if(this._f_rowsBuffer){this.filterBy(0,"")}reset=false;if(window.eXcell_tree){eXcell_tree.prototype.setValueX=eXcell_tree.prototype.setValue;eXcell_tree.prototype.setValue=function(u){var s=this.grid._h2.get[this.cell.parentNode.idd];if(s&&this.cell.parentNode.valTag){this.setLabel(u)}else{this.setValueX(u)}}}var r=this.cellType._dhx_find("tree");var j=dhx4.ajax.xmltop("rows",g);var h=j.getAttribute("parent")||0;var m={};if(this._refresh_mode[2]){if(r!=-1){this._h2.forEachChild(h,function(s){m[s.id]=true},this)}else{this.forEachRow(function(s){m[s]=true})}}var o=dhx4.ajax.xpath("//row",j);for(var e=0;e<o.length;e++){var n=o[e];var a=n.getAttribute("id");m[a]=false;var h=n.parentNode.getAttribute("id")||h;if(this.rowsAr[a]&&this.rowsAr[a].tagName!="TR"){if(this._h2){this._h2.get[a].buff.data=n}else{this.rowsBuffer[this.getRowIndex(a)].data=n}this.rowsAr[a]=n}else{if(this.rowsAr[a]){this._process_xml_row(this.rowsAr[a],n,-1);this._postRowProcessing(this.rowsAr[a],true);if(this._fake&&this._fake.rowsAr[a]){this._fake._process_xml_row(this._fake.rowsAr[a],n,-1)}}else{if(this._refresh_mode[1]){var l={idd:a,data:n,_parser:this._process_xml_row,_locator:this._get_xml_data};var c=this.rowsBuffer.length;if(this._refresh_mode[1]=="top"){this.rowsBuffer.unshift(l);c=0}else{this.rowsBuffer.push(l)}if(this._h2){reset=true;(this._h2.add(a,(n.parentNode.getAttribute("id")||n.parentNode.getAttribute("parent")))).buff=this.rowsBuffer[this.rowsBuffer.length-1]}else{if(this._srnd){reset=true}}this.rowsAr[a]=n;n=this.render_row(c);this._insertRowAt(n,c?-1:0)}}}}if(this._refresh_mode[2]){for(a in m){if(m[a]&&this.rowsAr[a]){this.deleteRow(a)}}}this._refresh_mode=null;if(window.eXcell_tree){eXcell_tree.prototype.setValue=eXcell_tree.prototype.setValueX}if(reset){if(this._h2){this._renderSort()}else{this.render_dataset()}}if(this._f_rowsBuffer){this._f_rowsBuffer=null;this.filterByAll()}},getCustomCombo:function(e,c){var a=this.cells(e,c).cell;if(!a._combo){a._combo=new dhtmlXGridComboObject()}return a._combo},setTabOrder:function(c){var g=c.split(this.delim);this._tabOrder=[];var a=this._cCount||c.length;for(var e=0;e<a;e++){g[e]={c:parseInt(g[e]),ind:e}}g.sort(function(j,h){return(j.c>h.c?1:-1)});for(var e=0;e<a;e++){if(!g[e+1]||(typeof g[e].c=="undefined")){this._tabOrder[g[e].ind]=(g[0].ind+1)*-1}else{this._tabOrder[g[e].ind]=g[e+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,true)},k13_0_1:function(){var a=this.rowsCol._dhx_find(this.row);this.selectCell(this.rowsCol[a-1],this.cell._cellIndex,true)},k13_0_0:function(){this.editStop();this.callEvent("onEnter",[(this.row?this.row.idd:null),(this.cell?this.cell._cellIndex:null)]);this._still_active=true},k9_0_0:function(){this.editStop();if(!this.callEvent("onTab",[true])){return true}var a=this._getNextCell(null,1);if(a){this.selectCell(a.parentNode,a._cellIndex,(this.row!=a.parentNode),false,true);this._still_active=true}},k9_0_1:function(){this.editStop();if(!this.callEvent("onTab",[false])){return false}var a=this._getNextCell(null,-1);if(a){this.selectCell(a.parentNode,a._cellIndex,(this.row!=a.parentNode),false,true);this._still_active=true}},k113_0_0:function(){if(this._f2kE){this.editCell()}},k32_0_0:function(){var a=this.cells4(this.cell);if(!a.changeState||(a.changeState()===false)){return false}},k27_0_0:function(){this.editStop(true)},k33_0_0:function(){if(this.pagingOn){this.changePage(this.currentPage-1)}else{this.scrollPage(-1)}},k34_0_0:function(){if(this.pagingOn){this.changePage(this.currentPage+1)}else{this.scrollPage(1)}},k37_0_0:function(){if(!this.editor&&this.isTreeGrid()){this.collapseKids(this.row)}else{return false}},k39_0_0:function(){if(!this.editor&&this.isTreeGrid()){this.expandKids(this.row)}else{return false}},k40_0_0:function(){var c=this._realfake?this._fake:this;if(this.editor&&this.editor.combo){this.editor.shiftNext()}else{if(!this.row.idd){return}var a=Math.max((c._r_select||0),this.getRowIndex(this.row.idd));var e=this._nextRow(a,1);if(e){c._r_select=null;this.selectCell(e,this.cell._cellIndex,true);if(c.pagingOn){c.showRow(e.idd)}}else{if(!this.callEvent("onLastRow",[])){return false}this._key_events.k34_0_0.apply(this,[]);if(this.pagingOn&&this.rowsCol[a+1]){this.selectCell(a+1,0,true)}}}this._still_active=true},k38_0_0:function(){var c=this._realfake?this._fake:this;if(this.editor&&this.editor.combo){this.editor.shiftPrev()}else{if(!this.row.idd){return}var a=this.getRowIndex(this.row.idd)+1;if(a!=-1&&(!this.pagingOn||(a!=1))){var e=this._nextRow(a-1,-1);this.selectCell(e,this.cell._cellIndex,true);if(c.pagingOn&&e){c.showRow(e.idd)}}else{this._key_events.k33_0_0.apply(this,[])}}this._still_active=true}},_build_master_row:function(){var e=document.createElement("DIV");var c=["<table><tr>"];for(var a=0;a<this._cCount;a++){c.push("<td></td>")}c.push("</tr></table>");e.innerHTML=c.join("");this._master_row=e.firstChild.rows[0]},_prepareRow:function(a){if(!this._master_row){this._build_master_row()}var e=this._master_row.cloneNode(true);for(var c=0;c<e.childNodes.length;c++){e.childNodes[c]._cellIndex=c;if(this._enbCid){e.childNodes[c].id="c_"+a+"_"+c}if(this.dragAndDropOff){this.dragger.addDraggableItem(e.childNodes[c],this)}}e.idd=a;e.grid=this;return e},_process_jsarray_row:function(c,e){c._attrs={};for(var a=0;a<c.childNodes.length;a++){c.childNodes[a]._attrs={}}this._fillRow(c,(this._c_order?this._swapColumns(e):e));return c},_get_jsarray_data:function(c,a){return c[a]},_process_json_row:function(a,c){c=this._c_order?this._swapColumns(c.data):c.data;return this._process_some_row(a,c)},_process_some_row:function(c,e){c._attrs={};for(var a=0;a<c.childNodes.length;a++){c.childNodes[a]._attrs={}}this._fillRow(c,e);return c},_get_json_data:function(c,a){return c.data[a]},_process_js_row:function(e,g){var a=[];for(var c=0;c<this.columnIds.length;c++){a[c]=g[this.columnIds[c]];if(!a[c]&&a[c]!==0){a[c]=""}}this._process_some_row(e,a);e._attrs=g;return e},_get_js_data:function(c,a){return c[this.columnIds[a]]},_process_csv_row:function(c,e){c._attrs={};for(var a=0;a<c.childNodes.length;a++){c.childNodes[a]._attrs={}}this._fillRow(c,(this._c_order?this._swapColumns(e.split(this.csv.cell)):e.split(this.csv.cell)));return c},_get_csv_data:function(c,a){return c.split(this.csv.cell)[a]},_process_store_row:function(h,g){var a=[];for(var e=0;e<this.columnIds.length;e++){a[e]=g[this.columnIds[e]]}for(var c=0;c<h.childNodes.length;c++){h.childNodes[c]._attrs={}}h._attrs=g;this._fillRow(h,a)},_process_xml_row:function(a,l){var u=dhx4.ajax.xpath(this.xml.cell,l);var o=[];a._attrs=this._xml_attrs(l);if(this._ud_enabled){var s=dhx4.ajax.xpath("./userdata",l);for(var h=s.length-1;h>=0;h--){var n="";for(var e=0;e<s[h].childNodes.length;e++){n+=s[h].childNodes[e].nodeValue}this.setUserData(a.idd,s[h].getAttribute("name"),n)}}for(var e=0;e<u.length;e++){var g=u[this._c_order?this._c_order[e]:e];if(!g){continue}var c=a._childIndexes?a._childIndexes[e]:e;var m=g.getAttribute("type");if(a.childNodes[c]){if(m){a.childNodes[c]._cellType=m}a.childNodes[c]._attrs=this._xml_attrs(g)}if(!g.getAttribute("xmlcontent")){if(g.firstChild){g=g.firstChild.wholeText||g.firstChild.data}else{g=""}}o.push(g)}for(e<u.length;e<a.childNodes.length;e++){a.childNodes[e]._attrs={}}if(a.parentNode&&a.parentNode.tagName=="row"){a._attrs.parent=a.parentNode.getAttribute("idd")}this._fillRow(a,o);return a},_get_xml_data:function(c,a){c=c.firstChild;while(true){if(!c){return""}if(c.tagName=="cell"){a--}if(a<0){break}c=c.nextSibling}return(c.firstChild?c.firstChild.data:"")},_fillRow:function(g,j){if(this.editor&&this.editor.parentNode&&this.editor.parentNode.idd==g.idd){this.editStop()}for(var c=0;c<g.childNodes.length;c++){if((c<j.length)||(this.defVal[c])){var e=g.childNodes[c]._cellIndex;var h=j[e];var a=this.cells4(g.childNodes[c]);if((this.defVal[e])&&((h=="")||(typeof(h)=="undefined"))){h=this.defVal[e]}if(a){a.setValue(h)}}else{g.childNodes[c].innerHTML="&nbsp;";g.childNodes[c]._clearCell=true}}return g},_postRowProcessing:function(j,m){if(j._attrs["class"]){j._css=j.className=j._attrs["class"]}if(j._attrs.locked){j._locked=true}if(j._attrs.bgColor){j.bgColor=j._attrs.bgColor}var l=0;for(var e=0;e<j.childNodes.length;e++){var n=j.childNodes[e];var h=n._cellIndex;var g=n._attrs.style||j._attrs.style;if(g){n.style.cssText+=";"+g}if(n._attrs["class"]){n.className=n._attrs["class"]}g=n._attrs.align||this.cellAlign[h];if(g){n.align=g}n.vAlign=n._attrs.valign||this.cellVAlign[h];var a=n._attrs.bgColor||this.columnColor[h];if(a){n.bgColor=a}if(n._attrs.colspan&&!m){this.setColspan(j.idd,e+l,n._attrs.colspan);l+=(n._attrs.colspan-1)}if(this._hrrar&&this._hrrar[h]&&!m){n.style.display="none"}}this.callEvent("onRowCreated",[j.idd,j,null])},load:function(a,e,c){this.callEvent("onXLS",[this]);if(arguments.length==2&&typeof e!="function"){c=e;e=null}c=c||"xml";if(!this.xmlFileUrl){this.xmlFileUrl=a}this._data_type=c;this.xmlLoader=this.doLoadDetails;var g=this;this.xmlLoader=function(h){if(!g.callEvent){return}g["_process_"+c](h.xmlDoc);if(!g._contextCallTimer){g.callEvent("onXLE",[g,0,0,h.xmlDoc])}if(e){e();e=null}};return dhx4.ajax.get(a,this.xmlLoader)},loadXMLString:function(c,a){if(window.console&&window.console.info){window.console.info("loadXMLString was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}this.parse({responseXML:dhx4.ajax.parse(c)},a,"xml")},loadXML:function(a,c){if(window.console&&window.console.info){window.console.info("loadXML was deprecated","http://docs.dhtmlx.com/migration__index.html#migrationfrom43to44")}this.load(a,c,"xml")},parse:function(e,c,a){if(arguments.length==2&&typeof c!="function"){a=c;c=null}a=a||"xml";this._data_type=a;if(a=="xml"&&typeof e=="string"){e={responseXML:dhx4.ajax.parse(e)}}this["_process_"+a](e);if(!this._contextCallTimer){this.callEvent("onXLE",[this,0,0,e])}if(c){c()}},xml:{top:"rows",row:"./row",cell:"./cell",s_row:"row",s_cell:"cell",row_attrs:[],cell_attrs:[]},csv:{row:"\n",cell:","},_xml_attrs:function(c){var e={};if(c.attributes.length){for(var a=0;a<c.attributes.length;a++){e[c.attributes[a].name]=c.attributes[a].value}}return e},_process_xml:function(o){if(this._refresh_mode){return this._refreshFromXML(o)}this._parsing=true;var l=dhx4.ajax.xmltop(this.xml.top,o);if(l.tagName!=this.xml.top){return}var n=l.getAttribute("dhx_security");if(n){dhtmlx.security_key=n}this._parseHead(l);var r=dhx4.ajax.xpath(this.xml.row,l);var j=parseInt(l.getAttribute("pos")||0);var m=parseInt(l.getAttribute("total_count")||0);if(!this.pagingOn){var m=Math.min(m,32000000/this._srdh)}var g=false;if(m&&m!=this.rowsBuffer.length){if(!this.rowsBuffer[m-1]){if(this.rowsBuffer.length){g=true}this.rowsBuffer[m-1]=null}if(m<this.rowsBuffer.length){this.rowsBuffer.splice(m,this.rowsBuffer.length-m);g=true}}if(this.isTreeGrid()){return this._process_tree_xml(l)}for(var c=0;c<r.length;c++){if(this.rowsBuffer[c+j]){continue}var a=r[c].getAttribute("id")||(c+j+1);this.rowsBuffer[c+j]={idd:a,data:r[c],_parser:this._process_xml_row,_locator:this._get_xml_data};this.rowsAr[a]=r[c]}this.callEvent("onDataReady",[]);if(g&&this._srnd){var e=this.objBox.scrollTop;this._reset_view();this.objBox.scrollTop=e}else{this.render_dataset()}this._parsing=false},_process_jsarray:function(data){this._parsing=true;data=data.responseText||data;if(typeof data=="string"){eval("dhtmlx.temp="+data+";");data=dhtmlx.temp}for(var i=0;i<data.length;i++){var id=i+1;this.rowsBuffer.push({idd:id,data:data[i],_parser:this._process_jsarray_row,_locator:this._get_jsarray_data});this.rowsAr[id]=data[i]}this.render_dataset();this._parsing=false},_process_csv:function(g){this._parsing=true;g=g.responseText||g;g=g.replace(/\r/g,"");g=g.split(this.csv.row);if(this._csvHdr){this.clearAll();var e=g.splice(0,1)[0].split(this.csv.cell);if(!this._csvAID){e.splice(0,1)}this.setHeader(e.join(this.delim));this.init()}for(var c=0;c<g.length;c++){if(!g[c]&&c==g.length-1){continue}if(this._csvAID){var h=c+1;this.rowsBuffer.push({idd:h,data:g[c],_parser:this._process_csv_row,_locator:this._get_csv_data})}else{var a=g[c].split(this.csv.cell);var h=a.splice(0,1)[0];this.rowsBuffer.push({idd:h,data:a,_parser:this._process_jsarray_row,_locator:this._get_jsarray_data})}this.rowsAr[h]=g[c]}this.render_dataset();this._parsing=false},_process_js:function(a){return this._process_json(a,"js")},_process_json:function(data,mode){this._parsing=true;var data=data.responseText||data;if(typeof data=="string"){eval("dhtmlx.temp="+data+";");data=dhtmlx.temp}if(mode=="js"){if(data.data){data=data.data}for(var i=0;i<data.length;i++){var row=data[i];var id=row.id||(i+1);this.rowsBuffer.push({idd:id,data:row,_parser:this._process_js_row,_locator:this._get_js_data});this.rowsAr[id]=data[i]}}else{if(data.rows){for(var i=0;i<data.rows.length;i++){var id=data.rows[i].id;this.rowsBuffer.push({idd:id,data:data.rows[i],_parser:this._process_json_row,_locator:this._get_json_data});this.rowsAr[id]=data.rows[i]}}}if(data.dhx_security){dhtmlx.security_key=data.dhx_security}this.callEvent("onDataReady",[]);this.render_dataset();this._parsing=false},render_dataset:function(g,a){if(this._srnd){if(this._fillers){return this._update_srnd_view()}a=Math.min((this._get_view_size()+(this._srnd_pr||0)),this.rowsBuffer.length)}if(this.pagingOn){g=Math.max((g||0),(this.currentPage-1)*this.rowsBufferOutSize);a=Math.min(this.currentPage*this.rowsBufferOutSize,this.rowsBuffer.length)}else{g=g||0;a=a||this.rowsBuffer.length}for(var e=g;e<a;e++){var j=this.render_row(e);if(j==-1){if(this.xmlFileUrl){if(this.callEvent("onDynXLS",[e,(this._dpref?this._dpref:(a-e))])){this.load(this.xmlFileUrl+dhtmlx.url(this.xmlFileUrl)+"posStart="+e+"&count="+(this._dpref?this._dpref:(a-e)),this._data_type)}}a=e;break}if(!j.parentNode||!j.parentNode.tagName){this._insertRowAt(j,e);if(j._attrs.selected||j._attrs.select){this.selectRow(j,j._attrs.call?true:false,true);j._attrs.selected=j._attrs.select=null}}if(this._ads_count&&e-g==this._ads_count){var h=this;this._context_parsing=this._context_parsing||this._parsing;return this._contextCallTimer=window.setTimeout(function(){h._contextCallTimer=null;h.render_dataset(e,a);if(!h._contextCallTimer){if(h._context_parsing){h.callEvent("onXLE",[])}else{h._fixAlterCss()}h._context_parsing=false}},this._ads_time)}}if(this._ads_count&&e==a){this.callEvent("onDistributedEnd",[])}if(this._srnd&&!this._fillers){var c=this.rowsBuffer.length-a;this._fillers=[];if(this._fake&&!this._realfake){this._fake._fillers=[]}while(c>0){var m=(_isIE||window._FFrv)?Math.min(c,30000):c;var l=this._add_filler(a,m);if(l){this._fillers.push(l)}c-=m;a+=m}}this.setSizes()},render_row:function(c){if(!this.rowsBuffer[c]){return -1}if(this.rowsBuffer[c]._parser){var a=this.rowsBuffer[c];if(this.rowsAr[a.idd]&&this.rowsAr[a.idd].tagName=="TR"){return this.rowsBuffer[c]=this.rowsAr[a.idd]}var e=this._prepareRow(a.idd);this.rowsBuffer[c]=e;this.rowsAr[a.idd]=e;a._parser.call(this,e,a.data);this._postRowProcessing(e);return e}return this.rowsBuffer[c]},_get_cell_value:function(c,a,e){if(c._locator){if(this._c_order){a=this._c_order[a]}return c._locator.call(this,c.data,a)}return this.cells3(c,a)[e?e:"getValue"]()},sortRows:function(e,j,c){this.editStop();c=(c||"asc").toLowerCase();j=(j||this.fldSort[e]);e=e||0;if(this.isTreeGrid()){this.sortTreeRows(e,j,c)}else{var a={};var h=this.cellType[e];var l="getValue";if(h=="link"){l="getContent"}if(h=="dhxCalendar"||h=="dhxCalendarA"){l="getDate"}for(var g=0;g<this.rowsBuffer.length;g++){a[this.rowsBuffer[g].idd]=this._get_cell_value(this.rowsBuffer[g],e,l)}this._sortRows(e,j,c,a)}this.callEvent("onAfterSorting",[e,j,c])},_sortCore:function(e,j,c,a,h){var g="sort";if(this._sst){h.stablesort=this.rowsCol.stablesort;g="stablesort"}if(j.length>4){j=window[j]}if(j=="cus"){var l=this._customSorts[e];h[g](function(n,m){return l(a[n.idd],a[m.idd],c,n.idd,m.idd)})}else{if(typeof(j)=="function"){h[g](function(n,m){return j(a[n.idd],a[m.idd],c,n.idd,m.idd)})}else{if(j=="str"){h[g](function(n,m){if(c=="asc"){return a[n.idd]>a[m.idd]?1:(a[n.idd]<a[m.idd]?-1:0)}else{return a[n.idd]<a[m.idd]?1:(a[n.idd]>a[m.idd]?-1:0)}})}else{if(j=="int"){h[g](function(o,n){var m=parseFloat(a[o.idd]);m=isNaN(m)?-99999999999999:m;var r=parseFloat(a[n.idd]);r=isNaN(r)?-99999999999999:r;if(c=="asc"){return m-r}else{return r-m}})}else{if(j=="date"){h[g](function(o,n){var m=Date.parse(a[o.idd])||(Date.parse("01/01/1900"));var r=Date.parse(a[n.idd])||(Date.parse("01/01/1900"));if(c=="asc"){return m-r}else{return r-m}})}}}}}},_sortRows:function(e,g,c,a){this._sortCore(e,g,c,a,this.rowsBuffer);this._reset_view();this.callEvent("onGridReconstructed",[])},_reset_view:function(e){if(!this.obj.rows[0]){return}if(this._lahRw){this._unsetRowHover(0,true)}this.callEvent("onResetView",[]);var a=this.obj.rows[0].parentNode;var g=a.removeChild(a.childNodes[0],true);if(_isKHTML){for(var c=a.parentNode.childNodes.length-1;c>=0;c--){if(a.parentNode.childNodes[c].tagName=="TR"){a.parentNode.removeChild(a.parentNode.childNodes[c],true)}}}else{if(_isIE){for(var c=a.childNodes.length-1;c>=0;c--){a.childNodes[c].removeNode(true)}}else{a.innerHTML=""}}a.appendChild(g);this.rowsCol=dhtmlxArray();if(this._sst){this.enableStableSorting(true)}this._fillers=this.undefined;if(!e){if(_isIE&&this._srnd){this.render_dataset()}else{this.render_dataset()}}},deleteRow:function(c,g){if(!g){g=this.getRowById(c)}if(!g){return}this.editStop();if(!this._realfake){if(this.callEvent("onBeforeRowDeleted",[c])==false){return false}}var a=0;if(this.cellType._dhx_find("tree")!=-1&&!this._realfake){a=this._h2.get[c].parent.id;this._removeTrGrRow(g)}else{if(g.parentNode){g.parentNode.removeChild(g)}var j=this.rowsCol._dhx_find(g);if(j!=-1){this.rowsCol._dhx_removeAt(j)}for(var e=0;e<this.rowsBuffer.length;e++){if(this.rowsBuffer[e]&&this.rowsBuffer[e].idd==c){this.rowsBuffer._dhx_removeAt(e);j=e;break}}}this.rowsAr[c]=null;for(var e=0;e<this.selectedRows.length;e++){if(this.selectedRows[e].idd==c){this.selectedRows._dhx_removeAt(e)}}if(this._srnd){for(var e=0;e<this._fillers.length;e++){var h=this._fillers[e];if(!h){continue}if(h[0]>=j){this._update_fillers(e,0,-1)}else{if(h[0]+h[1]>j){this._update_fillers(e,-1,0)}}}this._update_srnd_view()}if(this.pagingOn){this.changePage()}if(!this._realfake){this.callEvent("onAfterRowDeleted",[c,a])}this.callEvent("onGridReconstructed",[]);if(this._ahgr){this.setSizes()}return true},_addRow:function(l,m,c){if(c==-1||typeof c=="undefined"){c=this.rowsBuffer.length}if(typeof m=="string"){m=m.split(this.delim)}var n=this._prepareRow(l);n._attrs={};for(var e=0;e<n.childNodes.length;e++){n.childNodes[e]._attrs={}}this.rowsAr[n.idd]=n;if(this._h2){this._h2.get[n.idd].buff=n}this._fillRow(n,m);this._postRowProcessing(n);if(this._skipInsert){this._skipInsert=false;return this.rowsAr[n.idd]=n}if(this.pagingOn){this.rowsBuffer._dhx_insertAt(c,n);this.rowsAr[n.idd]=n;return n}if(this._fillers){this.rowsCol._dhx_insertAt(c,null);this.rowsBuffer._dhx_insertAt(c,n);if(this._fake){this._fake.rowsCol._dhx_insertAt(c,null)}this.rowsAr[n.idd]=n;var o=false;for(var g=0;g<this._fillers.length;g++){var h=this._fillers[g];if(h&&h[0]<=c&&(h[0]+h[1])>=c){h[1]=h[1]+1;var a=h[2].firstChild.style.height=parseInt(h[2].firstChild.style.height)+this._srdh+"px";o=true;if(this._fake){this._fake._fillers[g][1]++;this._fake._fillers[g][2].firstChild.style.height=a}}if(h&&h[0]>c){h[0]=h[0]+1;if(this._fake){this._fake._fillers[g][0]++}}}if(!o){this._fillers.push(this._add_filler(c,1,(c==0?{parentNode:this.obj.rows[0].parentNode,nextSibling:(this.rowsCol[1])}:this.rowsCol[c-1])))}return n}this.rowsBuffer._dhx_insertAt(c,n);return this._insertRowAt(n,c)},addRow:function(a,g,e){var c=this._addRow(a,g,e);if(!this.dragContext){this.callEvent("onRowAdded",[a])}if(this.pagingOn){this.changePage(this.currentPage)}if(this._srnd){this._update_srnd_view()}c._added=true;if(this._srnd&&!this._fillers){this._fillers=[]}if(this._ahgr){this.setSizes()}this.callEvent("onGridReconstructed",[]);return c},_insertRowAt:function(e,g,c){this.rowsAr[e.idd]=e;if(this._skipInsert){this._skipInsert=false;return e}if((g<0)||((!g)&&(parseInt(g)!==0))){g=this.rowsCol.length}else{if(g>this.rowsCol.length){g=this.rowsCol.length}}if(this._cssEven){var a=e.className.replace(this._cssUnEven,"");if((this._cssSP?this.getLevel(e.idd):g)%2==1){e.className=a+" "+this._cssUnEven+(this._cssSU?(" "+this._cssUnEven+"_"+this.getLevel(e.idd)):"")}else{e.className=a+" "+this._cssEven+(this._cssSU?(" "+this._cssEven+"_"+this.getLevel(e.idd)):"")}}if(!c){if((g==(this.obj.rows.length-1))||(!this.rowsCol[g])){if(_isKHTML){this.obj.appendChild(e)}else{this.obj.firstChild.appendChild(e)}}else{this.rowsCol[g].parentNode.insertBefore(e,this.rowsCol[g])}}this.rowsCol._dhx_insertAt(g,e);this.callEvent("onRowInserted",[e,g]);return e},getRowById:function(e){var c=this.rowsAr[e];if(c){if(c.tagName!="TR"){for(var a=0;a<this.rowsBuffer.length;a++){if(this.rowsBuffer[a]&&this.rowsBuffer[a].idd==e){return this.render_row(a)}}if(this._h2){return this.render_row(null,c.idd)}}return c}return null},cellById:function(c,a){return this.cells(c,a)},cells:function(g,e){if(arguments.length==0){return this.cells4(this.cell)}else{var h=this.getRowById(g)}var a=(h._childIndexes?h.childNodes[h._childIndexes[e]]:h.childNodes[e]);if(!a&&h._childIndexes){a=h.firstChild||{}}return this.cells4(a)},cellByIndex:function(c,a){return this.cells2(c,a)},cells2:function(g,e){var h=this.render_row(g);var a=(h._childIndexes?h.childNodes[h._childIndexes[e]]:h.childNodes[e]);if(!a&&h._childIndexes){a=h.firstChild||{}}return this.cells4(a)},cells3:function(e,c){var a=(e._childIndexes?e.childNodes[e._childIndexes[c]]:e.childNodes[c]);return this.cells4(a)},cells4:function(a){var c=window["eXcell_"+(a._cellType||this.cellType[a._cellIndex])];if(c){return new c(a)}},cells5:function(a,e){var e=e||(a._cellType||this.cellType[a._cellIndex]);if(!this._ecache[e]){if(!window["eXcell_"+e]){var c=eXcell_ro}else{var c=window["eXcell_"+e]}this._ecache[e]=new c(a)}this._ecache[e].cell=a;return this._ecache[e]},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){if(arguments.length>0){this.smartTabOrder=dhx4.s2b(a)}else{this.smartTabOrder=true}},setExternalTabOrder:function(h,a){var c=this;this.tabStart=(typeof(h)=="object")?h:document.getElementById(h);var e=this.tabStart.onkeydown;this.tabStart.onkeydown=function(l){if(e){e.call(this,l)}var j=(l||window.event);if(j.keyCode==9&&!j.shiftKey){j.cancelBubble=true;c.selectCell(0,0,0,0,1);if(c.smartTabOrder&&c.cells2(0,0).isDisabled()){c._key_events.k9_0_0.call(c)}this.blur();return false}};if(_isOpera){this.tabStart.onkeypress=this.tabStart.onkeydown}this.tabEnd=(typeof(a)=="object")?a:document.getElementById(a);var g=this.tabEnd.onkeydown;this.tabEnd.onkeydown=this.tabEnd.onkeypress=function(l){if(g){g.call(this,l)}var j=(l||window.event);if(j.keyCode==9&&j.shiftKey){j.cancelBubble=true;c.selectCell((c.getRowsNum()-1),(c.getColumnCount()-1),0,0,1);if(c.smartTabOrder&&c.cells2((c.getRowsNum()-1),(c.getColumnCount()-1)).isDisabled()){c._key_events.k9_0_1.call(c)}this.blur();return false}};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(){if(this._last_load_request){var c=this._last_load_request.xmlDoc;if(c.readyState!=4){try{c.onreadystatechange=function(){};c.abort()}catch(g){}}}var a=this._pgn_skin;this._pgn_skin=null;this.clearAll();this._pgn_skin=a;this._last_load_request=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 g(l,m){this[l]=m}function j(l,m){this[l].call(this,m)}function e(l,m){this[l].call(this,m.join(this.delim))}function a(l,o){for(var n=0;n<o.length;n++){if(typeof o[n]=="object"){var r=this.getCombo(n);for(var m in o[n]){r.put(m,o[n][m])}}}}function h(l,v,o){var x=1;var u=[];function w(A,y,C){if(!u[y]){u[y]=[]}if(typeof C=="object"){C.toString=function(){return this.text}}u[y][A]=C}for(var r=0;r<v.length;r++){if(typeof(v[r])=="object"&&v[r].length){for(var n=0;n<v[r].length;n++){w(r,n,v[r][n])}}else{w(r,0,v[r])}}for(var r=0;r<u.length;r++){for(var n=0;n<u[0].length;n++){var s=u[r][n];u[r][n]=(s||"").toString()||"&nbsp;";if(s&&s.colspan){for(var m=1;m<s.colspan;m++){w(n+m,r,"#cspan")}}if(s&&s.rowspan){for(var m=1;m<s.rowspan;m++){w(n,r+m,"#rspan")}}}}this.setHeader(u[0]);for(var r=1;r<u.length;r++){this.attachHeader(u[r])}}var c=[{name:"label",def:"&nbsp;",operation:"setHeader",type:h},{name:"id",def:"",operation:"columnIds",type:g},{name:"width",def:"*",operation:"setInitWidths",type:e},{name:"align",def:"left",operation:"cellAlign",type:g},{name:"valign",def:"middle",operation:"cellVAlign",type:g},{name:"sort",def:"na",operation:"fldSort",type:g},{name:"type",def:"ro",operation:"setColTypes",type:e},{name:"options",def:"",operation:"",type:a}];dhtmlx.extend_api("dhtmlXGridObject",{_init:function(l){return[l.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(r){for(var l=0;l<c.length;l++){var o=[];for(var m=0;m<r.length;m++){o[m]=r[m][c[l].name]||c[l].def}var n=c[l].type||j;n.call(this,c[l].operation,o,r)}this.init()},rows:function(l){},headers:function(m){for(var l=0;l<m.length;l++){this.attachHeader(m[l])}}})})();dhtmlXGridObject.prototype._dp_init=function(a){a.attachEvent("insertCallback",function(c,g){if(this.obj._h2){this.obj.addRow(g,e,null,parent)}else{this.obj.addRow(g,[],0)}var e=this.obj.getRowById(g);if(e){this.obj._process_xml_row(e,c.firstChild);this.obj._postRowProcessing(e)}});a.attachEvent("updateCallback",function(c,g){var e=this.obj.getRowById(g);if(e){this.obj._process_xml_row(e,c.firstChild);this.obj._postRowProcessing(e)}});a.attachEvent("deleteCallback",function(c,e){this.obj.setUserData(e,this.action_param,"true_deleted");this.obj.deleteRow(e)});a._methods=["setRowTextStyle","setCellTextStyle","changeRowId","deleteRow"];this.attachEvent("onEditCell",function(g,h,e){if(a._columns&&!a._columns[e]){return true}var c=this.cells(h,e);if(g==1){if(c.isCheckbox()){a.setUpdated(h,true)}}else{if(g==2){if(c.wasChanged()){a.setUpdated(h,true)}}}return true});this.attachEvent("onRowPaste",function(c){a.setUpdated(c,true)});this.attachEvent("onUndo",function(c){a.setUpdated(c,true)});this.attachEvent("onRowIdChange",function(g,c){var e=a.findRow(g);if(e<a.updatedRows.length){a.updatedRows[e]=c}});this.attachEvent("onSelectStateChanged",function(c){if(a.updateMode=="row"){a.sendData()}return true});this.attachEvent("onEnter",function(e,c){if(a.updateMode=="row"){a.sendData()}return true});this.attachEvent("onBeforeRowDeleted",function(c){if(a._silent_mode||(!this.rowsAr[c])){return true}if(this.dragContext&&a.dnd){window.setTimeout(function(){a.setUpdated(c,true)},1);return true}var e=a.getState(c);if(this._h2){this._h2.forEachChild(c,function(g){a.setUpdated(g.id,false);a.markRow(g.id,true,"deleted")},this)}if(e=="inserted"){a.set_invalid(c,false);a.setUpdated(c,false);return true}if(e=="deleted"){return false}if(e=="true_deleted"){a.setUpdated(c,false);return true}a.setUpdated(c,true,"deleted");return false});this.attachEvent("onBindUpdate",function(c){if(typeof c=="object"){c=c.id}a.setUpdated(c,true)});this.attachEvent("onRowAdded",function(c){if(this.dragContext&&a.dnd){return true}a.setUpdated(c,true,"inserted");return true});a._getRowData=function(g,u){var m=[];m.gr_id=g;if(this.obj.isTreeGrid()){m.gr_pid=this.obj.getParentId(g)}var e=this.obj.getRowById(g);for(var n=0;n<this.obj._cCount;n++){if(this.obj._c_order){var o=this.obj._c_order[n]}else{var o=n}var s=this.obj.cells(e.idd,n);if(this._changed&&!s.wasChanged()){continue}if(this._endnm){m[this.obj.getColumnId(n)]=s.getValue()}else{m["c"+o]=s.getValue()}}var h=this.obj.UserData[g];if(h){for(var l=0;l<h.keys.length;l++){if(h.keys[l]&&h.keys[l].indexOf("__")!=0){m[h.keys[l]]=h.values[l]}}}var h=this.obj.UserData.gridglobaluserdata;if(h){for(var l=0;l<h.keys.length;l++){m[h.keys[l]]=h.values[l]}}return m};a._clearUpdateFlag=function(e){var g=this.obj.getRowById(e);if(g){for(var c=0;c<this.obj._cCount;c++){this.obj.cells(e,c).cell.wasChanged=false}}};a.checkBeforeUpdate=function(j){var h=true;var c=[];for(var g=0;g<this.obj._cCount;g++){if(this.mandatoryFields[g]){var e=this.mandatoryFields[g].call(this.obj,this.obj.cells(j,g).getValue(),j,g);if(typeof e=="string"){this.messages.push(e);h=false}else{h&=e;c[g]=!e}}}if(!h){this.set_invalid(j,"invalid",c);this.setUpdated(j,false)}return h}};dhx4.attachEvent("onGridCreated",function(c){c._con_f_used=[].concat(c._con_f_used);dhtmlXGridObject.prototype._con_f_used=[];var a=function(j){j=j.replace(/(\?|\&)connector[^\f]*/g,"");return j+(j.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length>0?"&dhx_no_header=1":"")};var h=function(j){return a.call(this,j)+(this._connector_sorting||"")+(this._connector_filter||"")};var g=function(l,m,j){this._connector_sorting="&dhx_sort["+m+"]="+j;return h.call(this,l)};var e=function(l,j,n){var o=[];for(var m=0;m<j.length;m++){o[m]="dhx_filter["+j[m]+"]="+encodeURIComponent(n[m])}this._connector_filter="&"+o.join("&");return h.call(this,l)};c.attachEvent("onCollectValues",function(j){if(this._con_f_used[j]){if(typeof(this._con_f_used[j])=="object"){return this._con_f_used[j]}else{return false}}return true});c.attachEvent("onDynXLS",function(){if(this.xmlFileUrl){this.xmlFileUrl=h.call(this,this.xmlFileUrl)}return true});c.attachEvent("onBeforeSorting",function(n,m,l){if(m=="connector"){var j=this;this.clearAndLoad(g.call(this,this.xmlFileUrl,n,l),function(){j.setSortImgState(true,n,l)});return false}return true});c.attachEvent("onFilterStart",function(l,j){if(this._con_f_used.length){var n=this.getSortingState();var m=this;this.clearAndLoad(e.call(this,this.xmlFileUrl,l,j));if(n.length){m.setSortImgState(true,n[0],n[1])}return false}return true})});dhtmlXGridObject.prototype._con_f_used=[];dhtmlXGridObject.prototype._in_header_connector_text_filter=function(c,a){if(!this._con_f_used[a]){this._con_f_used[a]=1}return this._in_header_text_filter(c,a)};dhtmlXGridObject.prototype._in_header_connector_select_filter=function(c,a){if(!this._con_f_used[a]){this._con_f_used[a]=2}return this._in_header_select_filter(c,a)};if(!dhtmlXGridObject.prototype.load_connector){dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load;dhtmlXGridObject.prototype.load=function(c,h,g){if(!this._colls_loaded&&this.cellType){var a=[];for(var e=0;e<this.cellType.length;e++){if(this.cellType[e].indexOf("co")==0||this.cellType[e].indexOf("clist")==0||this._con_f_used[e]==2){a.push(e)}}if(a.length){arguments[0]+=(arguments[0].indexOf("?")!=-1?"&":"?")+"connector=true&dhx_colls="+a.join(",")}}return this.load_connector.apply(this,arguments)};dhtmlXGridObject.prototype._parseHead_connector=dhtmlXGridObject.prototype._parseHead;dhtmlXGridObject.prototype._parseHead=function(c,w,r){this._parseHead_connector.apply(this,arguments);if(!this._colls_loaded){var s=dhx4.ajax.xpath("./coll_options",arguments[0]);for(var m=0;m<s.length;m++){var o=s[m].getAttribute("for");var u=[];var g=null;if(this.cellType[o]=="combo"){g=this.getColumnCombo(o)}else{if(this.cellType[o].indexOf("co")==0){g=this.getCombo(o)}}var l=dhx4.ajax.xpath("./item",s[m]);var a=[];for(var h=0;h<l.length;h++){var e=l[h].getAttribute("value");if(g){var n=l[h].getAttribute("label")||e;if(g.addOption){a.push([e,n])}else{g.put(e,n)}u[u.length]=n}else{u[u.length]=e}}if(a.length){if(g){g.addOption(a)}}else{if(u.length&&!g){if(this.registerCList){this.registerCList(o*1,u)}}}if(this._con_f_used[o*1]){this._con_f_used[o*1]=u}}this._colls_loaded=true}}}function dhtmlXGridCellObject(a){this.destructor=function(){this.cell.obj=null;this.cell=null;this.grid=null;this.base=null;return null};this.cell=a;this.getValue=function(){if((this.cell.textContent)&&(this.cell.textContent.tagName=="TEXTAREA")){return this.cell.textContent.value}else{return this.cell.innerHTML._dhx_trim()}};this.getMathValue=function(){if(this.cell.original){return this.cell.original}else{return this.getValue()}};this.getFont=function(){arOut=new 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"}if(this.cell.style.fontSize){arOut[2]=this.cell.style.fontSize}else{arOut[2]=""}return arOut.join("-")};this.getTextColor=function(){if(this.cell.style.color){return this.cell.style.color}else{return"#000000"}};this.getBgColor=function(){return this.cell.style.backgroundColor||"#FFFFFF"};this.getHorAlign=function(){if(this.cell.style.textAlign){return this.cell.style.textAlign}else{if(this.cell.style.textAlign){return this.cell.style.textAlign}else{return"left"}}};this.getWidth=function(){return this.cell.scrollWidth};this.setFont=function(c){fntAr=c.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(c){this.cell.style.color=c};this.setBgColor=function(c){if(c==""){c=null}this.cell.style.background=c};this.setHorAlign=function(c){if(c.length==1){if(c=="c"){this.cell.style.textAlign="center"}else{if(c=="l"){this.cell.style.textAlign="left"}else{this.cell.style.textAlign="right"}}}else{this.cell.style.textAlign=c}};this.wasChanged=function(){if(this.cell.wasChanged){return true}else{return false}};this.isCheckbox=function(){var c=this.cell.firstChild;if(c&&c.tagName=="INPUT"){type=c.type;if(type=="radio"||type=="checkbox"){return true}else{return false}}else{return false}};this.isChecked=function(){if(this.isCheckbox()){return this.cell.firstChild.checked}};this.isDisabled=function(){return this.cell._disabled};this.setChecked=function(c){if(this.isCheckbox()){if(c!="true"&&c!=1){c=false}this.cell.firstChild.checked=c}};this.setDisabled=function(c){if(c!="true"&&c!=1){c=false}if(this.isCheckbox()){this.cell.firstChild.disabled=c;if(this.disabledF){this.disabledF(c)}}this.cell._disabled=c}}dhtmlXGridCellObject.prototype={getAttribute:function(a){return this.cell._attrs[a]},setAttribute:function(a,c){this.cell._attrs[a]=c},getInput:function(){if(this.obj&&(this.obj.tagName=="INPUT"||this.obj.tagName=="TEXTAREA")){return this.obj}var a=(this.obj||this.cell).getElementsByTagName("TEXTAREA");if(!a.length){a=(this.obj||this.cell).getElementsByTagName("INPUT")}return a[0]}};dhtmlXGridCellObject.prototype.setValue=function(a){if((typeof(a)!="number")&&(!a||a.toString()._dhx_trim()=="")){a="&nbsp;";this.cell._clearCell=true}else{this.cell._clearCell=false}this.setCValue(a)};dhtmlXGridCellObject.prototype.getTitle=function(){return(_isIE?this.cell.innerText:this.cell.textContent)};dhtmlXGridCellObject.prototype.setCValue=function(c,a){this.cell.innerHTML=c;this.grid.callEvent("onCellChanged",[this.cell.parentNode.idd,this.cell._cellIndex,(arguments.length>1?a:c)])};dhtmlXGridCellObject.prototype.setCTxtValue=function(a){this.cell.innerHTML="";this.cell.appendChild(document.createTextNode(a));this.grid.callEvent("onCellChanged",[this.cell.parentNode.idd,this.cell._cellIndex,a])};dhtmlXGridCellObject.prototype.setLabel=function(a){this.cell.innerHTML=a};dhtmlXGridCellObject.prototype.getMath=function(){if(this._val){return this.val}else{return this.getValue()}};function eXcell(){this.obj=null;this.val=null;this.changeState=function(){return false};this.edit=function(){this.val=this.getValue()};this.detach=function(){return false};this.getPosition=function(g){var a=g;var e=0;var c=0;while(a.tagName!="BODY"){e+=a.offsetLeft;c+=a.offsetTop;a=a.offsetParent}return new Array(e,c)}}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)?"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(c){(c||event).cancelBubble=true};this.obj.onmousedown=function(c){(c||event).cancelBubble=true};this.obj.value=this.val;this.cell.innerHTML="";this.cell.appendChild(this.obj);this.obj.onselectstart=function(c){if(!c){c=event}c.cancelBubble=true;return true};if(_isIE){this.obj.focus();this.obj.blur()}this.obj.focus()};this.getValue=function(){if((this.cell.firstChild)&&((this.cell.atag)&&(this.cell.firstChild.tagName==this.cell.atag))){return this.cell.firstChild.value}if(this.cell._clearCell){return""}return 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(){if((this.cell.firstChild)&&((this.cell.atag)&&(this.cell.firstChild.tagName==this.cell.atag))){return this.cell.firstChild.value}if(this.cell._clearCell){return""}return(_isIE?this.cell.innerText:this.cell.textContent)};this.setValue=function(c){if(!c||c.toString()._dhx_trim()==""){c=" ";this.cell._clearCell=true}else{this.cell._clearCell=false}this.setCTxtValue(c)}}eXcell_edtxt.prototype=new eXcell_ed;function eXcell_edn(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.getValue=function(){if((this.cell.firstChild)&&(this.cell.firstChild.tagName=="TEXTAREA")){return this.cell.firstChild.value}if(this.cell._clearCell){return""}return this.cell._orig_value||this.grid._aplNFb(this.cell.innerHTML.toString()._dhx_trim(),this.cell._cellIndex)};this.detach=function(){var c=this.obj.value;this.setValue(c);return this.val!=this.getValue()}}eXcell_edn.prototype=new eXcell_ed;eXcell_edn.prototype.setValue=function(a){if(!a||a.toString()._dhx_trim()==""){this.cell._clearCell=true;return this.setCValue("&nbsp;",0)}else{this.cell._clearCell=false;this.cell._orig_value=a}this.setCValue(this.grid._aplNF(a,this.cell._cellIndex),a)};function eXcell_ch(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.disabledF=function(c){if((c==true)||(c==1)){this.cell.innerHTML=this.cell.innerHTML.replace("item_chk0.","item_chk0_dis.").replace("item_chk1.","item_chk1_dis.")}else{this.cell.innerHTML=this.cell.innerHTML.replace("item_chk0_dis.","item_chk0.").replace("item_chk1_dis.","item_chk1.")}};this.changeState=function(c){if(c===true&&!this.grid.isActive){if(window.globalActiveDHTMLGridObject!=null&&window.globalActiveDHTMLGridObject!=this.grid&&window.globalActiveDHTMLGridObject.isActive){window.globalActiveDHTMLGridObject.setActive(false)}this.grid.setActive(true)}if((!this.grid.isEditable)||(this.cell.parentNode._locked)||(this.isDisabled())){return}if(this.grid.callEvent("onEditCell",[0,this.cell.parentNode.idd,this.cell._cellIndex])){this.val=this.getValue();if(this.val=="1"){this.setValue("0")}else{this.setValue("1")}this.cell.wasChanged=true;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")])}else{this.editor=null}};this.getValue=function(){return this.cell.chstate?this.cell.chstate.toString():"0"};this.isCheckbox=function(){return true};this.isChecked=function(){if(this.getValue()=="1"){return true}else{return false}};this.setChecked=function(c){this.setValue(c.toString())};this.detach=function(){return this.val!=this.getValue()};this.edit=null}eXcell_ch.prototype=new eXcell;eXcell_ch.prototype.setValue=function(c){this.cell.style.verticalAlign="middle";if(c){c=c.toString()._dhx_trim();if((c=="false")||(c=="0")){c=""}}if(c){c="1";this.cell.chstate="1"}else{c="0";this.cell.chstate="0"}var a=this;this.setCValue("<img src='"+this.grid.imgURL+"item_chk"+c+".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(c){if((c==true)||(c==1)){this.cell.innerHTML=this.cell.innerHTML.replace("radio_chk0.","radio_chk0_dis.").replace("radio_chk1.","radio_chk1_dis.")}else{this.cell.innerHTML=this.cell.innerHTML.replace("radio_chk0_dis.","radio_chk0.").replace("radio_chk1_dis.","radio_chk1.")}};this.changeState=function(c){if(c===false&&this.getValue()==1){return}if((!this.grid.isEditable)||(this.cell.parentNode._locked)||(this.isDisabled())){return}if(this.grid.callEvent("onEditCell",[0,this.cell.parentNode.idd,this.cell._cellIndex])!=false){this.val=this.getValue();if(this.val=="1"){this.setValue("0")}else{this.setValue("1")}this.cell.wasChanged=true;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")])}else{this.editor=null}};this.edit=null}eXcell_ra.prototype=new eXcell_ch;eXcell_ra.prototype.setValue=function(c){this.cell.style.verticalAlign="middle";if(c){c=c.toString()._dhx_trim();if((c=="false")||(c=="0")){c=""}}if(c){if(!this.grid._RaSeCol){this.grid._RaSeCol=[]}if(this.grid._RaSeCol[this.cell._cellIndex]){var a=this.grid.cells4(this.grid._RaSeCol[this.cell._cellIndex]);a.setValue("0");if(this.grid.rowsAr[a.cell.parentNode.idd]){this.grid.callEvent("onEditCell",[1,a.cell.parentNode.idd,a.cell._cellIndex])}}this.grid._RaSeCol[this.cell._cellIndex]=this.cell;c="1";this.cell.chstate="1"}else{c="0";this.cell.chstate="0"}this.setCValue("<img src='"+this.grid.imgURL+"radio_chk"+c+".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(g){(g||event).cancelBubble=true};var c=this.grid.getPosition(this.cell);this.obj.value=this.val;this.obj.style.display="";this.obj.style.textAlign=this.cell.style.textAlign;document.body.appendChild(this.obj);if(_isOpera){this.obj.onkeypress=function(g){if(g.keyCode==9||g.keyCode==27){return false}}}this.obj.onkeydown=function(h){var g=(h||event);if(g.keyCode==9||g.keyCode==27){globalActiveDHTMLGridObject.entBox.focus();globalActiveDHTMLGridObject.doKey({keyCode:g.keyCode,shiftKey:g.shiftKey,srcElement:"0"});return false}};this.obj.style.left=c[0]+"px";this.obj.style.top=c[1]+this.cell.offsetHeight+"px";if(this.cell.offsetWidth<200){var e=200}else{var e=this.cell.offsetWidth}this.obj.style.width=e+16+"px";if(_isIE){this.obj.select();this.obj.value=this.obj.value}this.obj.focus()};this.detach=function(){var c="";c=this.obj.value;if(c==""){this.cell._clearCell=true}else{this.cell._clearCell=false}this.setValue(c);document.body.removeChild(this.obj);this.obj=null;return this.val!=this.getValue()};this.getValue=function(){if(this.obj){return this.obj.value}if(this.cell._clearCell){return""}if(typeof this.cell._brval!="undefined"){return this.cell._brval}if((!this.grid.multiLine)){return this.cell._brval||this.cell.innerHTML}else{return this.cell._brval||this.cell.innerHTML.replace(/<br[^>]*>/gi,"\n")._dhx_trim()}}}eXcell_txt.prototype=new eXcell;function eXcell_txttxt(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.getValue=function(){if((this.cell.firstChild)&&(this.cell.firstChild.tagName=="TEXTAREA")){return this.cell.firstChild.value}if(this.cell._clearCell){return""}if((!this.grid.multiLine)&&this.cell._brval){return this.cell._brval}return(_isIE?this.cell.innerText:this.cell.textContent)};this.setValue=function(c){this.cell._brval=c;if(!c||c.toString()._dhx_trim()==""){c=" ";this.cell._clearCell=true}else{this.cell._clearCell=false}this.setCTxtValue(c)}}eXcell_txttxt.prototype=new eXcell_txt;eXcell_txt.prototype.setValue=function(a){this.cell._brval=a;if(!a||a.toString()._dhx_trim()==""){a="&nbsp;";this.cell._clearCell=true}else{this.cell._clearCell=false}if((!this.grid.multiLine)||this.cell._clearCell){this.setCValue(a,this.cell._brval)}else{this.setCValue(a.replace(/\n/g,"<br/>"),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=true}this.shiftNext=function(){var c=this.list.options[this.list.selectedIndex+1];if(c){c.selected=true}this.obj.value=this.list.options[this.list.selectedIndex].text;return true};this.shiftPrev=function(){if(this.list.selectedIndex!=0){var c=this.list.options[this.list.selectedIndex-1];if(c){c.selected=true}this.obj.value=this.list.options[this.list.selectedIndex].text}return true};this.edit=function(){this.val=this.getValue();this.text=this.getText()._dhx_trim();var g=this.grid.getPosition(this.cell);this.obj=document.createElement("TEXTAREA");this.obj.className="dhx_combo_edit";this.obj.style.height=(this.cell.offsetHeight-(_isIE?4:4))+"px";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.style.textAlign;this.obj.onclick=function(n){(n||event).cancelBubble=true};this.obj.onmousedown=function(n){(n||event).cancelBubble=true};this.obj.value=this.text;this.obj.onselectstart=function(n){if(!n){n=event}n.cancelBubble=true;return true};var j=this;this.obj.onkeyup=function(r){var o=(r||event).keyCode;if(o==38||o==40||o==9){return}var s=this.readonly?String.fromCharCode(o):this.value;var u=j.list.options;for(var n=0;n<u.length;n++){if(u[n].text.indexOf(s)==0){return u[n].selected=true}}};this.list=document.createElement("SELECT");this.list.className="dhx_combo_select";this.list.style.width=this.cell.offsetWidth+"px";this.list.style.left=g[0]+"px";this.list.style.top=g[1]+this.cell.offsetHeight+"px";this.list.onclick=function(r){var o=r||window.event;var n=o.target||o.srcElement;if(n.tagName=="OPTION"){n=n.parentNode}j.editable=false;j.grid.editStop();o.cancelBubble=true};var c=this.combo.getKeys();var h=false;var m=0;for(var e=0;e<c.length;e++){var l=this.combo.get(c[e]);this.list.options[this.list.options.length]=new Option(l,c[e]);if(c[e]==this.val){m=this.list.options.length-1;h=true}}if(h==false){this.list.options[this.list.options.length]=new Option(this.text,this.val===null?"":this.val);m=this.list.options.length-1}document.body.appendChild(this.list);this.list.size="6";this.cstate=1;if(this.editable){this.cell.innerHTML=""}else{this.obj.style.width="1px";this.obj.style.height="1px"}this.cell.appendChild(this.obj);this.list.options[m].selected=true;if(this.editable){this.obj.focus();this.obj.focus()}if(!this.editable){this.obj.style.visibility="hidden";this.list.focus();this.list.onkeydown=function(n){n=n||window.event;j.grid.setActive(true);if(n.keyCode<30){return j.grid.doKey({target:j.cell,keyCode:n.keyCode,shiftKey:n.shiftKey,ctrlKey:n.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=true}if(this.list.parentNode!=null){if(this.editable){var c=this.list.options[this.list.selectedIndex];if(c&&c.text==this.obj.value){this.setValue(this.list.value)}else{var e=(this.cell._combo||this.grid.getCombo(this.cell._cellIndex));var g=e.values._dhx_find(this.obj.value);if(g!=-1){this.setValue(e.keys[g])}else{this.setValue(this.cell.combo_value=this.obj.value)}}}else{this.setValue(this.list.value)}}if(this.list.parentNode){this.list.parentNode.removeChild(this.list)}if(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(g){if(typeof(g)=="object"){var e=dhx4.ajax.xpath("./option",g);if(e.length){this.cell._combo=new dhtmlXGridComboObject()}for(var c=0;c<e.length;c++){this.cell._combo.put(e[c].getAttribute("value"),e[c].firstChild?e[c].firstChild.data:"")}g=g.firstChild.data}if((g||"").toString()._dhx_trim()==""){g=null}this.cell.combo_value=g;if(g!==null){var a=(this.cell._combo||this.grid.getCombo(this.cell._cellIndex)).get(g);this.setCValue(a===null?g:a,g)}else{this.setCValue("&nbsp;",g)}};function eXcell_coro(a){this.base=eXcell_co;this.base(a);this.editable=false}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(e){if(typeof(e)=="object"){var c=dhx4.ajax.xpath("./option",e);if(c.length){this.cell._combo=new dhtmlXGridComboObject()}for(var a=0;a<c.length;a++){this.cell._combo.put(c[a].getAttribute("value"),c[a].firstChild?c[a].firstChild.data:"")}e=e.firstChild.data}if((e||"").toString()._dhx_trim()==""){e=null}if(e!==null){this.setCTxtValue((this.cell._combo||this.grid.getCombo(this.cell._cellIndex)).get(e)||e,e)}else{this.setCTxtValue(" ",e)}this.cell.combo_value=e};function eXcell_corotxt(a){this.base=eXcell_co;this.base(a);this.editable=false}eXcell_corotxt.prototype=new eXcell_cotxt;function eXcell_cp(a){try{this.cell=a;this.grid=this.cell.parentNode.grid}catch(c){}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 e=this.grid.getPosition(this.cell);this.colorPanel(4,this.obj);document.body.appendChild(this.obj);this.obj.style.left=e[0]+"px";this.obj.style.zIndex=1000;this.obj.style.top=e[1]+this.cell.offsetHeight+"px"};this.toolDNum=function(e){if(e.length==1){e="0"+e}return e};this.colorPanel=function(s,w){var m=document.createElement("TABLE");w.appendChild(m);m.cellSpacing=0;m.editor_obj=this;m.style.cursor="default";m.onclick=function(x){var r=x||window.event;var j=r.target||r.srcElement;var n=j.parentNode.parentNode.parentNode.editor_obj;if(n){n.setValue(j._bg);n.grid.editStop()}};var h=256/s;for(var l=0;l<=(256/h);l++){var e=m.insertRow(l);for(var o=0;o<=(256/h);o++){for(var g=0;g<=(256/h);g++){R=new Number(h*l)-(l==0?0:1);G=new Number(h*o)-(o==0?0:1);B=new Number(h*g)-(g==0?0:1);var v=this.toolDNum(R.toString(16))+""+this.toolDNum(G.toString(16))+""+this.toolDNum(B.toString(16));var u=e.insertCell(o);u.width="10px";u.innerHTML="&nbsp;";u.title=v.toUpperCase();u.style.backgroundColor="#"+v;u._bg="#"+v;if(this.val!=null&&"#"+v.toUpperCase()==this.val.toUpperCase()){u.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(){if(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?"100%":23))+";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(c){}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 e=this.cell.firstChild.firstChild.src+(this.cell.titFl!=null?"^"+this.cell._brval:"");e+="^"+this.cell.lnk;if(this.cell.trg){e+="^"+this.cell.trg}return e}}};this.isDisabled=function(){return true}}eXcell_img.prototype=new eXcell;eXcell_img.prototype.getTitle=function(){return this.cell._brval};eXcell_img.prototype.setValue=function(e){var c=e;if((e||"").indexOf("^")!=-1){var a=e.split("^");e=a[0];c=this.cell._attrs.title||a[1];if(a.length>2){this.cell.lnk=a[2];if(a[3]){this.cell.trg=a[3]}}this.cell.titFl="1"}if(!this.grid.multiLine){this.setCValue("<img src='"+this.grid.iconURL+(e||"")._dhx_trim()+"' border='0' style='max-height:"+(this.grid._srdh-4)+"px'>",e)}else{this.setCValue("<img src='"+this.grid.iconURL+(e||"")._dhx_trim()+"' border='0'>",e)}if(this.cell.lnk){this.cell.innerHTML="<a href='"+this.cell.lnk+"' target='"+this.cell.trg+"'>"+this.cell.innerHTML+"</a>"}this.cell._brval=c};function eXcell_price(a){this.base=eXcell_ed;this.base(a);this.getValue=function(){if(this.cell.childNodes.length>1){return this.cell.childNodes[1].innerHTML.toString()._dhx_trim()}else{return"0"}}}eXcell_price.prototype=new eXcell_ed;eXcell_price.prototype.setValue=function(c){if(isNaN(parseFloat(c))){c=this.val||0}var a="green";if(c<0){a="red"}this.setCValue("<span>$</span><span style='padding-right:2px;color:"+a+";'>"+c+"</span>",c)};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(e){if(!e||isNaN(Number(e))){if(e!==""){e=0}}if(e>0){var c="green";var a="dyn_up.gif"}else{if(e==0){var c="black";var a="dyn_.gif"}else{var c="red";var a="dyn_down.gif"}}this.setCValue("<div style='position:relative;padding-right:2px; width:100%;overflow:hidden; white-space:nowrap;'><img src='"+this.grid.imgURL+""+a+"' height='15' style='position:absolute;top:0px;left:0px;'><span style=' padding-left:20px; width:100%;color:"+c+";'>"+e+"</span></div>",e)};function eXcell_ro(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.edit=function(){};this.isDisabled=function(){return true};this.getValue=function(){return this.cell._clearCell?"":this.cell.innerHTML.toString()._dhx_trim()}}eXcell_ro.prototype=new eXcell;window.eXcell_hidden=function(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.edit=function(){};this.isDisabled=function(){return true};this.getValue=function(){return this.cell.val}};eXcell_hidden.prototype=new eXcell;eXcell_hidden.prototype.setValue=function(a){this.cell.val=a};function eXcell_ron(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.edit=function(){};this.isDisabled=function(){return true};this.getValue=function(){return this.cell._clearCell?"":this.cell._orig_value||this.grid._aplNFb(this.cell.innerHTML.toString()._dhx_trim(),this.cell._cellIndex).toString()}}eXcell_ron.prototype=new eXcell;eXcell_ron.prototype.setValue=function(a){if(a===0){}else{if(!a||a.toString()._dhx_trim()==""){this.setCValue("&nbsp;");return this.cell._clearCell=true}}this.cell._orig_value=a;this.cell._clearCell=false;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 true};this.setValue=function(c){if(!c){c=" ";this.cell._clearCell=true}else{this.cell._clearCell=false}this.setCTxtValue(c)};this.getValue=function(){if(this.cell._clearCell){return""}return(_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(c,e){for(var a=0;a<this.keys.length;a++){if(this.keys[a]==c){this.values[a]=e;return true}}this.values[this.values.length]=e;this.keys[this.keys.length]=c};this.get=function(c){for(var a=0;a<this.keys.length;a++){if(this.keys[a]==c){return this.values[a]}}return null};this.clear=function(){this.keys=new dhtmlxArray();this.values=new dhtmlxArray()};this.remove=function(c){for(var a=0;a<this.keys.length;a++){if(this.keys[a]==c){this.keys._dhx_removeAt(a);this.values._dhx_removeAt(a);return true}}};this.size=function(){var a=0;for(var c=0;c<this.keys.length;c++){if(this.keys[c]!=null){a++}}return a};this.getKeys=function(){var a=new Array(0);for(var c=0;c<this.keys.length;c++){if(this.keys[c]!=null){a[a.length]=this.keys[c]}}return a};this.save=function(){this._save=new Array();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]=new Array();this.values[a]=new Array();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;if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype.attachGrid=function(){this.callEvent("_onBeforeContentAttach",["grid"]);var a=document.createElement("DIV");a.style.width="100%";a.style.height="100%";a.style.position="relative";a.style.overflow="hidden";this._attachObject(a);this.dataType="grid";this.dataObj=new dhtmlXGridObject(a);this.dataObj.setSkin(this.conf.skin);if(typeof(window.dhtmlXTabBarCell)=="function"&&this instanceof window.dhtmlXTabBarCell&&navigator.userAgent.match(/7[\.\d]* mobile/gi)!=null&&navigator.userAgent.match(/AppleWebKit/gi)!=null){this.dataObj.objBox.style.webkitOverflowScrolling="auto"}if(this.conf.skin=="dhx_skyblue"&&typeof(window.dhtmlXWindowsCell)=="function"&&this instanceof window.dhtmlXWindowsCell){this.dataObj.entBox.style.border="1px solid #a4bed4";this.dataObj._sizeFix=0}else{this.dataObj.entBox.style.border="0px solid white";this.dataObj._sizeFix=2}a=null;this.callEvent("_onContentAttach",[]);return this.dataObj}}dhtmlXGridObject.prototype.enableDragAndDrop=function(a){if(a=="temporary_disabled"){this.dADTempOff=false;a=true}else{this.dADTempOff=true}this.dragAndDropOff=dhx4.s2b(a);this._drag_validate=true;if(a){this.objBox.ondragstart=function(c){(c||event).cancelBubble=true;return false}}};dhtmlXGridObject.prototype.setDragBehavior=function(a){this.dadmodec=this.dadmodefix=0;switch(a){case"child":this.dadmode=0;this._sbmod=false;break;case"sibling":this.dadmode=1;this._sbmod=false;break;case"sibling-next":this.dadmode=1;this._sbmod=true;break;case"complex":this.dadmode=2;this._sbmod=false;break;case"complex-next":this.dadmode=2;this._sbmod=true;break}};dhtmlXGridObject.prototype.enableDragOrder=function(a){this._dndorder=dhx4.s2b(a)};dhtmlXGridObject.prototype._checkParent=function(g,c){var e=this._h2.get[g.idd].parent;if(!e.parent){return}for(var a=0;a<c.length;a++){if(c[a]==e.id){return true}}return this._checkParent(this.rowsAr[e.id],c)};dhtmlXGridObject.prototype._createDragNode=function(g,h){this.editStop();if(window.dhtmlDragAndDrop.dragNode){return null}if(!this.dADTempOff){return null}g.parentObject=new Object();g.parentObject.treeNod=this;var n=this.callEvent("onBeforeDrag",[g.parentNode.idd,g._cellIndex,h]);if(!n){return null}var j=new Array();j=this.getSelectedId();j=(((j)&&(j!=""))?j.split(this.delim):[]);var l=false;for(var c=0;c<j.length;c++){if(j[c]==g.parentNode.idd){l=true}}if(!l){this.selectRow(this.rowsAr[g.parentNode.idd],false,h.ctrlKey,false);if(!h.ctrlKey){j=[]}j[this.selMultiRows?j.length:0]=g.parentNode.idd}if(this.isTreeGrid()){for(var c=j.length-1;c>=0;c--){if(this._checkParent(this.rowsAr[j[c]],j)){j.splice(c,1)}}}var o=this;if(j.length&&this._dndorder){j.sort(function(r,e){return(o.rowsAr[r].rowIndex>o.rowsAr[e].rowIndex?1:-1)})}var a=this.getFirstParentOfType(_isIE?h.srcElement:h.target,"TD");if(a){this._dndExtra=a._cellIndex}this._dragged=new Array();for(var c=0;c<j.length;c++){if(this.rowsAr[j[c]]){this._dragged[this._dragged.length]=this.rowsAr[j[c]];this.rowsAr[j[c]].treeNod=this}}g.parentObject.parentNode=g.parentNode;var m=document.createElement("div");m.innerHTML=(n!==true?n:this.rowToDragElement(g.parentNode.idd));m.style.position="absolute";m.className="dragSpanDiv";return m};dhtmlXGridObject.prototype._createSdrgc=function(){this._sdrgc=document.createElement("DIV");this._sdrgc.innerHTML="&nbsp;";this._sdrgc.className="gridDragLine";this.objBox.appendChild(this._sdrgc)};function dragContext(x,w,v,u,s,r,n,o,m,g){this.source=x||"grid";this.target=w||"grid";this.mode=v||"move";this.dropmode=u||"child";this.sid=s||0;this.tid=r;this.sobj=n||null;this.tobj=o||null;this.sExtra=m||null;this.tExtra=g||null;return this}dragContext.prototype.valid=function(){if(this.sobj!=this.tobj){return true}if(this.sid==this.tid){return false}if(this.target=="treeGrid"){var a=this.tid;while(a=this.tobj.getParentId(a)){if(this.sid==a){return false}}}return true};dragContext.prototype.close=function(){this.sobj=null;this.tobj=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(e,c){this[e]=c;return this};dragContext.prototype.uid=function(e,c){this.nid=this.sid;while(this.tobj.rowsAr[this.nid]){this.nid=this.nid+((new Date()).valueOf())}return this};dragContext.prototype.data=function(){if(this.sobj==this.tobj){return this.sobj._getRowArray(this.sobj.rowsAr[this.sid])}if(this.source=="tree"){return this.tobj.treeToGridElement(this.sobj,this.sid,this.tid)}else{return this.tobj.gridToGrid(this.sid,this.sobj,this.tobj)}};dragContext.prototype.attrs=function(){if(this.source=="tree"){return{}}else{return this.sobj.rowsAr[this.sid]._attrs}};dragContext.prototype.childs=function(){if(this.source=="treeGrid"){return this.sobj._h2.get[this.sid]._xml_await?this.sobj._h2.get[this.sid].has_kids:null}return 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 c=this.tobj.rowsAr[this.tid];var a=this.tobj._h2.get[c.idd].parent.id;if((this.alfa)&&(this.tobj._sbmod)&&(c.nextSibling)){var e=this.tobj._h2.get[c.nextSibling.idd].parent.id;if(e==this.tid){return this.tid}if(e!=a){return e}}return a}}};dragContext.prototype.ind=function(){if(this.tid==window.unknown){return this.tobj.rowsBuffer.length}if(this.target=="treeGrid"){if(this.dropmode=="child"){this.tobj.openItem(this.tid)}else{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 c=this.tobj.rowsAr[this.tid];if((c.nextSibling)&&(this._h2.get[c.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(){if((this.target!="grid")&&(this.sobj._h2)){return this.sobj.getItemImage(this.sid)}else{return null}};dragContext.prototype.slist=function(){var c=new Array();for(var a=0;a<this.sid.length;a++){c[c.length]=this.sid[a][(this.source=="tree")?"id":"idd"]}return c.join(",")};dhtmlXGridObject.prototype._drag=function(r,h,o,s){if(this._realfake){return this._fake._drag()}var n=(this.lastLanding);if(this._autoOpenTimer){window.clearTimeout(this._autoOpenTimer)}var g=o.parentNode;var e=r.parentObject;if(!g.idd){g.grid=this;this.dadmodefix=0}var m=new dragContext(0,0,0,((g.grid.dadmode==1||g.grid.dadmodec)?"sibling":"child"));if(e&&e.childNodes){m.set("source","tree").set("sobj",e.treeNod).set("sid",m.sobj._dragged)}else{if(!e){return true}if(e.treeNod.isTreeGrid&&e.treeNod.isTreeGrid()){m.set("source","treeGrid")}m.set("sobj",e.treeNod).set("sid",m.sobj._dragged)}if(g.grid.isTreeGrid()){m.set("target","treeGrid")}else{m.set("dropmode","sibling")}m.set("tobj",g.grid).set("tid",g.idd);if(((m.tobj.dadmode==2)&&(m.tobj.dadmodec==1))&&(m.tobj.dadmodefix<0)){if(m.tobj.obj.rows[1].idd!=m.tid){m.tid=g.previousSibling.idd}else{m.tid=0}}var a=this.getFirstParentOfType(s,"TD");if(a){m.set("tExtra",a._cellIndex)}if(a){m.set("sExtra",m.sobj._dndExtra)}if(m.sobj.dpcpy){m.set("mode","copy")}if(m.tobj._realfake){m.tobj=m.tobj._fake}if(m.sobj._realfake){m.sobj=m.sobj._fake}m.tobj._clearMove();if(e&&e.treeNod&&e.treeNod._nonTrivialRow){e.treeNod._nonTrivialRow(this,m.tid,m.dropmode,e)}else{m.tobj.dragContext=m;if(!m.tobj.callEvent("onDrag",[m.slist(),m.tid,m.sobj,m.tobj,m.sExtra,m.tExtra])){return m.tobj.dragContext=null}var u=new Array();if(typeof(m.sid)=="object"){var l=m.copy();for(var j=0;j<m.sid.length;j++){if(!l.set("alfa",(!j)).set("sid",m.sid[j][(m.source=="tree"?"id":"idd")]).valid()){continue}l.tobj._dragRoutine(l);if(l.target=="treeGrid"&&l.dropmode=="child"){l.tobj.openItem(l.tid)}u[u.length]=l.nid;l.set("dropmode","sibling").set("tid",l.nid)}l.close()}else{m.tobj._dragRoutine(m)}if(m.tobj.laterLink){m.tobj.laterLink()}m.tobj.callEvent("onDrop",[m.slist(),m.tid,u.join(","),m.sobj,m.tobj,m.sExtra,m.tExtra])}m.tobj.dragContext=null;m.close()};dhtmlXGridObject.prototype._dragRoutine=function(s){if((s.sobj==s.tobj)&&(s.source=="grid")&&(s.mode=="move")&&!this._fake){if(s.sobj._dndProblematic){return}var o=s.sobj.rowsAr[s.sid];var r=s.sobj.rowsCol._dhx_find(o);s.sobj.rowsCol._dhx_removeAt(s.sobj.rowsCol._dhx_find(o));s.sobj.rowsBuffer._dhx_removeAt(s.sobj.rowsBuffer._dhx_find(o));s.sobj.rowsBuffer._dhx_insertAt(s.ind(),o);if(s.tobj._fake){s.tobj._fake.rowsCol._dhx_removeAt(r);var u=s.tobj._fake.rowsAr[s.sid];u.parentNode.removeChild(u)}s.sobj._insertRowAt(o,s.ind()-(this.pagingOn?((this.currentPage-1)*this.rowsBufferOutSize):0));s.nid=s.sid;s.sobj.callEvent("onGridReconstructed",[]);return}var n;if(this._h2&&typeof s.tid!="undefined"&&s.dropmode=="sibling"&&(this._sbmod||s.tid)){if(s.alfa&&this._sbmod&&this._h2.get[s.tid].childs.length){this.openItem(s.tid);n=s.uid().tobj.addRowBefore(s.nid,s.data(),this._h2.get[s.tid].childs[0].id,s.img(),s.childs())}else{n=s.uid().tobj.addRowAfter(s.nid,s.data(),s.tid,s.img(),s.childs())}}else{n=s.uid().tobj.addRow(s.nid,s.data(),s.ind(),s.pid(),s.img(),s.childs())}n._attrs=s.attrs();if(s.source=="tree"){this.callEvent("onRowAdded",[s.nid]);var a=s.sobj._globalIdStorageFind(s.sid);if(a.childsCount){var m=s.copy().set("tid",s.nid).set("dropmode",s.target=="grid"?"sibling":"child");for(var g=0;g<a.childsCount;g++){s.tobj._dragRoutine(m.set("sid",a.childNodes[g].id));if(s.mode=="move"){g--}}m.close()}}else{s.tobj._copyUserData(s);this.callEvent("onRowAdded",[s.nid]);if((s.source=="treeGrid")){if(s.sobj==s.tobj){n._xml=s.sobj.rowsAr[s.sid]._xml}var h=s.sobj._h2.get[s.sid];if((h)&&(h.childs.length)){var m=s.copy().set("tid",s.nid);if(s.target=="grid"){m.set("dropmode","sibling")}else{if(!m.tobj.kidsXmlFile){m.tobj.openItem(s.tid)}m.set("dropmode","child")}var e=h.childs.length;if(!m.tobj.kidsXmlFile){for(var g=0;g<e;g++){s.sobj.render_row_tree(null,h.childs[g].id);s.tobj._dragRoutine(m.set("sid",h.childs[g].id));if(e!=h.childs.length){g--;e=h.childs.length}}}m.close()}}}if(s.mode=="move"){s.sobj[(s.source=="tree")?"deleteItem":"deleteRow"](s.sid);if((s.sobj==s.tobj)&&(!s.tobj.rowsAr[s.sid])){s.tobj.changeRowId(s.nid,s.sid);s.nid=s.sid}}};dhtmlXGridObject.prototype.gridToGrid=function(g,a,e){var h=new Array();for(var c=0;c<a.hdr.rows[0].cells.length;c++){h[c]=a.cells(g,c).getValue()}return h};dhtmlXGridObject.prototype.checkParentLine=function(a,c){if((!this._h2)||(!c)||(!a)){return false}if(a.id==c){return true}else{return this.checkParentLine(a.parent,c)}};dhtmlXGridObject.prototype._dragIn=function(j,g,c,l){if(!this.dADTempOff){return 0}var a=this.isTreeGrid();var h=g.parentNode.idd?g.parentNode:g.parentObject;if(this._drag_validate){if(j.parentNode==g.parentNode){return 0}if((a)&&(this==h.grid)&&((this.checkParentLine(this._h2.get[j.parentNode.idd],g.parentNode.idd)))){return 0}}if(!this.callEvent("onDragIn",[h.idd||h.id,j.parentNode.idd,h.grid||h.treeNod,(j.grid||j.parentNode.grid)])){return this._setMove(j,c,l,true)}this._setMove(j,c,l);if((a)&&(j.parentNode.expand!="")){var e=this;this._autoOpenTimer=window.setTimeout(function(){e._autoOpenItem(null,e);e=null},1000);this._autoOpenId=j.parentNode.idd}else{if(this._autoOpenTimer){window.clearTimeout(this._autoOpenTimer)}}return j};dhtmlXGridObject.prototype._autoOpenItem=function(a,c){c.openItem(c._autoOpenId)};dhtmlXGridObject.prototype._dragOut=function(c){this._clearMove();var a=c.parentNode.parentObject?c.parentObject.id:c.parentNode.idd;this.callEvent("onDragOut",[a]);if(this._autoOpenTimer){window.clearTimeout(this._autoOpenTimer)}};dhtmlXGridObject.prototype._setMove=function(j,c,m,h){if(!j.parentNode.idd){return}var e=dhx4.absTop(j);var a=dhx4.absTop(this.objBox);if((e-a)>(parseInt(this.objBox.offsetHeight)-50)){this.objBox.scrollTop=parseInt(this.objBox.scrollTop)+20}if((e-a+parseInt(this.objBox.scrollTop))<(parseInt(this.objBox.scrollTop)+30)){this.objBox.scrollTop=parseInt(this.objBox.scrollTop)-20}if(h){return 0}if(this.dadmode==2){var l=m-e+(document.body.scrollTop||document.documentElement.scrollTop)-2-j.offsetHeight/2;if((Math.abs(l)-j.offsetHeight/6)>0){this.dadmodec=1;if(l<0){this.dadmodefix=-1}else{this.dadmodefix=1}}else{this.dadmodec=0}}else{this.dadmodec=this.dadmode}if(this.dadmodec){if(!this._sdrgc){this._createSdrgc()}this._sdrgc.style.display="block";this._sdrgc.style.top=e-a+parseInt(this.objBox.scrollTop)+((this.dadmodefix>=0)?j.offsetHeight:0)+"px"}else{this._llSelD=j;if(j.parentNode.tagName=="TR"){for(var g=0;g<j.parentNode.childNodes.length;g++){var l=j.parentNode.childNodes[g];l._bgCol=l.style.backgroundColor;l.style.backgroundColor="#FFCCCC"}}}};dhtmlXGridObject.prototype._clearMove=function(){if(this._sdrgc){this._sdrgc.style.display="none"}if((this._llSelD)&&(this._llSelD.parentNode.tagName=="TR")){var c=this._llSelD.parentNode.childNodes;for(var a=0;a<c.length;a++){c[a].style.backgroundColor=c[a]._bgCol}}this._llSelD=null};dhtmlXGridObject.prototype.rowToDragElement=function(a){var c=this.cells(a,0).getValue();return c};dhtmlXGridObject.prototype._copyUserData=function(g){if(!g.tobj.UserData[g.nid]||g.tobj!=g.sobj){g.tobj.UserData[g.nid]=new Hashtable()}else{return}var e=g.sobj.UserData[g.sid];var a=g.tobj.UserData[g.nid];if(e){a.keys=a.keys.concat(e.keys);a.values=a.values.concat(e.values)}};dhtmlXGridObject.prototype.moveRow=function(e,g,a,c){switch(g){case"row_sibling":this.moveRowTo(e,a,"move","sibling",this,c);break;case"up":this.moveRowUp(e);break;case"down":this.moveRowDown(e);break}};dhtmlXGridObject.prototype._nonTrivialNode=function(r,o,l,m,e){if((r.callEvent)&&(!e)){if(!r.callEvent("onDrag",[m.idd,o.id,(l?l.id:null),this,r])){return false}}var n=m.idd;var a=n;while(r._idpull[a]){a+=(new Date()).getMilliseconds().toString()}var h=(this.isTreeGrid()?this.getItemImage(n):"");if(l){for(g=0;g<o.childsCount;g++){if(o.childNodes[g]==l){break}}if(g!=0){l=o.childNodes[g-1]}else{st="TOP";l=""}}var c=r._attachChildNode(o,a,this.gridToTreeElement(r,a,n),"",h,h,h,"","",l);if(this._h2){var j=this._h2.get[n];if(j.childs.length){for(var g=0;g<j.childs.length;g++){this._nonTrivialNode(r,c,0,this.rowsAr[j.childs[g].id],1);if(!this.dpcpy){g--}}}}if(!this.dpcpy){this.deleteRow(n)}if((r.callEvent)&&(!e)){r.callEvent("onDrop",[a,o.id,(l?l.id:null),this,r])}};dhtmlXGridObject.prototype.gridToTreeElement=function(c,e,a){return this.cells(a,0).getValue()};dhtmlXGridObject.prototype.treeToGridElement=function(g,h,a){var c=new Array();var j=this.cellType._dhx_find("tree");if(j==-1){j=0}for(var e=0;e<this.getColumnCount();e++){c[c.length]=(e!=j)?(g.getUserData(h,this.getColumnId(e))||""):g.getItemText(h)}return c};dhtmlXGridObject.prototype.moveRowTo=function(g,e,l,j,a,h){var m=new dragContext((a||this).isTreeGrid()?"treeGrid":"grid",(h||this).isTreeGrid()?"treeGrid":"grid",l,j||"sibling",g,e,a||this,h||this);m.tobj._dragRoutine(m);m.close();return m.nid};dhtmlXGridObject.prototype.enableMercyDrag=function(a){this.dpcpy=dhx4.s2b(a)};dhtmlXGridObject.prototype.toPDF=function(g,o,v,s,m,C){var h={row:(this.getSelectedRowId()||"").split(this.delim),col:this.getSelectedCellIndex()};if(h.row===null||h.col===-1){h=false}else{if(h.row){for(var w=0;w<h.row.length;w++){if(h.row[w]){var c=this.cells(h.row[w],h.col).cell;c.parentNode.className=c.parentNode.className.replace(" rowselected","");c.className=c.className.replace(" cellselected","");h.row[w]=c}}}else{h=false}}o=o||"color";var x=o=="full_color";var a=this;a._asCDATA=true;if(typeof(C)==="undefined"){this.target=' target="_blank"'}else{this.target=C}eXcell_ch.prototype.getContent=function(){return this.getValue()};eXcell_ra.prototype.getContent=function(){return this.getValue()};function A(F){var M=[];for(var K=1;K<a.hdr.rows.length;K++){M[K]=[];for(var J=0;J<a._cCount;J++){var O=a.hdr.rows[K].childNodes[J];if(!M[K][J]){M[K][J]=[0,0]}if(O){M[K][O._cellIndexS]=[O.colSpan,O.rowSpan]}}}var L="<rows profile='"+F+"'";if(v){L+=" header='"+v+"'"}if(s){L+=" footer='"+s+"'"}L+="><head>"+a._serialiseExportConfig(M).replace(/^<head/,"<columns").replace(/head>$/,"columns>");for(var K=2;K<a.hdr.rows.length;K++){var D=0;var S=a.hdr.rows[K];var N="";for(var J=0;J<a._cCount;J++){if((a._srClmn&&!a._srClmn[J])||(a._hrrar[J]&&(!a._fake||J>=a._fake.hdrLabels.length))){D++;continue}var Q=M[K][J];var P=((Q[0]&&Q[0]>1)?' colspan="'+Q[0]+'" ':"");if(Q[1]&&Q[1]>1){P+=' rowspan="'+Q[1]+'" ';D=-1}var E="";var I=S;if(a._fake&&J<a._fake._cCount){I=a._fake.hdr.rows[K]}for(var H=0;H<I.cells.length;H++){if(I.cells[H]._cellIndexS==J){if(I.cells[H].getElementsByTagName("SELECT").length){E=""}else{E=_isIE?I.cells[H].innerText:I.cells[H].textContent}E=E.replace(/[ \n\r\t\xA0]+/," ");break}}if(!E||E==" "){D++}N+="<column"+P+"><![CDATA["+E+"]]></column>"}if(D!=a._cCount){L+="\n<columns>"+N+"</columns>"}}L+="</head>\n";L+=n();return L}function e(){var D=[];if(m){for(var E=0;E<m.length;E++){D.push(u(a.getRowIndex(m[E])))}}else{for(var E=0;E<a.getRowsNum();E++){D.push(u(E))}}return D.join("\n")}function n(){var F=["<foot>"];if(!a.ftr){return""}for(var H=1;H<a.ftr.rows.length;H++){F.push("<columns>");var K=a.ftr.rows[H];for(var E=0;E<a._cCount;E++){if(a._srClmn&&!a._srClmn[E]){continue}if(a._hrrar[E]&&(!a._fake||E>=a._fake.hdrLabels.length)){continue}for(var D=0;D<K.cells.length;D++){var J="";var I="";if(K.cells[D]._cellIndexS==E){J=_isIE?K.cells[D].innerText:K.cells[D].textContent;J=J.replace(/[ \n\r\t\xA0]+/," ");if(K.cells[D].colSpan&&K.cells[D].colSpan!=1){I=" colspan='"+K.cells[D].colSpan+"' "}if(K.cells[D].rowSpan&&K.cells[D].rowSpan!=1){I=" rowspan='"+K.cells[D].rowSpan+"' "}break}}F.push("<column"+I+"><![CDATA["+J+"]]></column>")}F.push("</columns>")}F.push("</foot>");return F.join("\n")}function l(E,D){return(window.getComputedStyle?(window.getComputedStyle(E,null)[D]):(E.currentStyle?E.currentStyle[D]:null))||""}function u(H){if(!a.rowsBuffer[H]){return""}var D=a.render_row(H);if(D.style.display=="none"){return""}var E=a.isTreeGrid()?' level="'+a.getLevel(D.idd)+'"':"";var L="<row"+E+">";for(var J=0;J<a._cCount;J++){if(((!a._srClmn)||(a._srClmn[J]))&&(!a._hrrar[J]||(a._fake&&J<a._fake.hdrLabels.length))){var P=a.cells(D.idd,J);if(x){var I=l(P.cell,"color");var O=l(P.cell,"backgroundColor");var N=l(P.cell,"font-weight")||l(P.cell,"fontWeight");var K=l(P.cell,"font-style")||l(P.cell,"fontStyle");var M=l(P.cell,"text-align")||l(P.cell,"textAlign");var F=l(P.cell,"font-family")||l(P.cell,"fontFamily");if(O=="transparent"||O=="rgba(0, 0, 0, 0)"){O="rgb(255,255,255)"}L+="<cell bgColor='"+O+"' textColor='"+I+"' bold='"+N+"' italic='"+K+"' align='"+M+"' font='"+F+"'>"}else{L+="<cell>"}L+="<![CDATA["+(P.getContent?P.getContent():P.getTitle())+"]]></cell>"}}return L+"</row>"}function r(){var D="</rows>";return D}var y=document.createElement("div");y.style.display="none";document.body.appendChild(y);var j="form_"+a.uid();y.innerHTML='<form id="'+j+'" method="post" action="'+g+'" accept-charset="utf-8" enctype="application/x-www-form-urlencoded"'+this.target+'><input type="hidden" name="grid_xml" id="grid_xml"/> </form>';document.getElementById(j).firstChild.value=encodeURIComponent(A(o).replace("\u2013","-")+e()+r());document.getElementById(j).submit();y.parentNode.removeChild(y);a=null;if(h&&h.row.length){for(var w=0;w<h.row.length;w++){h.row[w].parentNode.className+=" rowselected";if(h.row.length==1){h.row[w].className+=" cellselected"}}}h=null};dhtmlXGridObject.prototype._serialiseExportConfig=function(l){function h(j){if(typeof(j)!=="string"){return j}j=j.replace(/&/g,"&amp;");j=j.replace(/"/g,"&quot;");j=j.replace(/'/g,"&apos;");j=j.replace(/</g,"&lt;");j=j.replace(/>/g,"&gt;");return j}var c="<head>";for(var e=0;e<this.hdr.rows[0].cells.length;e++){if(this._srClmn&&!this._srClmn[e]){continue}if(this._hrrar[e]&&(!this._fake||e>=this._fake.hdrLabels.length)){continue}var g=this.fldSort[e];if(g=="cus"){g=this._customSorts[e].toString();g=g.replace(/function[\ ]*/,"").replace(/\([^\f]*/,"")}var o=l[1][e];var m=((o[1]&&o[1]>1)?' rowspan="'+o[1]+'" ':"")+((o[0]&&o[0]>1)?' colspan="'+o[0]+'" ':"");c+="<column "+m+" width='"+this.getColWidth(e)+"' align='"+this.cellAlign[e]+"' type='"+this.cellType[e]+"' hidden='"+((this.isColumnHidden&&this.isColumnHidden(e))?"true":"false")+"' sort='"+(g||"na")+"' color='"+(this.columnColor[e]||"")+"'"+(this.columnIds[e]?(" id='"+this.columnIds[e]+"'"):"")+">";if(this._asCDATA){c+="<![CDATA["+this.getColumnLabel(e)+"]]>"}else{c+=this.getColumnLabel(e)}var n=this.combos[e]?this.getCombo(e):null;if(n){for(var a=0;a<n.keys.length;a++){c+="<option value='"+h(n.keys[a])+"'><![CDATA["+n.values[a]+"]]></option>"}}c+="</column>"}return c+="</head>"};if(window.eXcell_sub_row_grid){window.eXcell_sub_row_grid.prototype.getContent=function(){return""}}dhtmlXGridObject.prototype.toExcel=function(a,g,l,j,c){if(!document.getElementById("ifr")){var h=document.createElement("iframe");h.style.display="none";h.setAttribute("name","dhx_export_iframe");h.setAttribute("src","");h.setAttribute("id","dhx_export_iframe");document.body.appendChild(h)}var e=' target="dhx_export_iframe"';this.toPDF(a,g,l,j,c,e)};dhtmlXGridObject.prototype.filterBy=function(e,g,c){if(this.isTreeGrid()){return this.filterTreeBy(e,g,c)}if(this._f_rowsBuffer){if(!c){this.rowsBuffer=dhtmlxArray([].concat(this._f_rowsBuffer));if(this._fake){this._fake.rowsBuffer=this.rowsBuffer}}}else{this._f_rowsBuffer=[].concat(this.rowsBuffer)}if(!this.rowsBuffer.length){return}var h=true;this.dma(true);if(typeof(e)=="object"){for(var a=0;a<g.length;a++){this._filterA(e[a],g[a])}}else{this._filterA(e,g)}this.dma(false);if(this.pagingOn&&this.rowsBuffer.length/this.rowsBufferOutSize<(this.currentPage-1)){this.changePage(0)}this._reset_view();this.callEvent("onGridReconstructed",[])};dhtmlXGridObject.prototype._filterA=function(c,e){if(e==""){return}var g=true;if(typeof(e)=="function"){g=false}else{e=(e||"").toString().toLowerCase()}if(!this.rowsBuffer.length){return}for(var a=this.rowsBuffer.length-1;a>=0;a--){if(g?(this._get_cell_value(this.rowsBuffer[a],c).toString().toLowerCase().indexOf(e)==-1):(!e.call(this,this._get_cell_value(this.rowsBuffer[a],c),this.rowsBuffer[a].idd))){this.rowsBuffer.splice(a,1)}}};dhtmlXGridObject.prototype.getFilterElement=function(a){if(!this.filters){return}for(var c=0;c<this.filters.length;c++){if(this.filters[c][1]==a){return(this.filters[c][0].combo||this.filters[c][0])}}return null};dhtmlXGridObject.prototype.collectValues=function(g){var s=this.dhxevs.data.oncollectvalues;if(s){var o=true;for(var r in s){var u=s[r].call(this,g);if(u!==true){o=u||o}}if(o!==true){return o}}if(this.isTreeGrid()){return this.collectTreeValues(g)}this.dma(true);this._build_m_order();g=this._m_order?this._m_order[g]:g;var m={};var j=[];var e=this._f_rowsBuffer||this.rowsBuffer;for(var h=0;h<e.length;h++){var a=this._get_cell_value(e[h],g);if(a&&(!e[h]._childIndexes||e[h]._childIndexes[g]!=e[h]._childIndexes[g-1])){m[a]=true}}this.dma(false);var n=(this.combos[g]||(this._col_combos?this._col_combos[g]:false));for(var l in m){if(m[l]===true){if(n){if(n.get&&n.get(l)){l=n.get(l)}else{if(n.getOption&&n.getOption(l)){l=n.getOption(l).text}}}j.push(l)}}return j.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 e=[];var c=[];this._build_m_order();for(var g=0;g<this.filters.length;g++){var j=this._m_order?this._m_order[this.filters[g][1]]:this.filters[g][1];if(j>=this._cCount){continue}c.push(j);var l=this.filters[g][0].old_value=this.filters[g][0].value;if(this.filters[g][0]._filter){l=this.filters[g][0]._filter()}var h;if(typeof l!="function"&&(h=(this.combos[j]||(this._col_combos?this._col_combos[j]:false)))){if(h.values){j=h.values._dhx_find(l);l=(j==-1)?l:h.keys[j]}else{if(h.getOptionByLabel){l=(h.getOptionByLabel(l)?h.getOptionByLabel(l).value:l)}}}e.push(l)}if(!this.callEvent("onFilterStart",[c,e])){return}this.filterBy(c,e);if(this._cssEven){this._fixAlterCss()}this.callEvent("onFilterEnd",[this.filters]);if(this._f_rowsBuffer&&this.rowsBuffer.length==this._f_rowsBuffer.length){this._f_rowsBuffer=null}};dhtmlXGridObject.prototype.makeFilter=function(h,e,c){if(!this.filters){this.filters=[]}if(typeof(h)!="object"){h=document.getElementById(h)}if(!h){return}var a=this;if(!h.style.width){h.style.width="90%"}if(h.tagName=="SELECT"){this.filters.push([h,e]);this._loadSelectOptins(h,e);h.onchange=function(){a.filterByAll()};if(_isIE){h.style.marginTop="1px"}this.attachEvent("onEditCell",function(l,j,m){this._build_m_order();if(l==2&&this.filters&&(this._m_order?(m==this._m_order[e]):(m==e))){this._loadSelectOptins(h,e)}return true})}else{if(h.tagName=="INPUT"){this.filters.push([h,e]);h.old_value=h.value="";h.onkeydown=function(){if(this._timer){window.clearTimeout(this._timer)}this._timer=window.setTimeout(function(){if(h.value!=h.old_value){a.filterByAll();h.old_value=h.value}},500)}}else{if(h.tagName=="DIV"){this.filters.push([h,e]);h.style.padding="0px";h.style.margin="0px";if(!window.dhx_globalImgPath){window.dhx_globalImgPath=this.imgURL}var g=new dhtmlXCombo(h,"_filter","90%");g.filterSelfA=g.filterSelf;g.filterSelf=function(){if(this.getSelectedIndex()==0){this.setComboText("")}this.filterSelfA.apply(this,arguments);this.optionsArr[0].hide(false)};g.enableFilteringMode(true);h.combo=g;h.value="";this._loadComboOptins(h,e);g.attachEvent("onChange",function(){h.value=g.getSelectedValue();if(h.value===null){h.value=""}a.filterByAll()})}}}if(h.parentNode){h.parentNode.className+=" filter"}this._filters_ready()};dhtmlXGridObject.prototype.findCell=function(l,m,g,h){var h=h||(function(n,j){return j.toString().toLowerCase().indexOf(n)!=-1});if(h===true){h=function(n,j){return j.toString().toLowerCase()==n}}var e=new Array();l=l.toString().toLowerCase();if(typeof g!="number"){g=g?1:0}if(!this.rowsBuffer.length){return e}for(var c=(m||0);c<this._cCount;c++){if(this._h2){this._h2.forEachChild(0,function(j){if(g&&e.length==g){return e}if(h(l,this._get_cell_value(j.buff,c))){e.push([j.id,c])}},this)}else{for(var a=0;a<this.rowsBuffer.length;a++){if(h(l,this._get_cell_value(this.rowsBuffer[a],c))){e.push([this.rowsBuffer[a].idd,c]);if(g&&e.length==g){return e}}}}if(typeof(m)!="undefined"){return e}}return e};dhtmlXGridObject.prototype.makeSearch=function(g,e,a){if(typeof(g)!="object"){g=document.getElementById(g)}if(!g){return}var c=this;if(g.tagName=="INPUT"){g.onkeypress=function(){if(this._timer){window.clearTimeout(this._timer)}this._timer=window.setTimeout(function(){if(g.value==""){return}var h=c.findCell(g.value,e,true,a);if(h.length){if(c._h2){c.openItem(h[0][0])}c.selectCell(c.getRowIndex(h[0][0]),(e||0))}},500)}}if(g.parentNode){g.parentNode.className+=" filter"}};dhtmlXGridObject.prototype._loadSelectOptins=function(h,m){var a=this.collectValues(m);var e=h.value;h.innerHTML="";h.options[0]=new Option("","");var j=this._filter_tr?this._filter_tr[m]:null;for(var g=0;g<a.length;g++){h.options[h.options.length]=new Option(j?j(a[g]):a[g],a[g])}h.value=e};dhtmlXGridObject.prototype.setSelectFilterLabel=function(c,a){if(!this._filter_tr){this._filter_tr=[]}this._filter_tr[c]=a};dhtmlXGridObject.prototype._loadComboOptins=function(g,j){if(!g.combo){return}var a=this.collectValues(j);g.combo.clearAll();var h=[["",""]];for(var e=0;e<a.length;e++){h.push([a[e],a[e]])}g.combo.addOption(h)};dhtmlXGridObject.prototype.refreshFilters=function(){if(!this.filters){return}for(var a=0;a<this.filters.length;a++){switch(this.filters[a][0].tagName.toLowerCase()){case"input":break;case"select":this._loadSelectOptins.apply(this,this.filters[a]);break;case"div":this._loadComboOptins.apply(this,this.filters[a]);break}}};dhtmlXGridObject.prototype._filters_ready=function(c,a){this.attachEvent("onXLE",this.refreshFilters);this.attachEvent("onRowCreated",function(h,g){if(this._f_rowsBuffer){for(var e=0;e<this._f_rowsBuffer.length;e++){if(this._f_rowsBuffer[e].idd==h){return this._f_rowsBuffer[e]=g}}}});this.attachEvent("onClearAll",function(){this._f_rowsBuffer=null;if(!this.hdr.rows.length){this.filters=[]}});this.attachEvent("onSetSizes",this._filters_resize_combo);this.attachEvent("onResize",this._filters_resize_combo);this._filters_ready=function(){}};dhtmlXGridObject.prototype._filters_resize_combo=function(){if(!this.filters){return}for(var a=0;a<this.filters.length;a++){if(this.filters[a][0].combo!=null){this.filters[a][0].combo.setSize(Math.round(this.filters[a][0].offsetWidth*90/100))}}return true};dhtmlXGridObject.prototype._in_header_text_filter=function(c,a){c.innerHTML="<input type='text'>";c.onclick=c.onmousedown=function(g){(g||event).cancelBubble=true;return true};c.onselectstart=function(){return(event.cancelBubble=true)};this.makeFilter(c.firstChild,a)};dhtmlXGridObject.prototype._in_header_text_filter_inc=function(c,a){c.innerHTML="<input type='text'>";c.onclick=c.onmousedown=function(g){(g||event).cancelBubble=true;return true};c.onselectstart=function(){return(event.cancelBubble=true)};this.makeFilter(c.firstChild,a);c.firstChild._filter=function(){if(c.firstChild.value==""){return""}return function(e){return(e.toString().toLowerCase().indexOf(c.firstChild.value.toLowerCase())==0)}};this._filters_ready()};dhtmlXGridObject.prototype._in_header_select_filter=function(c,a){c.innerHTML="<select></select>";c.onclick=function(g){(g||event).cancelBubble=true;return false};this.makeFilter(c.firstChild,a)};dhtmlXGridObject.prototype._in_header_select_filter_strict=function(e,c){e.innerHTML="<select style='width:90%; font-size:8pt; font-family:Tahoma;'></select>";e.onclick=function(g){(g||event).cancelBubble=true;return false};this.makeFilter(e.firstChild,c);var a=this.combos;e.firstChild._filter=function(){var g=e.firstChild.value;if(!g){return""}if(a[c]){g=a[c].keys[a[c].values._dhx_find(g)]}g=g.toLowerCase();return function(h){return(h.toString().toLowerCase()==g)}};this._filters_ready()};dhtmlXGridObject.prototype._in_header_combo_filter=function(c,a){c.innerHTML="<div style='width:100%; padding-left:2px; overflow:hidden; ' class='combo'></div>";c.onselectstart=function(){return(event.cancelBubble=true)};c.onclick=c.onmousedown=function(g){(g||event).cancelBubble=true;return true};this.makeFilter(c.firstChild,a)};dhtmlXGridObject.prototype._search_common=function(c,a){c.innerHTML="<input type='text' style='width:90%; '>";c.onclick=c.onmousedown=function(g){(g||event).cancelBubble=true;return true};c.onselectstart=function(){return(event.cancelBubble=true)}};dhtmlXGridObject.prototype._in_header_text_search=function(e,c,a){this._search_common(e,c);this.makeSearch(e.firstChild,c)};dhtmlXGridObject.prototype._in_header_text_search_strict=function(c,a){this._search_common(c,a);this.makeSearch(c.firstChild,a,true)};dhtmlXGridObject.prototype._in_header_numeric_filter=function(c,a){this._in_header_text_filter.call(this,c,a);c.firstChild._filter=function(){var e=this.value;var h;var l="==";var g=parseFloat(e.replace("=",""));var j=null;if(e){if(e.indexOf("..")!=-1){e=e.split("..");g=parseFloat(e[0]);j=parseFloat(e[1]);return function(m){if(m>=g&&m<=j){return true}return false}}h=e.match(/>=|<=|>|</);if(h){l=h[0];g=parseFloat(e.replace(l,""))}return Function("v"," if (v "+l+" "+g+" ) return true; return false;")}return""}};dhtmlXGridObject.prototype._in_header_master_checkbox=function(g,e,h){g.innerHTML=h[0]+"<input type='checkbox' />"+h[1];var a=this;g.getElementsByTagName("input")[0].onclick=function(l){a._build_m_order();var c=a._m_order?a._m_order[e]:e;var m=this.checked?1:0;a.forEachRowA(function(n){var j=this.cells(n,c);if(j.isCheckbox()){j.setValue(m);j.cell.wasChanged=true}this.callEvent("onEditCell",[1,n,c,m]);this.callEvent("onCheckbox",[n,c,m])});(l||event).cancelBubble=true}};dhtmlXGridObject.prototype._in_header_stat_total=function(e,a,h){var g=function(){var n=0;this._build_m_order();var m=this._m_order?this._m_order[a]:a;for(var l=0;l<this.rowsBuffer.length;l++){var c=parseFloat(this._get_cell_value(this.rowsBuffer[l],m));n+=isNaN(c)?0:c}return this._maskArr[m]?this._aplNF(n,m):(Math.round(n*100)/100)};this._stat_in_header(e,g,a,h,h)};dhtmlXGridObject.prototype._in_header_stat_multi_total=function(h,g,n){var m=n[1].split(":");n[1]="";for(var e=0;e<m.length;e++){m[e]=parseInt(m[e])}var j=function(){var s=0;for(var r=0;r<this.rowsBuffer.length;r++){var o=1;for(var c=0;c<m.length;c++){o*=parseFloat(this._get_cell_value(this.rowsBuffer[r],m[c]))}s+=isNaN(o)?0:o}return this._maskArr[g]?this._aplNF(s,g):(Math.round(s*100)/100)};var a=[];for(var l=0;l<m.length;l++){a[m[l]]=true}this._stat_in_header(h,j,a,n,n)};dhtmlXGridObject.prototype._in_header_stat_max=function(e,a,h){var g=function(){this._build_m_order();var l=this._m_order?this._m_order[a]:a;var m=-999999999;if(this.getRowsNum()==0){return"&nbsp;"}for(var c=0;c<this.rowsBuffer.length;c++){m=Math.max(m,parseFloat(this._get_cell_value(this.rowsBuffer[c],l)))}return this._maskArr[a]?this._aplNF(m,a):m};this._stat_in_header(e,g,a,h)};dhtmlXGridObject.prototype._in_header_stat_min=function(e,a,h){var g=function(){this._build_m_order();var l=this._m_order?this._m_order[a]:a;var m=999999999;if(this.getRowsNum()==0){return"&nbsp;"}for(var c=0;c<this.rowsBuffer.length;c++){m=Math.min(m,parseFloat(this._get_cell_value(this.rowsBuffer[c],l)))}return this._maskArr[a]?this._aplNF(m,a):m};this._stat_in_header(e,g,a,h)};dhtmlXGridObject.prototype._in_header_stat_average=function(e,a,h){var g=function(){this._build_m_order();var m=this._m_order?this._m_order[a]:a;var o=0;var n=0;if(this.getRowsNum()==0){return"&nbsp;"}for(var l=0;l<this.rowsBuffer.length;l++){var c=parseFloat(this._get_cell_value(this.rowsBuffer[l],m));if(!isNaN(c)){o+=c;n++}}return this._maskArr[a]?this._aplNF(o/n,a):(Math.round(o/n*100)/100)};this._stat_in_header(e,g,a,h)};dhtmlXGridObject.prototype._in_header_stat_count=function(e,a,h){var g=function(){return this.getRowsNum()};this._stat_in_header(e,g,a,h)};dhtmlXGridObject.prototype._stat_in_header=function(e,g,a,l){var h=this;var j=function(){this.dma(true);e.innerHTML=(l[0]?l[0]:"")+g.call(this)+(l[1]?l[1]:"");this.dma(false);this.callEvent("onStatReady",[])};if(!this._stat_events){this._stat_events=[];this.attachEvent("onClearAll",function(){if(!this.hdr.rows[1]){for(var m=0;m<this._stat_events.length;m++){for(var c=0;c<4;c++){this.detachEvent(this._stat_events[m][c])}}this._stat_events=[]}})}this._stat_events.push([this.attachEvent("onGridReconstructed",j),this.attachEvent("onXLE",j),this.attachEvent("onFilterEnd",j),this.attachEvent("onEditCell",function(c,n,m){if(c==2&&(m==a||(a&&a[m]))){j.call(this)}return true})]);e.innerHTML=""};dhtmlXGridObject.prototype.loadCSVFile=function(c,a){this.load(c,a,"csv")};dhtmlXGridObject.prototype.enableCSVAutoID=function(a){this._csvAID=dhx4.s2b(a)};dhtmlXGridObject.prototype.enableCSVHeader=function(a){this._csvHdr=dhx4.s2b(a)};dhtmlXGridObject.prototype.setCSVDelimiter=function(a){this.csv.cell=a};dhtmlXGridObject.prototype._csvAID=true;dhtmlXGridObject.prototype.loadCSVString=function(a){this.parse(a,"csv")};dhtmlXGridObject.prototype.serializeToCSV=function(n){this.editStop();if(this._mathSerialization){this._agetm="getMathValue"}else{if(this._strictText||n){this._agetm="getTitle"}else{this._agetm="getValue"}}var l=[];if(this._csvHdr){for(var h=1;h<this.hdr.rows.length;h++){var c=[];for(var m=0;m<this._cCount;m++){if((!this._srClmn)||(this._srClmn[m])){c.push(this.getColumnLabel(m,h-1))}}l.push(this.csvParser.str(c,this.csv.cell,this.csv.row))}}var m=0;var g=this.rowsBuffer.length;for(m;m<g;m++){var e=this._serializeRowToCVS(null,m);if(e!=""){l.push(e)}}return this.csvParser.block(l,this.csv.row)};dhtmlXGridObject.prototype._serializeRowToCVS=function(a,n,e,l){var m=new Array();if(!a){a=this.render_row(n);if(this._fake&&!this._fake.rowsAr[a.idd]){this._fake.render_row(n)}}if(!this._csvAID){m[m.length]=a.idd}e=e||0;l=l||this._cCount;var s=false;var g=e;while(a.childNodes[e]._cellIndex>g&&e){e--}for(var o=e;g<l;o++){if(!a.childNodes[o]){break}var c=a.childNodes[o]._cellIndex;if(((!this._srClmn)||(this._srClmn[c]))&&(!this._serialize_visible||!this._hrrar[c])){var h=a.childNodes[o];var j=this.cells(a.idd,c);while(g!=c){g++;m.push("");if(g>=l){break}}if(g>=l){break}g++;if(j.cell){zxVal=j[this._agetm]()}else{zxVal=""}if((this._chAttr)&&(j.wasChanged())){s=true}m[m.length]=((zxVal===null)?"":zxVal);if(this._ecspn&&h.colSpan&&h.colSpan>1){h=h.colSpan-1;for(var v=0;v<h;v++){m[m.length]="";g++}}}else{g++}}if((this._onlChAttr)&&(!s)){return""}return this.csvParser.str(m,this.csv.cell,this.csv.row)};dhtmlXGridObject.prototype.toClipBoard=function(a){if(window.clipboardData){window.clipboardData.setData("Text",a)}else{(new Clipboard()).copy(a)}};dhtmlXGridObject.prototype.fromClipBoard=function(){if(window.clipboardData){return window.clipboardData.getData("Text")}else{return(new Clipboard()).paste()}};dhtmlXGridObject.prototype.cellToClipboard=function(e,c){if((!e)||(!c&&c!==0)){if(!this.selectedRows[0]){return}e=this.selectedRows[0].idd;c=this.cell._cellIndex}var a=this.cells(e,c);this.toClipBoard(((a.getLabel?a.getLabel():a.getValue())||"").toString())};dhtmlXGridObject.prototype.updateCellFromClipboard=function(e,c){if((!e)||(!c)){if(!this.selectedRows[0]){return}e=this.selectedRows[0].idd;c=this.cell._cellIndex}var a=this.cells(e,c);a[a.setImage?"setLabel":"setValue"](this.fromClipBoard())};dhtmlXGridObject.prototype.rowToClipboard=function(g){var a="";if(this._mathSerialization){this._agetm="getMathValue"}else{if(this._strictText){this._agetm="getTitle"}else{this._agetm="getValue"}}this._serialize_visible=!this._fake;if(g){a=this._serializeRowToCVS(this.getRowById(g))}else{var e=[];for(var c=0;c<this.selectedRows.length;c++){e[e.length]=this._serializeRowToCVS(this.selectedRows[c]);a=this.csvParser.block(e,this.csv.row)}}this._serialize_visible=false;this.toClipBoard(a)};dhtmlXGridObject.prototype.updateRowFromClipboard=function(h){var a=this.fromClipBoard();if(!a){return}if(h){var g=this.getRowById(h)}else{var g=this.selectedRows[0]}if(!g){return}var j=this.csvParser;a=j.unblock(a,this.csv.cell,this.csv.row)[0];if(!this._csvAID){a.splice(0,1)}for(var e=0;e<a.length;e++){var c=this.cells3(g,e);c[c.setImage?"setLabel":"setValue"](a[e])}};dhtmlXGridObject.prototype.csvParser={block:function(a,c){return a.join(c)},unblock:function(j,a,h){var g=(j||"").split(h);for(var c=0;c<g.length;c++){g[c]=(g[c]||"").split(a)}var e=g.length-1;if(g[e].length==1&&g[e][0]==""){g.splice(e,1)}return g},str:function(c,a,e){return c.join(a)}};dhtmlXGridObject.prototype.csvExtParser={_quote:RegExp('"',"g"),_quote_esc:RegExp('\\\\"',"g"),block:function(a,c){return a.join(c)},unblock:function(m,r,u){var e=[[]];var c=0;if(!m){return e}var n=/^[ ]*"/;var l=/"[ ]*$/;var a=new RegExp(".*"+u+".*$");var h=m.split(r);for(var g=0;g<h.length;g++){if(h[g].match(n)){var s=h[g].replace(n,"");while(!h[g].match(l)){g++;s+=h[g]}e[c].push(s.replace(l,"").replace(this._quote_esc,'"'))}else{if(h[g].match(a)){var j=h[g].indexOf(u);e[c].push(h[g].substr(0,j));c++;e[c]=[];h[g]=h[g].substr(j+1);g--}else{if(h[g]||g!=h.length-1){e[c].push(h[g])}}}}var o=e.length-1;if(o>0&&!e[o].length){e.splice(o,1)}return e},str:function(e,a,g){for(var c=0;c<e.length;c++){e[c]='"'+e[c].replace(this._quote,'\\"')+'"'}return e.join(a)}};dhtmlXGridObject.prototype.addRowFromClipboard=function(){var a=this.fromClipBoard();if(!a){return}var e=this.csvParser.unblock(a,this.csv.cell,this.csv.row);for(var c=0;c<e.length;c++){if(e[c]){a=e[c];if(!a.length){continue}if(this._csvAID){this.addRow(this.getRowsNum()+2,a)}else{if(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();if(!a){return}this.loadCSVString(a)};dhtmlXGridObject.prototype.getXLS=function(j){if(!this.xslform){this.xslform=document.createElement("FORM");this.xslform.action=(j||"")+"xls.php";this.xslform.method="post";this.xslform.target=(_isIE?"_blank":"");document.body.appendChild(this.xslform);var h=document.createElement("INPUT");h.type="hidden";h.name="csv";this.xslform.appendChild(h);var g=document.createElement("INPUT");g.type="hidden";g.name="csv_header";this.xslform.appendChild(g)}var m=this.serializeToCSV();this.xslform.childNodes[0].value=m;var e=[];var a=this._cCount;for(var c=0;c<a;c++){e.push(this.getHeaderCol(c))}e=e.join(",");this.xslform.childNodes[1].value=e;this.xslform.submit()};dhtmlXGridObject.prototype.printView=function(v,e){var r="<style>TD { font-family:Arial; text-align:center; padding-left:2px;padding-right:2px; } \n td.filter input, td.filter select { display:none; } \n </style>";var E=null;if(this._fake){E=[].concat(this._hrrar);for(var D=0;D<this._fake._cCount;D++){this._hrrar[D]=null}}var o=document.location.port;var s=document.location.hostname;r+="<base href='"+(document.location.protocol+"//"+s+(o?(":"+o):"")+document.location.pathname)+"'></base>";if(!this.parentGrid){r+=(v||"")}r+='<table width="100%" border="2px" cellpadding="0" cellspacing="0">';var u=Math.max(this.rowsBuffer.length,this.rowsCol.length);var n=this._cCount;var w=this._printWidth();r+='<tr class="header_row_1">';for(var D=0;D<n;D++){if(this._hrrar&&this._hrrar[D]){continue}var h=this.hdr.rows[1].cells[this.hdr.rows[1]._childIndexes?this.hdr.rows[1]._childIndexes[parseInt(D)]:D];var a=(h.colSpan||1);var J=(h.rowSpan||1);for(var C=1;C<a;C++){w[D]+=w[C]}r+='<td rowspan="'+J+'" width="'+w[D]+'%" style="background-color:lightgrey;" colspan="'+a+'">'+this.getHeaderCol(D)+"</td>";D+=a-1}r+="</tr>";for(var D=2;D<this.hdr.rows.length;D++){if(_isIE){r+="<tr style='background-color:lightgrey' class='header_row_"+D+"'>";var g=this.hdr.rows[D].childNodes;for(var C=0;C<g.length;C++){if(!this._hrrar||!this._hrrar[g[C]._cellIndex]){r+=g[C].outerHTML}}r+="</tr>"}else{r+="<tr class='header_row_"+D+"' style='background-color:lightgrey'>"+(this._fake?this._fake.hdr.rows[D].innerHTML:"")+this.hdr.rows[D].innerHTML+"</tr>"}}for(var D=0;D<u;D++){r+="<tr>";if(this.rowsCol[D]&&this.rowsCol[D]._cntr){r+=this.rowsCol[D].innerHTML.replace(/<img[^>]*>/gi,"")+"</tr>";continue}if(this.rowsCol[D]&&this.rowsCol[D].style.display=="none"){continue}var m;if(this.rowsCol[D]){m=this.rowsCol[D].idd}else{if(this.rowsBuffer[D]){m=this.rowsBuffer[D].idd}else{continue}}for(var C=0;C<n;C++){if(this._hrrar&&this._hrrar[C]){continue}if(this.rowsAr[m]&&this.rowsAr[m].tagName=="TR"){var I=this.cells(m,C);if(I._setState){var x=""}else{if(I.getContent){x=I.getContent()}else{if(I.getImage||I.combo){var x=I.cell.innerHTML}else{var x=I.getValue()}}}}else{var x=this._get_cell_value(this.rowsBuffer[D],C)}var y=this.columnColor[C]?"background-color:"+this.columnColor[C]+";":"";var A=this.cellAlign[C]?"text-align:"+this.cellAlign[C]+";":"";var F=I.getAttribute("colspan");r+='<td style="'+y+A+'" '+(F?'colSpan="'+F+'"':"")+">"+(x===""?"&nbsp;":x)+"</td>";if(F){C+=F-1}}r+="</tr>";if(this.rowsCol[D]&&this.rowsCol[D]._expanded){var l=this.cells4(this.rowsCol[D]._expanded.ctrl);if(l.getSubGrid){r+='<tr><td colspan="'+n+'">'+l.getSubGrid().printView()+"</td></tr>"}else{r+='<tr><td colspan="'+n+'">'+this.rowsCol[D]._expanded.innerHTML+"</td></tr>"}}}if(this.ftr){for(var D=1;D<this.ftr.childNodes[0].rows.length;D++){r+="<tr style='background-color:lightgrey'>"+((this._fake)?this._fake.ftr.childNodes[0].rows[D].innerHTML:"")+this.ftr.childNodes[0].rows[D].innerHTML+"</tr>"}}r+="</table>";if(this.parentGrid){return r}r+=(e||"");var H=window.open("","_blank");H.document.write(r);H.document.write("<script>window.onerror=function(){return true;}<\/script>");H.document.close();if(this._fake){this._hrrar=E}};dhtmlXGridObject.prototype._printWidth=function(){var h=[];var g=0;for(var e=0;e<this._cCount;e++){var a=this.getColWidth(e);h.push(a);g+=a}var l=[];var c=0;for(var e=0;e<h.length;e++){var j=Math.floor((h[e]/g)*100);c+=j;l.push(j)}l[l.length-1]+=100-c;return l};dhtmlXGridObject.prototype.enableBlockSelection=function(e){if(typeof this._bs_mode=="undefined"){var a=this;this.obj.onmousedown=function(g){if(a._bs_mode){a._OnSelectionStart((g||event),this)}return true};this._CSVRowDelimiter=this.csv.row;this.attachEvent("onResize",function(){a._HideSelection();return true});this.attachEvent("onGridReconstructed",function(){a._HideSelection();return true});this.attachEvent("onFilterEnd",this._HideSelection)}if(e===false){this._bs_mode=false;return this._HideSelection()}else{this._bs_mode=true}if(!window.dhx4.isIPad){var c=this._clip_area=document.createElement("textarea");c.style.cssText="position:absolute; width:1px; height:1px; overflow:hidden; color:transparent; background-color:transparent; bottom:1px; right:1px; border:none;";c.onkeydown=function(g){g=g||event;if(g.keyCode==86&&(g.ctrlKey||g.metaKey)){a.pasteBlockFromClipboard()}};document.body.insertBefore(this._clip_area,document.body.firstChild);dhtmlxEvent(this.entBox,"click",function(){if(!a.editor&&a._clip_area){a._clip_area.select()}})}};dhtmlXGridObject.prototype.forceLabelSelection=function(a){this._strictText=dhx4.s2b(a)};dhtmlXGridObject.prototype._OnSelectionStart=function(e,g){var c=this;if(e.button==2){return}var h=e.srcElement||e.target;if(this.editor){if(h.tagName&&(h.tagName=="INPUT"||h.tagName=="TEXTAREA")){return}this.editStop()}c.setActive(true);var l=this.getPosition(this.obj);var a=e.clientX-l[0]+(document.body.scrollLeft||(document.documentElement?document.documentElement.scrollLeft:0));var j=e.clientY-l[1]+(document.body.scrollTop||(document.documentElement?document.documentElement.scrollTop:0));this._CreateSelection(a-4,j-4);if(h==this._selectionObj){this._HideSelection();this._startSelectionCell=null}else{while(h&&(!h.tagName||h.tagName.toLowerCase()!="td")){h=h.parentNode}this._startSelectionCell=h}if(this._startSelectionCell){if(!this.callEvent("onBeforeBlockSelected",[this._startSelectionCell.parentNode.idd,this._startSelectionCell._cellIndex])){return this._startSelectionCell=null}}this.obj.onmousedown=null;this.obj[_isIE?"onmouseleave":"onmouseout"]=function(m){if(c._blsTimer){window.clearTimeout(c._blsTimer)}};this.obj.onmmold=this.obj.onmousemove;this._init_pos=[a,j];this._selectionObj.onmousemove=this.obj.onmousemove=function(m){m=m||e;if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}c._OnSelectionMove(m)};this._oldDMP=document.body.onmouseup;document.body.onmouseup=function(m){m=m||e;c._OnSelectionStop(m,this);return true};this.callEvent("onBeforeBlockSelection",[]);document.body.onselectstart=function(){return false}};dhtmlXGridObject.prototype._getCellByPos=function(a,g){a=a;if(this._fake){a+=this._fake.objBox.scrollWidth}g=g;var c=0;for(var e=0;e<this.obj.rows.length;e++){g-=this.obj.rows[e].offsetHeight;if(g<=0){c=this.obj.rows[e];break}}if(!c||!c.idd){return null}for(var e=0;e<this._cCount;e++){a-=this.getColWidth(e);if(a<=0){while(true){if(c._childIndexes&&c._childIndexes[e+1]==c._childIndexes[e]){c=c.previousSibling}else{return this.cells(c.idd,e).cell}}}}return null};dhtmlXGridObject.prototype._OnSelectionMove=function(g){var w=this;this._ShowSelection();var r=this.getPosition(this.obj);var l=g.clientX-r[0]+(document.body.scrollLeft||(document.documentElement?document.documentElement.scrollLeft:0));var j=g.clientY-r[1]+(document.body.scrollTop||(document.documentElement?document.documentElement.scrollTop:0));if((Math.abs(this._init_pos[0]-l)<5)&&(Math.abs(this._init_pos[1]-j)<5)){return this._HideSelection()}var u=this._endSelectionCell;if(this._startSelectionCell==null){this._endSelectionCell=this._startSelectionCell=this.getFirstParentOfType(g.srcElement||g.target,"TD")}else{if(g.srcElement||g.target){if((g.srcElement||g.target).className=="dhtmlxGrid_selection"){this._endSelectionCell=(this._getCellByPos(l,j)||this._endSelectionCell)}else{var v=this.getFirstParentOfType(g.srcElement||g.target,"TD");if(v.parentNode.idd){this._endSelectionCell=v}}}}if(this._endSelectionCell){if(!this.callEvent("onBeforeBlockSelected",[this._endSelectionCell.parentNode.idd,this._endSelectionCell._cellIndex])){this._endSelectionCell=u}}var h=this.objBox.scrollLeft+this.objBox.clientWidth;var c=this.objBox.scrollTop+this.objBox.clientHeight;var n=this.objBox.scrollLeft;var m=this.objBox.scrollTop;var e=false;if(this._blsTimer){window.clearTimeout(this._blsTimer)}if(l+20>=h){this.objBox.scrollLeft=this.objBox.scrollLeft+20;e=true}else{if(l-20<n){this.objBox.scrollLeft=this.objBox.scrollLeft-20;e=true}}if(j+20>=c&&!this._realfake){this.objBox.scrollTop=this.objBox.scrollTop+20;e=true}else{if(j-20<m&&!this._realfake){this.objBox.scrollTop=this.objBox.scrollTop-20;e=true}}this._selectionArea=this._RedrawSelectionPos(this._startSelectionCell,this._endSelectionCell);if(e){var s=g.clientX;var o=g.clientY;this._blsTimer=window.setTimeout(function(){w._OnSelectionMove({clientX:s,clientY:o})},100)}};dhtmlXGridObject.prototype._OnSelectionStop=function(c){var a=this;if(this._blsTimer){window.clearTimeout(this._blsTimer)}this.obj.onmousedown=function(g){if(a._bs_mode){a._OnSelectionStart((g||c),this)}return true};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 e=this.getFirstParentOfType(c.srcElement||c.target,"TD");if((!e)||(!e.parentNode.idd)){e=this._endSelectionCell}while(e&&(!e.tagName||e.tagName.toLowerCase()!="td")){e=e.parentNode}if(!e){return this._HideSelection()}this._stopSelectionCell=e;this._selectionArea=this._RedrawSelectionPos(this._startSelectionCell,this._stopSelectionCell);this.callEvent("onBlockSelected",[])}document.body.onselectstart=function(){}};dhtmlXGridObject.prototype._RedrawSelectionPos=function(s,l){if(s.parentNode.grid!=l.parentNode.grid){return this._selectionArea}var o={};o.LeftTopCol=s._cellIndex;o.LeftTopRow=this.getRowIndex(s.parentNode.idd);o.RightBottomCol=l._cellIndex;o.RightBottomRow=this.getRowIndex(l.parentNode.idd);var g=s.offsetWidth;var e=s.offsetHeight;s=this.getPosition(s,this.obj);var u=l.offsetWidth;var m=l.offsetHeight;l=this.getPosition(l,this.obj);if(s[0]<l[0]){var h=s[0];var j=l[0]+u}else{var n=o.RightBottomCol;o.RightBottomCol=o.LeftTopCol;o.LeftTopCol=n;var h=l[0];var j=s[0]+g}if(s[1]<l[1]){var r=s[1];var a=l[1]+m}else{var n=o.RightBottomRow;o.RightBottomRow=o.LeftTopRow;o.LeftTopRow=n;var r=l[1];var a=s[1]+e}var v=j-h;var c=a-r;this._selectionObj.style.left=h+"px";this._selectionObj.style.top=r+"px";this._selectionObj.style.width=v+"px";this._selectionObj.style.height=c+"px";return o};dhtmlXGridObject.prototype._CreateSelection=function(a,e){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(g){g=g||event;if(g.button==2||(_isMacOS&&g.ctrlKey)){return this.parentNode.grid.callEvent("onBlockRightClick",["BLOCK",g])}};this._selectionObj.oncontextmenu=function(g){(g||event).cancelBubble=true;return false};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=e+"px";this._selectionObj.startX=a;this._selectionObj.startY=e};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;if(this._clip_area){this._clip_area.value="";this._clip_area.blur()}};dhtmlXGridObject.prototype.copyBlockToClipboard=function(){if(!this._clip_area){return}if(this._selectionArea!=null){var e=new Array();if(this._mathSerialization){this._agetm="getMathValue"}else{if(this._strictText){this._agetm="getTitle"}else{this._agetm="getValue"}}this._serialize_visible=true;for(var a=this._selectionArea.LeftTopRow;a<=this._selectionArea.RightBottomRow;a++){var c=this._serializeRowToCVS(this.rowsBuffer[a],null,this._selectionArea.LeftTopCol,this._selectionArea.RightBottomCol+1);if(!this._csvAID){e[e.length]=c.substr(c.indexOf(this.csv.cell)+1)}else{e[e.length]=c}}e=e.join(this._CSVRowDelimiter);this._clip_area.value=e;this._clip_area.select();this._serialize_visible=false}};dhtmlXGridObject.prototype.pasteBlockFromClipboard=function(){if(!this._clip_area){return}this._clip_area.select();var a=this;window.setTimeout(function(){a._pasteBlockFromClipboard();a=null},1)};dhtmlXGridObject.prototype._pasteBlockFromClipboard=function(){var m=this._clip_area.value;if(!m){return}if(this._selectionArea!=null){var w=this._selectionArea.LeftTopRow;var a=this._selectionArea.LeftTopCol}else{if(this.cell!=null&&!this.editor){var w=this.getRowIndex(this.cell.parentNode.idd);var a=this.cell._cellIndex}else{return false}}m=this.csvParser.unblock(m,this.csv.cell,this.csv.row);var o=w+m.length;var u=a+m[0].length;if(u>this._cCount){u=this._cCount}var g=0;for(var r=w;r<o;r++){var x=this.render_row(r);if(x==-1){continue}var e=0;for(var h=a;h<u;h++){if(this._hrrar[h]&&!this._fake){u=Math.min(u+1,this._cCount);continue}var s=this.cells3(x,h);if(s.isDisabled()){e++;continue}if(this._onEditUndoRedo){this._onEditUndoRedo(2,x.idd,h,m[g][e],s.getValue())}if(s.combo){var v=s.combo.values;for(var c=0;c<v.length;c++){if(m[g][e]==v[c]){s.setValue(s.combo.keys[c]);v=null;break}}if(v!=null&&s.editable){s.setValue(m[g][e++])}else{e++}}else{s[s.setImage?"setLabel":"setValue"](m[g][e++])}s.cell.wasChanged=true}this.callEvent("onRowPaste",[x.idd]);g++}};dhtmlXGridObject.prototype.getSelectedBlock=function(){if(this._selectionArea){return this._selectionArea}else{if(this.getSelectedRowId()!==null){return{LeftTopRow:this.getSelectedRowId(),LeftTopCol:this.getSelectedCellIndex(),RightBottomRow:this.getSelectedRowId(),RightBottomCol:this.getSelectedCellIndex()}}else{return null}}};dhtmlXGridObject.prototype.enableSmartRendering=function(e,c,a){if(arguments.length>2){if(c&&!this.rowsBuffer[c-1]){this.rowsBuffer[c-1]=0}c=a}this._srnd=dhx4.s2b(e);this._srdh=this._srdh||20;this._dpref=c||0};dhtmlXGridObject.prototype.enablePreRendering=function(a){this._srnd_pr=parseInt(a||50)};dhtmlXGridObject.prototype.forceFullLoading=function(a,h){for(var e=0;e<this.rowsBuffer.length;e++){if(!this.rowsBuffer[e]){var g=a||(this.rowsBuffer.length-e);if(this.callEvent("onDynXLS",[e,g])){var c=this;this.load(this.xmlFileUrl+dhtmlx.url(this.xmlFileUrl)+"posStart="+e+"&count="+g,function(){window.setTimeout(function(){c.forceFullLoading(a,h)},100)},this._data_type)}return}}if(h){h.call(this)}};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(l,a,c,g){if(!a){return null}var j="__filler__";var h=this._prepareRow(j);h.firstChild.style.width="1px";h.firstChild.style.borderWidth=h.firstChild.style.padding=h.firstChild.style.margin="0px";for(var e=1;e<h.childNodes.length;e++){h.childNodes[e].style.display="none"}h.firstChild.style.height=a*this._srdh+"px";c=c||this.rowsCol[l];if(c&&c.nextSibling){c.parentNode.insertBefore(h,c.nextSibling)}else{if(_isKHTML){this.obj.appendChild(h)}else{this.obj.rows[0].parentNode.appendChild(h)}}this.callEvent("onAddFiller",[l,a,h,c,g]);return[l,a,h]};dhtmlXGridObject.prototype._update_srnd_view=function(){var l=Math.floor(this.objBox.scrollTop/this._srdh);var c=l+this._get_view_size();if(this.multiLine){var m=this.objBox.scrollTop;l=0;while(m>0){m-=this.rowsCol[l]?this.rowsCol[l].offsetHeight:this._srdh;l++}c=l+this._get_view_size();if(l>0){l--}}c+=(this._srnd_pr||0);if(c>this.rowsBuffer.length){c=this.rowsBuffer.length}for(var g=l;g<c;g++){if(!this.rowsCol[g]){var h=this._add_from_buffer(g);if(h==-1){if(this.xmlFileUrl){if(this._dpref&&this.rowsBuffer[c-1]){var e=this._dpref?this._dpref:(c-g);var a=Math.max(0,Math.min(g,c-this._dpref));this._current_load=[a,c-a]}else{this._current_load=[g,(this._dpref?this._dpref:(c-g))]}if(this.callEvent("onDynXLS",this._current_load)){this.load(this.xmlFileUrl+dhtmlx.url(this.xmlFileUrl)+"posStart="+this._current_load[0]+"&count="+this._current_load[1],this._data_type)}}return}else{if(this._tgle){this._updateLine(this._h2.get[this.rowsBuffer[g].idd],this.rowsBuffer[g]);this._updateParentLine(this._h2.get[this.rowsBuffer[g].idd],this.rowsBuffer[g])}if(g&&g==(this._realfake?this._fake:this)["_r_select"]){this.selectCell(g,this.cell?this.cell._cellIndex:0,true)}}}}if(this._fake&&!this._realfake&&this.multiLine){this._fake.objBox.scrollTop=this.objBox.scrollTop}};dhtmlXGridObject.prototype._add_from_buffer=function(g){var h=this.render_row(g);if(h==-1){return -1}if(h._attrs.selected||h._attrs.select){this.selectRow(h,false,true);h._attrs.selected=h._attrs.select=null}if(!this._cssSP){if(this._cssEven&&g%2==0){h.className=this._cssEven+((h.className.indexOf("rowselected")!=-1)?" rowselected ":" ")+(h._css||"")}else{if(this._cssUnEven&&g%2==1){h.className=this._cssUnEven+((h.className.indexOf("rowselected")!=-1)?" rowselected ":" ")+(h._css||"")}}}else{if(this._h2){var a=this._h2.get[h.idd];h.className+=" "+((a.level%2)?(this._cssUnEven+" "+this._cssUnEven):(this._cssEven+" "+this._cssEven))+"_"+a.level+(this.rowsAr[a.id]._css||"")}}for(var c=0;c<this._fillers.length;c++){var e=this._fillers[c];if(e&&e[0]<=g&&(e[0]+e[1])>g){var j=g-e[0];if(j==0){this._insert_before(g,h,e[2]);this._update_fillers(c,-1,1)}else{if(j==e[1]-1){this._insert_after(g,h,e[2]);this._update_fillers(c,-1,0)}else{this._fillers.push(this._add_filler(g+1,e[1]-j-1,e[2],1));this._insert_after(g,h,e[2]);this._update_fillers(c,-e[1]+j,0)}}return}}};dhtmlXGridObject.prototype._update_fillers=function(e,a,g){var c=this._fillers[e];c[1]=c[1]+a;c[0]=c[0]+g;if(!c[1]){this.callEvent("onRemoveFiller",[c[2]]);c[2].parentNode.removeChild(c[2]);this._fillers.splice(e,1)}else{c[2].firstChild.style.height=parseFloat(c[2].firstChild.style.height)+a*this._srdh+"px";this.callEvent("onUpdateFiller",[c[2]])}};dhtmlXGridObject.prototype._insert_before=function(c,e,a){a.parentNode.insertBefore(e,a);this.rowsCol[c]=e;this.callEvent("onRowInserted",[e,null,a,"before"])};dhtmlXGridObject.prototype._insert_after=function(c,e,a){if(a.nextSibling){a.parentNode.insertBefore(e,a.nextSibling)}else{a.parentNode.appendChild(e)}this.rowsCol[c]=e;this.callEvent("onRowInserted",[e,null,a,"after"])};if(typeof(window.dhtmlxValidation)!="undefined"){dhtmlxValidation.trackInput=function(e,g,c,a){dhtmlxEvent(e,"keyup",function(h){if(dhtmlxValidation._timer){window.clearTimeout(dhtmlxValidation._timer);dhtmlxValidation._timer=null}dhtmlxValidation._timer=window.setTimeout(function(){if(!dhtmlxValidation.checkInput(e,g)){if(!c||c(e,e.value,g)){e.className+=" dhtmlx_live_validation_error"}}else{e.className=e.className.replace(/[ ]*dhtmlx_live_validation_error/g,"");if(a){a(e,e.value,g)}}},250)})};dhtmlxValidation.checkInput=function(a,c){return dhtmlxValidation.checkValue(a.value,c)};dhtmlxValidation.checkValue=function(e,g){if(typeof g=="string"){g=g.split(",")}var a=true;for(var c=0;c<g.length;c++){if(!this["is"+g[c]]){alert("Incorrect validation rule: "+g[c])}else{a=a&&this["is"+g[c]](e)}}return a}}dhtmlXGridObject.prototype.enableValidation=function(c,a){c=dhx4.s2b(c);if(c){this._validators={data:[]}}else{this._validators=false}if(arguments.length>1){this._validators._live=a}if(!this._validators._event){this._validators._event=this.attachEvent("onEditCell",this.validationEvent)}};dhtmlXGridObject.prototype.setColValidators=function(a){if(!this._validators){this.enableValidation(true)}if(typeof a=="string"){a=a.split(this.delim)}this._validators.data=a};dhtmlXGridObject.prototype.validationEvent=function(j,c,g,e,m){var n=this._validators;if(!n){return true}var l=(n.data[g]||this.cells(c,g).getAttribute("validate"))||"";if(j==1&&l){var h=this.editor||(this._fake||{}).editor;if(!h){return true}h.cell.className=h.cell.className.replace(/[ ]*dhtmlx_validation_error/g,"");if(n._live){var a=this;dhtmlxValidation.trackInput(h.getInput(),l,function(o,r,s){return a.callEvent("onLiveValidationError",[c,g,r,o,s])},function(o,r,s){return a.callEvent("onLiveValidationCorrect",[c,g,r,o,s])})}}if(j==2){this.validateCell(c,g,l,e)}return true};dhtmlXGridObject.prototype.validateCell=function(l,h,j,g){j=j||(this._validators.data[h]||this.cells(l,h).getAttribute("validate"));g=g||this.cells(l,h).getValue();if(!j){return}var c=this.cells(l,h).cell;var a=true;if(typeof j=="string"){j=j.split(this.delim)}for(var e=0;e<j.length;e++){if(!dhtmlxValidation.checkValue(g,j[e])){if(this.callEvent("onValidationError",[l,h,g,j[e]])){c.className+=" dhtmlx_validation_error"}a=false}}if(a){this.callEvent("onValidationCorrect",[l,h,g,j]);c.className=c.className.replace(/[ ]*dhtmlx_validation_error/g,"")}return a};function eXcell_stree(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid;if(!this.grid._sub_trees){return}this._sub=this.grid._sub_trees[a._cellIndex];if(!this._sub){return}this._sub=this._sub[0]}this.getValue=function(){return this.cell._val};this.setValue=function(c){this.cell._val=c;c=this._sub.getItemText(this.cell._val);this.setCValue((c||"&nbsp;"),c)};this.edit=function(){this._sub.parentObject.style.display="block";var e=this.grid.getPosition(this.cell);this._sub.parentObject.style.top=e[1]+"px";this._sub.parentObject.style.left=e[0]+"px";this._sub.parentObject.style.position="absolute";var c=this.grid.editStop;this.grid.editStop=function(){};this.grid.editStop=c};this.detach=function(){this._sub.parentObject.style.display="none";if(this.grid._sub_id!=null){var c=this.cell._val;this.setValue(this._sub.getSelectedItemId());this.grid._sub_id=null;return this.cell._val!=c}}}eXcell_stree.prototype=new eXcell;dhtmlXGridObject.prototype.setSubTree=function(a,c){if(!this._sub_trees){this._sub_trees=[]}this._sub_trees[c]=[a];a.parentObject.style.display="none";var e=this;a.parentObject.onclick=function(g){(g||window.event).cancelBubble=true;return false};a.ev_onDblClick=null;a.attachEvent("onDblClick",function(g){e._sub_id=g;e.editStop();return true});a._chRRS=true};function eXcell_link(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.isDisabled=function(){return true};this.edit=function(){};this.getValue=function(){if(this.cell.firstChild.getAttribute){var c=this.cell.firstChild.getAttribute("target");return this.cell.firstChild.innerHTML+"^"+this.cell.firstChild.getAttribute("href")+(c?("^"+c):"")}else{return""}};this.setValue=function(e){if((typeof(e)!="number")&&(!e||e.toString()._dhx_trim()=="")){this.setCValue("&nbsp;",c);return(this.cell._clearCell=true)}var c=e.split("^");if(c.length==1){c[1]=""}else{if(c.length>1){c[1]="href='"+c[1]+"'";if(c.length==3){c[1]+=" target='"+c[2]+"'"}else{c[1]+=" 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 eXcell_grid(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid;if(!this.grid._sub_grids){return}this._sub=this.grid._sub_grids[a._cellIndex];if(!this._sub){return}this._sindex=this._sub[1];this._sub=this._sub[0]}this.getValue=function(){return this.cell.val};this.setValue=function(c){this.cell.val=c;if(this._sub.getRowById(c)){c=this._sub.cells(c,this._sindex);if(c){c=c.getValue()}else{c=""}}this.setCValue((c||"&nbsp;"),c)};this.edit=function(){this.val=this.cell.val;this._sub.entBox.style.display="block";var e=this.grid.getPosition(this.cell);this._sub.entBox.style.top=e[1]+"px";this._sub.entBox.style.left=e[0]+"px";this._sub.entBox.style.position="absolute";this._sub.setSizes();var c=this.grid.editStop;this.grid.editStop=function(){};if(this._sub.getRowById(this.cell.val)){this._sub.setSelectedRow(this.cell.val)}this._sub.setActive(true);this.grid.editStop=c};this.detach=function(){var c=this.cell.val;this._sub.entBox.style.display="none";if(this._sub.getSelectedId()===null){return false}this.setValue(this._sub.getSelectedId());this.grid.setActive(true);return this.cell.val!=c}}eXcell_grid.prototype=new eXcell;dhtmlXGridObject.prototype.setSubGrid=function(c,a,g){if(!this._sub_grids){this._sub_grids=[]}this._sub_grids[a]=[c,g];c.entBox.style.display="none";var e=this;c.entBox.onclick=function(h){(h||window.event).cancelBubble=true;return false};c.attachEvent("onRowSelect",function(h){e.editStop();return true});c._chRRS=false};function eXcell_dhxCalendar(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid;if(!this.grid._grid_calendarA){var e=this.grid._grid_calendarA=new dhtmlxCalendarObject();this.grid.callEvent("onDhxCalendarCreated",[e]);var c=this.grid;e.attachEvent("onClick",function(){this._last_operation_calendar=true;window.setTimeout(function(){c.editStop()},1);return true});var g=function(h){(h||event).cancelBubble=true};dhtmlxEvent(e.base,"click",g);e=null}}}eXcell_dhxCalendar.prototype=new eXcell;eXcell_dhxCalendar.prototype.edit=function(){var c=this.grid.getPosition(this.cell);this.grid._grid_calendarA._show(false,false);this.grid._grid_calendarA.setPosition(c[0],c[1]+this.cell.offsetHeight);this.grid._grid_calendarA._last_operation_calendar=false;this.grid.callEvent("onCalendarShow",[this.grid._grid_calendarA,this.cell.parentNode.idd,this.cell._cellIndex]);this.cell._cediton=true;this.val=this.cell.val;this._val=this.cell.innerHTML;var a=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=a};eXcell_dhxCalendar.prototype.getDate=function(){if(this.cell.val){return this.cell.val}return null};eXcell_dhxCalendar.prototype.getValue=function(){if(this.cell._clearCell){return""}if(this.grid._dtmask_inc&&this.cell.val){return this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask_inc,this.cell.val).toString()}return this.cell.innerHTML.toString()._dhx_trim()};eXcell_dhxCalendar.prototype.detach=function(){if(!this.grid._grid_calendarA){return}this.grid._grid_calendarA.hide();if(this.cell._cediton){this.cell._cediton=false}else{return}if(this.grid._grid_calendarA._last_operation_calendar){var e=this.grid._grid_calendarA.getFormatedDate((this.grid._dtmask||"%d/%m/%Y"));var c=this.grid._grid_calendarA.getDate();this.cell.val=new Date(c);this.setCValue(e,c);this.cell._clearCell=!e;var a=this.val;this.val=this._val;return(this.cell.val.valueOf()!=(a||"").valueOf())}return false};eXcell_dhxCalendar.prototype.setValue=function(a){if(a&&typeof a=="object"){this.cell.val=a;this.cell._clearCell=false;this.setCValue(this.grid._grid_calendarA.getFormatedDate((this.grid._dtmask||"%d/%m/%Y"),a).toString(),this.cell.val);return}if(!a||a.toString()._dhx_trim()==""){a="&nbsp";this.cell._clearCell=true;this.cell.val=""}else{this.cell._clearCell=false;this.cell.val=new Date(this.grid._grid_calendarA.setFormatedDate((this.grid._dtmask_inc||this.grid._dtmask||"%d/%m/%Y"),a.toString(),null,true));if(this.grid._dtmask_inc){a=this.grid._grid_calendarA.getFormatedDate((this.grid._dtmask||"%d/%m/%Y"),this.cell.val)}}if((this.cell.val=="NaN")||(this.cell.val=="Invalid Date")){this.cell._clearCell=true;this.cell.val=new Date();this.setCValue("&nbsp;",0)}else{this.setCValue((a||"").toString(),this.cell.val)}};function eXcell_dhxCalendarA(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid;if(!this.grid._grid_calendarA){var e=this.grid._grid_calendarA=new dhtmlxCalendarObject();this.grid.callEvent("onDhxCalendarCreated",[e]);var c=this.grid;e.attachEvent("onClick",function(){this._last_operation_calendar=true;window.setTimeout(function(){c.editStop()},1);return true});var g=function(h){(h||event).cancelBubble=true};dhtmlxEvent(e.base,"click",g)}}}eXcell_dhxCalendarA.prototype=new eXcell;eXcell_dhxCalendarA.prototype.edit=function(){var c=this.grid.getPosition(this.cell);this.grid._grid_calendarA._show(false,false);this.grid._grid_calendarA.setPosition(c[0]*1+this.cell.offsetWidth,c[1]*1);this.grid.callEvent("onCalendarShow",[this.grid._grid_calendarA,this.cell.parentNode.idd,this.cell._cellIndex]);this.grid._grid_calendarA._last_operation_calendar=false;this.cell._cediton=true;this.val=this.cell.val;this._val=this.cell.innerHTML;var a=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=a;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-4)+"px";this.obj.className="dhx_combo_edit";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.align;this.obj.onclick=function(g){(g||event).cancelBubble=true};this.obj.onmousedown=function(g){(g||event).cancelBubble=true};this.obj.value=this.getValue();this.cell.innerHTML="";this.cell.appendChild(this.obj);if(window.dhx4.isIE){this.obj.style.overflow="visible";if((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(g){if(!g){g=event}g.cancelBubble=true;return true};this.obj.focus();this.obj.focus()};eXcell_dhxCalendarA.prototype.getDate=function(){if(this.cell.val){return this.cell.val}return null};eXcell_dhxCalendarA.prototype.getValue=function(){if(this.cell._clearCell){return""}if(this.grid._dtmask_inc&&this.cell.val){return this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask_inc,this.cell.val).toString()}return this.cell.innerHTML.toString()._dhx_trim()};eXcell_dhxCalendarA.prototype.detach=function(){if(!this.grid._grid_calendarA){return}this.grid._grid_calendarA.hide();if(this.cell._cediton){this.cell._cediton=false}else{return}if(this.grid._grid_calendarA._last_operation_calendar){this.grid._grid_calendarA._last_operation_calendar=false;var e=this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y");var c=this.grid._grid_calendarA.getDate();this.cell.val=new Date(c);this.setCValue(e,c);this.cell._clearCell=!e;var a=this.val;this.val=this._val;return(this.cell.val.valueOf()!=(a||"").valueOf())}this.setValue(this.obj.value);var a=this.val;this.val=this._val;return(this.cell.val.valueOf()!=(a||"").valueOf())};eXcell_dhxCalendarA.prototype.setValue=function(a){if(a&&typeof a=="object"){this.cell.val=a;this.cell._clearCell=false;this.setCValue(this.grid._grid_calendarA.getFormatedDate((this.grid._dtmask||"%d/%m/%Y"),a).toString(),this.cell.val);return}if(!a||a.toString()._dhx_trim()==""){a="&nbsp";this.cell._clearCell=true;this.cell.val=""}else{this.cell._clearCell=false;this.cell.val=new Date(this.grid._grid_calendarA.setFormatedDate((this.grid._dtmask_inc||this.grid._dtmask||"%d/%m/%Y"),a.toString(),null,true));if(this.grid._dtmask_inc){a=this.grid._grid_calendarA.getFormatedDate((this.grid._dtmask||"%d/%m/%Y"),this.cell.val)}}if((this.cell.val=="NaN")||(this.cell.val=="Invalid Date")){this.cell.val=new Date();this.cell._clearCell=true;this.setCValue("&nbsp;",0)}else{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=true;if(this.grid._h2){this.grid.attachEvent("onOpenEn",function(e){this.resetCounter(a._cellIndex)})}var c=function(){var e=this;window.setTimeout(function(){if(!e.resetCounter){return}if(e._fake&&!e._realfake&&a._cellIndex<e._fake._cCount){e._fake.resetCounter(a._cellIndex)}else{e.resetCounter(a._cellIndex)}},1);return true};this.grid.attachEvent("onBeforeSorting",c);this.grid.attachEvent("onFilterEnd",c)}this.edit=function(){};this.getValue=function(){return this.cell.innerHTML};this.setValue=function(g){this.cell.style.paddingRight="2px";var e=this.cell;window.setTimeout(function(){if(!e.parentNode){return}var h=e.parentNode.rowIndex;if(e.parentNode.grid.currentPage||h<0||e.parentNode.grid._srnd){h=e.parentNode.grid.rowsBuffer._dhx_find(e.parentNode)+1}if(h<=0){return}e.innerHTML=h;if(e.parentNode.grid._fake&&e._cellIndex<e.parentNode.grid._fake._cCount&&e.parentNode.grid._fake.rowsAr[e.parentNode.idd]){e.parentNode.grid._fake.cells(e.parentNode.idd,e._cellIndex).setCValue(h)}e=null},100)}}dhtmlXGridObject.prototype.resetCounter=function(c){if(this._fake&&!this._realfake&&c<this._fake._cCount){this._fake.resetCounter(c,this.currentPage)}var a=arguments[0]||0;if(this.currentPage){a=(this.currentPage-1)*this.rowsBufferOutSize}for(a=0;a<this.rowsBuffer.length;a++){if(this.rowsBuffer[a]&&this.rowsBuffer[a].tagName=="TR"&&this.rowsAr[this.rowsBuffer[a].idd]){this.rowsAr[this.rowsBuffer[a].idd].childNodes[c].innerHTML=a+1}}};eXcell_cntr.prototype=new eXcell;function eXcell_acheck(a){try{this.cell=a;this.grid=this.cell.parentNode.grid;this.cell.obj=this}catch(c){}this.changeState=function(){if((!this.grid.isEditable)||(this.cell.parentNode._locked)||(this.isDisabled())){return}if(this.grid.callEvent("onEditCell",[0,this.cell.parentNode.idd,this.cell._cellIndex])!=false){this.val=this.getValue();if(this.val=="1"){this.setValue("<checkbox state='false'>")}else{this.setValue("<checkbox state='true'>")}this.cell.wasChanged=true;this.grid.callEvent("onEditCell",[1,this.cell.parentNode.idd,this.cell._cellIndex]);this.grid.callEvent("onCheck",[this.cell.parentNode.idd,this.cell._cellIndex,(this.val!="1")]);this.grid.callEvent("onCheckbox",[this.cell.parentNode.idd,this.cell._cellIndex,(this.val!="1")])}else{this.editor=null}};this.getValue=function(){try{return this.cell.chstate.toString()}catch(e){return null}};this.isCheckbox=function(){return true};this.isChecked=function(){if(this.getValue()=="1"){return true}else{return false}};this.setChecked=function(e){this.setValue(e.toString())};this.detach=function(){return this.val!=this.getValue()};this.drawCurrentState=function(){if(this.cell.chstate==1){return"<div onclick='(new eXcell_acheck(this.parentNode)).changeState(); (arguments[0]||event).cancelBubble=true;' style='cursor:pointer; font-weight:bold; text-align:center; '><span style='height:8px; width:8px; background:green; display:inline-block;'></span>&nbsp;Yes</div>"}else{return"<div onclick='(new eXcell_acheck(this.parentNode)).changeState(); (arguments[0]||event).cancelBubble=true;' style='cursor:pointer; text-align:center; '><span style='height:8px; width:8px; background:red; display:inline-block;'></span>&nbsp;No</div>"}}}eXcell_acheck.prototype=new eXcell;eXcell_acheck.prototype.setValue=function(c){c=(c||"").toString();if(c.indexOf("1")!=-1||c.indexOf("true")!=-1){c="1";this.cell.chstate="1"}else{c="0";this.cell.chstate="0"}var a=this;this.setCValue(this.drawCurrentState(),this.cell.chstate)};function eXcell_context(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid;if(!this.grid._sub_context){return}this._sub=this.grid._sub_context[a._cellIndex];if(!this._sub){return}this._sindex=this._sub[1];this._sub=this._sub[0]}this.getValue=function(){return _isIE?this.cell.innerText:this.cell.textContent};this.setValue=function(e){this.cell._val=e;var c=this._sub.itemPull[this._sub.idPrefix+this.cell._val];e=c?c.title:e;this.setCValue((e||"&nbsp;"),e)};this.edit=function(){var e=this.grid.getPosition(this.cell);this._sub.showContextMenu(e[0]+this.cell.offsetWidth,e[1]);var c=this.grid.editStop;this.grid.editStop=function(){};this.grid.editStop=c};this.detach=function(){if(this.grid._sub_id!=null){var c=this.cell._val;this.setValue(this.grid._sub_id);this.grid._sub_id=null;return this.cell._val!=c}this._sub.hideContextMenu()}}eXcell_context.prototype=new eXcell;dhtmlXGridObject.prototype.setSubContext=function(a,c,g){var e=this;a.attachEvent("onClick",function(j,h){e._sub_id=j;e.editStop();a.hideContextMenu();return true});if(!this._sub_context){this._sub_context=[]}this._sub_context[c]=[a,g];a.hideContextMenu()};function dhtmlXGridFromTable(obj,init){if(typeof(obj)!="object"){obj=document.getElementById(obj)}var w=document.createElement("DIV");w.setAttribute("width",obj.getAttribute("gridWidth")||(obj.offsetWidth?(obj.offsetWidth+"px"):0)||(window.getComputedStyle?window.getComputedStyle(obj,null)["width"]:(obj.currentStyle?obj.currentStyle.width:0)));w.setAttribute("height",obj.getAttribute("gridHeight")||(obj.offsetHeight?(obj.offsetHeight+"px"):0)||(window.getComputedStyle?window.getComputedStyle(obj,null)["height"]:(obj.currentStyle?obj.currentStyle.height:0)));w.className=obj.className;obj.className="";if(obj.id){w.id=obj.id}var mr=obj;var drag=obj.getAttribute("dragAndDrop");mr.parentNode.insertBefore(w,mr);var f=mr.getAttribute("name")||("name_"+(new Date()).valueOf());var windowf=new dhtmlXGridObject(w);window[f]=windowf;var acs=mr.getAttribute("onbeforeinit");var acs2=mr.getAttribute("oninit");if(acs){eval(acs)}windowf.setImagePath(windowf.imgURL||(mr.getAttribute("imgpath")||mr.getAttribute("image_path")||""));var skin=mr.getAttribute("skin");if(skin){windowf.setSkin(skin)}if(init){init(windowf)}var hrow=mr.rows[0];var za="";var zb="";var zc="";var zd="";var ze="";for(var i=0;i<hrow.cells.length;i++){za+=(za?",":"")+hrow.cells[i].innerHTML;var width=hrow.cells[i].getAttribute("width")||hrow.cells[i].offsetWidth||(window.getComputedStyle?window.getComputedStyle(hrow.cells[i],null)["width"]:(hrow.cells[i].currentStyle?hrow.cells[i].currentStyle.width:0));zb+=(zb?",":"")+(width=="*"?width:parseInt(width));zc+=(zc?",":"")+(hrow.cells[i].getAttribute("align")||"left");zd+=(zd?",":"")+(hrow.cells[i].getAttribute("type")||"ed");ze+=(ze?",":"")+(hrow.cells[i].getAttribute("sort")||"str");var f_a=hrow.cells[i].getAttribute("format");if(f_a){if(hrow.cells[i].getAttribute("type").toLowerCase().indexOf("calendar")!=-1){windowf._dtmask=f_a}else{windowf.setNumberFormat(f_a,i)}}}windowf.setHeader(za);windowf.setInitWidths(zb);windowf.setColAlign(zc);windowf.setColTypes(zd);windowf.setColSorting(ze);if(obj.getAttribute("gridHeight")=="auto"){windowf.enableAutoHeigth(true)}if(obj.getAttribute("multiline")){windowf.enableMultiline(true)}var lmn=mr.getAttribute("lightnavigation");if(lmn){windowf.enableLightMouseNavigation(lmn)}var evr=mr.getAttribute("evenrow");var uevr=mr.getAttribute("unevenrow");if(evr||uevr){windowf.enableAlterCss(evr,uevr)}if(drag){windowf.enableDragAndDrop(true)}windowf.init();if(obj.getAttribute("split")){windowf.splitAt(obj.getAttribute("split"))}windowf._process_inner_html(mr,1);if(acs2){eval(acs2)}if(obj.parentNode&&obj.parentNode.removeChild){obj.parentNode.removeChild(obj)}return windowf}dhtmlXGridObject.prototype._process_html=function(c){if(c.tagName&&c.tagName=="TABLE"){return this._process_inner_html(c,0)}var a=document.createElement("DIV");a.innerHTML=c.xmlDoc.responseText;var e=a.getElementsByTagName("TABLE")[0];this._process_inner_html(e,0)};dhtmlXGridObject.prototype._process_inner_html=function(e,h){var c=e.rows.length;for(var a=h;a<c;a++){var g=e.rows[a].getAttribute("id")||a;this.rowsBuffer.push({idd:g,data:e.rows[a],_parser:this._process_html_row,_locator:this._get_html_data})}this.render_dataset();this.setSizes()};dhtmlXGridObject.prototype._process_html_row=function(n,h){var m=h.getElementsByTagName("TD");var c=[];n._attrs=this._xml_attrs(h);for(var g=0;g<m.length;g++){var l=m[g];var a=l.getAttribute("type");if(n.childNodes[g]){if(a){n.childNodes[g]._cellType=a}n.childNodes[g]._attrs=this._xml_attrs(m[g])}if(l.firstChild){c.push(l.innerHTML)}else{c.push("")}if(l.colSpan>1){n.childNodes[g]._attrs.colspan=l.colSpan;for(var e=1;e<l.colSpan;e++){c.push("")}}}for(g<m.length;g<n.childNodes.length;g++){n.childNodes[g]._attrs={}}this._fillRow(n,(this._c_order?this._swapColumns(c):c));return n};dhtmlXGridObject.prototype._get_html_data=function(c,a){c=c.firstChild;while(true){if(!c){return""}if(c.tagName=="TD"){a--}if(a<0){break}c=c.nextSibling}return(c.firstChild?c.firstChild.data:"")};dhtmlxEvent(window,"load",function(){var e=document.getElementsByTagName("table");for(var c=0;c<e.length;c++){if(e[c].className=="dhtmlxGrid"){dhtmlXGridFromTable(e[c])}}});function dhtmlXForm(h,g,j){this.idef={position:"label-left",labelWidth:"auto",labelHeight:"auto",inputWidth:"auto",inputHeight:"auto",labelAlign:"left",noteWidth:"auto",offsetTop:0,offsetLeft:0,blockOffset:20};this.idef_const={offsetNested:20};this.apos_css={"label-left":"dhxform_item_label_left","label-right":"dhxform_item_label_right","label-top":"dhxform_item_label_top","label-bottom":"dhxform_item_label_bottom",absolute:"dhxform_item_absolute"};this.align_css={left:"dhxform_label_align_left",center:"dhxform_label_align_center",right:"dhxform_label_align_right"};var e=this;this.setSkin=function(a){this.skin=a;this.cont.className="dhxform_obj_"+this.skin;this.cont.style.fontSize=(a=="dhx_terrace"?"13px":"12px");this._updateBlocks();this.forEachItem(function(m){var l=e.getItemType(m);if(typeof(e.items[l])!="undefined"&&typeof(e.items[l].setSkin)=="function"){e.doWithItem(m,"setSkin",a)}})};this.skin=(j||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhx_form")||"dhx_skyblue");this.separator=",";this.live_validate=false;this._type="checkbox";this._rGroup="default";this._idIndex={};this._indexId=[];this.cont=(typeof(h)=="object"?h:document.getElementById(h));if(!h._isNestedForm){this._parentForm=true;this.cont.style.fontSize=(this.skin=="dhx_terrace"?"13px":"12px");this.cont.className="dhxform_obj_"+this.skin;this.setFontSize=function(a){this.cont.style.fontSize=a;this._updateBlocks()};this.getForm=function(){return this};this.cont.onkeypress=function(l){l=(l||event);if(l.keyCode==13){var a=(l.target||l.srcElement);if(typeof(a.tagName)!="undefined"&&String(a.tagName).toLowerCase()=="textarea"&&!l.ctrlKey){return}e.callEvent("onEnter",[])}}}this.b_index=null;this.base=[];this._prepare=function(s,u){if(this.b_index==null){this.b_index=0}else{this.b_index++}var m=null;var l=null;if(u!=null){if(u<0){u=0}var o=0;for(var a=0;a<this.cont.childNodes.length;a++){for(var r=0;r<this.cont.childNodes[a].childNodes.length;r++){if(l==null&&this.cont.childNodes[a].childNodes[r]._isNestedForm!=true){if(o==u){m=this.cont.childNodes[a].nextSibling;l=this.cont.childNodes[a].childNodes[r]}o++}}}}this.base[this.b_index]=document.createElement("DIV");this.base[this.b_index].className="dhxform_base";if(typeof(s)!="undefined"){this.base[this.b_index].style.cssText+=" margin-left:"+s+"px!important;"}if(m!=null){this.cont.insertBefore(this.base[this.b_index],m);m=null}else{this.cont.appendChild(this.base[this.b_index])}if(l!=null){while(l!=null){var n=l;l=l.nextSibling;this.base[this.b_index].appendChild(n);n=null}}};this.setSizes=function(){};this._mergeSettings=function(r){var m=-1;var n={type:"settings"};for(var l in this.idef){n[l]=this.idef[l]}for(var o=0;o<r.length;o++){if(typeof(r[o])!="undefined"&&r[o].type=="settings"){for(var l in r[o]){n[l]=r[o][l]}m=o}}r[m>=0?m:r.length]=n;return r};this._genStr=function(a){var l="dhxId_";var n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var m=0;m<a;m++){l+=n.charAt(Math.floor(Math.random()*n.length))}return l};this.idPrefix="dhxForm_"+this._genStr(12)+"_";this._rId=(this._parentForm?this._genStr(12)+"_":h._rId);this.objPull={};this.itemPull={};this._ic=0;this._addItem=function(D,o,v,s,A,E,y){if(this.items[D]._index){this.getForm()._indexId.push(o);this.getForm()._idIndex[o]={ind:this.getForm()._indexId.length-1}}if(!D){D=this._type}if(D=="list"&&A!=null&&this.itemPull[this.idPrefix+A]!=null&&typeof(this.itemPull[this.idPrefix+A]._addSubListNode)=="function"){var C=this.itemPull[this.idPrefix+A]._addSubListNode()}else{if(D=="newcolumn"){var C={}}else{var r=this.base[this.b_index];var l=null;if(typeof(E)!="undefined"&&!isNaN(E)&&D!="list"){E=Math.max(parseInt(E),0)+1;for(var H=0;H<this.cont.childNodes.length;H++){for(var m=0;m<this.cont.childNodes[H].childNodes.length;m++){if(l==null&&this.cont.childNodes[H].childNodes[m]._isNestedForm!=true){E--;if(E==0){l=this.cont.childNodes[H].childNodes[m];r=this.cont.childNodes[H]}}}}}else{if(D=="list"){for(var F in this.itemPull){if(F==this.idPrefix+o){l=this.itemPull[F].nextSibling;if(this.itemPull[F]._listBase!=null&&this.itemPull[F]._listBase.length>0){l=this.itemPull[F]._listBase[this.itemPull[F]._listBase.length-1]}}}}}var C=document.createElement("DIV");if(y==true&&l!=null){l=l.nextSibling}if(l!=null){r.insertBefore(C,l)}else{r.appendChild(C)}}}C._idd=o;C._rId=this._rId;if(typeof(C.style)!="undefined"){if(typeof(v.offsetLeft)=="undefined"&&this.idef.offsetLeft>0){v.offsetLeft=this.idef.offsetLeft}if(typeof(v.offsetTop)=="undefined"&&this.idef.offsetTop>0){v.offsetTop=this.idef.offsetTop}var u="";if(typeof(v.offsetLeft)!="undefined"){u+=" padding-left:"+v.offsetLeft+"px!important;"}if(typeof(v.offsetTop)!="undefined"){u+=" padding-top:"+v.offsetTop+"px!important;"}C.style.cssText+=u}if(D=="block"){if(isNaN(v.blockOffset)){v.blockOffset=this.idef.blockOffset}}if(D=="list"){if(typeof(C._ofsNested)=="undefined"){C._ofsNested=this.idef_const.offsetNested}if(s!=null){C._sId=s}var x=this.items[D].render(C,this.skin);if(!this.itemPull[this.idPrefix+o]._listObj){this.itemPull[this.idPrefix+o]._listObj=[]}if(!this.itemPull[this.idPrefix+o]._list){this.itemPull[this.idPrefix+o]._list=[]}if(!this.itemPull[this.idPrefix+o]._listBase){this.itemPull[this.idPrefix+o]._listBase=[]}(this.itemPull[this.idPrefix+o]._listObj).push(x[0]);(this.itemPull[this.idPrefix+o]._list).push(x[1]);(this.itemPull[this.idPrefix+o]._listBase).push(C);x[1].checkEvent=function(a){return e.checkEvent(a)};x[1].callEvent=function(a,w){return e.callEvent(a,w)};x[1].getForm=function(){return e.getForm()};x[1]._initObj(this._mergeSettings(v));if(C._inBlcok){C.className+=" in_block"}return x[1]}if(D=="newcolumn"){this._prepare(v.offset,E);return}if(D=="label"&&this._ic++==0){v._isTopmost=true}v.position=this.apos_css[(!v.position||!this.apos_css[v.position]?this.idef.position:v.position)];C.className=v.position+(typeof(v.className)=="string"?" "+v.className:"");if(!v.labelWidth){v.labelWidth=this.idef.labelWidth}if(!v.labelHeight){v.labelHeight=this.idef.labelHeight}if(typeof(v.wrap)!="undefined"){v.wrap=window.dhx4.s2b(v.wrap)}v.labelAlign=(this.align_css[v.labelAlign]?this.align_css[v.labelAlign]:this.align_css[this.idef.labelAlign]);v.inputWidth=(v.width?v.width:(v.inputWidth?v.inputWidth:this.idef.inputWidth));if(!v.inputHeight){v.inputHeight=this.idef.inputHeight}if(typeof(v.note)!="undefined"){if(v.note.length!=null&&v.note[0]!=null){v.note=v.note[0]}if(typeof(v.note.width)=="undefined"){v.note.width=this.idef.noteWidth}if(v.note.width=="auto"){v.note.width=v.inputWidth}}C.checkEvent=function(a){return e.checkEvent(a)};C.callEvent=function(a,w){return e.callEvent(a,w)};C.getForm=function(){return e.getForm()};C._autoCheck=function(a){e._autoCheck(a)};if(typeof(v.readonly)=="string"){v.readonly=window.dhx4.s2b(v.readonly)}if(typeof(v.autoStart)=="string"){v.autoStart=window.dhx4.s2b(v.autoStart)}if(typeof(v.autoRemove)=="string"){v.autoRemove=window.dhx4.s2b(v.autoRemove)}if(typeof(v.titleScreen)=="string"){v.titleScreen=window.dhx4.s2b(v.titleScreen)}if(typeof(v.info)=="string"){v.info=window.dhx4.s2b(v.info)}if(typeof(v.hidden)=="string"){v.hidden=window.dhx4.s2b(v.hidden)}if(typeof(v.checked)=="string"){v.checked=window.dhx4.s2b(v.checked)}if(typeof(v.userdata)!="undefined"){for(var F in v.userdata){this.getForm().setUserData(o,F,v.userdata[F])}}if(v.validate){if(typeof(v.validate!="undefined")&&(typeof(v.validate)=="function"||typeof(window[v.validate])=="function")){C._validate=[v.validate]}else{C._validate=String(v.validate).split(this.separator)}}if(typeof(v.required)!="undefined"){if(typeof(v.required)=="string"){v.required=window.dhx4.s2b(v.required)}C._required=(v.required==true)}if(C._required){if(!C._validate){C._validate=[]}var n=false;for(m=0;m<C._validate.length;m++){n=(n||(C._validate[m]=="NotEmpty"))}if(!n){C._validate.push("NotEmpty")}}C._ll=(v.position==this.apos_css["label-left"]||v.position==this.apos_css["label-top"]);this.objPull[this.idPrefix+o]=this.items[D].render(C,v);this.itemPull[this.idPrefix+o]=C};this._initObj=function(o,m){if(typeof(o.data)!="undefined"){var r=null;if(typeof(m)!="undefined"){r=m.match(/(\?|\&)id\=([a-z0-9_\-]*)/i);if(r!=null&&r[0]!=null){r=r[0].split("=")[1]}}if(this.callEvent("onBeforeDataLoad",[r,window.dhx4._copyObj(o.data)])===true){this.formId=r;this._last_load_data=o;this.setFormData(o.data);this.resetDataProcessor("updated")}return}this._prepare();for(var n=0;n<o.length;n++){if(typeof(o[n])!="undefined"&&o[n].type=="settings"){for(var l in o[n]){this.idef[l]=o[n][l]}}}for(var n=0;n<o.length;n++){this._prepareItem(o[n])}this._autoCheck()};this._prepareItem=function(o,u,n){var m=(o!=null&&o.type!=null?o.type:"");if(this.items[m]){if(!o.name){o.name=this._genStr(12)}var s=o.name;if(this.objPull[this.idPrefix+s]!=null||m=="radio"){s=this._genStr(12)}var r=o;r.label=r.label||"";r.value=r.value;r.checked=window.dhx4.s2b(r.checked);r.disabled=window.dhx4.s2b(r.disabled);r.name=r.name||this._genStr(12);r.options=r.options||[];r.rows=r.rows||"none";r.uid=this._genStr(12);this._addItem(m,s,r,null,null,u,n);u=null;if(this._parentEnabled===false){this._disableItem(s)}for(var l=0;l<r.options.length;l++){if(r.options[l].list!=null){if(!r.options[l].value){r.options[l].value=this._genStr()}var a=this._addItem("list",s,r.options[l].list,r.options[l].value,null);a._subSelect=true;a._subSelectId=r.options[l].value}}if(o.list!=null){if(!o.listParent){o.listParent=r.name}var a=this._addItem("list",s,o.list,null,o.listParent)}}};this._xmlSubItems={item:"list",option:"options",note:"note",userdata:"_userdata"};this._xmlToObject=function(A,l){if(typeof(l)=="undefined"){l=true}if(l){var D=A.getElementsByTagName("items");D=(D!=null&&D[0]!=null?D[0]:null);var m=A.getElementsByTagName("data");m=(m!=null&&m[0]!=null?m[0]:null)}else{D=A}var x=(l?[]:{});if(D!=null){for(var o=0;o<D.childNodes.length;o++){if(typeof(D.childNodes[o].tagName)!="undefined"){var r=D.childNodes[o].tagName;if(this._xmlSubItems[r]!=null){var s=this._xmlSubItems[r];if(typeof(x[s])=="undefined"){x[s]=[]}var y=D.childNodes[o];var v={};for(var I=0;I<y.attributes.length;I++){var E=y.attributes[I].name;var C=y.attributes[I].value;v[E]=C}if(s=="note"){v.text=y.firstChild.nodeValue}if(s=="_userdata"){v.value=(y.firstChild!=null&&y.firstChild.nodeValue!=null?y.firstChild.nodeValue:"")}var u=this._xmlToObject(y,false);for(var F in u){if(F=="_userdata"){if(!v.userdata){v.userdata={}}for(var I=0;I<u[F].length;I++){v.userdata[u[F][I].name]=u[F][I].value}}else{v[F]=u[F]}}y=null;if(l){x.push(v)}else{x[s].push(v)}}}}}if(m!=null){x={data:{}};for(var o=0;o<m.childNodes.length;o++){if(typeof(m.childNodes[o].tagName)!="undefined"){var n=m.childNodes[o].tagName;var H=(m.childNodes[o].firstChild!=null?m.childNodes[o].firstChild.nodeValue:"");x.data[n]=H}}}return x};this._autoCheck=function(r){if(this._locked===true){r=false}else{if(typeof(r)=="undefined"){r=true}}for(var n in this.itemPull){var s=(r&&(this.itemPull[n]._udis!==true));this[s?"_enableItem":"_disableItem"](this.itemPull[n]._idd);if(this.getForm()._idIndex[this.itemPull[n]._idd]!=null){this.getForm()._idIndex[this.itemPull[n]._idd].enabled=s}var m=(s&&(typeof(this.itemPull[n]._checked)=="boolean"?this.itemPull[n]._checked:true));if(this.itemPull[n]._list){for(var x=0;x<this.itemPull[n]._list.length;x++){var u=true;if(this.itemPull[n]._list[x]._subSelect==true){u=false;var o=this.getItemValue(this.itemPull[n]._idd);if(!(typeof(o)=="object"&&typeof(o.length)=="number")){o=[o]}for(var l=0;l<o.length;l++){u=(o[l]==this.itemPull[n]._list[x]._subSelectId)||u}this.itemPull[n]._listObj[x][u?"show":"hide"](this.itemPull[n]._listBase[x])}this.itemPull[n]._list[x]._autoCheck(m&&u)}}}};this.doWithItem=function(n,l,w,v,u,s){if(typeof(n)=="object"){var y=n[0];var x=n[1];var A=null;var r=null;for(var o in this.itemPull){if((this.itemPull[o]._value==x||x===null)&&this.itemPull[o]._group==y){return this.objPull[o][l](this.itemPull[o],w,v,u,s)}if(this.itemPull[o]._list!=null&&!r){for(var m=0;m<this.itemPull[o]._list.length;m++){r=this.itemPull[o]._list[m].doWithItem(n,l,w,v,u)}}}if(r!=null){return r}else{if(l=="getType"){return this.doWithItem(n[0],"getType")}}}else{if(!this.itemPull[this.idPrefix+n]){var r=null;for(var o in this.itemPull){if(this.itemPull[o]._list&&!r){for(var m=0;m<this.itemPull[o]._list.length;m++){if(r==null){r=this.itemPull[o]._list[m].doWithItem(n,l,w,v,u,s)}}}}return r}else{return this.objPull[this.idPrefix+n][l](this.itemPull[this.idPrefix+n],w,v,u,s)}}};this._removeItem=function(l,a){if(a!=null){l=this.doWithItem([l,a],"destruct")}else{this.doWithItem(l,"destruct")}this._clearItemData(l)};this._clearItemData=function(n){if(this.itemPull[this.idPrefix+n]){n=this.idPrefix+n;try{this.objPull[n]=null;this.itemPull[n]=null;delete this.objPull[n];delete this.itemPull[n]}catch(m){}}else{for(var a in this.itemPull){if(this.itemPull[a]._list){for(var l=0;l<this.itemPull[a]._list.length;l++){this.itemPull[a]._list[l]._clearItemData(n)}}}}};this.isItem=function(l,a){if(a!=null){l=[l,a]}return this.doWithItem(l,"isExist")};this.getItemType=function(l,a){l=[l,(a||null)];return this.doWithItem(l,"getType")};this.forEachItem=function(m){for(var l in this.objPull){if(this.objPull[l].t=="radio"){m(this.itemPull[l]._group,this.itemPull[l]._value)}else{m(String(l).replace(this.idPrefix,""))}if(this.itemPull[l]._list){for(var n=0;n<this.itemPull[l]._list.length;n++){this.itemPull[l]._list[n].forEachItem(m)}}}};this.setItemLabel=function(m,a,l){if(l!=null){m=[m,a]}else{l=a}this.doWithItem(m,"setText",l)};this.getItemLabel=function(l,a){if(a!=null){l=[l,a]}return this.doWithItem(l,"getText")};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(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"check");this._autoCheck()};this.uncheckItem=function(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"unCheck");this._autoCheck()};this.isItemChecked=function(l,a){if(a!=null){l=[l,a]}return this.doWithItem(l,"isChecked")};this.getCheckedValue=function(a){return this.doWithItem([a,null],"getChecked")};this._getRGroup=function(s,o){for(var l in this.itemPull){if(this.itemPull[l]._group==s&&(o==null||this.itemPull[l]._value==o)){return this.itemPull[l]._idd}if(this.itemPull[l]._list!=null){for(var n=0;n<this.itemPull[l]._list.length;n++){var m=this.itemPull[l]._list[n]._getRGroup(s,o);if(m!=null){return m}}}}return null};this.setItemValue=function(l,a){this.resetValidateCss(l,a);if(this.getItemType(l)=="radio"){if(this._getRGroup(l,a)!=null){this.checkItem(l,a)}else{this.uncheckItem(l,this.getCheckedValue(l))}return null}return this.doWithItem(l,"setValue",a)};this.getItemValue=function(l,a){if(this.getItemType(l)=="radio"){return this.getCheckedValue(l)}return this.doWithItem(l,"getValue",a)};this.updateValues=function(){this._updateValues()};this.showItem=function(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"show")};this.hideItem=function(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"hide")};this.isItemHidden=function(l,a){if(a!=null){l=[l,a]}return this.doWithItem(l,"isHidden")};this.getOptions=function(a){return this.doWithItem(a,"getOptions")};this.setItemWidth=function(l,a){this.doWithItem(l,"setWidth",a)};this.getItemWidth=function(a){return this.doWithItem(a,"getWidth")};this.setItemHeight=function(l,a){this.doWithItem(l,"setHeight",a)};this.setItemFocus=function(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"setFocus")};this._updateValues=function(){for(var l in this.itemPull){if(this.objPull[l]&&typeof(this.objPull[l].updateValue)=="function"){this.objPull[l].updateValue(this.itemPull[l])}if(this.itemPull[l]._list){for(var m=0;m<this.itemPull[l]._list.length;m++){this.itemPull[l]._list[m]._updateValues()}}}};this._getItemByName=function(o){for(var l in this.itemPull){if(this.itemPull[l]._idd==o){return this.itemPull[l]}if(this.itemPull[l]._list!=null){for(var n=0;n<this.itemPull[l]._list.length;n++){var m=this.itemPull[l]._list[n]._getItemByName(o);if(m!=null){return m}}}}return null};this._resetValidateCss=function(a){a.className=(a.className).replace(a._vcss,"");a._vcss=null};this.setValidateCss=function(a,n,m){var l=this[this.getItemType(a)=="radio"?"_getRGroup":"_getItemByName"](a);if(!l){return}if(l._vcss!=null){this._resetValidateCss(l)}l._vcss=(typeof(m)=="string"?m:"validate_"+(n===true?"ok":"error"));l.className+=" "+l._vcss};this.resetValidateCss=function(m){for(var l in this.itemPull){if(this.itemPull[l]._vcss!=null){this._resetValidateCss(this.itemPull[l])}if(this.itemPull[l]._list!=null){for(var n=0;n<this.itemPull[l]._list.length;n++){this.itemPull[l]._list[n].resetValidateCss()}}}};this.validate=function(l){if(this.callEvent("onBeforeValidate",[])==false){return}var a=true;this.forEachItem(function(n,o){if(typeof(o)!="undefined"){n=[n,o]}var m=e.doWithItem(n,"_validate");if(typeof(m)!="boolean"){m=true}a=m&&a});this.callEvent("onAfterValidate",[a]);return a};this.validateItem=function(a,l){if(typeof(l)!="undefined"){a=[a,l]}return this.doWithItem(a,"_validate")};this.enableLiveValidation=function(a){this.live_validate=(a==true)};this.setReadonly=function(l,a){this.doWithItem(l,"setReadonly",a)};this.isReadonly=function(a){return this.doWithItem(a,"isReadonly")};this.getFirstActive=function(l){for(var n=0;n<this._indexId.length;n++){var a=true;if(l==true){var m=this.getItemType(this._indexId[n]);if(!dhtmlXForm.prototype.items[m].setFocus){a=false}}if(a&&this._idIndex[this._indexId[n]].enabled){return this._indexId[n]}}return null};this.setFocusOnFirstActive=function(){var a=this.getFirstActive(true);if(a!=null){this.setItemFocus(a)}};this.enableItem=function(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"userEnable");this._autoCheck()};this.disableItem=function(l,a){if(a!=null){l=[l,a]}this.doWithItem(l,"userDisable");this._autoCheck()};this.isItemEnabled=function(l,a){if(a!=null){l=[l,a]}return this.doWithItem(l,"isUserEnabled")};this.clear=function(){var l={};this.formId=(new Date()).valueOf();this.resetDataProcessor("inserted");for(var m in this.itemPull){var n=this.itemPull[m]._idd;if(this.itemPull[m]._type=="ch"){this.uncheckItem(n)}if(this.itemPull[m]._type in {ta:1,editor:1,calendar:1,pw:1,hd:1}){this.setItemValue(n,"")}if(this.itemPull[m]._type=="combo"){this.itemPull[m]._apiChange=true;var u=this.getCombo(n);u.selectOption(0);u=null;this.itemPull[m]._apiChange=false}if(this.itemPull[m]._type=="se"){var r=this.getOptions(n);if(r.length>0){r[0].selected=true}}if(this.itemPull[m]._type=="ra"){var o=this.itemPull[m]._group;if(!l[o]){this.checkItem(o,this.doWithItem(n,"_getFirstValue"));l[o]=true}}if(this.itemPull[m]._list){for(var s=0;s<this.itemPull[m]._list.length;s++){this.itemPull[m]._list[s].clear()}}if(this["setFormData_"+this.itemPull[m]._type]){this["setFormData_"+this.itemPull[m]._type](n,"")}}l=null;if(this._parentForm){this._autoCheck()}this.resetValidateCss()};this.unload=function(){window.dhx4._enableDataLoading(this,null,null,null,"clear");window.dhx4._eventable(this,"clear");for(var l in this.objPull){this._removeItem(String(l).replace(this.idPrefix,""))}if(this._ccTm){window.clearTimeout(this._ccTm)}this._formLS=null;for(var m=0;m<this.base.length;m++){while(this.base[m].childNodes.length>0){this.base[m].removeChild(this.base[m].childNodes[0])}if(this.base[m].parentNode){this.base[m].parentNode.removeChild(this.base[m])}this.base[m]=null}this.base=null;this.cont.onkeypress=null;this.cont.className="";this.cont=null;for(var l in this){this[l]=null}e=null};for(var c in this.items){this.items[c].t=c;if(typeof(this.items[c]._index)=="undefined"){this.items[c]._index=true}if(!this.items[c].show){this.items[c].show=function(a){a.style.display="";if(a._listObj){for(var l=0;l<a._listObj.length;l++){a._listObj[l].show(a._listBase[l])}}}}if(!this.items[c].hide){this.items[c].hide=function(a){a.style.display="none";if(a._listObj){for(var l=0;l<a._listObj.length;l++){a._listObj[l].hide(a._listBase[l])}}}}if(!this.items[c].isHidden){this.items[c].isHidden=function(a){return(a.style.display=="none")}}if(!this.items[c].userEnable){this.items[c].userEnable=function(a){a._udis=false}}if(!this.items[c].userDisable){this.items[c].userDisable=function(a){a._udis=true}}if(!this.items[c].isUserEnabled){this.items[c].isUserEnabled=function(a){return(a._udis!==true)}}if(!this.items[c].getType){this.items[c].getType=function(){return this.t}}if(!this.items[c].isExist){this.items[c].isExist=function(){return true}}if(!this.items[c]._validate){this.items[c]._validate=function(m){if(!m._validate||!m._enabled){return true}if(m._type=="ch"){var s=(this.isChecked(m)?this.getValue(m):0)}else{var s=this.getValue(m)}var l=true;for(var o=0;o<m._validate.length;o++){var a="is"+m._validate[o];if((s==null||s.length==0)&&a!="isNotEmpty"&&m._type!="container"){}else{var n=dhtmlxValidation[a];if(m._type=="container"&&typeof(n)=="function"){n=function(){return true}}if(typeof(n)!="function"&&typeof(m._validate[o])=="function"){n=m._validate[o]}if(typeof(n)!="function"&&typeof(window[m._validate[o]])=="function"){n=window[m._validate[o]]}l=((typeof(n)=="function"?n(s,m._idd):new RegExp(m._validate[o]).test(s))&&l);n=null}}if(!(m.callEvent("onValidate"+(l?"Success":"Error"),[m._idd,s,l])===false)){m.getForm().setValidateCss(m._idd,l)}return l}}}this._locked=false;this._doLock=function(l){var a=(l===true?true:false);if(this._locked==a){return}else{this._locked=a}this._autoCheck(!this._locked)};this.lock=function(){this._doLock(true)};this.unlock=function(){this._doLock(false)};this.isLocked=function(){return this._locked};this.setNumberFormat=function(n,l,a,m){return this.doWithItem(n,"setNumberFormat",l,a,m)};window.dhx4._enableDataLoading(this,"_initObj","_xmlToObject","items",{struct:true,data:true});window.dhx4._eventable(this);this.attachEvent("_onButtonClick",function(a,l){this.callEvent("onButtonClick",[a,l])});this._updateBlocks=function(){this.forEachItem(function(a){if(e.getItemType(a)=="block"||e.getItemType(a)=="combo"){e.doWithItem(a,"_setCss",e.skin,e.cont.style.fontSize)}})};this._isObj=function(a){return(a!=null&&typeof(a)=="object"&&typeof(a.length)=="undefined")};this._copyObj=function(n){if(this._isObj(n)){var m={};for(var l in n){if(typeof(n[l])=="object"&&n[l]!=null){m[l]=this._copyObj(n[l])}else{m[l]=n[l]}}}else{var m=[];for(var l=0;l<n.length;l++){if(typeof(n[l])=="object"&&n[l]!=null){m[l]=this._copyObj(n[l])}else{m[l]=n[l]}}}return m};if(g!=null&&typeof(g)=="object"){this._initObj(this._copyObj(g))}if(this._parentForm){this._updateBlocks()}this._ccActive=false;this._ccTm=null;return this}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,c){a._type="ch";a._enabled=true;a._checked=false;a._value=(typeof(c.value)=="undefined"?null:String(c.value));a._ro=(c.readonly==true);if(c._autoInputWidth!==false){c.inputWidth=14}this.doAddLabel(a,c);this.doAddInput(a,c,"INPUT","TEXT",true,true,"dhxform_textarea");a.childNodes[a._ll?1:0].className+=" dhxform_img_node";var e=document.createElement("DIV");e.className="dhxform_img chbx0";a.appendChild(e);if(!isNaN(c.inputLeft)){a.childNodes[a._ll?1:0].style.left=parseInt(c.inputLeft)+"px"}if(!isNaN(c.inputTop)){a.childNodes[a._ll?1:0].style.top=parseInt(c.inputTop)+"px"}a.childNodes[a._ll?1:0].appendChild(e);a.childNodes[a._ll?1:0].firstChild.value=String(c.value);a._updateImgNode=function(h,j){var g=h.childNodes[h._ll?1:0].lastChild;g.className=(j?"dhxform_actv_c":"dhxform_img")+" "+(h._checked?"chbx1":"chbx0");h=g=null};a._doOnFocus=function(g){g.getForm().callEvent("onFocus",[g._idd])};a._doOnBlur=function(g){g.getForm().callEvent("onBlur",[g._idd])};a._doOnKeyUpDown=function(h,g){this.callEvent(h,[this.childNodes[this._ll?0:1].childNodes[0],g,this._idd])};if(c.checked==true){this.check(a)}if(c.hidden==true){this.hide(a)}if(c.disabled==true){this.userDisable(a)}this.doAttachEvents(a);return this},destruct:function(a){a._doOnFocus=a._doOnBlur=a._updateImgNode=null;this.doUnloadNestedLists(a);this.doDestruct(a)},doAddLabel:function(c,e){var a=document.createElement("DIV");a.className="dhxform_label "+e.labelAlign;if(e.wrap==true){a.style.whiteSpace="normal"}if(c._ll){c.insertBefore(a,c.firstChild)}else{c.appendChild(a)}if(typeof(e.tooltip)!="undefined"){a.title=e.tooltip}a.innerHTML="<div class='dhxform_label_nav_link' onfocus='if(this.parentNode.parentNode._updateImgNode)this.parentNode.parentNode._updateImgNode(this.parentNode.parentNode,true);this.parentNode.parentNode._doOnFocus(this.parentNode.parentNode);' onblur='if(this.parentNode.parentNode._updateImgNode)this.parentNode.parentNode._updateImgNode(this.parentNode.parentNode,false);this.parentNode.parentNode._doOnBlur(this.parentNode.parentNode);' onkeypress='var e=event||window.arguments[0];if(e.keyCode==32||e.charCode==32){e.cancelBubble=true;if(e.preventDefault)e.preventDefault();else e.returnValue=false;_dhxForm_doClick(this,\"mousedown\");return false;}' onkeyup='var e=event||window.arguments[0];this.parentNode.parentNode._doOnKeyUpDown(\"onKeyUp\",e);' onkeydown='var e=event||window.arguments[0];this.parentNode.parentNode._doOnKeyUpDown(\"onKeyDown\",e);' "+(window.dhx4.isIPad?"ontouchstart='var e=event;e.preventDefault();_dhxForm_doClick(this,\"mousedown\");' ":"")+"role='link' tabindex='0'>"+e.label+(e.info?"<span class='dhxform_info'>[?]</span>":"")+(c._required?"<span class='dhxform_item_required'>*</span>":"")+"</div>";if(!isNaN(e.labelWidth)){a.firstChild.style.width=parseInt(e.labelWidth)+"px"}if(!isNaN(e.labelHeight)){a.firstChild.style.height=parseInt(e.labelHeight)+"px"}if(!isNaN(e.labelLeft)){a.style.left=parseInt(e.labelLeft)+"px"}if(!isNaN(e.labelTop)){a.style.top=parseInt(e.labelTop)+"px"}},doAddInput:function(v,g,c,n,o,h,j){var a=document.createElement("DIV");a.className="dhxform_control";if(v._ll){v.appendChild(a)}else{v.insertBefore(a,v.firstChild)}var s=document.createElement(c);s.className=j;s.name=v._idd;s._idd=v._idd;s.id=g.uid;if(typeof(n)=="string"){s.type=n}if(c=="INPUT"||c=="TEXTAREA"){s.onkeyup=function(u){u=u||event;v.callEvent("onKeyUp",[this,u,this._idd])};s.onkeydown=function(u){u=u||event;v.callEvent("onKeyDown",[this,u,this._idd])}}a.appendChild(s);if(o){if(!isNaN(g.inputLeft)){a.style.left=parseInt(g.inputLeft)+"px"}if(!isNaN(g.inputTop)){a.style.top=parseInt(g.inputTop)+"px"}}var r="";var l=false;if(h){if(!isNaN(g.inputWidth)){r+="width:"+parseInt(g.inputWidth)+"px;";l=true}if(!isNaN(g.inputHeight)){r+="height:"+parseInt(g.inputHeight)+"px;"}}if(typeof(g.style)=="string"){r+=g.style}s.style.cssText=r;if(g.maxLength){s.setAttribute("maxLength",g.maxLength)}if(g.connector){s.setAttribute("connector",g.connector)}var e=(dhtmlXForm.prototype.items[this.t]!=null?dhtmlXForm.prototype.items[this.t]._dimFix==true:false);if(l&&({input:1,password:1,select:1,multiselect:1,calendar:1,colorpicker:1}[this.t]==1||e)){if(dhtmlXForm.prototype.items[this.t]._dim==null){dhtmlXForm.prototype.items[this.t]._dim=v.getForm()._checkDim(a,s)}s.style.width=parseInt(s.style.width)-dhtmlXForm.prototype.items[this.t]._dim+"px"}if(typeof(g.note)=="object"){var m=document.createElement("DIV");m.className="dhxform_note";m.style.width=(isNaN(g.note.width)?s.offsetWidth:parseInt(g.note.width))+"px";m._w=g.note.width;m.innerHTML=g.note.text;a.appendChild(m);m=null}if(g.readonly){this.setReadonly(v,true)}if(g.disabled==true){this.userDisable(v)}if(g.hidden==true&&this.t!="combo"){this.hide(v)}},doUnloadNestedLists:function(a){if(!a._list){return}for(var c=0;c<a._list.length;c++){a._list[c].unload();a._list[c]=null;a._listObj[c]=null;a._listBase[c].parentNode.removeChild(a._listBase[c]);a._listBase[c]=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[a._ll?1:0].onmousedown=null;a.childNodes[a._ll?1:0].ontouchstart=null;a.childNodes[a._ll?0:1].onmousedown=null;a.childNodes[a._ll?0:1].ontouchstart=null;a.childNodes[a._ll?0:1].childNodes[0].onfocus=null;a.childNodes[a._ll?0:1].childNodes[0].onblur=null;a.childNodes[a._ll?0:1].childNodes[0].onkeypress=null;a.childNodes[a._ll?0:1].childNodes[0].onkeyup=null;a.childNodes[a._ll?0:1].childNodes[0].onkeydown=null;a.childNodes[a._ll?0:1].childNodes[0].onmousedown=null;a.childNodes[a._ll?0:1].childNodes[0].ontouchstart=null;a.childNodes[a._ll?0:1].removeChild(a.childNodes[a._ll?0:1].childNodes[0]);while(a.childNodes.length>0){a.removeChild(a.childNodes[0])}a.parentNode.removeChild(a);a=null},doAttachEvents:function(c){var a=this;c.childNodes[c._ll?1:0][window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}var g=(h.target||h.srcElement);if(!this.parentNode._enabled||this.parentNode._ro||(typeof(g.className)!="undefined"&&g.className=="dhxform_note")){h.cancelBubble=true;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false}a.doClick(this.parentNode)};c.childNodes[c._ll?0:1].childNodes[0][window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}if(!this.parentNode.parentNode._enabled){h.cancelBubble=true;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false}var g=h.target||h.srcElement;if(typeof(g.className)!="undefined"&&g.className=="dhxform_info"){this.parentNode.parentNode.callEvent("onInfo",[this.parentNode.parentNode._idd,h]);h.cancelBubble=true;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false}a.doClick(this.parentNode.parentNode)}},doClick:function(a){a.childNodes[a._ll?0:1].childNodes[0].focus();if(!a._enabled||a._ro){return}if(a.checkEvent("onBeforeChange")){if(a.callEvent("onBeforeChange",[a._idd,a._value,a._checked])!==true){return}}this.setChecked(a,!a._checked);a._autoCheck();a.callEvent("onChange",[a._idd,a._value,a._checked])},doCheckValue:function(a){if(a._checked&&a._enabled){a.childNodes[a._ll?1:0].firstChild.name=String(a._idd);a.childNodes[a._ll?1:0].firstChild.value=this.getValue(a)}else{a.childNodes[a._ll?1:0].firstChild.name="";a.childNodes[a._ll?1:0].firstChild.value=""}},setChecked:function(a,c){a._checked=(c===true?true:false);a.childNodes[a._ll?1:0].lastChild.className=a.childNodes[a._ll?1:0].lastChild.className.replace(/chbx[0-1]{1}/gi,"")+(a._checked?" chbx1":" chbx0");this.doCheckValue(a)},check:function(a){this.setChecked(a,true)},unCheck:function(a){this.setChecked(a,false)},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=true;a.childNodes[a._ll?0:1].childNodes[0].tabIndex=0;a.childNodes[a._ll?0:1].childNodes[0].removeAttribute("disabled");this.doCheckValue(a)},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false;if(a._updateImgNode!=null){a._updateImgNode(a,false)}a.childNodes[a._ll?0:1].childNodes[0].tabIndex=-1;a.childNodes[a._ll?0:1].childNodes[0].setAttribute("disabled","true");this.doCheckValue(a)},isEnabled:function(a){return a._enabled},setText:function(a,c){a.childNodes[a._ll?0:1].childNodes[0].innerHTML=c+(a._required?"<span class='dhxform_item_required'>*</span>":"")},getText:function(a){return a.childNodes[a._ll?0:1].childNodes[0].innerHTML.replace(/<span class=\"dhxform_item_required\">[^<]*<\/span>/g,"")},setValue:function(a,c){this.setChecked(a,(c===true||parseInt(c)==1||c=="true"||a._value===c))},getValue:function(a,c){if(c=="realvalue"){return a._value}return((typeof(a._value)=="undefined"||a._value==null)?(a._checked?1:0):a._value)},setReadonly:function(a,c){a._ro=(c===true)},isReadonly:function(a){return a._ro},setFocus:function(a){a.childNodes[a._ll?0:1].childNodes[0].focus()}};dhtmlXForm.prototype.items.radio={input:{},r:{},firstValue:{},render:function(e,g,c){e._type="ra";e._enabled=true;e._checked=false;e._group=g.name;e._value=g.value;e._uid=c;e._ro=(g.readonly==true);e._rName=e._rId+e._group;this.r[e._idd]=e;g.inputWidth=14;this.doAddLabel(e,g);this.doAddInput(e,g,"INPUT","TEXT",true,true,"dhxform_textarea");e.childNodes[e._ll?1:0].className+=" dhxform_img_node";var h=document.createElement("DIV");h.className="dhxform_img rdbt0";e.appendChild(h);if(!isNaN(g.inputLeft)){e.childNodes[e._ll?1:0].style.left=parseInt(g.inputLeft)+"px"}if(!isNaN(g.inputTop)){e.childNodes[e._ll?1:0].style.top=parseInt(g.inputTop)+"px"}e.childNodes[e._ll?1:0].appendChild(h);e.childNodes[e._ll?1:0].firstChild.name="";e.childNodes[e._ll?1:0].firstChild.value="";e._updateImgNode=function(l,m){var j=l.childNodes[l._ll?1:0].lastChild;j.className=(m?"dhxform_actv_r":"dhxform_img")+" "+(l._checked?"rdbt1":"rdbt0");l=j=null};e._doOnFocus=function(j){j.getForm().callEvent("onFocus",[j._group,j._value])};e._doOnBlur=function(j){j.getForm().callEvent("onBlur",[j._group,j._value])};e._doOnKeyUpDown=function(l,j){this.callEvent(l,[this.childNodes[this._ll?0:1].childNodes[0],j,this._group,this._value])};if(this.input[e._rName]==null){var a=document.createElement("INPUT");a.type="HIDDEN";a.name=g.name;a.firstValue=e._value;e.appendChild(a);this.input[e._rName]=a}if(!this.firstValue[e._rName]){this.firstValue[e._rName]=g.value}if(g.checked==true){this.check(e)}if(g.hidden==true){this.hide(e)}if(g.disabled==true){this.userDisable(e)}this.doAttachEvents(e);return this},destruct:function(g,h){if(g.lastChild==this.input[g._rName]){var e=false;for(var c in this.r){if(!e&&this.r[c]._group==g._group&&this.r[c]._idd!=g._idd){this.r[c].appendChild(this.input[g._rName]);e=true}}if(!e){this.input[g._rName].parentNode.removeChild(this.input[g._rName]);this.input[g._rName]=null;this.firstValue[g._rName]=null}}var j=g._idd;g._doOnFocus=g._doOnBlur=g._updateImgNode=null;this.doUnloadNestedLists(g);this.doDestruct(g);return j},doClick:function(c){c.childNodes[c._ll?0:1].childNodes[0].focus();if(!(c._enabled&&!c._checked)){return}if(c._ro){return}var a=[c._group,c._value,true];if(c.checkEvent("onBeforeChange")){if(c.callEvent("onBeforeChange",a)!==true){return}}this.setChecked(c,true);c.getForm()._autoCheck();c.callEvent("onChange",a)},doCheckValue:function(e){var g=null;for(var c in this.r){if(this.r[c]._checked&&this.r[c]._group==e._group&&this.r[c]._rId==e._rId){g=this.r[c]._value}}if(g!=null&&this.r[c]._enabled){this.input[e._rName].name=String(e._group);this.input[e._rName].value=g}else{this.input[e._rName].name="";this.input[e._rName].value=""}this.input[e._rName]._value=g},setChecked:function(h,j){j=(j===true);for(var c in this.r){if(this.r[c]._group==h._group&&this.r[c]._rId==h._rId){var g=false;if(this.r[c]._idd==h._idd){if(this.r[c]._checked!=j){this.r[c]._checked=j;g=true}}else{if(this.r[c]._checked){this.r[c]._checked=false;g=true}}if(g){var e=this.r[c].childNodes[this.r[c]._ll?1:0].childNodes[1];e.className=e.className.replace(/rdbt[0-1]{1}/gi,"")+(this.r[c]._checked?" rdbt1":" rdbt0");e=null}}}this.doCheckValue(h)},getChecked:function(a){return this.input[a._rName]._value},_getFirstValue:function(a){return this.firstValue[a._rName]},_getId:function(a){return a._idd},setValue:function(a,c){}};(function(){for(var c in {doAddLabel:1,doAddInput: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,setFocus:1}){dhtmlXForm.prototype.items.radio[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.items.select={render:function(a,c){a._type="se";a._enabled=true;a._value=null;a._newValue=null;this.doAddLabel(a,c);this.doAddInput(a,c,"SELECT",null,true,true,"dhxform_select");this.doAttachEvents(a);this.doLoadOpts(a,c);if(c.connector!=null){this.doLoadOptsConnector(a,c.connector)}if(typeof(c.value)!="undefined"&&c.value!=null){this.setValue(a,c.value)}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[a._ll?1:0].childNodes[0].onclick=null;a.childNodes[a._ll?1:0].childNodes[0].onkeydown=null;a.childNodes[a._ll?1:0].childNodes[0].onchange=null;a.childNodes[a._ll?1:0].childNodes[0].onfocus=null;a.childNodes[a._ll?1:0].childNodes[0].onblur=null;a.childNodes[a._ll?1:0].childNodes[0].onkeyup=null;a.childNodes[a._ll?1:0].removeChild(a.childNodes[a._ll?1:0].childNodes[0]);while(a.childNodes.length>0){a.removeChild(a.childNodes[0])}a.parentNode.removeChild(a);a=null},doAddLabel:function(c,e){var a=document.createElement("DIV");a.className="dhxform_label "+e.labelAlign;a.innerHTML="<label for='"+e.uid+"'>"+e.label+(e.info?"<span class='dhxform_info'>[?]</span>":"")+(c._required?"<span class='dhxform_item_required'>*</span>":"")+"</label>";if(e.wrap==true){a.style.whiteSpace="normal"}if(typeof(e.tooltip)!="undefined"){a.title=e.tooltip}c.appendChild(a);if(typeof(e.label)=="undefined"||e.label==null||e.label.length==0){a.style.display="none"}if(!isNaN(e.labelWidth)){a.style.width=parseInt(e.labelWidth)+"px"}if(!isNaN(e.labelHeight)){a.style.height=parseInt(e.labelHeight)+"px"}if(!isNaN(e.labelLeft)){a.style.left=parseInt(e.labelLeft)+"px"}if(!isNaN(e.labelTop)){a.style.top=parseInt(e.labelTop)+"px"}if(e.info){a.onclick=function(h){h=h||event;var g=h.target||h.srcElement;if(typeof(g.className)!="undefined"&&g.className=="dhxform_info"){this.parentNode.callEvent("onInfo",[this.parentNode._idd,h]);h.cancelBubble=true;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}return false}}}},doAttachEvents:function(e){var a=e.childNodes[e._ll?1:0].childNodes[0];var c=this;a.onclick=function(){c.doOnChange(this)};a.onkeydown=function(g){g=g||event;c.doOnChange(this);this.parentNode.parentNode.callEvent("onKeyDown",[this,g,this.parentNode.parentNode._idd])};a.onchange=function(){c.doOnChange(this)};a.onkeyup=function(g){g=g||event;this.parentNode.parentNode.callEvent("onKeyUp",[this,g,this.parentNode.parentNode._idd])};a=null;this.doAttachChangeLS(e)},doAttachChangeLS:function(c){var a=c.childNodes[c._ll?1:0].childNodes[0];a.onfocus=function(){var e=this.parentNode.parentNode;e.getForm()._ccActivate(e._idd,this,e.getForm().getItemValue(e._idd,true));e.getForm().callEvent("onFocus",[e._idd]);e=null};a.onblur=function(){var e=this.parentNode.parentNode;e.getForm()._ccDeactivate(e._idd);e.getForm().callEvent("onBlur",[e._idd]);e=null};a=null},doValidate:function(a){if(a.getForm().live_validate){this._validate(a)}},doLoadOpts:function(l,h,n){var m=l.childNodes[l._ll?1:0].childNodes[0];var a=h.options;var g=false;for(var c=0;c<a.length;c++){var j=a[c].text||a[c].label;if(!j||typeof(j)=="undefined"){j=""}var e=new Option(j,a[c].value);if(typeof(a[c].img_src)=="string"){e.setAttribute("img_src",a[c].img_src)}m.options.add(e);if(typeof(a[c].selected)!="undefined"&&window.dhx4.s2b(a[c].selected)==true){e.selected=true;l._value=a[c].value;g=true}if(typeof(a[c].checked)!="undefined"&&window.dhx4.s2b(a[c].checked)==true){e.setAttribute("checked","1")}if(typeof(a[c].img)!="undefined"){e.setAttribute("img",a[c].img)}if(typeof(a[c].img_dis)!="undefined"){e.setAttribute("img_dis",a[c].img_dis)}if(typeof(a[c].css)!="undefined"){e.setAttribute("css",a[c].css)}}if(!g&&m.selectedIndex>=0){l._value=m.options[m.selectedIndex].value}if(n===true){l.callEvent("onOptionsLoaded",[l._idd])}this._checkNoteWidth(l)},doLoadOptsConnector:function(e,a){var c=this;e._connector_working=true;window.dhx4.ajax.get(a,function(l){l=l.xmlDoc.responseXML;if(l==null){return}var g=l.getElementsByTagName("data");if(g==null||g[0]==null){return}g=g[0];var j=[];for(var m=0;m<g.childNodes.length;m++){if(typeof(g.childNodes[m].tagName)!="undefined"&&String(g.childNodes[m].tagName).toLowerCase()=="item"){var h=g.childNodes[m];j.push({label:h.getAttribute("label"),value:h.getAttribute("value"),selected:(h.getAttribute("selected")!=null)});h=null}}c.doLoadOpts(e,{options:j},true);e._connector_working=false;if(e._connector_value!=null){c.setValue(e,e._connector_value);e._connector_value=null}c=e=null})},doOnChange:function(e){var a=e.parentNode.parentNode;a._newValue=(e.selectedIndex>=0?e.options[e.selectedIndex].value:null);if(a._newValue!=a._value){if(a.checkEvent("onBeforeChange")){if(a.callEvent("onBeforeChange",[a._idd,a._value,a._newValue])!==true){for(var c=0;c<e.options.length;c++){if(e.options[c].value==a._value){e.options[c].selected=true}}return}}a._value=a._newValue;a.callEvent("onChange",[a._idd,a._value]);if(a._type=="se"&&a.getForm().live_validate){this._validate(a)}}a._autoCheck()},setText:function(a,c){if(!c){c=""}a.childNodes[a._ll?0:1].childNodes[0].innerHTML=c+(a._required?"<span class='dhxform_item_required'>*</span>":"");a.childNodes[a._ll?0:1].style.display=(c.length==0||c==null?"none":"")},getText:function(a){return a.childNodes[a._ll?0:1].childNodes[0].innerHTML.replace(/<span class=\"dhxform_item_required\">[^<]*<\/span>/g,"")},enable:function(a){if(String(a.className).search("disabled")>=0){a.className=String(a.className).replace(/disabled/gi,"")}a._enabled=true;a.childNodes[a._ll?1:0].childNodes[0].removeAttribute("disabled")},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false;a.childNodes[a._ll?1:0].childNodes[0].setAttribute("disabled",true)},getOptions:function(a){return a.childNodes[a._ll?1:0].childNodes[0].options},setValue:function(c,g){if(c._connector_working){c._connector_value=g;return}var a=this.getOptions(c);for(var e=0;e<a.length;e++){if(a[e].value==g){a[e].selected=true;c._value=a[e].value}}if(c._list!=null&&c._list.length>0){c.getForm()._autoCheck()}c.getForm()._ccReload(c._idd,c._value)},getValue:function(e){var a=-1;var c=this.getOptions(e);for(var g=0;g<c.length;g++){if(c[g].selected){a=c[g].value}}return a},setWidth:function(c,a){c.childNodes[c._ll?1:0].childNodes[0].style.width=a+"px"},getSelect:function(a){return a.childNodes[a._ll?1:0].childNodes[0]},setFocus:function(a){a.childNodes[a._ll?1:0].childNodes[0].focus()},_checkNoteWidth:function(c){var a;if(c.childNodes[c._ll?1:0].childNodes[1]!=null){a=c.childNodes[c._ll?1:0].childNodes[1];if(a.className!=null&&a.className.search(/dhxform_note/gi)>=0&&a._w=="auto"){a.style.width=c.childNodes[c._ll?1:0].childNodes[0].offsetWidth+"px"}}a=null}};(function(){for(var c in {doAddInput:1,doUnloadNestedLists:1,isEnabled:1}){dhtmlXForm.prototype.items.select[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.items.multiselect={doLoadOpts:function(g,j,l){var c=g.childNodes[g._ll?1:0].childNodes[0];c.multiple=true;if(!isNaN(j.size)){c.size=Number(j.size)}g._value=[];g._newValue=[];var e=j.options;for(var h=0;h<e.length;h++){var a=new Option(e[h].text||e[h].label,e[h].value);c.options.add(a);if(e[h].selected==true||e[h].selected=="true"){a.selected=true;g._value.push(e[h].value)}}if(l===true){g.callEvent("onOptionsLoaded",[g._idd])}this._checkNoteWidth(g)},doAttachEvents:function(e){var a=e.childNodes[e._ll?1:0].childNodes[0];var c=this;a.onfocus=function(){c.doOnChange(this);var g=this.parentNode.parentNode;g.getForm().callEvent("onFocus",[g._idd]);g=null};a.onblur=function(){c.doOnChange(this);var g=this.parentNode.parentNode;g.getForm().callEvent("onBlur",[g._idd]);g=null};a.onclick=function(){c.doOnChange(this);var g=this.parentNode.parentNode;g._autoCheck();g=null}},doOnChange:function(g){var c=g.parentNode.parentNode;c._newValue=[];for(var e=0;e<g.options.length;e++){if(g.options[e].selected){c._newValue.push(g.options[e].value)}}if((c._value).sort().toString()!=(c._newValue).sort().toString()){if(c.checkEvent("onBeforeChange")){if(c.callEvent("onBeforeChange",[c._idd,c._value,c._newValue])!==true){var a={};for(var e=0;e<c._value.length;e++){a[c._value[e]]=true}for(var e=0;e<g.options.length;e++){g.options[e].selected=(a[g.options[e].value]==true)}a=null;return}}c._value=[];for(var e=0;e<c._newValue.length;e++){c._value.push(c._newValue[e])}c.callEvent("onChange",[c._idd,c._value])}c._autoCheck()},setValue:function(e,h){var a={};if(typeof(h)=="string"){h=h.split(",")}if(typeof(h)!="object"){h=[h]}for(var g=0;g<h.length;g++){a[h[g]]=true}var c=this.getOptions(e);for(var g=0;g<c.length;g++){c[g].selected=(a[c[g].value]==true)}e._autoCheck()},getValue:function(e){var a=[];var c=this.getOptions(e);for(var g=0;g<c.length;g++){if(c[g].selected){a.push(c[g].value)}}return a}};(function(){for(var c in dhtmlXForm.prototype.items.select){if(!dhtmlXForm.prototype.items.multiselect[c]){dhtmlXForm.prototype.items.multiselect[c]=dhtmlXForm.prototype.items.select[c]}}})();dhtmlXForm.prototype.items.input={render:function(j,l){var h=(!isNaN(l.rows));j._type="ta";j._enabled=true;this.doAddLabel(j,l);this.doAddInput(j,l,(h?"TEXTAREA":"INPUT"),(h?null:"TEXT"),true,true,"dhxform_textarea");this.doAttachEvents(j);if(h){j.childNodes[j._ll?1:0].childNodes[0].rows=Number(l.rows)+(window.dhx4.isIE6?1:0)}if(typeof(l.numberFormat)!="undefined"){var g,e=null,m=null;if(typeof(l.numberFormat)!="string"){g=l.numberFormat[0];e=l.numberFormat[1]||null;m=l.numberFormat[2]||null}else{g=l.numberFormat;if(typeof(l.groupSep)=="string"){e=l.groupSep}if(typeof(l.decSep)=="string"){m=l.decSep}}this.setNumberFormat(j,g,e,m,false)}this.setValue(j,l.value);return this},doAttachEvents:function(e){var c=e.childNodes[e._ll?1:0].childNodes[0];if(typeof(c.tagName)!="undefined"&&c.tagName.toLowerCase()=="input"){var a=this;c.onfocus=function(){var g=this.parentNode.parentNode;if(g._df!=null){this.value=g._value||""}g.getForm()._ccActivate(g._idd,this,this.value);g.getForm().callEvent("onFocus",[g._idd]);g=null};c.onblur=function(){var g=this.parentNode.parentNode;g.getForm()._ccDeactivate(g._idd);a.updateValue(g,true);if(g.getForm().live_validate){a._validate(g)}g.getForm().callEvent("onBlur",[g._idd]);g=null}}c=null},updateValue:function(h,a){var j=h.childNodes[h._ll?1:0].childNodes[0].value;var g=h.getForm();var c=(g._ccActive==true&&g._formLS!=null&&g._formLS[h._idd]!=null);g=null;if(!c&&h._df!=null&&j==window.dhx4.template._getFmtValue(h._value,h._df)){return}if(!a&&h._df!=null&&h._value==j&&j==window.dhx4.template._getFmtValue(j,h._df)){return}var e=this;if(h._value!=j){if(h.checkEvent("onBeforeChange")){if(h.callEvent("onBeforeChange",[h._idd,h._value,j])!==true){if(h._df!=null){e.setValue(h,h._value)}else{h.childNodes[h._ll?1:0].childNodes[0].value=h._value}return}}if(h._df!=null&&a){e.setValue(h,j)}else{h._value=j}h.callEvent("onChange",[h._idd,j]);return}if(h._df!=null&&a){this.setValue(h,h._value)}},setValue:function(e,g){e._value=(typeof(g)!="undefined"&&g!=null?g:"");var c=(String(e._value)||"");var a=e.childNodes[e._ll?1:0].childNodes[0];if(e._df!=null){c=window.dhx4.template._getFmtValue(c,e._df)}if(a.value!=c){a.value=c;e.getForm()._ccReload(e._idd,c)}a=null},getValue:function(a){var c=a.getForm();if(c._formLS&&c._formLS[a._idd]!=null){this.updateValue(a)}c=null;return(typeof(a._value)!="undefined"&&a._value!=null?a._value:"")},setReadonly:function(a,c){a._ro=(c===true);if(a._ro){a.childNodes[a._ll?1:0].childNodes[0].setAttribute("readOnly","true")}else{a.childNodes[a._ll?1:0].childNodes[0].removeAttribute("readOnly")}},isReadonly:function(a){if(!a._ro){a._ro=false}return a._ro},getInput:function(a){return a.childNodes[a._ll?1:0].childNodes[0]},setNumberFormat:function(g,h,e,j,c){if(typeof(c)!="boolean"){c=true}if(h==""){g._df=null;if(c){this.setValue(g,g._value)}return true}if(typeof(h)!="string"){return}var a=window.dhx4.template._parseFmt(h,e,j);if(a==false){return false}else{g._df=a}if(c){this.setValue(g,g._value)}return true}};(function(){for(var c in {doAddLabel:1,doAddInput:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,isEnabled:1,setWidth:1,setFocus:1}){dhtmlXForm.prototype.items.input[c]=dhtmlXForm.prototype.items.select[c]}})();dhtmlXForm.prototype.items.password={render:function(a,c){a._type="pw";a._enabled=true;this.doAddLabel(a,c);this.doAddInput(a,c,"INPUT","PASSWORD",true,true,"dhxform_textarea");this.doAttachEvents(a);this.setValue(a,c.value);return this}};(function(){for(var c in {doAddLabel:1,doAddInput:1,doAttachEvents:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,setValue:1,getValue:1,updateValue:1,enable:1,disable:1,isEnabled:1,setWidth:1,setReadonly:1,isReadonly:1,setFocus:1,getInput:1}){dhtmlXForm.prototype.items.password[c]=dhtmlXForm.prototype.items.input[c]}})();dhtmlXForm.prototype.items.file={render:function(e,g){e._type="fl";e._enabled=true;this.doAddLabel(e,g);this.doAddInput(e,g,"INPUT","FILE",true,false,"dhxform_textarea");var a=e.childNodes[e._ll?1:0].childNodes[0];var c=this;a.onfocus=function(){var h=this.parentNode.parentNode;h.getForm().callEvent("onFocus",[h._idd]);h=null};a.onblur=function(){var h=this.parentNode.parentNode;if(h.getForm().live_validate){c._validate(h)}h.getForm().callEvent("onBlur",[h._idd]);h=null};a=null;e.childNodes[e._ll?1:0].childNodes[0].onchange=function(){e.callEvent("onChange",[e._idd,this.value])};return this},setValue:function(){},getValue:function(a){return a.childNodes[a._ll?1:0].childNodes[0].value}};(function(){for(var c in {doAddLabel:1,doAddInput:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,getInput:1,enable:1,disable:1,isEnabled:1,setWidth:1}){dhtmlXForm.prototype.items.file[c]=dhtmlXForm.prototype.items.input[c]}})();dhtmlXForm.prototype.items.label={_index:false,render:function(c,e){c._type="lb";c._enabled=true;c._checked=true;var a=document.createElement("DIV");a.className="dhxform_txt_label2"+(e._isTopmost?" topmost":"");a.innerHTML=e.label;c.appendChild(a);if(e.hidden==true){this.hide(c)}if(e.disabled==true){this.userDisable(c)}if(!isNaN(e.labelWidth)){a.style.width=parseInt(e.labelWidth)+"px"}if(!isNaN(e.labelHeight)){a.style.height=parseInt(e.labelHeight)+"px"}if(!isNaN(e.labelLeft)){a.style.left=parseInt(e.labelLeft)+"px"}if(!isNaN(e.labelTop)){a.style.top=parseInt(e.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=true},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false},setText:function(a,c){a.firstChild.innerHTML=c},getText:function(a){return a.firstChild.innerHTML}};(function(){for(var c in {doUnloadNestedLists:1,isEnabled:1}){dhtmlXForm.prototype.items.label[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.items.button={render:function(c,e){c._type="bt";c._enabled=true;c._name=e.name;c.className=String(c.className).replace("item_label_top","item_label_left").replace("item_label_right","item_label_left");c._doOnKeyUpDown=function(h,g){this.callEvent(h,[this.childNodes[0].childNodes[0],g,this._idd])};c.innerHTML='<div class="dhxform_btn" role="link" tabindex="0" dir="ltr"><div class="dhxform_btn_txt">'+e.value+'</div><div class="dhxform_btn_filler" disabled="true"></div></div>';if(!isNaN(e.width)){var a=Math.max(e.width,10);if(dhtmlXForm.prototype.items[this.t]._dim==null){c.firstChild.style.width=a+"px";dhtmlXForm.prototype.items[this.t]._dim=c.getForm()._checkDim(c,c.firstChild)}c.firstChild.style.width=a-dhtmlXForm.prototype.items[this.t]._dim+"px";c.firstChild.firstChild.className+=" dhxform_btn_txt_autowidth"}if(!isNaN(e.inputLeft)){c.childNodes[0].style.left=parseInt(e.inputLeft)+"px"}if(!isNaN(e.inputTop)){c.childNodes[0].style.top=parseInt(e.inputTop)+"px"}if(e.hidden==true){this.hide(c)}if(e.disabled==true){this.userDisable(c)}if(typeof(e.tooltip)!="undefined"){c.firstChild.title=e.tooltip}c.onselectstart=function(g){g=g||event;g.cancelBubble=true;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false};c.firstChild.onselectstart=function(g){g=g||event;g.cancelBubble=true;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false};c.firstChild.onkeypress=function(g){g=g||event;if((g.keyCode==32||g.charCode==32||g.keyCode==13||g.charCode==13)&&!this.parentNode._busy){this.parentNode._busy=true;g.cancelBubble=true;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}_dhxForm_doClick(this.childNodes[0],["mousedown","mouseup"]);return false}};c.firstChild.onfocus=function(){this.parentNode._doOnFocus(this.parentNode)};c.firstChild.onblur=function(){_dhxForm_doClick(this.childNodes[0],"mouseout");this.parentNode._doOnBlur(this.parentNode)};c.firstChild.onkeyup=function(g){this.parentNode._doOnKeyUpDown("onKeyUp",g||event)};c.firstChild.onkeydown=function(g){this.parentNode._doOnKeyUpDown("onKeyDown",g||event)};c.firstChild.onmouseover=function(){var g=this.parentNode;if(!g._enabled){return}this._isOver=true;this.className="dhxform_btn dhxform_btn_over";g=null};c.firstChild.onmouseout=function(){var g=this.parentNode;if(!g._enabled){return}this.className="dhxform_btn";this._allowClick=false;this._pressed=false;this._isOver=false;g=null};c.firstChild.ontouchstart=c.firstChild.onmousedown=function(h){h=h||event;if(h.type=="touchstart"&&h.preventDefault){h.preventDefault()}if(h.button>=2){return}if(this._pressed){return}var g=this.parentNode;if(!g._enabled){return}this.className="dhxform_btn dhxform_btn_pressed";this._allowClick=true;this._pressed=true;g=null};c.firstChild.ontouchend=c.firstChild.onmouseup=function(h){h=h||event;if(h.button>=2){return}if(!this._pressed){return}var g=this.parentNode;if(!g._enabled){return}g._busy=false;this.className="dhxform_btn"+(this._isOver?" dhxform_btn_over":"");if(this._pressed&&this._allowClick){g.callEvent("_onButtonClick",[g._name,g._cmd])}this._allowClick=false;this._pressed=false;g=null};c._doOnFocus=function(g){g.getForm().callEvent("onFocus",[g._idd])};c._doOnBlur=function(g){g.getForm().callEvent("onBlur",[g._idd])};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._doOnFocus=null;a._doOnBlur=null;a._doOnKeyUpDown=null;a.onselectstart=null;a.firstChild.onselectstart=null;a.firstChild.onkeypress=null;a.firstChild.ontouchstart=null;a.firstChild.ontouchend=null;a.firstChild.onfocus=null;a.firstChild.onblur=null;a.firstChild.onkeyup=null;a.firstChild.onkeydown=null;a.firstChild.onmouseover=null;a.firstChild.onmouseout=null;a.firstChild.onmousedown=null;a.firstChild.onmouseup=null;while(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=true;a.childNodes[0].removeAttribute("disabled");a.childNodes[0].setAttribute("role","link");a.childNodes[0].setAttribute("tabIndex","0")},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false;a.childNodes[0].setAttribute("disabled","true");a.childNodes[0].removeAttribute("role");a.childNodes[0].removeAttribute("tabIndex")},setText:function(a,c){a.childNodes[0].childNodes[0].innerHTML=c},getText:function(a){return a.childNodes[0].childNodes[0].innerHTML},setFocus:function(a){a.childNodes[0].focus()}};(function(){for(var c in {doUnloadNestedLists:1,isEnabled:1}){dhtmlXForm.prototype.items.button[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.items.hidden={_index:false,render:function(c,e){c.style.display="none";c._name=e.name;c._type="hd";c._enabled=true;var a=document.createElement("INPUT");a.type="HIDDEN";a.name=e.name;a.value=(e.value||"");c.appendChild(a);return this},destruct:function(a){this.doUnloadNestedLists(a);while(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=true;a.childNodes[0].setAttribute("name",a._name)},disable:function(a){a._enabled=false;a.childNodes[0].removeAttribute("name")},show:function(){},hide:function(){},isHidden:function(){return true},setValue:function(a,c){a.childNodes[0].value=c},getValue:function(a){return a.childNodes[0].value},getInput:function(a){return a.childNodes[0]}};(function(){for(var c in {doUnloadNestedLists:1,isEnabled:1}){dhtmlXForm.prototype.items.hidden[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.items.list={_index:false,render:function(a,c){a._type="list";a._enabled=true;a._isNestedForm=true;a.style.paddingLeft=a._ofsNested+"px";a.className="dhxform_base_nested"+(a._custom_css||"");return[this,new dhtmlXForm(a,null,c)]},destruct:function(a){}};dhtmlXForm.prototype.items.fieldset={_index:false,render:function(c,g){c._type="fs";if(typeof(parseInt(g.inputWidth))=="number"){}c._width=g.width;c._enabled=true;c._checked=true;c.className="fs_"+g.position+(typeof(g.className)=="string"?" "+g.className:"");var e=document.createElement("FIELDSET");e.className="dhxform_fs";var h=String(g.labelAlign).replace("align_","");e.innerHTML="<legend class='fs_legend' align='"+h+"' style='text-align:"+h+"'>"+g.label+"</legend>";c.appendChild(e);if(!isNaN(g.inputLeft)){e.style.left=parseInt(g.inputLeft)+"px"}if(!isNaN(g.inputTop)){e.style.top=parseInt(g.inputTop)+"px"}if(g.inputWidth!="auto"){if(!isNaN(g.inputWidth)){e.style.width=parseInt(g.inputWidth)+"px";var a=parseInt(e.style.width);if(e.offsetWidth>a){e.style.width=a+(a-e.offsetWidth)+"px"}}}c._addSubListNode=function(){var j=document.createElement("DIV");j._custom_css=" dhxform_fs_nested";this.childNodes[0].appendChild(j);return j};if(g.hidden==true){this.hide(c)}if(g.disabled==true){this.userDisable(c)}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;a.getForm=null;while(a.childNodes.length>0){a.removeChild(a.childNodes[0])}a.parentNode.removeChild(a);a=null},setText:function(a,c){a.childNodes[0].childNodes[0].innerHTML=c},getText:function(a){return a.childNodes[0].childNodes[0].innerHTML},enable:function(a){a._enabled=true;if(String(a.className).search("disabled")>=0){a.className=String(a.className).replace(/disabled/gi,"")}},disable:function(a){a._enabled=false;if(String(a.className).search("disabled")<0){a.className+=" disabled"}},setWidth:function(c,a){c.childNodes[0].style.width=a+"px";c._width=a},getWidth:function(a){return a._width}};(function(){for(var c in {doUnloadNestedLists:1,isEnabled:1}){dhtmlXForm.prototype.items.fieldset[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.items.block={_index:false,render:function(c,e){c._type="bl";c._width=e.width;c._enabled=true;c._checked=true;c.className="block_"+e.position+(typeof(e.className)=="string"?" "+e.className:"");var a=document.createElement("DIV");a.className="dhxform_obj_"+c.getForm().skin+" dhxform_block";a.style.fontSize=c.getForm().cont.style.fontSize;if(e.style){a.style.cssText=e.style}if(typeof(e.id)!="undefined"){a.id=e.id}c.appendChild(a);if(!isNaN(e.inputLeft)){a.style.left=parseInt(e.inputLeft)+"px"}if(!isNaN(e.inputTop)){a.style.top=parseInt(e.inputTop)+"px"}if(e.inputWidth!="auto"){if(!isNaN(e.inputWidth)){a.style.width=parseInt(e.inputWidth)+"px"}}if(!isNaN(e.blockOffset)){c._ofsNested=e.blockOffset}c._addSubListNode=function(){var g=document.createElement("DIV");g._inBlcok=true;if(typeof(this._ofsNested)!="undefined"){g._ofsNested=this._ofsNested}this.childNodes[0].appendChild(g);return g};if(e.hidden==true){this.hide(c)}if(e.disabled==true){this.userDisable(c)}return this},_setCss:function(a,e,c){a.firstChild.className="dhxform_obj_"+e+" dhxform_block";a.firstChild.style.fontSize=c}};(function(){for(var c in {enable:1,disable:1,isEnabled:1,setWidth:1,getWidth:1,doUnloadNestedLists:1,destruct:1}){dhtmlXForm.prototype.items.block[c]=dhtmlXForm.prototype.items.fieldset[c]}})();dhtmlXForm.prototype.items.newcolumn={_index:false};dhtmlXForm.prototype.items.template={render:function(c,e){var a=(!isNaN(e.rows));c._type="tp";c._enabled=true;if(e.format!=null){if(typeof(e.format)=="function"){c.format=e.format}else{if(typeof(e.format)=="string"&&typeof(window[e.format])=="function"){c.format=window[e.format]}}}if(c.format==null){c.format=function(g,h){return h}}this.doAddLabel(c,e);this.doAddInput(c,e,"DIV",null,true,true,"dhxform_item_template");this.setValue(c,e.value||"");return this},destruct:function(a){a.format=null;this.d2(a);a=null},setValue:function(a,c){a._value=c;a.childNodes[a._ll?1:0].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=true},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false}};(function(){dhtmlXForm.prototype.items.template.d2=dhtmlXForm.prototype.items.input.destruct;for(var c in {doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,isEnabled:1,setWidth:1}){dhtmlXForm.prototype.items.template[c]=dhtmlXForm.prototype.items.select[c]}})();dhtmlXForm.prototype._ulToObject=function(j,o){var l=[];for(var c=0;c<j.childNodes.length;c++){if(String(j.childNodes[c].tagName||"").toLowerCase()=="li"){var g={};var s=j.childNodes[c];for(var r=0;r<o.length;r++){if(s.getAttribute(o[r])!=null){g[String(o[r]).replace("ftype","type")]=s.getAttribute(o[r])}}if(!g.label){try{g.label=s.firstChild.nodeValue}catch(m){}}var h=s.getElementsByTagName("UL");if(h[0]!=null){g[(g.type=="select"?"options":"list")]=dhtmlXForm.prototype._ulToObject(h[0],o)}for(var r=0;r<s.childNodes.length;r++){if(String(s.childNodes[r].tagName||"").toLowerCase()=="userdata"){if(!g.userdata){g.userdata={}}g.userdata[s.childNodes[r].getAttribute("name")]=s.childNodes[r].firstChild.nodeValue}}l[l.length]=g}if(String(j.childNodes[c].tagName||"").toLowerCase()=="div"){var g={};g.type="label";try{g.label=j.childNodes[c].firstChild.nodeValue}catch(m){}l[l.length]=g}}return l};dhtmlXForm.prototype.setUserData=function(h,e,g,a){if(typeof(a)!="undefined"){var c=this.doWithItem([h,e],"_getId");if(c!=null){h=c;e=g;g=a}}if(!this._userdata){this._userdata={}}this._userdata[h]=(this._userdata[h]||{});this._userdata[h][e]=g};dhtmlXForm.prototype.getUserData=function(g,e,a){if(typeof(a)!="undefined"){var c=this.doWithItem([g,e],"_getId");if(c!=null){g=c;e=a}}if(this._userdata!=null&&typeof(this._userdata[g])!="undefined"&&typeof(this._userdata[g][e])!="undefined"){return this._userdata[g][e]}return""};dhtmlXForm.prototype.setRTL=function(a){this._rtl=(a===true?true:false);if(this._rtl){if(String(this.cont).search(/dhxform_rtl/gi)<0){this.cont.className+=" dhxform_rtl"}}else{if(String(this.cont).search(/dhxform_rtl/gi)>=0){this.cont.className=String(this.cont.className).replace(/dhxform_rtl/gi,"")}}};_dhxForm_doClick=function(h,c){if(typeof(c)=="object"){var a=c[1];c=c[0]}if(document.createEvent){var g=document.createEvent("MouseEvents");g.initEvent(c,true,false);h.dispatchEvent(g)}else{if(document.createEventObject){var g=document.createEventObject();g.button=1;h.fireEvent("on"+c,g)}}if(a){window.setTimeout(function(){_dhxForm_doClick(h,a)},100)}};dhtmlXForm.prototype.setFormData=function(e){for(var c in e){var g=this.getItemType(c);switch(g){case"checkbox":this[e[c]==true||parseInt(e[c])==1||e[c]=="true"||e[c]==this.getItemValue(c,"realvalue")?"checkItem":"uncheckItem"](c);break;case"radio":this.checkItem(c,e[c]);break;case"input":case"textarea":case"password":case"select":case"multiselect":case"hidden":case"template":case"combo":case"calendar":case"colorpicker":case"editor":this.setItemValue(c,e[c]);break;default:if(this["setFormData_"+g]){this["setFormData_"+g](c,e[c])}else{if(!this.hId){this.hId=this._genStr(12)}this.setUserData(this.hId,c,e[c])}break}}};dhtmlXForm.prototype.getFormData=function(u,j){var c={};var n=this;for(var s in this.itemPull){var m=this.itemPull[s]._idd;var v=this.itemPull[s]._type;if(v=="ch"){c[m]=(this.isItemChecked(m)?this.getItemValue(m):0)}if(v=="ra"&&!c[this.itemPull[s]._group]){c[this.itemPull[s]._group]=this.getCheckedValue(this.itemPull[s]._group)}if(v in {se:1,ta:1,pw:1,hd:1,tp:1,fl:1,calendar:1,combo:1,editor:1,colorpicker:1}){c[m]=this.getItemValue(m,u)}if(this["getFormData_"+v]){c[m]=this["getFormData_"+v](m)}if(v=="up"){var h=this.getItemValue(m);for(var g in h){c[g]=h[g]}}if(this.itemPull[s]._list){for(var e=0;e<this.itemPull[s]._list.length;e++){var l=this.itemPull[s]._list[e].getFormData(u,j);for(var o in l){c[o]=l[o]}}}}if(!j&&this.hId&&this._userdata[this.hId]){for(var s in this._userdata[this.hId]){if(!c[s]){c[s]=this._userdata[this.hId][s]}}}return c};dhtmlXForm.prototype.adjustParentSize=function(){var j=0;var h=-1;for(var l=0;l<this.base.length;l++){j+=this.base[l].firstChild.offsetWidth;if(this.base[l].offsetHeight>h){h=this.base[l].offsetHeight}}var g=false;try{g=(this.cont.parentNode.parentNode.parentNode.parentNode._isCell==true);if(g){var a=this.cont.parentNode.parentNode.parentNode.parentNode}}catch(m){}if(g&&typeof(a)!="undefined"){if(j>0){a.setWidth(j+10)}if(h>0){a.setHeight(h+a.firstChild.firstChild.offsetHeight+5)}g=a=null;return}var c=false;try{c=(this.cont.parentNode.parentNode.parentNode._isWindow==true);if(c){var n=this.cont.parentNode.parentNode;if(typeof(n.callEvent)=="function"){this.cont.style.display="none";n.callEvent("_setCellSize",[j+15,h+15]);this.cont.style.display=""}}}catch(m){}};dhtmlXForm.prototype.reset=function(){if(this.callEvent("onBeforeReset",[this.formId,this.getFormData()])){if(this._last_load_data){this.setFormData(this._last_load_data)}this.callEvent("onAfterReset",[this.formId])}};dhtmlXForm.prototype.send=function(c,l,m,g){if(typeof l=="function"){m=l;l="post"}else{l=(l=="get"?"get":"post")}if(g!==true&&!this.validate()){return}var j=this.getFormData(true);var h=[];for(var e in j){h.push(e+"="+encodeURIComponent(j[e]))}var a=function(n){if(m){m.call(this,n,n.xmlDoc.responseText)}};if(l=="get"){window.dhx4.ajax.get(c+(c.indexOf("?")==-1?"?":"&")+h.join("&"),a)}else{window.dhx4.ajax.post(c,h.join("&"),a)}};dhtmlXForm.prototype.save=function(a,c){};dhtmlXForm.prototype.dummy=function(){};dhtmlXForm.prototype._changeFormId=function(c,a){this.formId=a};dhtmlXForm.prototype._dp_init=function(a){a._methods=["dummy","dummy","_changeFormId","dummy"];a._getRowData=function(g,c){var e=this.obj.getFormData(true);e[this.action_param]=this.obj.getUserData(g,this.action_param);return e};a._clearUpdateFlag=function(){};a.attachEvent("onAfterUpdate",function(e,g,h,c){if(g=="inserted"||g=="updated"||g=="error"||g=="invalid"){this.obj.resetDataProcessor("updated")}if(g=="inserted"||g=="updated"){this.obj._last_load_data=this.obj.getFormData(true)}this.obj.callEvent("onAfterSave",[this.obj.formId,c]);return true});a.autoUpdate=false;a.setTransactionMode("POST",true);this.dp=a;this.formId=(new Date()).valueOf();this.resetDataProcessor("inserted");this.save=function(){if(!this.callEvent("onBeforeSave",[this.formId,this.getFormData()])){return}if(!this.validate()){return}a.sendData()}};dhtmlXForm.prototype.resetDataProcessor=function(a){if(!this.dp){return}this.dp.updatedRows=[];this.dp._in_progress=[];this.dp.setUpdated(this.formId,true,a)};dhtmlXForm.prototype._ccActivate=function(e,a,c){if(!this._formLS){this._formLS={}}if(!this._formLS[e]){this._formLS[e]={input:a,value:c}}if(!this._ccActive){this._ccActive=true;this._ccDo()}a=null};dhtmlXForm.prototype._ccDeactivate=function(a){if(this._ccTm){window.clearTimeout(this._ccTm)}this._ccActive=false;if(this._formLS!=null&&this._formLS[a]!=null){this._formLS[a].input=null;this._formLS[a]=null;delete this._formLS[a]}};dhtmlXForm.prototype._ccDo=function(){if(this._ccTm){window.clearTimeout(this._ccTm)}for(var c in this._formLS){var h=this._formLS[c].input;if(String(h.tagName).toLowerCase()=="select"){var e="";if(h.selectedIndex>=0&&h.selectedIndex<h.options.length){e=h.options[h.selectedIndex].value}}else{var e=h.value}if(e!=this._formLS[c].value){this._formLS[c].value=e;this.callEvent("onInputChange",[h._idd,e,this])}h=null}if(this._ccActive){var g=this;this._ccTm=window.setTimeout(function(){g._ccDo();g=null},100)}};dhtmlXForm.prototype._ccReload=function(c,a){if(this._formLS&&this._formLS[c]){this._formLS[c].value=a}};dhtmlXForm.prototype._checkDim=function(l,j){var g=document.createElement("DIV");g.className="dhxform_obj_"+this.skin;g.style.cssText+=(dhx4.isIE6==true?"visibility:hidden;":"position:absolute;left:-2000px;top:-1000px;");document.body.appendChild(g);var h=l.parentNode;var c=l.nextSibling;g.appendChild(l);var e=parseInt(j.style.width);var a=(dhx4.isFF||dhx4.isIE||dhx4.isChrome||dhx4.isOpera?j.offsetWidth:j.clientWidth);var m=a-e;if(c!=null){h.insertBefore(l,c)}else{h.appendChild(l)}g.parentNode.removeChild(g);h=c=g=l=j=null;return m};dhtmlXForm.prototype._autoload=function(){var c=["ftype","name","value","label","check","checked","disabled","text","rows","select","selected","width","style","className","labelWidth","labelHeight","labelLeft","labelTop","inputWidth","inputHeight","inputLeft","inputTop","position","size"];var e=document.getElementsByTagName("UL");var g=[];for(var l=0;l<e.length;l++){if(e[l].className=="dhtmlxForm"){var j=document.createElement("DIV");g[g.length]={nodeUL:e[l],nodeForm:j,data:dhtmlXForm.prototype._ulToObject(e[l],c),name:(e[l].getAttribute("name")||null)}}}for(var l=0;l<g.length;l++){g[l].nodeUL.parentNode.insertBefore(g[l].nodeForm,g[l].nodeUL);var m=new dhtmlXForm(g[l].nodeForm,g[l].data);if(g[l].name!==null){window[g[l].name]=m}var h=(g[l].nodeUL.getAttribute("oninit")||null);g[l].nodeUL.parentNode.removeChild(g[l].nodeUL);g[l].nodeUL=null;g[l].nodeForm=null;g[l].data=null;g[l]=null;if(h){if(typeof(h)=="function"){h()}else{if(typeof(window[h])=="function"){window[h]()}}}}if(typeof(window.addEventListener)=="function"){window.removeEventListener("load",dhtmlXForm.prototype._autoload,false)}else{window.detachEvent("onload",dhtmlXForm.prototype._autoload)}};if(typeof(window.addEventListener)=="function"){window.addEventListener("load",dhtmlXForm.prototype._autoload,false)}else{window.attachEvent("onload",dhtmlXForm.prototype._autoload)}if(typeof(window.dhtmlXCellObject)!="undefined"){dhtmlXCellObject.prototype.attachForm=function(a){this.callEvent("_onBeforeContentAttach",["form"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";if(window.dhtmlx&&dhtmlx.$customScroll){dhtmlx.CustomScroll.enable(c)}else{c.style.overflow="auto"}this._attachObject(c);this.dataType="form";this.dataObj=new dhtmlXForm(c,a);this.dataObj.setSkin(this.conf.skin);c=null;this.callEvent("_onContentAttach",[]);return this.dataObj}}dhtmlXForm.prototype.items.combo={render:function(c,e){c._type="combo";c._enabled=true;c._value=null;c._newValue=null;this.doAddLabel(c,e);this.doAddInput(c,e,"SELECT",null,true,true,"dhxform_select");this.doAttachEvents(c);this.doLoadOpts(c,e);c.onselectstart=function(g){return true};c.childNodes[c._ll?1:0].childNodes[0].setAttribute("mode",e.comboType||"");if(e.comboImagePath){c.childNodes[c._ll?1:0].childNodes[0].setAttribute("imagePath",e.comboImagePath)}if(e.comboDefaultImage){c.childNodes[c._ll?1:0].childNodes[0].setAttribute("defaultImage",e.comboDefaultImage)}if(e.comboDefaultImageDis){c.childNodes[c._ll?1:0].childNodes[0].setAttribute("defaultImageDis",e.comboDefaultImageDis)}c._combo=new dhtmlXComboFromSelect(c.childNodes[c._ll?1:0].childNodes[0]);c._combo.setSkin(c.getForm().skin);c._combo._currentComboValue=c._combo.getSelectedValue();c._combo.getInput().id=e.uid;var a=this;c._combo.attachEvent("onChange",function(){a.doOnChange(this)});if(e.connector){this.doLoadOptsConnector(c,e.connector)}if(e.filtering){c._combo.enableFilteringMode(true)}else{if(e.serverFiltering){c._combo.enableFilteringMode(true,e.serverFiltering,e.filterCache,e.filterSubLoad)}}if(e.readonly==true){this.setReadonly(c,true)}if(e.hidden==true){this.hide(c)}if(e.style){c._combo.DOMelem_input.style.cssText+=e.style}c._combo.attachEvent("onFocus",function(){var g=this.cont.parentNode.parentNode;var h=g.getForm();if(h.skin=="dhx_terrace"&&this.cont.className.search(/combo_in_focus/)<0){this.cont.className+=" combo_in_focus"}h.callEvent("onFocus",[g._idd]);h=g=null});c._combo.attachEvent("onBlur",function(){var g=this.cont.parentNode.parentNode;var h=g.getForm();if(h.skin=="dhx_terrace"&&this.cont.className.search(/combo_in_focus/)>=0){this.cont.className=this.cont.className.replace(/\s{0,}combo_in_focus/gi,"")}h.callEvent("onBlur",[g._idd]);h=g=null});return this},destruct:function(a){a.childNodes[a._ll?1:0].childNodes[0].onchange=null;a._combo._currentComboValue=null;a._combo.unload();a._combo=null;a._apiChange=null;this.d2(a);a=null},doAttachEvents:function(c){var a=this;c.childNodes[c._ll?1:0].childNodes[0].onchange=function(){a.doOnChange(this);a.doValidate(this.DOMParent.parentNode.parentNode)}},doValidate:function(a){if(a.getForm().hot_validate){this._validate(a)}},doOnChange:function(c){var a=c.base.parentNode.parentNode.parentNode;if(a._apiChange){return}c._newComboValue=c.getSelectedValue();if(c._newComboValue!=c._currentComboValue){if(a.checkEvent("onBeforeChange")){if(a.callEvent("onBeforeChange",[a._idd,c._currentComboValue,c._newComboValue])!==true){window.setTimeout(function(){c.setComboValue(c._currentComboValue)},1);return false}}c._currentComboValue=c._newComboValue;a.callEvent("onChange",[a._idd,c._currentComboValue])}a._autoCheck(a._enabled)},doLoadOptsConnector:function(g,a){var e=this;var c=g;g._connector_working=true;g._apiChange=true;g._combo.load(a,function(){c.callEvent("onOptionsLoaded",[c._idd]);c._connector_working=false;if(c._connector_value!=null){e.setValue(c,c._connector_value);c._connector_value=null}c._apiChange=false;e=c=null})},enable:function(a){if(String(a.className).search("disabled")>=0){a.className=String(a.className).replace(/disabled/gi,"")}a._enabled=true;a._combo.enable()},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false;a._combo.disable()},getCombo:function(a){return a._combo},setValue:function(a,c){if(a._connector_working){a._connector_value=c;return}a._apiChange=true;a._combo.setComboValue(c);a._combo._currentComboValue=a._combo.getActualValue();a._apiChange=false},getValue:function(a){return a._combo.getActualValue()},setWidth:function(c,a){c.childNodes[c._ll?1:0].childNodes[0].style.width=a+"px"},setReadonly:function(a,c){if(!a._combo){return}a._combo_ro=c;a._combo.readonly(a._combo_ro)},isReadonly:function(a,c){return a._combo_ro||false},setFocus:function(a){if(a._enabled){a._combo.setFocus()}},_setCss:function(a,e,c){a._combo.setFontSize(c,c)}};(function(){for(var c in {doAddLabel:1,doAddInput:1,doLoadOpts:1,doUnloadNestedLists:1,setText:1,getText:1,isEnabled:1,_checkNoteWidth:1}){dhtmlXForm.prototype.items.combo[c]=dhtmlXForm.prototype.items.select[c]}})();dhtmlXForm.prototype.items.combo.d2=dhtmlXForm.prototype.items.select.destruct;dhtmlXForm.prototype.getCombo=function(a){return this.doWithItem(a,"getCombo")};dhtmlXForm.prototype.items.calendar={render:function(e,h){var c=this;e._type="calendar";e._enabled=true;var j=navigator.userAgent;var a=(j.indexOf("MSIE 6.0")>=0||j.indexOf("MSIE 7.0")>=0||j.indexOf("MSIE 8.0")>=0);this.doAddLabel(e,h);this.doAddInput(e,h,"INPUT","TEXT",true,true,"dhxform_textarea calendar");this.doAttachChangeLS(e);if(a){e.childNodes[e._ll?1:0].childNodes[0].onfocus2=e.childNodes[e._ll?1:0].childNodes[0].onfocus;e.childNodes[e._ll?1:0].childNodes[0].onfocus=function(){if(this._skipOnFocus==true){this._skipOnFocus=false;return}this.onfocus2.apply(this,arguments)}}e.childNodes[e._ll?1:0].childNodes[0]._idd=e._idd;e.childNodes[e._ll?1:0].childNodes[0].onblur=function(){var l=this.parentNode.parentNode;if(l._c.base._formMouseDown){l._c.base._formMouseDown=false;this._skipOnFocus=true;this.focus();this.value=this.value;l=null;return true}var m=l.getForm();m._ccDeactivate(l._idd);c.checkEnteredValue(this.parentNode.parentNode);if(m.live_validate){c._validate(l)}m.callEvent("onBlur",[l._idd]);if(!l._c.isVisible()){l._tempValue=null}m=l=null};e._f=(h.dateFormat||null);e._f0=(h.serverDateFormat||e._f);var g=e.getForm();e._c=new dhtmlXCalendarObject(e.childNodes[e._ll?1:0].childNodes[0],h.skin||g.skin||"dhx_skyblue");e._c._nullInInput=true;e._c.enableListener(e.childNodes[e._ll?1:0].childNodes[0]);if(e._f!=null){e._c.setDateFormat(e._f)}if(!window.dhx4.s2b(h.enableTime)){e._c.hideTime()}if(window.dhx4.s2b(h.showWeekNumbers)){e._c.showWeekNumbers()}if(!isNaN(h.weekStart)){e._c.setWeekStartDay(h.weekStart)}if(typeof(h.calendarPosition)!="undefined"){e._c.setPosition(h.calendarPosition)}if(h.minutesInterval!=null){e._c.setMinutesInterval(h.minutesInterval)}e._c._itemIdd=e._idd;e._c.attachEvent("onBeforeChange",function(l){if(e._value!=l){if(e.checkEvent("onBeforeChange")){if(e.callEvent("onBeforeChange",[e._idd,e._value,l])!==true){return false}}e._tempValue=e._value=l;c.setValue(e,l,false);e.callEvent("onChange",[this._itemIdd,e._value])}return true});e._c.attachEvent("onClick",function(){e._tempValue=null});e._c.attachEvent("onHide",function(){e._tempValue=null});if(a){e._c.base.onmousedown=function(){this._formMouseDown=true;return false}}this.setValue(e,h.value);g=null;return this},getCalendar:function(a){return a._c},setSkin:function(a,c){a._c.setSkin(c)},setValue:function(c,e,a){if(!e||e==null||typeof(e)=="undefined"||e==""){c._value=null;c.childNodes[c._ll?1:0].childNodes[0].value=""}else{c._value=(e instanceof Date?e:c._c._strToDate(e,c._f0||c._c._dateFormat));c.childNodes[c._ll?1:0].childNodes[0].value=c._c._dateToStr(c._value,c._f||c._c._dateFormat)}if(a!==false){c._c.setDate(c._value)}},getValue:function(c,a){var e=c._tempValue||c._c.getDate();if(a===true&&e==null){return""}return(a===true?c._c._dateToStr(e,c._f0||c._c._dateFormat):e)},setDateFormat:function(c,a,e){c._f=a;c._f0=(e||c._f);c._c.setDateFormat(c._f);this.setValue(c,this.getValue(c))},destruct:function(a){a._c.disableListener(a.childNodes[a._ll?1:0].childNodes[0]);a._c.unload();a._c=null;try{delete a._c}catch(c){}a._f=null;try{delete a._f}catch(c){}a._f0=null;try{delete a._f0}catch(c){}a.childNodes[a._ll?1:0].childNodes[0]._idd=null;a.childNodes[a._ll?1:0].childNodes[0].onblur=null;this.d2(a);a=null},checkEnteredValue:function(a){this.setValue(a,a._c.getDate())}};(function(){for(var c in {doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,isEnabled:1,setWidth:1,setReadonly:1,isReadonly:1,setFocus:1,getInput:1}){dhtmlXForm.prototype.items.calendar[c]=dhtmlXForm.prototype.items.input[c]}})();dhtmlXForm.prototype.items.calendar.doAttachChangeLS=dhtmlXForm.prototype.items.select.doAttachChangeLS;dhtmlXForm.prototype.items.calendar.d2=dhtmlXForm.prototype.items.input.destruct;dhtmlXForm.prototype.getCalendar=function(a){return this.doWithItem(a,"getCalendar")};dhtmlXForm.prototype.setCalendarDateFormat=function(c,a,e){this.doWithItem(c,"setDateFormat",a,e)};dhtmlXForm.prototype.items.btn2state={setChecked:function(a,c){a._checked=(c===true?true:false);a.childNodes[a._ll?1:0].lastChild.className="dhxform_img "+a._cssName+"_"+(a._checked?"1":"0");this.doCheckValue(a)}};(function(){for(var c in dhtmlXForm.prototype.items.checkbox){if(!dhtmlXForm.prototype.items.btn2state[c]){dhtmlXForm.prototype.items.btn2state[c]=dhtmlXForm.prototype.items.checkbox[c]}}})();dhtmlXForm.prototype.items.btn2state.render2=dhtmlXForm.prototype.items.btn2state.render;dhtmlXForm.prototype.items.btn2state.render=function(a,c){c._autoInputWidth=false;this.render2(a,c);a._type="btn2state";a._cssName=(typeof(c.cssName)=="undefined"?"btn2state":c.cssName);a._updateImgNode=function(){};a._doOnFocus=function(){a.getForm().callEvent("onFocus",[a._idd])};a._doOnBlur=function(){a.getForm().callEvent("onBlur",[a._idd])};a._doOnKeyUpDown=function(g,e,h){this.callEvent(g,[this.childNodes[this._ll?0:1].childNodes[0],e,this._idd])};this.setChecked(a,a._checked);return this};dhtmlXForm.prototype.setFormData_btn2state=function(a,c){this[c==true||parseInt(c)==1||c=="true"||c==this.getItemValue(a)?"checkItem":"uncheckItem"](a)};dhtmlXForm.prototype.getFormData_btn2state=function(a){return(this.isItemChecked(a)?this.getItemValue(a):0)};dhtmlXForm.prototype.items.colorpicker={colorpicker:{},render:function(e,g){var c=this;e._type="colorpicker";e._enabled=true;this.doAddLabel(e,g);this.doAddInput(e,g,"INPUT","TEXT",true,true,"dhxform_textarea");e._value=(g.value||"");e.childNodes[e._ll?1:0].childNodes[0].value=e._value;var a={input:e.childNodes[e._ll?1:0].childNodes[0],custom_colors:(window.dhx4.s2b(g.enableCustomColors)==true),skin:e.getForm().skin};this.colorpicker[e._idd]=new dhtmlXColorPicker(a);this.colorpicker[e._idd]._nodes[0].valueColor=null;this.colorpicker[e._idd].base.className+=" dhtmlxcp_in_form";if(typeof(g.customColors)!="undefined"){this.colorpicker[e._idd].setCustomColors(g.customColors)}if(typeof(g.cpPosition)=="string"){this.colorpicker[e._idd].setPosition(g.cpPosition)}this.colorpicker[e._idd].attachEvent("onSelect",function(h){if(e._value!=h){if(e.checkEvent("onBeforeChange")){if(e.callEvent("onBeforeChange",[e._idd,e._value,h])!==true){e.childNodes[e._ll?1:0].childNodes[0].value=e._value;return}}e._value=h;c.setValue(e,h);e.callEvent("onChange",[e._idd,e._value])}});this.colorpicker[e._idd].attachEvent("onHide",function(h){var j=e.childNodes[e._ll?1:0].childNodes[0];if(j.value!=e._value){j.value=e._value}j=null});e.childNodes[e._ll?1:0].childNodes[0]._idd=e._idd;return this},getColorPicker:function(a){return this.colorpicker[a._idd]},destruct:function(a){if(this.colorpicker[a._idd].unload){this.colorpicker[a._idd].unload()}this.colorpicker[a._idd]=null;try{delete this.colorpicker[a._idd]}catch(c){}a.childNodes[a._ll?1:0].childNodes[0]._idd=null;this.d2(a);a=null},setSkin:function(a,c){this.colorpicker[a._idd].setSkin(c)}};(function(){for(var c in {doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,isEnabled:1,setWidth:1,setReadonly:1,isReadonly:1,setValue:1,getValue:1,updateValue:1,setFocus:1,getInput:1}){dhtmlXForm.prototype.items.colorpicker[c]=dhtmlXForm.prototype.items.input[c]}})();dhtmlXForm.prototype.items.colorpicker.d2=dhtmlXForm.prototype.items.input.destruct;dhtmlXForm.prototype.getColorPicker=function(a){return this.doWithItem(a,"getColorPicker")};dhtmlXForm.prototype.items.container={render:function(a,c){a._type="container";a._enabled=true;this.doAddLabel(a,c);this.doAddInput(a,c,"DIV",null,true,true,"dhxform_container");return this},getContainer:function(a){return a.childNodes[a._ll?1:0].childNodes[0]},enable:function(a){a._enabled=true;if(String(a.className).search("disabled")>=0){a.className=String(a.className).replace(/disabled/gi,"")}a.callEvent("onEnable",[a._idd])},disable:function(a){a._enabled=false;if(String(a.className).search("disabled")<0){a.className+=" disabled"}a.callEvent("onDisable",[a._idd])},doAttachEvents:function(){},setValue:function(){},getValue:function(){return null}};dhtmlXForm.prototype.getContainer=function(a){return this.doWithItem(a,"getContainer")};(function(){for(var c in dhtmlXForm.prototype.items.input){if(!dhtmlXForm.prototype.items.container[c]){dhtmlXForm.prototype.items.container[c]=dhtmlXForm.prototype.items.input[c]}}})();dhtmlXForm.prototype.items.editor={editor:{},render:function(e,g){var a=(!isNaN(g.rows));e._type="editor";e._enabled=true;e._editor_id=e.getForm().idPrefix+e._idd;this.doAddLabel(e,g);this.doAddInput(e,g,"DIV",null,true,true,"dhxform_item_template");e._value=(g.value||"");var c=this;this.editor[e._editor_id]=new dhtmlXEditor({parent:e.childNodes[e._ll?1:0].childNodes[0],content:e._value,iconsPath:g.iconsPath,toolbar:g.toolbar});this.editor[e._editor_id].attachEvent("onAccess",function(j,l){e.callEvent("_onBeforeEditorAccess",[]);_dhxForm_doClick(document.body,"click");if(j=="blur"){c.doOnBlur(e,this);e.callEvent("onBlur",[e._idd]);if(e.getForm().skin=="dhx_terrace"){var h=e.childNodes[e._ll?1:0].className;if(h.indexOf("dhxeditor_focus")>=0){e.childNodes[e._ll?1:0].className=(h).replace(/\s{0,}dhxeditor_focus/gi,"")}}}else{e.callEvent("onEditorAccess",[e._idd,j,l,this,e.getForm()]);e.callEvent("onFocus",[e._idd]);if(e.getForm().skin=="dhx_terrace"){var h=e.childNodes[e._ll?1:0].className;if(h.indexOf("dhxeditor_focus")==-1){e.childNodes[e._ll?1:0].className+=" dhxeditor_focus"}}}});this.editor[e._editor_id].attachEvent("onToolbarClick",function(h){e.callEvent("onEditorToolbarClick",[e._idd,h,this,e.getForm()])});if(g.readonly){this.setReadonly(e,true)}e.childNodes[e._ll?0:1].childNodes[0].removeAttribute("for");e.childNodes[e._ll?0:1].childNodes[0].onclick=function(){c.editor[e._editor_id]._focus()};return this},doOnBlur:function(e,c){var a=c.getContent();if(e._value!=a){if(e.checkEvent("onBeforeChange")){if(e.callEvent("onBeforeChange",[e._idd,e._value,a])!==true){c.setContent(e._value);return}}e._value=a;e.callEvent("onChange",[e._idd,a])}},setValue:function(a,c){if(a._value==c){return}a._value=c;this.editor[a._editor_id].setContent(a._value)},getValue:function(a){a._value=this.editor[a._editor_id].getContent();return a._value},enable:function(a){if(this.isEnabled(a)!=true){this.editor[a._editor_id].setReadonly(false);this.doEn(a)}},disable:function(a){if(this.isEnabled(a)==true){this.editor[a._editor_id].setReadonly(true);this.doDis(a)}},setReadonly:function(a,c){this.editor[a._editor_id].setReadonly(c)},getEditor:function(a){return(this.editor[a._editor_id]||null)},destruct:function(a){a.childNodes[a._ll?0:1].childNodes[0].onclick=null;this.editor[a._editor_id].unload();this.editor[a._editor_id]=null;this.d2(a);a=null},setFocus:function(a){this.editor[a._editor_id]._focus()}};(function(){for(var c in {doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,setWidth:1,isEnabled:1}){dhtmlXForm.prototype.items.editor[c]=dhtmlXForm.prototype.items.template[c]}})();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")};dhtmlXForm.prototype.items.image={_dimFix:true,render:function(j,l){j._type="image";j._enabled=true;j._fr_name="dhxform_image_"+window.dhx4.newId();j._url=l.url;if(l.inputWidth=="auto"){l.inputWidth=120}if(l.inputHeight=="auto"){l.inputHeight=l.inputWidth}this.doAddLabel(j,l);this.doAddInput(j,l,"DIV",null,true,true,"dhxform_image");var c=j.childNodes[j._ll?1:0].childNodes[0];c.style.height=parseInt(c.style.height)-dhtmlXForm.prototype.items[this.t]._dim+"px";var a=(typeof(l.imageWidth)!="undefined"?parseInt(l.imageWidth):l.inputWidth);var e=(typeof(l.imageHeight)!="undefined"?parseInt(l.imageHeight):l.inputHeight);if(e=="auto"){e=a}j._dim={mw:l.inputWidth-this._dim,mh:l.inputHeight-this._dim,w:a,h:e};c.innerHTML="<img class='dhxform_image_img' border='0' style='visibility:hidden;'><iframe name='"+j._fr_name+"' style='position: absolute; width:0px; height:0px; top:-10px; left:-10px;' frameBorder='0' border='0'></iframe><div class='dhxform_image_wrap'><form action='"+j._url+"' method='POST' enctype='multipart/form-data' target='"+j._fr_name+"' class='dhxform_image_form'><input type='hidden' name='action' value='uploadImage'><input type='hidden' name='itemId' value='"+j._idd+"'><input type='file' name='file' class='dhxform_image_input'></form>";"</div>";this.adjustImage(j);c.childNodes[2].firstChild.lastChild.onchange=function(){j._is_uploading=true;this.parentNode.submit();this.parentNode.parentNode.className="dhxform_image_wrap dhxform_image_in_progress";this.value=""};var g=this;if(window.navigator.userAgent.indexOf("MSIE")>=0){c.childNodes[1].onreadystatechange=function(){if(this.readyState=="complete"){g.doOnUpload(j)}}}else{c.childNodes[1].onload=function(){g.doOnUpload(j)}}this._moreClear=function(){g=null};this.setValue(j,l.value||"");c=null;return this},destruct:function(c){var a=c.childNodes[c._ll?1:0].childNodes[0];a.childNodes[2].firstChild.lastChild.onchange=null;a.childNodes[1].onreadystatechange=null;a.childNodes[1].onload=null;this._moreClear();this.d2(c);c=null},doAttachEvents:function(){},setValue:function(e,h){e._value=(h==null?"":h);var c=e._url+(e._url.indexOf("?")>=0?"&":"?")+"action=loadImage&itemId="+encodeURIComponent(e._idd)+"&itemValue="+encodeURIComponent(e._value)+window.dhx4.ajax._dhxr("&");var g=e.childNodes[e._ll?1:0].childNodes[0].firstChild;if(g.nextSibling.tagName.toLowerCase()=="img"){g.nextSibling.src=c}else{var a=document.createElement("IMG");a.className="dhxform_image_img";a.style.visibility="hidden";a.onload=function(){this.style.visibility="visible";this.parentNode.removeChild(this.nextSibling);this.onload=this.onerror=null};a.onerror=function(){this.onload.apply(this,arguments);this.style.visibility="hidden"};g.parentNode.insertBefore(a,g);a.src=c;a=null;this.adjustImage(e)}g=null},getValue:function(a){return a._value},doOnUpload:function(e){if(e._is_uploading==true){var a=e.childNodes[e._ll?1:0].childNodes[0].lastChild.previousSibling;var c=dhx4.s2j(a.contentWindow.document.body.innerHTML);if(typeof(c)=="object"&&c!=null&&c.state==true&&c.itemId==e._idd){this.setValue(e,c.itemValue,true);e.getForm().callEvent("onImageUploadSuccess",[c.itemId,c.itemVaule,c.extra])}else{e.getForm().callEvent("onImageUploadFail",[e._idd,(c?c.extra:null)])}c=a=null;window.setTimeout(function(){e.childNodes[e._ll?1:0].childNodes[0].lastChild.className="dhxform_image_wrap";e._is_uploading=false},50)}},adjustImage:function(g){var c=g.childNodes[g._ll?1:0].childNodes[0].firstChild;var a=Math.min(g._dim.mw,g._dim.w);var e=Math.min(g._dim.mh,g._dim.h);c.style.width=a+"px";c.style.height=e+"px";c.style.marginLeft=Math.max(0,Math.round(g._dim.mw/2-a/2))+"px";c.style.marginTop=Math.max(0,Math.round(g._dim.mh/2-e/2))+"px";c=g=null}};(function(){for(var c in dhtmlXForm.prototype.items.input){if(!dhtmlXForm.prototype.items.image[c]){dhtmlXForm.prototype.items.image[c]=dhtmlXForm.prototype.items.input[c]}}})();dhtmlXForm.prototype.items.image.d2=dhtmlXForm.prototype.items.input.destruct;dhtmlXForm.prototype.setFormData_image=function(a,c){this.setItemValue(a,c)};dhtmlXForm.prototype.getFormData_image=function(a){return this.getItemValue(a)};dhtmlXForm.prototype.items.upload={render:function(c,e){c._type="up";c._enabled=true;c._checked=true;c.className=e.position+(typeof(e.className)=="string"?" "+e.className:"");var a=document.createElement("DIV");c.appendChild(a);if(!isNaN(e.inputLeft)){c.style.left=parseInt(e.inputLeft)+"px"}if(!isNaN(e.inputTop)){c.style.top=parseInt(e.inputTop)+"px"}if(e.inputWidth!="auto"){if(!isNaN(e.inputWidth)){a.style.width=parseInt(e.inputWidth)+"px"}}c._uploader=new dhtmlXFileUploader(a,e.swfPath||"",e.swfUrl||"",e.mode||null,e.swfLogs,e.slXap||"",e.slUrl||"",e.slLogs||"",e.multiple);c._uploader.setURL(e.url||"");c._uploader.callEvent=c.callEvent;if(typeof(e.autoStart)!="undefined"){c._uploader.setAutoStart(e.autoStart)}if(typeof(e.autoRemove)!="undefined"){c._uploader.setAutoRemove(e.autoRemove)}if(typeof(e.titleScreen)!="undefined"){c._uploader.enableTitleScreen(e.titleScreen)}if(typeof(e.titleText)!="undefined"){c._uploader.setTitleText(e.titleText)}if(e.hidden==true){this.hide(c)}if(e.disabled==true){this.userDisable(c)}if(!(e.inputHeight=="auto"||parseInt(e.inputHeight)==NaN)){c._uploader.p_files.style.height=parseInt(e.inputHeight)+"px"}return this},destruct:function(a){this.doUnloadNestedLists(a);a._uploader.callEvent=function(){return true};a._uploader.unload();a._uploader.callEvent=null;a._uploader=null;a._checked=null;a._enabled=null;a._idd=null;a._type=null;a.onselectstart=null;a._autoCheck=null;a.callEvent=null;a.checkEvent=null;a.getForm=null;while(a.childNodes.length>0){a.removeChild(a.childNodes[0])}a.parentNode.removeChild(a);a=null},setText:function(a,c){},getText:function(a){},enable:function(a){a._enabled=true;if(String(a.className).search("disabled")>=0){a.className=String(a.className).replace(/disabled/gi,"")}a._uploader.enable()},disable:function(a){a._enabled=false;if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._uploader.disable()},setWidth:function(c,a){c.childNodes[0].style.width=a+"px";c._width=a},getWidth:function(a){return a._width||parseInt(a.childNodes[0].style.width)},setValue:function(a){a._uploader.clear()},getValue:function(j){var g=j._uploader.getData();var h={};var e=0;for(var c in g){h[j._idd+"_r_"+e]=g[c].realName;h[j._idd+"_s_"+e]=g[c].serverName;e++}h[j._idd+"_count"]=e;return h},getUploader:function(a){return a._uploader},getStatus:function(a){return a._uploader.getStatus()}};(function(){for(var c in {doUnloadNestedLists:1,isEnabled:1}){dhtmlXForm.prototype.items.upload[c]=dhtmlXForm.prototype.items.checkbox[c]}})();dhtmlXForm.prototype.setFormData_upload=function(a){this.doWithItem(a,"setValue")};dhtmlXForm.prototype.getUploader=function(a){return this.doWithItem(a,"getUploader")};dhtmlXForm.prototype.getUploaderStatus=function(a){return this.doWithItem(a,"getStatus")};function dhtmlXFileUploader(c,m,l,n,s,j,v,h,w){var o=this;if(typeof(n)=="string"&&typeof(this[n])=="function"){this.engine=n}else{this.engine="html4";var g=null;if(typeof(window.FormData)!="undefined"&&typeof(window.XMLHttpRequest)!="undefined"){g=new XMLHttpRequest();if(typeof(g.upload)=="undefined"){g=null}}if(g!=null){this.engine="html5"}else{if(typeof(window.swfobject)!="undefined"||g===false){var g=swfobject.getFlashPlayerVersion();if(g.major>=10){this.engine="flash"}}else{this._sl_v=this.getSLVersion();if(this._sl_v){this.engine="sl"}}}g=null}if(typeof(c)=="string"){c=document.getElementById(c)}this._upload_mp=(typeof(w)!="undefined"?w==true:true);this._upload_dnd=true;this._swf_file_url=m||"";this._swf_upolad_url=l||"";this._swf_logs=s;this._sl_xap=j;this._sl_upload_url=v;this._sl_logs=h;this.p=document.createElement("DIV");this.p.className+=" dhx_file_uploader";c.appendChild(this.p);this.p_files=document.createElement("DIV");this.p_files.className="dhx_upload_files";this.p.appendChild(this.p_files);this.p_controls=document.createElement("DIV");this.p_controls.className="dhx_upload_controls";this.p.appendChild(this.p_controls);this._files={};this._items={};this._data={};this._autoStart=false;this._autoRemove=false;this._titleScreen=true;this._enabled=true;this._uploaded_count=0;this._initToolbar=function(){this.b_opts={info:{onclick:null},browse:{onclick:null,tooltip:"Browse"},upload:{onclick:function(){if(!o._enabled){return}if(!o._uploading){o._uploadStart()}},tooltip:"Upload"},cancel:{onclick:function(){if(!o._enabled){return}o._uploadStop();o._switchButton(false)},tooltip:"Stop"},clear:{onclick:function(){if(!o._enabled){return}o.clear()},tooltip:"Clear list"}};this.buttons={};for(var e in this.b_opts){var x=document.createElement("DIV");x.innerHTML="&nbsp;";x.className="dhx_file_uploader_button button_"+e;x.onclick=this.b_opts[e].onclick;if(this.b_opts[e].tooltip){x.title=this.b_opts[e].tooltip}this.p_controls.appendChild(x);this.buttons[e]=x;x=null}this.buttons.cancel.style.display="none"};this._readableSize=function(x){var e=false;var a=["b","Kb","Mb","Gb","Tb","Pb","Eb"];for(var y=0;y<a.length;y++){if(x>1024){x=x/1024}else{if(e===false){e=y}}}if(e===false){e=a.length-1}return Math.round(x*100)/100+" "+a[e]};this._beforeAddFileToList=function(a,e){return(this.callEvent("onBeforeFileAdd",[a,e])===true)};this._addFileToList=function(C,e,y,A,a){this._checkTitleScreen();var x=document.createElement("DIV");x._idd=C;x.className="dhx_file dhx_file_"+A;x.innerHTML="<div class='dhx_file_param dhx_file_name'>&nbsp;</div><div class='dhx_file_param dhx_file_progress'>"+a+"%</div><div class='dhx_file_param dhx_file_delete' title='Remove from list'>&nbsp;</div>";this.p_files.appendChild(x);x.childNodes[0].style.width=x.offsetWidth-127+"px";this._items[C]=x;this._updateFileNameSize(C);x.childNodes[2].onclick=function(){if(!o._enabled){return}var D=this.parentNode._idd;o._removeFileFromQueue(D)};this.callEvent("onFileAdd",[e])};this._removeFileFromList=function(a){if(!this._items[a]){return}this._items[a].childNodes[2].onclick=null;this._items[a].parentNode.removeChild(this._items[a]);this._items[a]=null;delete this._items[a];if(this._data[a]){this._data[a]=null;delete this._data[a]}this._checkTitleScreen()};this._updateFileNameSize=function(a){this._items[a].childNodes[0].innerHTML=this._files[a].name+(!isNaN(this._files[a].size)?" ("+this._readableSize(this._files[a].size)+")":"&nbsp;");this._items[a].childNodes[0].title=this._files[a].name+(!isNaN(this._files[a].size)?" ("+this._readableSize(this._files[a].size)+")":"")};this._updateFileInList=function(x,e,a){if(!this._items[x]){return}this._items[x].className="dhx_file dhx_file_"+e;this._updateProgress(x,e,a);this._updateFileNameSize(x)};this._updateProgress=function(x,e,a){if(e=="uploading"&&a<100&&this._progress_type=="loader"){this._items[x].childNodes[1].className="dhx_file_param dhx_file_uploading";this._items[x].childNodes[1].innerHTML="&nbsp;"}else{this._items[x].childNodes[1].className="dhx_file_param dhx_file_progress";this._items[x].childNodes[1].innerHTML=a+"%"}this._updateFileNameSize(x)};this._removeFilesByState=function(x){for(var e in this._files){if(x===true||this._files[e].state==x){this._removeFileFromQueue(e)}}};this._switchButton=function(e){if(e==true){this.buttons.upload.style.display="none";this.buttons.cancel.style.display=""}else{var a=this._uploaded_count;this.buttons.upload.style.display="";this.buttons.cancel.style.display="none";this._uploaded_count=0;if(a>0){this.callEvent("onUploadComplete",[a])}}};this._uploadStart=function(){this._switchButton(true);if(!this._uploading){for(var e in this._files){if(this._files[e].state=="fail"){this._files[e].state="added";this._updateFileInList(e,"added",0)}}}this._uploading=true;var x=false;for(var e in this._files){if(!x&&[this._files[e].state]=="added"){x=true;this._files[e].state="uploading";this._updateFileInList(e,"uploading",0);this._doUploadFile(e)}}if(!x){this._uploading=false;this._switchButton(false)}};this._onUploadSuccess=function(A,y,x,a){if(typeof(x)!="undefined"&&this.engine=="flash"){var e=dhx4.s2j(x.data);if(e!=null&&e.state==true&&e.name!=null){y=e.name;if(e.extra!=null){a=e.extra}}else{this._onUploadFail(A,(e!=null&&e.extra!=null?e.extra:null));return}}this._uploaded_count++;this._data[A]={realName:this._files[A].name,serverName:y};this._files[A].state="uploaded";this._updateFileInList(A,"uploaded",100);this.callEvent("onUploadFile",[this._files[A].name,y,a]);if(this._autoRemove){this._removeFileFromQueue(A)}if(this._uploading){this._uploadStart()}};this._onUploadFail=function(e,a){this._files[e].state="fail";this._updateFileInList(e,"fail",0);this.callEvent("onUploadFail",[this._files[e].name,a]);if(this._uploading){this._uploadStart()}};this._onUploadAbort=function(a){this._uploading=false;this._files[a].state="added";this._updateFileInList(a,"added",0);this.callEvent("onUploadCancel",[this._files[a].name])};this._checkTitleScreen=function(){var x=0;for(var e in this._files){x++}if(x==0&&this.p.className.search("dhx_file_uploader_title")<0&&this._titleScreen){this.p.className+=" dhx_file_uploader_title";this.buttons.info.innerHTML=this._titleText;this.buttons.info.style.width=Math.max(this.p_controls.offsetWidth-134,0)+"px"}if((x>0||!this._titleScreen)&&this.p.className.search("dhx_file_uploader_title")>=0){this.p.className=this.p.className.replace(/dhx_file_uploader_title/g,"");this.buttons.info.innerHTML=""}};this.callEvent=function(){};this.upload=function(){if(!this._uploading){this._uploadStart()}};this.setAutoStart=function(a){this._autoStart=(a==true)};this.setAutoRemove=function(a){this._autoRemove=(a==true)};this.enableTitleScreen=function(a){this._titleScreen=(a==true);this._checkTitleScreen()};this.setTitleText=function(a){this._titleText=a;if(this.p.className.search("dhx_file_uploader_title")>=0){this.buttons.info.innerHTML=this._titleText}};this.setURL=function(a){this._url=a};this.setSWFURL=function(a){this._swf_upolad_url=a};this.enable=function(){this._enabled=true;this.p_files.className="dhx_upload_files";this.p_controls.className="dhx_upload_controls"};this.disable=function(){this._enabled=false;this.p_files.className="dhx_upload_files dhx_uploader_dis";this.p_controls.className="dhx_upload_controls dhx_uploader_dis"};this.getStatus=function(){var x=0;for(var e in this._files){if(this._files[e].state!="uploaded"){return -1}x=1}return x};this.getData=function(){return this._data};this.clear=function(){if(this.callEvent("onBeforeClear",[])!==true){return}if(this._uploading){o._uploadStop()}o._switchButton(false);o._removeFilesByState(true);this.callEvent("onClear",[])};this.unload=function(){this._removeFilesByState(true);this._data=null;this._files=null;this._items=null;this._unloadEngine();for(var e in this.buttons){this.buttons[e].onclick=null;this.buttons[e].parentNode.removeChild(this.buttons[e]);this.buttons[e]=null;delete this.buttons[e]}this.buttons=null;for(var e in this.b_opts){this.b_opts[e].onclick=null;this.b_opts[e]=null;delete this.b_opts[e]}this.b_opts=null;this.p_controls.parentNode.removeChild(this.p_controls);this.p_files.parentNode.removeChild(this.p_files);this.p.className=this.p.className.replace(/dhx_file_uploader_title/gi,"").replace(/dhx_file_uploader/gi,"");for(var e in this){this[e]=null}o=e=null};var r=new this[this.engine]();for(var u in r){this[u]=r[u];r[u]=null}u=r=c=null;this._initToolbar();this._initEngine();this._checkTitleScreen();return this}dhtmlXFileUploader.prototype.html5=function(){};dhtmlXFileUploader.prototype.html5.prototype={_initEngine:function(){var c=this;this.buttons.browse.onclick=function(){if(c._enabled){c.f.click()}};this._progress_type="percentage";var a=window.navigator.userAgent;if(a.match(/Windows/gi)!=null&&a.match(/AppleWebKit/gi)!=null&&a.match(/Safari/gi)!=null){if(a.match(/Version\/5\.1\.5/gi)){this._upload_mp=false}if(a.match(/Version\/5\.1[^\.\d{1,}]/gi)){this._upload_dnd=false}if(a.match(/Version\/5\.1\.1/gi)){this._upload_mp=false;this._upload_dnd=false}if(a.match(/Version\/5\.1\.2/gi)){this._upload_dnd=false}if(a.match(/Version\/5\.1\.7/gi)){this._upload_mp=false}}this._addFileInput();if(this._upload_dnd){this.p.ondragenter=function(g){if(!g.dataTransfer){return}g.stopPropagation();g.preventDefault()};this.p.ondragover=function(g){if(!g.dataTransfer){return}g.stopPropagation();g.preventDefault()};this.p.ondrop=function(g){if(!g.dataTransfer){return}g.stopPropagation();g.preventDefault();if(c._enabled){c._parseFilesInInput(g.dataTransfer.files)}};this._titleText="Drag-n-Drop files here or<br>click to select files for upload."}else{this._titleText="Click to select files for upload."}},_addFileInput:function(){if(this.f!=null){this.f.onchange=null;this.f.parentNode.removeChild(this.f);this.f=null}var a=this;this.f=document.createElement("INPUT");this.f.type="file";if(this._upload_mp){this.f.multiple="1"}this.f.className="dhx_uploader_input";this.p_controls.appendChild(this.f);this.f.onchange=function(){a._parseFilesInInput(this.files);if(window.dhx4.isOpera){a._addFileInput()}else{this.value=""}}},_doUploadFile:function(e){var c=this;if(!this._loader){this._loader=new XMLHttpRequest();this._loader.upload.onprogress=function(g){if(c._files[this._idd].state=="uploading"){c._updateFileInList(this._idd,"uploading",Math.round(g.loaded*100/g.total))}};this._loader.onload=function(h){var g=dhx4.s2j(this.responseText);if(typeof(g)=="object"&&g!=null&&typeof(g.state)!="undefined"&&g.state==true){c._onUploadSuccess(this.upload._idd,g.name,null,g.extra);g=null}else{c._onUploadFail(this.upload._idd,(g!=null&&g.extra!=null?g.extra:null))}};this._loader.onerror=function(g){c._onUploadFail(this.upload._idd)};this._loader.onabort=function(g){c._onUploadAbort(this.upload._idd)}}this._loader.upload._idd=e;var a=new FormData();a.append("file",this._files[e].file);this._loader.open("POST",this._url+(String(this._url).indexOf("?")<0?"?":"&")+"mode=html5"+window.dhx4.ajax._dhxr("&"),true);this._loader.setRequestHeader("X-Requested-With","XMLHttpRequest");this._loader.send(a)},_uploadStop:function(){if(!this._uploading||!this._loader){return}this._loader.abort()},_parseFilesInInput:function(c){for(var a=0;a<c.length;a++){this._addFileToQueue(c[a])}},_addFileToQueue:function(a){if(!this._beforeAddFileToList(a.name,a.size)){return}var c=(a._idd||window.dhx4.newId());this._files[c]={file:a,name:a.name,size:a.size,state:"added"};this._addFileToList(c,a.name,a.size,"added",0);if(this._autoStart&&!this._uploading){this._uploadStart(true)}},_removeFileFromQueue:function(g){if(!this._files[g]){return}var c=this._files[g].name;var e=(this._data!=null&&this._data[g]!=null?this._data[g].serverName:null);if(this.callEvent("onBeforeFileRemove",[c,e])!==true){return}var a=false;if(this._uploading&&g==this._loader.upload._idd&&this._files[g].state=="uploading"){this._uploadStop();a=true}this._files[g].file=null;this._files[g].name=null;this._files[g].size=null;this._files[g].state=null;this._files[g]=null;delete this._files[g];this._removeFileFromList(g);this.callEvent("onFileRemove",[c,e]);if(a){this._uploadStart()}},_unloadEngine:function(){this.buttons.browse.onclick=null;this.f.onchange=null;this.f.parentNode.removeChild(this.f);this.f=null;this.p.ondragenter=null;this.p.ondragover=null;this.p.ondrop=null;if(this._loader){this._loader.upload.onprogress=null;this._loader.onload=null;this._loader.onerror=null;this._loader.onabort=null;this._loader.upload._idd=null;this._loader=null}this._initEngine=null;this._doUploadFile=null;this._uploadStop=null;this._parseFilesInInput=null;this._addFileToQueue=null;this._removeFileFromQueue=null;this._unloadEngine=null}};dhtmlXFileUploader.prototype.html4=function(){};dhtmlXFileUploader.prototype.html4.prototype={_initEngine:function(){this._addForm();this._progress_type="loader";this._titleText="Click button<br>to select files for upload."},_addForm:function(){var a=this;var e=window.dhx4.newId();if(!this.k){this.k=document.createElement("DIV");this.k.className="dhx_file_form_cont";this.buttons.browse.appendChild(this.k);this.fr_name="dhx_file_"+window.dhx4.newId();this.k.innerHTML='<iframe name="'+this.fr_name+'" style="height:0px;width:0px;" frameBorder="0"></iframe>';this.fr=this.k.firstChild;if(window.navigator.userAgent.indexOf("MSIE")>=0){this.fr.onreadystatechange=function(){if(this.readyState=="complete"){a._onLoad()}}}else{this.fr.onload=function(){a._onLoad()}}}var c=document.createElement("DIV");c.innerHTML="<form method='POST' enctype='multipart/form-data' target='"+this.fr_name+"' class='dhx_file_form' name='dhx_file_form_"+window.dhx4.newId()+"'><input type='hidden' name='mode' value='html4'><input type='hidden' name='uid' value='"+e+"'><input type='file' name='file' class='dhx_file_input'></form>";this.k.appendChild(c);c.firstChild.lastChild._idd=e;c.firstChild.lastChild.onchange=function(){if(!a._beforeAddFileToList(this.value,null)){return}a._addFileToQueue(this);this.onchange=null;this.parentNode.parentNode.style.display="none";a._addForm()};c=null},_onLoad:function(){if(this._uploading){var a=dhx4.s2j(this.fr.contentWindow.document.body.innerHTML);if(typeof(a)=="object"&&a!=null){if(typeof(a.state)!="undefined"){if(a.state=="cancelled"){this._onUploadAbort(this.fr._idd);a=null;return}else{if(a.state==true){if(typeof(a.size)!="undefined"&&!isNaN(a.size)){this._files[this.fr._idd].size=a.size}this._onUploadSuccess(this.fr._idd,a.name,null,a.extra);a=null;return}}}}this._onUploadFail(this.fr._idd,(a!=null&&a.extra!=null?a.extra:null))}},_addFileToQueue:function(c){var a=c.value.match(/[^\\\/]*$/g);if(a[0]!=null){a=a[0]}else{a=c.value}this._files[c._idd]={name:a,form:c.parentNode,node:c.parentNode.parentNode,input:c,state:"added"};this._addFileToList(c._idd,c.value,false,"added",0);if(this._autoStart&&!this._uploading){this._uploadStart(true)}},_removeFileFromQueue:function(e){var a=this._files[e].name;var c=(this._data!=null&&this._data[e]!=null?this._data[e].serverName:null);if(this.callEvent("onBeforeFileRemove",[a,c])!==true){return}this._files[e].input.onchange=null;this._files[e].form.removeChild(this._files[e].input);this._files[e].node.removeChild(this._files[e].form);this._files[e].node.parentNode.removeChild(this._files[e].node);this._files[e].input=null;this._files[e].name=null;this._files[e].form=null;this._files[e].node=null;this._files[e].size=null;this._files[e].state=null;this._files[e]=null;delete this._files[e];this._removeFileFromList(e);this.callEvent("onFileRemove",[a,c])},_doUploadFile:function(a){this.fr._idd=a;this._files[a].form.action=this._url;this._files[a].form.submit()},_uploadStop:function(){if(!this._uploading){return}this.fr.contentWindow.location.href=(this._url)+(this._url.indexOf("?")<0?"?":"&")+"mode=html4&action=cancel"+window.dhx4.ajax._dhxr("&")},_unloadEngine:function(){if(this.k){this.fr_name=null;this.fr.onreadystatechange=null;this.fr.onload=null;this.fr.parentNode.removeChild(this.fr);this.fr=null;this.k.firstChild.firstChild.lastChild.onchange=null;this.k.parentNode.removeChild(this.k);this.k=null}this._initEngine=null;this._addForm=null;this._onLoad=null;this._addFileToQueue=null;this._removeFileFromQueue=null;this._doUploadFile=null;this._uploadStop=null;this._unloadEngine=null}};dhtmlXFileUploader.prototype.flash=function(){};dhtmlXFileUploader.prototype.flash.prototype={_initEngine:function(){if(window.dhtmlXSWFObjectsPull==null){window.dhtmlXSWFObjectsPull={items:{},callEvent:function(h,e,g){return window.dhtmlXSWFObjectsPull.items[h].uploader[e].apply(window.dhtmlXSWFObjectsPull.items[h].uploader,g)}}}var c=this;this._swf_obj_id="dhtmlXFileUploaderSWFObject_"+window.dhx4.newId();this._swf_file_url=this._swf_file_url+window.dhx4.ajax._dhxr(this._swf_file_url);this.buttons.browse.innerHTML="<div id='"+this._swf_obj_id+"' style='width:100%;height:100%;'></div>";swfobject.embedSWF(this._swf_file_url,this._swf_obj_id,"100%","100%","9",null,{ID:this._swf_obj_id,enableLogs:this._swf_logs},{wmode:"transparent"});var a=swfobject.getFlashPlayerVersion();this._titleText="Engine successfuly inited<br>Flash Player: "+a.major+"."+a.minor+"."+a.release;this._progress_type="percentage";window.dhtmlXSWFObjectsPull.items[this._swf_obj_id]={id:this._swf_obj_id,uploader:this}},_beforeAddFileToQueue:function(a,c){return(this.callEvent("onBeforeFileAdd",[a,c])===true)},_addFileToQueue:function(g,c,e){if(window.dhx4.isIE){var a=document.createElement("INPUT");a.type="TEXT";a.style.position="absolute";a.style.left="0px";a.style.top=window.dhx4.absTop(this.buttons.browse)+"px";a.style.width="10px";document.body.appendChild(a);a.focus();document.body.removeChild(a);a=null}this._files[g]={name:c,size:e,state:"added"};this._addFileToList(g,c,e,"added",0);if(this._autoStart&&!this._uploading){this._uploadStart(true)}},_removeFileFromQueue:function(g){if(!this._files[g]){return}var c=this._files[g].name;var e=(this._data!=null&&this._data[g]!=null?this._data[g].serverName:null);if(this.callEvent("onBeforeFileRemove",[c,e])!==true){return}var a=false;if(this._uploading&&this._files[g].state=="uploading"){this._uploadStop();a=true}swfobject.getObjectById(this._swf_obj_id).removeFileById(g);this._files[g].name=null;this._files[g].size=null;this._files[g].state=null;this._files[g]=null;delete this._files[g];this._removeFileFromList(g);this.callEvent("onFileRemove",[c,e]);if(a){this._uploadStart()}},_doUploadFile:function(a){swfobject.getObjectById(this._swf_obj_id).upload(a,this._swf_upolad_url)},_uploadStop:function(e){for(var c in this._files){if(this._files[c].state=="uploading"){swfobject.getObjectById(this._swf_obj_id).uploadStop(c)}}},_unloadEngine:function(){if(window.dhtmlXSWFObjectsPull.items[this._swf_obj_id]){window.dhtmlXSWFObjectsPull.items[this._swf_obj_id].id=null;window.dhtmlXSWFObjectsPull.items[this._swf_obj_id].uploader=null;window.dhtmlXSWFObjectsPull.items[this._swf_obj_id]=null;delete window.dhtmlXSWFObjectsPull.items[this._swf_obj_id]}this._swf_obj_id=null;this._initEngine=null;this._addFileToQueue=null;this._removeFileFromQueue=null;this._doUploadFile=null;this._uploadStop=null;this._unloadEngine=null}};dhtmlXFileUploader.prototype.sl=function(){};dhtmlXFileUploader.prototype.sl.prototype={_initEngine:function(){if(typeof(this._sl_v)=="undefined"){this._sl_v=this.getSLVersion()}if(!window.dhtmlXFileUploaderSLObjects){window.dhtmlXFileUploaderSLObjects={items:{},callEvent:function(e,a,c){window.dhtmlXFileUploaderSLObjects.items[e].uploader[a].apply(window.dhtmlXFileUploaderSLObjects.items[e].uploader,c)}}}this._sl_obj_id="dhtmlXFileUploaderSLObject_"+window.dhx4.newId();if(this._sl_v!=false){this._titleText="Engine successfuly inited<br>Silverlight version: "+this._sl_v[0]+"."+this._sl_v[1];this.buttons.browse.innerHTML='<div style="width:100%;height:100%;"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%" id="'+this._sl_obj_id+'"><param name="source" value="'+this._sl_xap+'"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="initParams" value="SLID='+this._sl_obj_id+",LOGS="+this._sl_logs+'"/><param name="minRuntimeVersion" value="5.0"/></object></div>'}else{this._titleText="Silverlight plugin not found<br>or version less than 4.0";this.buttons.browse.style.cursor="wait";this.buttons.browse.title=""}this._progress_type="percentage";window.dhtmlXFileUploaderSLObjects.items[this._sl_obj_id]={id:this._sl_obj_id,uploader:this}},_addFileToQueue:function(e,a,c){this._files[e]={name:a,size:c,state:"added"};this._addFileToList(e,a,c,"added",0);if(this._autoStart&&!this._uploading){this._uploadStart(true)}},_removeFileFromQueue:function(c){if(!this._files[c]){return}var a=false;if(this._uploading&&this._files[c].state=="uploading"){this._uploadStop();a=true}document.getElementById([this._sl_obj_id]).Content.a.removeFileById(c);this._files[c].name=null;this._files[c].size=null;this._files[c].state=null;this._files[c]=null;delete this._files[c];this._removeFileFromList(c);if(a){this._uploadStart()}},_doUploadFile:function(c){var a=this._sl_upload_url.split("?");a=(a[1]!=null?"&"+a[1]:"");document.getElementById(this._sl_obj_id).Content.a.upload(c,this._sl_upload_url,a+"&mode=sl"+window.dhx4.ajax._dhxr("&"))},_uploadStop:function(e){this._uploading=false;for(var c in this._files){if(this._files[c].state=="uploading"){document.getElementById(this._sl_obj_id).Content.a.uploadStop(c)}}},_unloadEngine:function(){if(window.dhtmlXFileUploaderSLObjects.items[this._sl_obj_id]){window.dhtmlXFileUploaderSLObjects.items[this._sl_obj_id].id=null;window.dhtmlXFileUploaderSLObjects.items[this._sl_obj_id].uploader=null;window.dhtmlXFileUploaderSLObjects.items[this._sl_obj_id]=null;delete window.dhtmlXFileUploaderSLObjects.items[this._sl_obj_id]}this._sl_obj_id=null;this._initEngine=null;this._addFileToQueue=null;this._removeFileFromQueue=null;this._doUploadFile=null;this._uploadStop=null;this._unloadEngine=null}};dhtmlXFileUploader.prototype.setSLURL=function(a){this._sl_upload_url=a};dhtmlXFileUploader.prototype.getSLVersion=function(){var a=false;if(window.dhx4.isIE){try{var c=new ActiveXObject("AgControl.AgControl");if(c!=null){var j=4,h=0;while(c.isVersionSupported([j,h].join("."))){a=[j,h];if(++h>9){j++;h=0}}}c=null}catch(g){}}else{if(navigator.plugins["Silverlight Plug-In"]!=null){a=navigator.plugins["Silverlight Plug-In"].description.split(".")}}return a};dhtmlXForm.prototype.saveBackup=function(){if(!this._backup){this._backup={};this._backupId=new Date().getTime()}this._backup[++this._backupId]=this.getFormData();return this._backupId};dhtmlXForm.prototype.restoreBackup=function(a){if(this._backup!=null&&this._backup[a]!=null){this.setFormData(this._backup[a])}};dhtmlXForm.prototype.clearBackup=function(a){if(this._backup!=null&&this._backup[a]!=null){this._backup[a]=null;delete this._backup[a]}};dhtmlXForm.prototype.addItem=function(e,a,j,g){var c=null;if(e instanceof Array){c=e[1];e=e[0]}var h=null;if(e!=null){var h=this._getParentForm(e,c);if(h!=null){if(h.item._list==null){if(!a.listParent){a.listParent=h.item._idd}h.form._addItem("list",h.item._idd,[a],null,h.item._idd,j,g)}else{h.item._list[0].addItem(null,a,j,g)}h.form=h.item=null;h=null;this._autoCheck();return}}this._prepareItem(a,j,g);this._autoCheck()};dhtmlXForm.prototype.removeItem=function(c,a){this._removeItem(c,a)};dhtmlXForm.prototype.removeColumn=function(l,j,g,e){var n=null;if(l instanceof Array){n=l[1];l=l[0]}if(l!=null){var h=this._getParentForm(l,n);if(h!=null){if(h.item._list!=null&&h.item._list[0]!=null){h.item._list[0].removeColumn(null,j,g,e)}h.form=h.item=null;h=null}return}j=Math.min(Math.max(j,0),this.cont.childNodes.length-1);if(this.cont.childNodes.length==1){if(g==true){this._removeItemsInColumn(this.cont.childNodes[j])}}else{if(g==true){this._removeItemsInColumn(this.cont.childNodes[j])}else{if(!e){var a=j-1;if(a<0){a=j+1}}else{var a=j+1;if(a>this.cont.childNodes.length-1){a=j-1}}while(this.cont.childNodes[j].childNodes.length>0){this.cont.childNodes[a].appendChild(this.cont.childNodes[j].childNodes[0])}}var m=[];for(var c=0;c<this.base.length;c++){if(this.cont.childNodes[j]!=this.base[c]){m.push(this.base[c])}}this.base=m;this.cont.removeChild(this.cont.childNodes[j]);this.b_index--;m=null}};dhtmlXForm.prototype.getColumnNode=function(e,c){var g=null;var a=null;if(e instanceof Array){a=e[1];e=e[0]}if(e!=null){var h=this._getParentForm(e,a);if(h!=null){if(h.item._list!=null&&h.item._list[0]!=null&&g==null){g=h.item._list[0].getColumnNode(null,c)}h.form=h.item=null;h=null}return g}if(c<0||c>this.cont.childNodes.length-1){return null}return this.cont.childNodes[c]};dhtmlXForm.prototype._removeItemsInColumn=function(g){var a=[];for(var e=0;e<g.childNodes.length;e++){var c=g.childNodes[e];if(c._idd!=null&&c._type!=null){a.push([c._idd,(c._type=="ra"?c._value:null)])}c=null}for(var e=0;e<a.length;e++){this.removeItem(a[e][0],a[e][1])}};dhtmlXForm.prototype._getParentForm=function(j,h){if(this.itemPull[this.idPrefix+j]!=null){return{form:this,item:this.itemPull[this.idPrefix+j]}}for(var c in this.itemPull){if(this.itemPull[c]._type=="ra"&&this.itemPull[c]._group==j&&this.itemPull[c]._value==h){return{form:this,item:this.itemPull[c]}}}var g=null;for(var c in this.itemPull){if(!g&&this.itemPull[c]._list!=null){for(var e=0;e<this.itemPull[c]._list.length;e++){if(!g){g=this.itemPull[c]._list[e]._getParentForm(j,h)}}}}return g};(function(){for(var c in dhtmlXForm.prototype.items){if(!dhtmlXForm.prototype.items[c]._getItemNode){dhtmlXForm.prototype.items[c]._getItemNode=function(a){return a}}}})();dhtmlXForm.prototype._getItemNode=function(c,a){if(a!=null){c=[c,a]}return this.doWithItem(c,"_getItemNode")};dhtmlXForm.prototype.setRequired=function(m,j,h){if(typeof(h)=="undefined"){h=j}else{m=[m,j]}var e=this._getItemNode(m);if(!e){return}h=window.dhx4.s2b(h);e._required=(h==true);if(e._required){if(!e._validate){e._validate=[]}var c=false;for(var g=0;g<e._validate.length;g++){c=(e._validate[g]=="NotEmpty"||c)}if(!c){e._validate.push("NotEmpty")}var l=e.childNodes[e._ll?0:1].childNodes[0];if(!(l.lastChild&&l.lastChild.className&&l.lastChild.className.search(/required/)>=0)){var a=document.createElement("SPAN");a.className="dhxform_item_required";a.innerHTML="*";l.appendChild(a);a=l=null}}else{if(e._validate!=null){var c=e._validate;e._validate=[];for(var g=0;g<c.length;g++){if(c[g]!="NotEmpty"){e._validate.push(c[g])}}if(e._validate.length==0){e._validate=null}}var l=e.childNodes[e._ll?0:1].childNodes[0];if(l.lastChild&&l.lastChild.className&&l.lastChild.className.search(/required/)>=0){l.removeChild(l.lastChild);l=null}}this._resetValidateCss(e);e=null};dhtmlXForm.prototype.setNote=function(h,e,a){if(typeof(a)=="undefined"){a=e}else{h=[h,e]}var c=this._getItemNode(h);if(!c){return}var g=this._getNoteNode(c);if(!g){if(!a.width){a.width=c.childNodes[c._ll?1:0].childNodes[0].offsetWidth}g=document.createElement("DIV");g.className="dhxform_note";if({ch:1,ra:1}[c._type]){c.childNodes[c._ll?1:0].insertBefore(g,c.childNodes[c._ll?1:0].lastChild)}else{c.childNodes[c._ll?1:0].appendChild(g)}}g.innerHTML=a.text;if(a.width!=null){g.style.width=a.width+"px";g._w=a.width}g=null};dhtmlXForm.prototype.clearNote=function(g,c){if(typeof(c)!="undefined"){g=[g,c]}var a=this._getItemNode(g);if(!a){return}var e=this._getNoteNode(a);if(e!=null){e.parentNode.removeChild(e);e=null}};dhtmlXForm.prototype._getNoteNode=function(a){var e=null;for(var c=0;c<a.childNodes[a._ll?1:0].childNodes.length;c++){if(String(a.childNodes[a._ll?1:0].childNodes[c].className).search(/dhxform_note/)>=0){e=a.childNodes[a._ll?1:0].childNodes[c]}}a=null;return e};dhtmlXForm.prototype.setValidation=function(j,g,h){if(typeof(note)=="undefined"){h=g}else{j=[j,g]}var c=this._getItemNode(j);if(!c){return}if(c._validate!=null){for(var e=0;e<c._validate.length;e++){c._validate[e]=null}}c._validate=[];if(typeof(h)=="function"||typeof(window[h])=="function"){c._validate=[h]}else{c._validate=String(h).split(this.separator)}if(c._required){var a=false;for(var e=0;e<c._validate.length;e++){a=(c._validate[e]=="NotEmpty"||a)}if(!a){c._validate.push("NotEmpty")}}c=null};dhtmlXForm.prototype.clearValidation=function(g,e){if(typeof(e)!="undefined"){g=[g,e]}var a=this._getItemNode(g);if(!a){return}if(a._validate!=null){for(var c=0;c<a._validate.length;c++){a._validate[c]=null}}a._validate=a._required?["NotEmpty"]:null;a=null};dhtmlXForm.prototype.reloadOptions=function(a,j){var c=this.getItemType(a);if(!{select:1,multiselect:1,combo:1}[c]){return}if(c=="select"||c=="multiselect"){var g=this.getOptions(a);while(g.length>0){g.remove(0)}g.length=0;g=null;if(typeof(j)=="string"){this.doWithItem(a,"doLoadOptsConnector",j)}else{if(j instanceof Array){this.doWithItem(a,"doLoadOpts",{options:j})}}}if(c=="combo"){var l=this.getCombo(a);l.clearAll();l.setComboValue("");if(typeof(j)=="string"){this.doWithItem(a,"doLoadOptsConnector",j)}else{if(j instanceof Array){var e=null;for(var h=0;h<j.length;h++){if(window.dhx4.s2b(j[h].selected)){e=j[h].value}}l.addOption(j);if(e!=null){this.setItemValue(a,e)}l=null}}}};dhtmlXForm.prototype.setTooltip=function(j,h,g){if(typeof(g)=="undefined"){g=h}else{j=[j,h]}var c=this._getItemNode(j);if(!c){return}var a=null;if(c.childNodes.length==1){a=c.childNodes[0]}else{for(var e=0;e<c.childNodes.length;e++){if(c.childNodes[e].className!=null&&c.childNodes[e].className.search("dhxform_label")>=0){a=c.childNodes[e]}}}if(a!=null){if(g==null||g.length==0){a.removeAttribute("title")}else{a.title=g}}a=null};function dhtmlXAccordion(h,l){var g=this;var e=window.dhx4.transDetect();this.conf={skin:(l||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxacc")||"dhx_skyblue"),css:"dhxacc",icons_path:"",multi_mode:false,last_opened:null,on_active_id:null,on_active_click:false,size_changed:true,def_height:90,total_count:0,hiden_count:0,cont_w:null};this.conf.tr={prop:e.transProp,ev:e.transEv,height_open:"height 0.2s cubic-bezier(0.25,0.1,0.25,1)",height_close:"height 0.18s cubic-bezier(0.25,0.1,0.25,1)",op_open:"opacity 0.16s ease-in",op_close:"opacity 0.2s ease-out",op_v_open:"1",op_v_close:"0.4",dnd_top:"top 0.16s"};this.ofs={m:{},s:{},def:{m:{left:0,right:0,first:0,between:8},s:{left:0,right:0,first:0,between:-1,last:0}},base:{s:{},m:{}},skin:{dhx_web:{s:{between:3},m:{between:3}},dhx_terrace:{m:{between:12,left:0,right:0}}}};if(navigator.userAgent.indexOf("MSIE")>=0||navigator.userAgent.indexOf("Trident")>=0){this.conf.tr.height_open=this.conf.tr.height_close}else{this.conf.tr.height_open=this.conf.tr.height_close}var j=null;if(typeof(h)=="object"&&!h.tagName){j={};for(var c in h){j[c]=h[c];h[c]=null}h=j.parent;j.parent=null}window.dhtmlXCellTop.apply(this,[h,h._ofs]);this._adjustCont();if(this.base._ofs!=null){for(var m in this.ofs.base){if(this.base._ofs[m]!=null){for(var c in this.base._ofs[m]){this.ofs.base[m][c]=this.base._ofs[m][c]}}}}this._applyOffsets=function(){for(var u in this.ofs.def){var r=this.ofs.def[u];var s=(this.ofs.skin[this.conf.skin]!=null&&this.ofs.skin[this.conf.skin][u]!=null?this.ofs.skin[this.conf.skin][u]:null);var o=(this.base._ofs!=null?this.base._ofs[u]:null);for(var n in r){if(s!=null&&s[n]!=null){this.ofs[u][n]=s[n]}else{if(o!=null&&o[n]!=null){this.ofs[u][n]=o[n]}else{this.ofs[u][n]=r[n]}}}}};this._applyOffsets();this.t={};this.addItem=function(w,v,o,n,u){if(w==null){w="a"+window.dhx4.newId()}while(this.t[w]!=null){w="a"+window.dhx4.newId()}var a=new dhtmlXAccordionCell(w,this);a.conf.skin=this.conf.skin;a.setText(v);if(u!=null){a.setIcon(u)}a.cell._accId=w;a.cell.childNodes[a.conf.idx.hdr].onselectstart=function(x){x=x||event;if(x.preventDefault){x.preventDefault()}else{x.returnValue=false}return false};a.cell.childNodes[a.conf.idx.hdr].onclick=function(y){y=y||event;if(y.preventDefault){y.preventDefault()}else{y.returnValue=false}if(g._dnd!=null&&g._dnd.ofs==true){return}var x=(y.target||y.srcElement);var A=null;while(x._accId!=this&&A==null){if(x._accId!=null){A=x._accId}else{x=x.parentNode}}if(A!=null){g._hdrClick(A)}};this.t[w]={cell:a};this.conf.total_count++;if(this.conf.multi_mode){if(typeof(o)=="undefined"){o=true}this.cont.appendChild(a.cell);a.conf.opened=(o==true);if(typeof(n)=="undefined"||n==null||n=="*"){if(n=="*"){a.conf.h_auto=true}n=this.conf.def_height}else{n=Math.max(parseInt(n),30)}a._setSize(this.ofs.m.left,0,this.conf.cont_w||this._getAvailItemWidth(),a.conf.opened?n:a._getHdrHeight());a.cell.style.marginTop=(a.cell==this.cont.firstChild?this.ofs.m.first:this.ofs.m.between)+"px";if(o!=true){a.conf.size.h=n;a._adjustCell();a.cell.className+=" dhx_cell_closed"}this._adjustOpened();if(this._dnd!=null){this._dndAttachEvent(w)}}else{o=(this.conf.last_opened==null?true:window.dhx4.s2b(o));var s=this._updateCellsHeight();if(this.conf.last_opened!=null){if(o){this._closeItem(this.conf.last_opened,false)}else{var r=this.t[this.conf.last_opened].cell;r._setSize(r.conf.size.x,r.conf.size.y,r.conf.size.w,s);r=null}}this.cont.appendChild(a.cell);a.conf.opened=o;a.cell.style.marginTop=String(a.cell==this.cont.firstChild?this.ofs.s.first:this.ofs.s.between)+"px";a._setSize(this.ofs.s.left,0,this.conf.cont_w||this._getAvailItemWidth(),o?s:a._getHdrHeight());if(o){this.conf.last_opened=w}else{a.conf.size.h=s;a._adjustCell();a.cell.className+=" dhx_cell_closed"}}a=null;return this.t[w].cell};this.removeItem=function(a){if(!this.t[a]){return}if(this.conf.last_opened==a){this.conf.last_opened=null}if(this.conf.on_active_id==a){this.conf.on_active_id=null}if(this._dnd!=null){this._dndClearCell(a)}this.conf.total_count--;if(!this.conf.multi_mode&&!this.t[a].cell.conf.visible){this.conf.hiden_count--}this.t[a].cell._unload();this.t[a].cell=null;this.t[a]=null;delete this.t[a];if(!this.conf.unloading){if(!this.conf.multi_mode){this._updateCellsMargin()}this.setSizes()}};this.cells=function(a){return this.t[a].cell};this.enableMultiMode=function(a,n){this.conf.multi_mode=true;if(!isNaN(n)){this.conf.def_height=n}if(a=="auto"||a=="scroll"){this.cont.style.overflowX="hidden";this.cont.style.overflowY=a}else{this.cont.style.overflow="visible"}};this.forEachItem=function(o){for(var n in this.t){if(typeof(o)=="function"){o.apply(this,[this.t[n].cell])}else{if(typeof(o)=="string"&&typeof(window[o])=="function"){window[o].apply(this,[this.t[n].cell])}}}};this._openItem=function(n,a){if(typeof(a)=="undefined"){a=true}if(this.t[n].cell.conf.opened==false){if(this.conf.multi_mode){this.t[n].cell._open(a)}else{if(this.conf.tr.prop==false){if(this.conf.last_opened!=null){this.t[this.conf.last_opened].cell._close(false)}this.t[n].cell._open(false);this.conf.last_opened=n}else{this.conf.on_active_id=n;this.t[n].cell._open(a);if(this.conf.last_opened!=null){this.t[this.conf.last_opened].cell._close(a)}this.conf.last_opened=n}}}};this._closeItem=function(n,a){if(typeof(a)=="undefined"){a=true}if(this.t[n].cell.conf.opened==true){this.t[n].cell._close(a);this.conf.last_opened=null}};this._adjustOpened=function(){if(this.conf.multi_mode==true){if(this._openCache==null){var s=this._getDynData();for(var o in s){this.t[o].cell.conf.size.h=Math.max(s[o],0);this.t[o].cell.cell.style.height=Math.max(s[o],0)+"px"}}else{var u=false;for(var o in this._openCache){u=(u||this._openCache[o])}if(u==true){return}this._openCache=this._openId=null}var n=this._getAvailItemWidth();for(var o in this.t){var r=true;if(n==this.t[o].cell.conf.size.w&&(this._openMode=="close"||this.t[o].cell.conf.opened==false)){r=false}if(r){this.t[o].cell._setWidth(n)}}this._openMode=null}else{if(this.conf.last_opened!=null){var v=this.conf.last_opened;this.t[v].cell._setSize(this.t[v].cell.conf.size.x,this.t[v].cell.conf.size.y,this.t[v].cell.conf.size.w,this.t[v].cell.conf.size.h)}}};this._getDynData=function(C,A){if(typeof(C)=="undefined"||C==null){C={}}if(typeof(A)=="undefined"||A==null){A={}}var v={};var y=0;var u=0;var r=0;for(var n=0;n<this.cont.childNodes.length;n++){var o=this.cont.childNodes[n]._accId;var E=this.t[o].cell;if(E.conf.visible==true){var w=this.ofs.m[r==0?"first":"between"];if(C[o]==true||A[o]==true||(E.conf.opened==true&&E.conf.h_auto==true)){if(A[o]==true){var x=E._getHdrHeight();v[o]=x;u+=x+w}else{if(E.conf.h_auto==true){v[o]=true;u+=w;y++}else{if(C[o]==true){v[o]=E.conf.size.h;u+=E.conf.size.h+w}}}}else{u+=E.cell.offsetHeight+w}r++}E=null}if(y>0){var s=this.cont.offsetHeight-u;var u=Math.floor(s/y);for(var D in v){if(v[D]==true){if(y>1){s-=u}else{u=s}v[D]=u;y--}}}return v};this.setSizes=function(){this._adjustCont();if(this.conf.multi_mode==true){this._adjustOpened()}else{this.conf.cont_w=null;var o=this._updateCellsHeight();for(var n in this.t){if(this.t[n].cell.conf.visible==true){this.t[n].cell._setSize(this.ofs.s.left,0,this.conf.cont_w||this._getAvailItemWidth(),this.t[n].cell.conf.opened?o:this.t[n].cell._getHdrHeight());if(this.t[n].cell.conf.opened!=true){this.t[n].cell.conf.size.h=o;this.t[n].cell._adjustCell()}}}this.conf.size_changed=true}this.callEvent("_onSetSizes",[])};this.setSkin=function(o){this._setBaseSkin(o);this.conf.skin=o;for(var n in this.t){this.t[n].cell.conf.cells_cont=null;this.t[n].cell.conf.skin=this.conf.skin}this._applyOffsets();this._updateCellsMargin();this.setSizes()};this.setIconsPath=function(a){this.conf.icons_path=a};this._getAvailItemWidth=function(){var n=this.ofs[(this.conf.multi_mode?"m":"s")];var a=Math.max(this.cont.clientWidth-n.left-n.right,10);this.conf.cont_w=a;n=null;return a};this._updateCellsHeight=function(){if(this.conf.multi_mode==true){return}var o=this.conf.total_count-this.conf.hiden_count;var r=this.cont.offsetHeight-this.ofs.s.last;if(o==0){return r}var u=false;for(var s=0;s<this.cont.childNodes.length;s++){if(u==false){var v=this.cont.childNodes[s]._accId;if(this.t[v].cell.conf.visible){r-=this.t[v].cell._getHdrHeight()*(o-1);u=true}}}r-=(o-1)*this.ofs.s.between+this.ofs.s.first;for(var n in this.t){if(this.t[n].cell.conf.size!=null){this.t[n].cell.conf.size.h=r;this.t[n].cell._adjustCell()}}return r};this._updateCellsMargin=function(){var a=0;for(var n=0;n<this.cont.childNodes.length;n++){var o=this.cont.childNodes[n]._accId;if(this.t[o].cell.conf.visible){this.t[o].cell.cell.style.marginTop=String(this.ofs[this.conf.multi_mode?"m":"s"][a++==0?"first":"between"])+"px"}}};this._hdrClick=function(n){if(!this.conf.multi_mode&&this.t[n].cell.conf.opened){return}var a=this.t[n].cell.conf.opened;if(this.callEvent("onBeforeActive",[n,(a?false:true)])!==true){return}this.conf.on_active_click=true;this[a?"_closeItem":"_openItem"](n);if(this.conf.multi_mode&&this.conf.tr.prop==false){this._adjustOpened()}};this.unload=function(){this.conf.unloading=true;for(var n in this.t){this.removeItem(n)}this.t=null;if(typeof(this._unloadDND)=="function"){this._unloadDND()}if(this.dhxWins){this.dhxWins.unload();this.dhxWins=null}this._unloadTop();window.dhx4._enableDataLoading(this,null,null,null,"clear");window.dhx4._eventable(this,"clear");this.ofs=this.conf=null;for(var n in this){this[n]=null}g=null};this.setOffset=function(a){this.ofs.s.between=a;this.ofs.m.between=a;this._updateCellsMargin();this.setSizes()};this._initObj=function(n){if(n.skin!=null){this.setSkin(n.skin)}if(window.dhx4.s2b(n.multi_mode)){this.enableMultiMode()}if(n.icons_path!=null){this.setIconsPath(n.icons_path)}if(n.icon_path!=null){this.setIconsPath(n.icon_path)}if(n.items!=null){for(var a=0;a<n.items.length;a++){this.addItem(n.items[a].id,n.items[a].text,n.items[a].open,n.items[a].height,n.items[a].icon||n.items[a].img)}}if(window.dhx4.s2b(n.dnd)==true&&typeof(this.enableDND)=="function"){this.enableDND()}};this._xmlToObj=function(s){var o={items:[]};var a=s.getElementsByTagName("accordion")[0];if(a.getAttribute("skin")!=null){o.skin=a.getAttribute("skin")}if(a.getAttribute("mode")=="multi"){o.multi_mode=true}if(a.getAttribute("multiMode")!=null){o.multi_mode=window.dhx4.s2b(a.getAttribute("multiMode"))}if(a.getAttribute("iconsPath")!=null){o.icons_path=a.getAttribute("iconsPath")}for(var r=0;r<a.childNodes.length;r++){var u=a.childNodes[r];if(typeof(u.tagName)!="undefined"&&String(u.tagName).toLowerCase()=="cell"){var n={};if(u.getAttribute("id")!=null){n.id=u.getAttribute("id")}if(u.getAttribute("icon")!=null){n.icon=u.getAttribute("icon")}if(u.getAttribute("height")!=null){n.height=u.getAttribute("height")}if(u.getAttribute("open")!=null){n.open=window.dhx4.s2b(u.getAttribute("open"))}n.text=u.firstChild.nodeValue;o.items.push(n)}u=null}return o};window.dhx4._enableDataLoading(this,"_initObj","_xmlToObj","accordion",{struct:true});window.dhx4._eventable(this);this._callMainEvent=function(n,a){return this.callEvent(n,a)};this.attachEvent("onActive",function(a){if(a!=null&&this.t[a]!=null&&this.t[a].cell.dataObj!=null&&this.t[a].cell.dataType=="editor"){this.t[a].cell.dataObj._prepareContent(true)}if(a!=null&&this.t[a]!=null&&this.t[a].cell.conf.opened==true){this.t[a].cell._adjustProgress()}});if(typeof(window.dhtmlXWindows)=="function"){this.dhxWins=new dhtmlXWindows();this.dhxWins.setSkin(this.conf.skin)}if(j!=null){this._initObj(j);j=null}return this}dhtmlXAccordion.prototype=new dhtmlXCellTop();function dhtmlXAccordionCell(g,e){dhtmlXCellObject.apply(this,[g,"_acc"]);this.acc=e;this.conf.visible=true;this.conf.docked=true;this.attachEvent("_onCellUnload",function(){this._trDetachEv();this._unloadDocking();this.acc=null;this.cell._accObj=null;this.cell.childNodes[this.conf.idx.hdr].onselectstart=null;this.cell.childNodes[this.conf.idx.hdr].onclick=null;this._initHeader=null;this._getHdrHeight=null;this._setWidth=null;this._adjustCell=null;this._open=null;this._close=null;this._isOpened=null;this._trInitEv=null;this._trAttachEv=null;this._trDetachEv=null;this._trOnEnd=null;this._onActiveCall=null;this.setText=null;this.getText=null;this.setIcon=null;this.clearIcon=null;this.show=null;this.hide=null;this.isVisible=null;this.setHeight=null;this.moveOnTop=null});this.acc.attachEvent("onBeforeDrag",function(j){if(this.t[j].cell.dataObj!=null&&this.t[j].cell.dataType=="editor"){if(this.conf.editor_data==null){this.conf.editor_data={}}this.conf.editor_data[j]=this.t[j].cell.dataObj.getContent()}for(var h in this.t){this.t[h].cell._showCellCover()}return true});this.acc.attachEvent("onDrop",function(j){if(this.t[j].cell.dataObj!=null&&this.t[j].cell.dataType=="editor"){this.t[j].cell.dataObj._prepareContent(true);if(this.conf.editor_data!=null&&this.conf.editor_data[j]!=null){this.t[j].cell.dataObj.setContent(this.conf.editor_data[j]);this.conf.editor_data[j]=null}}for(var h in this.t){this.t[h].cell._hideCellCover()}});this.attachEvent("_onContentLoaded",function(){this.acc._callMainEvent("onContentLoaded",arguments)});this.attachEvent("_onBeforeContentAttach",function(a){if(a=="sidebar"&&this.conf.skin!="dhx_skyblue"){this._hideBorders()}});this._initHeader();this.conf.tr={};for(var c in this.acc.conf.tr){this.conf.tr[c]=this.acc.conf.tr[c]}if(this.conf.tr.prop!=false){this.attachEvent("_onIdxUpdated",function(){this._cellSetOpacity((this.conf.opened?"open":"close"),false)})}this.open=function(a){if(window.dhx4.s2b(a)==true){this.acc.conf.on_active_click=true}this.acc._openItem(this._idd)};this.close=function(a){if(window.dhx4.s2b(a)==true){this.acc.conf.on_active_click=true}this.acc._closeItem(this._idd)};this._setWidth=function(a){if(a!=this.conf.size.w){this.conf.size.w=a;this.cell.style.width=a+"px"}this._adjustCell()};this._adjustCell=function(){this._adjustCont();if(this.dataObj!=null&&typeof(this.dataObj.setSizes)=="function"){this.dataObj.setSizes()}};this._initDocking();return this}dhtmlXAccordionCell.prototype=new dhtmlXCellObject();dhtmlXAccordionCell.prototype._initHeader=function(){var a=document.createElement("DIV");a.className="dhx_cell_hdr";a.innerHTML="<div class='dhx_cell_hdr_text'></div><div class='dhx_cell_hdr_arrow'></div>";this.cell.insertBefore(a,this.cell.childNodes[this.conf.idx.cont]);a=null;this.conf.ofs_nodes.t._getHdrHeight="func";this.conf.hdr={visible:true};this.conf.idx_data.hdr="dhx_cell_hdr";this._updateIdx()};dhtmlXAccordionCell.prototype._getHdrHeight=function(){var a=this.cell.childNodes[this.conf.idx.hdr];var c=a.offsetHeight||a.offsetHeight;a=null;return c};dhtmlXAccordionCell.prototype.showHeader=function(){if(this.conf.hdr.visible==true){return}this.conf.hdr.visible=true;this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_hdr";this._adjustCont(this._idd)};dhtmlXAccordionCell.prototype.hideHeader=function(){if(this.conf.hdr.visible!=true){return}this.conf.hdr.visible=false;this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_hdr dhx_cell_hdr_hidden";this._adjustCont(this._idd)};dhtmlXAccordionCell.prototype.isHeaderVisible=function(){return(this.conf.hdr.visible==true)};dhtmlXAccordionCell.prototype.setText=function(c){this.conf.text=c;var a=this.cell.childNodes[this.conf.idx.hdr];a.childNodes[(a.firstChild.className=="dhx_cell_hdr_icon"?1:0)].innerHTML="<span>"+c+"</span>";a=null};dhtmlXAccordionCell.prototype.getText=function(){return this.conf.text};dhtmlXAccordionCell.prototype.setIcon=function(e){var c=this.cell.childNodes[this.conf.idx.hdr];if(c.firstChild.className!="dhx_cell_hdr_icon"){c.firstChild.className+=" dhx_cell_hdr_icon";var a=document.createElement("IMG");a.className="dhx_cell_hdr_icon";c.insertBefore(a,c.firstChild);a=null}c.firstChild.src=this.acc.conf.icons_path+e;c=null};dhtmlXAccordionCell.prototype.clearIcon=function(){var a=this.cell.childNodes[this.conf.idx.hdr];if(a.firstChild.className=="dhx_cell_hdr_icon"){a.removeChild(a.firstChild);a.firstChild.className=String(a.firstChild.className).replace(/\s{1,}dhx_cell_hdr_icon/gi,"")}a=null};dhtmlXAccordionCell.prototype._open=function(c){var h={};if(this.acc.conf.multi_mode){var g={};g[this._idd]=true;h=this.acc._getDynData(g);this.acc._openId=this._idd;this.acc._openCache={};this.acc._openMode="open"}else{h[this._idd]=this.conf.size.h}for(var e in h){if(this.acc._openCache!=null){this.acc._openCache[e]=true}var j=this.acc.t[e].cell;j.cell.className=String(j.cell.className).replace(/\s{1,}dhx_cell_closed/gi,"");j.conf.opened=true;j._trInitEv("open",c);j.conf.size.h=h[e];j.cell.style.height=j.conf.size.h+"px";j=null}if(this.conf.tr.prop==false){this.acc._openId=this.acc._openCache=this.acc._openMode=null;this._onActiveCall(true)}};dhtmlXAccordionCell.prototype._close=function(c){var g={};if(this.acc.conf.multi_mode){var h={};h[this._idd]=true;g=this.acc._getDynData(null,h);this.acc._openId=this._idd;this.acc._openCache={};this.acc._openMode="close"}else{g[this._idd]=this._getHdrHeight()}for(var e in g){var j=this.acc.t[e].cell;if(this.acc._openCache!=null){this.acc._openCache[e]=true}if(e==this._idd){j.cell.className+=" dhx_cell_closed";j.conf.opened=false;j._trInitEv("close",c)}else{j.conf.size.h=g[e];j._adjustCell();j._trInitEv("open",c)}j.cell.style.height=g[e]+"px";j=null}if(this.conf.tr.prop==false){this.acc._openId=this.acc._openCache=this.acc._openMode=null;this._onActiveCall(false)}};dhtmlXAccordionCell.prototype.isOpened=function(){return(this.conf.opened==true)};dhtmlXAccordionCell.prototype._trInitEv=function(c,a){if(this.conf.tr.prop==false){return}this._trAttachEv();if(!this.cell._accObj){this.cell._accObj=this.acc}if(a){this.cell.style[this.conf.tr.prop]=this.conf.tr["height_"+c]}this._cellSetOpacity(c,a)};dhtmlXAccordionCell.prototype._trAttachEv=function(){if(!this.conf.tr.ev_attached){this.cell._trProp=this.conf.tr.prop;this.cell.addEventListener(this.conf.tr.ev,this._trOnEnd,false);this.conf.tr.ev_attached=true}};dhtmlXAccordionCell.prototype._trDetachEv=function(){if(this.conf.tr.ev_attached){this.cell.addEventListener(this.conf.tr.ev,this._trOnEnd,false);this.conf.tr.ev_attached=false}};dhtmlXAccordionCell.prototype._trOnEnd=function(a){if(a.stopPropagation){a.stopPropagation()}if(a.propertyName=="height"&&this._accObj!=null){this.style[this._trProp]="";if(this._accObj.conf.multi_mode){if(this._accObj._openCache!=null){this._accObj._openCache[this._accId]=false}this._accObj._adjustOpened()}if(this._accObj.conf.on_active_click==true){if(this._accObj.conf.multi_mode){this._accObj._callMainEvent("onActive",[this._accId,this._accObj.t[this._accId].cell.conf.opened]);this._accObj.conf.on_active_click=false}else{if(this._accObj.conf.on_active_id!=null){this._accObj._callMainEvent("onActive",[this._accObj.conf.on_active_id,true])}this._accObj.conf.on_active_id=null;this._accObj.conf.on_active_click=false}}this._accObj=null}};dhtmlXAccordionCell.prototype._cellSetOpacity=function(g,c){for(var e in this.conf.idx){if({hdr:true,pr1:true,pr2:true,cover:true}[e]!=true){if(c){this.cell.childNodes[this.conf.idx[e]].style[this.conf.tr.prop]=this.conf.tr["op_"+g]}this.cell.childNodes[this.conf.idx[e]].style.opacity=this.conf.tr["op_v_"+g]}}};dhtmlXAccordionCell.prototype._onActiveCall=function(a){if(this.acc.conf.on_active_click==false){return}if(this.acc.conf.multi_mode==true){this.acc._callMainEvent("onActive",[this._idd,this.conf.opened]);this.acc.conf.on_active_click=false}else{if(a==true){this.acc._callMainEvent("onActive",[this._idd,true]);this.acc.conf.on_active_click=false}}};dhtmlXAccordionCell.prototype.show=function(){if(this.conf.visible){return}if(this.conf.docked==false){this.dock();return}this.cell.style.display="";this.conf.visible=true;if(!this.acc.conf.multi_mode){this.acc.conf.hiden_count--;this.acc._updateCellsHeight();this.acc._updateCellsMargin()}if(this.acc.conf.size_changed){this.acc.setSizes();this.acc.conf.size_changed=false}else{this.acc._adjustOpened()}};dhtmlXAccordionCell.prototype.hide=function(){if(!this.conf.visible){return}if(!this.acc.conf.multi_mode&&this.conf.opened){this._close(false);this.acc.conf.last_opened=null}this.cell.style.display="none";this.conf.visible=false;if(!this.acc.conf.multi_mode){this.acc.conf.hiden_count++;this.acc._updateCellsHeight();this.acc._updateCellsMargin()}this.acc._adjustOpened()};dhtmlXAccordionCell.prototype.isVisible=function(){return(this.conf.visible==true)};dhtmlXAccordionCell.prototype.setHeight=function(a){if(!this.acc.conf.multi_mode){return}if(a=="*"){this.conf.h_auto=true}else{this.conf.h_auto=false;this.conf.size.h=a}if(this.conf.opened){if(a!="*"){this.cell.style.height=a+"px"}this.acc._adjustOpened()}};dhtmlXAccordionCell.prototype.moveOnTop=function(){if(this.cell.parentNode.firstChild==this.cell){return}this.cell.parentNode.insertBefore(this.cell,this.cell.parentNode.firstChild);this.acc._updateCellsMargin()};dhtmlXAccordionCell.prototype._initDocking=function(){var a=this;this.dock=function(){if(this.acc.dhxWins==null||this.conf.docked==true){return}var c=this.acc.dhxWins.window(this._idd);c.close();this._attachFromCell(c);this.conf.docked=true;this.show();if(this.conf.dock_opened){this.open()}c=null;this.acc._callMainEvent("onDock",[this._idd])};this.undock=function(c,l,g,j){if(this.acc.dhxWins==null||this.conf.docked==false){return}this.conf.dock_opened=this.conf.opened;if(this.acc.dhxWins.window(this._idd)!=null){var e=this.acc.dhxWins.window(this._idd);e.show()}else{if(c==null){c=20}if(l==null){l=20}if(g==null){g=320}if(j==null){j=200}var e=this.acc.dhxWins.createWindow(this._idd,c,l,g,j);e.button("close").hide();e.addUserButton("dock",99,"Dock");e.button("dock").show();e.button("dock").attachEvent("onClick",this._doOnDockClick);e.setText(this.getText());e.attachEvent("onClose",this._doOnDockWinClose)}this.conf.docked=false;this.hide();e._attachFromCell(this);e=null;this.acc._callMainEvent("onUnDock",[this._idd])};this._doOnDockClick=function(){a.dock()};this._doOnDockWinClose=function(c){c.hide();return false};this._unloadDocking=function(){a=null}};dhtmlXCellObject.prototype.attachAccordion=function(a){this.callEvent("_onBeforeContentAttach",["acc"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";this._attachObject(c);if(typeof(a)=="undefined"){a={}}if(typeof(a.skin)=="undefined"){a.skin=this.conf.skin}a.parent=c;if(typeof(window.dhtmlXAccordionCell)=="function"&&this instanceof window.dhtmlXAccordionCell){c._ofs={s:{first:-1},m:{first:4}}}if(typeof(window.dhtmlXTabBarCell)=="function"&&this instanceof window.dhtmlXTabBarCell){if(this.conf.skin=="dhx_skyblue"){c._ofs={t:-1,r:-1,b:-1,l:-1}}}if(typeof(window.dhtmlXSideBarCell)=="function"&&this instanceof window.dhtmlXSideBarCell){if(this.conf.skin=="dhx_web"){c._ofs={};if(this.sidebar.conf.autohide!=true){c._ofs.l=2}if(this.sidebar.conf.header==true){c._ofs.t=3}}else{c._ofs={l:-1};if(this.conf.skin=="dhx_terrace"){if(this.sidebar.conf.autohide==true){c._ofs.l=0}if(this.sidebar.conf.header==true){c._ofs.t=-1}}}}if(typeof(window.dhtmlXCarouselCell)=="function"&&this instanceof window.dhtmlXCarouselCell){this._hideBorders()}this.dataType="acc";this.dataObj=new dhtmlXAccordion(a);a.parent=null;c=a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXAccordion.prototype.enableDND=function(){if(this.conf.multi_mode==false||this._dnd!=null){return}var e=this;this._dnd={tr_count:0,tr_items:{}};this._dndAttachEvent=function(g){var a=this.t[g].cell;if(a.conf.dnd_inited!=true){if(typeof(window.addEventListener)=="function"){a.cell.childNodes[a.conf.idx.hdr].addEventListener("mousedown",this._dndOnMouseDown,false)}else{a.cell.childNodes[a.conf.idx.hdr].attachEvent("onmousedown",this._dndOnMouseDown)}a.conf.dnd_inited=true}a=null};this._dndDetachEvent=function(g){var a=this.t[g].cell;if(a.conf.dnd_inited==true){if(typeof(window.addEventListener)=="function"){a.cell.childNodes[a.conf.idx.hdr].removeEventListener("mousedown",this._dndOnMouseDown,false)}else{a.cell.childNodes[a.conf.idx.hdr].detachEvent("onmousedown",this._dndOnMouseDown)}a.conf.dnd_inited=false}a=null};this._dndOnMouseDown=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}var a=(g.target||g.srcElement);while(a!=null&&a.parentNode!=e.cont){a=a.parentNode}if(a!=null){e._dndDragStart(g,a)}a=null};this._dndDragStart=function(l,h){if(this._dnd.tr_waiting==true){return}var a=-1;for(var j=0;j<h.parentNode.childNodes.length;j++){if(h.parentNode.childNodes[j]==h){a=j}}if(this.callEvent("onBeforeDrag",[h._accId,a])!==true){return}if(typeof(window.addEventListener)=="function"){document.body.addEventListener("mousemove",this._dndOnMouseMove,false);document.body.addEventListener("mouseup",this._dndOnMouseUp,false)}else{document.body.attachEvent("onmousemove",this._dndOnMouseMove,false);document.body.attachEvent("onmouseup",this._dndOnMouseUp,false)}this._dnd.dragObj=h;this._dnd.dy=l.clientY;var g=0;for(var j=0;j<this._dnd.dragObj.parentNode.childNodes.length;j++){this._dnd.dragObj.parentNode.childNodes[j]._ind=j;if(this._dnd.dragObj.parentNode.childNodes[j]==this._dnd.dragObj){this._dnd.dragObj._k0=g;if(j>0){this._dnd.dragObj._k0+=this.ofs.m.between-this.ofs.m.first}g=0}else{g+=this._dnd.dragObj.parentNode.childNodes[j].offsetHeight+parseInt(this._dnd.dragObj.parentNode.childNodes[j].style.marginTop)}}this._dnd.dragObj._k1=g;this._dnd.h=this._dnd.dragObj.offsetHeight;this._dnd.ofs=false};this._dndDoDrag=function(o){if(!this._dnd.dragObj){return}if(this._dnd.tr_waiting==true){return}var l=o.clientY-this._dnd.dy;if(this._dnd.ofs==false&&Math.abs(l)>5){this._dnd.dragObj.className+=" acc_cell_dragged";this._dnd.ofs=true}if(l<0){if(l<-this._dnd.dragObj._k0){l=-this._dnd.dragObj._k0}}else{if(l>this._dnd.dragObj._k1){l=this._dnd.dragObj._k1}}this._dnd.dragObj.style.top=l+"px";var n=o.clientY-this._dnd.dy;var j=0;var g=0;for(var m=this._dnd.dragObj._ind+1;m<=this._dnd.dragObj.parentNode.lastChild._ind;m++){var a=this._dnd.dragObj.parentNode.childNodes[m].offsetHeight;if(n>j+a*2/3){g++}j+=a}var h=this._dnd.dragObj.nextSibling;var m=0;while(h!=null){if(++m<=g&&h!=null){if(!h._ontop){if(h._tm){window.clearTimeout(h._tm)}this._dndAnim(h,false,parseInt(h.style.top||0),-this._dnd.h-this.ofs.m.between);h._ontop=true}}else{if(h._ontop){if(h._tm){window.clearTimeout(h._tm)}this._dndAnim(h,true,parseInt(h.style.top||0),0);h._ontop=false}}h=h.nextSibling}var n=this._dnd.dy-o.clientY;var j=0;var g=0;for(var m=this._dnd.dragObj._ind-1;m>=this._dnd.dragObj.parentNode.firstChild._ind;m--){var a=this._dnd.dragObj.parentNode.childNodes[m].offsetHeight;if(n>j+a*2/3){g++}j+=a}var h=this._dnd.dragObj.previousSibling;var m=0;while(h!=null){if(++m<=g&&h!=null){if(!h._onbottom){if(h._tm){window.clearTimeout(h._tm)}this._dndAnim(h,true,parseInt(h.style.top||0),this._dnd.h+this.ofs.m.between);h._onbottom=true}}else{if(h._onbottom){if(h._tm){window.clearTimeout(h._tm)}this._dndAnim(h,false,parseInt(h.style.top),0);h._onbottom=false}}h=h.previousSibling}};this._dndDragStop=function(n,l){if(l){}else{if(this._dnd.tr_count>0){this._dnd.tr_waiting=true;return}}if(!this._dnd.dragObj){return}this._dnd.dragObj.className=String(this._dnd.dragObj.className).replace(/\s{0,}acc_cell_dragged/gi,"");this._dnd.dragObj.style.top="0px";var m=false;for(var j=0;j<this._dnd.dragObj.parentNode.childNodes.length;j++){var h=this._dnd.dragObj.parentNode.childNodes[j];if(h!=this._dnd.dragObj){if(h._tm){window.clearTimeout(h._tm)}h.style.top="0px";if(h._ontop&&((h.nextSibling!=null&&h.nextSibling._ontop!=true)||!h.nextSibling)){m=(h.nextSibling||null)}if(h._onbottom&&((h.previousSibling!=null&&h.previousSibling._onbottom!=true)||!h.previousSibling)){m=h}}h=null}for(var j=0;j<this._dnd.dragObj.parentNode.childNodes.length;j++){this._dnd.dragObj.parentNode.childNodes[j]._ontop=null;this._dnd.dragObj.parentNode.childNodes[j]._onbottom=null}if(m!==false){if(m==null){this._dnd.dragObj.parentNode.appendChild(this._dnd.dragObj)}else{this._dnd.dragObj.parentNode.insertBefore(this._dnd.dragObj,m)}}var o=this._dnd.dragObj._accId;var g=this._dnd.dragObj._ind;var a=g;for(var j=0;j<this._dnd.dragObj.parentNode.childNodes.length;j++){if(this._dnd.dragObj.parentNode.childNodes[j]==this._dnd.dragObj){a=j}}this._dnd.dragObj=null;this._dnd.tr_waiting=false;this._updateCellsMargin();if(g!=a){this.setSizes();this.callEvent("onDrop",[o,g,a])}if(typeof(window.addEventListener)=="function"){document.body.removeEventListener("mousemove",this._dndOnMouseMove,false);document.body.removeEventListener("mouseup",this._dndOnMouseUp,false)}else{document.body.detachEvent("onmousemove",this._dndOnMouseMove,false);document.body.detachEvent("onmouseup",this._dndOnMouseUp,false)}};this._dndAnim=function(l,a,j,h){if(this.conf.tr.prop!=false){if(!l._dnd_ev){l._dnd_ev=true;l._dnd_tr_prop=this.conf.tr.prop;l.addEventListener(this.conf.tr.ev,this._dndOnTrEnd,false)}if(this._dnd.tr_items[l._accId]!=true){this._dnd.tr_items[l._accId]=true;this._dnd.tr_count++}l.style[this.conf.tr.prop]=this.conf.tr.dnd_top;l.style.top=h+"px";return}var g=false;if(a){j+=5;if(j>=h){j=h;g=true}}else{j-=5;if(j<=h){j=h;g=true}}l.style.top=j+"px";if(l._tm){window.clearTimeout(l._tm)}if(!g){l._tm=window.setTimeout(function(){e._dndAnim(l,a,j,h)},5)}else{l._tm=null}};this._dndOnTrEnd=function(a){if(a.stopPropagation){a.stopPropagation()}if(a.propertyName=="top"){if(e._dnd.tr_items[this._accId]==true){e._dnd.tr_count--;e._dnd.tr_items[this._accId]=false}this.style[this._dnd_tr_prop]="";if(e._dnd.tr_count==0&&e._dnd.tr_waiting==true){e._dndDragStop(null,true)}}};this._dndOnMouseMove=function(a){e._dndDoDrag(a||event)};this._dndOnMouseUp=function(a){e._dndDragStop(a||event)};this._dndClearCell=function(a){if(this.t[a].cell.cell._dnd_ev){this.t[a].cell.cell.addEventListener(this.conf.tr.ev,this._dndOnTrEnd,false)}this._dndDetachEvent(a)};this._unloadDND=function(){for(var g in this){if(String(g).indexOf("_dnd")==0&&typeof(this[g])=="function"){this[g]=null}}this._dnd=null;e=null};for(var c in this.t){this._dndAttachEvent(c)}};function dhtmlXLayoutObject(e,n,v){var s=null;if(e!=null&&typeof(e)=="object"&&typeof(e.tagName)=="undefined"&&e._isCell!=true){s={};if(e.autosize!=null){s.autosize=e.autosize}if(e.cells!=null){s.cells=e.cells}if(e.pattern!=null){n=e.pattern}if(e.skin!=null){v=e.skin}if(e.offsets!=null){s.offsets=e.offsets}e=e.parent}this.cdata={};this.conf={skin:(v||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxlayout")||"dhx_skyblue"),css:"dhxlayout",hh:20,autosize:"b",nextCell:{a:"b",b:"a"},inited:false,b_size:{w:-1,h:-1}};if(typeof(e)=="object"&&e._isCell==true){var m=(typeof(s)!="undefined"&&s!=null?s:{});if(m.pattern==null&&n!=null){m.pattern=n}if(m.skin==null&&v!=null){m.skin=v}var j=e.attachLayout(m);return j}window.dhtmlXCellTop.apply(this,[e,(s==null?null:s.offsets)]);this.conf.sw=this._detectSW();var l=this;this._getLayout=function(){return this};this.mainInst=(e._layoutMainInst!=null?e._layoutMainInst:null);this._getMainInst=function(){if(this.mainInst!=null){return this.mainInst._getMainInst()}return this};this._init=function(A){var y=(typeof(A)=="string"?this.tplData[A]:A);this.conf.mode=y.mode;if(this.conf.mode=="c"){this.cdata.a=new dhtmlXLayoutCell("a",this)}else{this.cdata.a=new dhtmlXLayoutCell("a",this);this.cdata.b=new dhtmlXLayoutCell("b",this)}for(var x in this.cdata){this.cont.appendChild(this.cdata[x].cell);this.cdata[x].conf.init={w:0.5,h:0.5}}if(this.conf.mode!="c"){var w=this._getMainInst();if(w.conf.sep_idx==null){w.conf.sep_idx=1}else{w.conf.sep_idx++}this.sep=new dhtmlXLayoutSepObject(this.conf.mode,w.conf.sep_idx);this.cont.appendChild(this.sep.sep);this.sep._getLayout=function(){return l._getLayout()};w=null}if(y.cells!=null){for(var x in y.cells){if(y.cells[x].width!=null){this.cdata[x].conf.init.w=y.cells[x].width}if(y.cells[x].height!=null){this.cdata[x].conf.init.h=y.cells[x].height}if(y.cells[x].name!=null){this.cdata[x].conf.name=y.cells[x].name;this.cdata[x].setText(y.cells[x].name)}if(y.cells[x].fsize!=null){this.cdata[x].conf.fsize=y.cells[x].fsize}}}this.setSizes();for(var x in this.cdata){this.cdata[x].conf.init={}}if(y.cells!=null){for(var x in y.cells){if(y.cells[x].layout!=null){this.cdata[x].dataNested=true;this.cdata[x]._layoutMainInst=this;this.cdata[x].attachLayout({pattern:y.cells[x].layout});this.cdata[x]._layoutMainInst=null}}}};this.setSizes=function(F,N,J,y){var H=(this.conf.inited==true&&this._getMainInst()==this&&this.checkEvent("onResizeFinish")==true?{}:false);this._adjustCont();var M=this.cont.offsetWidth;var D=this.cont.offsetHeight;if(this.conf.mode=="c"){var a=0;var O=0;var x=M;var L=D;this.cdata.a._setSize(a,O,x,L,F,J,y);this.callEvent("_onSetSizes",[]);if(H&&(!(this.conf.b_size.w==M&&this.conf.b_size.h==D))){this._callMainEvent("onResizeFinish",[])}this.conf.b_size={w:M,h:D};return}if(typeof(N)=="undefined"){var A=(this.conf.mode=="v"?"w":"h");N=this.conf.autosize;if(this.cdata.a.conf.collapsed){N="b"}else{if(this.cdata.b.conf.collapsed){N="a"}else{if(F=="a"||F=="b"){N=this.conf.nextCell[F]}}}}else{}if(this.conf.mode=="v"){if(N=="a"){if(this.cdata.b.conf.init.w!=null){var K=Math.round(M*this.cdata.b.conf.init.w-this.conf.sw/2)}else{var K=this.cdata.b.conf.size.w}var I=M-K;var E=0;var C=D;var a=0;var O=E;var x=I-a-this.conf.sw;var L=C}else{var a=0;var O=0;if(this.cdata.a.conf.init.w!=null){var x=Math.round(M*this.cdata.a.conf.init.w-this.conf.sw/2)-a}else{var x=this.cdata.a.conf.size.w}var L=D-O;var I=a+x+this.conf.sw;var E=O;var K=M-I;var C=L}this.cdata.a._setSize(a,O,x,L,F,J,y);this.cdata.b._setSize(I,E,K,C,F,J,y);this.sep._setSize(a+x,O,this.conf.sw,L)}else{if(N=="a"){if(this.cdata.b.conf.init.h!=null){var C=Math.round(D*this.cdata.b.conf.init.h-this.conf.sw/2)}else{var C=this.cdata.b.conf.size.h}var I=0;var E=D-C;var K=M-I;var a=I;var O=0;var x=K;var L=E-O-this.conf.sw}else{var a=0;var O=0;var x=M-a;if(this.cdata.a.conf.init.h!=null){var L=Math.round(D*this.cdata.a.conf.init.h-this.conf.sw/2)}else{var L=this.cdata.a.conf.size.h}var I=a;var E=O+L+this.conf.sw;var K=x;var C=D-E}this.cdata.a._setSize(a,O,x,L,F,J,y);this.cdata.b._setSize(I,E,K,C,F,J,y);this.sep._setSize(a,O+L,x,this.conf.sw)}this.callEvent("_onSetSizes",[]);if(H&&(!(this.conf.b_size.w==M&&this.conf.b_size.h==D))){this._callMainEvent("onResizeFinish",[])}this.conf.b_size={w:M,h:D}};this._getAvailWidth=function(){var A=[];for(var E=0;E<this.conf.as_cells.h.length;E++){var x=this.cells(this.conf.as_cells.h[E]);var C=x.layout;var y=C.conf.autosize;if(x.conf.collapsed){x=C.cdata[C.conf.nextCell[x._idd]];y=C.conf.nextCell[y]}A.push(Math.max(0,x.getWidth()-x._getMinWidth(y)));C=x=null}var D=(A.length>0?Math.min.apply(window,A):0);return this.cont.offsetWidth-D};this._getAvailHeight=function(){var A=[];for(var D=0;D<this.conf.as_cells.v.length;D++){var w=this.cells(this.conf.as_cells.v[D]);var y=w.layout;var x=y.conf.autosize;if(w.conf.collapsed){w=y.cdata[y.conf.nextCell[w._idd]];x=y.conf.nextCell[x]}A.push(Math.max(0,w.getHeight()-w._getHdrHeight()-w._getMinHeight(x)));y=w=null}var C=Math.min.apply(window,A);return this.cont.offsetHeight-C};this.setSkin=function(a){this._setBaseSkin(a);this.conf.skin=a};this.unload=function(){this.conf.unloading=true;this.mainInst=null;this.parentLayout=null;if(this.items!=null){for(var x=0;x<this.items.length;x++){this.items[x]=null}this.items=null}if(this.dhxWins!=null){this.dhxWins.unload();this.dhxWins=null}if(this.sep!=null){this.sep._unload();this.sep=null}for(var w in this.cdata){this.cdata[w]._unload();this.cdata[w]=null}this._unloadTop();window.dhx4._eventable(this,"clear");for(var w in this){this[w]=null}l=null};this._getWindowMinDimension=function(A){var a=l._getAvailWidth()+7+7;var y=l._getAvailHeight()+7+31;var x={w:Math.max(a,200),h:Math.max(y,140)};A=null;return x};window.dhx4._eventable(this);this._callMainEvent=function(w,a){return this.callEvent(w,a)};this._init(n||"3E");var o=this._availAutoSize[n];if(o!=null){this.conf.pattern=n;this.setAutoSize(o.h[o.h.length-1],o.v[o.v.length-1])}if(typeof(window.dhtmlXWindows)=="function"&&this.mainInst==null){var g={vp_overflow:(this.conf.fs_mode==true?false:"auto")};this.dhxWins=new dhtmlXWindows(g);this.dhxWins.setSkin(this.conf.skin)}this.conf.inited=true;if(this==this._getMainInst()){var r=0;this.items=[];this.forEachItem(function(a){l.items.push(a);a.conf.index=r++})}if(this==this._getMainInst()&&s!=null){if(s.autosize!=null){this.setAutoSize.apply(this,s.autosize)}if(s.cells!=null){for(var c=0;c<s.cells.length;c++){var h=s.cells[c];var u=this.cells(h.id);if(h.width){u.setWidth(h.width)}if(h.height){u.setHeight(h.height)}if(h.text){u.setText(h.text)}if(h.collapsed_text){u.setCollapsedText(h.collapsed_text)}if(h.collapse){u.collapse()}if(h.fix_size){u.fixSize(h.fix_size[0],h.fix_size[1])}if(typeof(h.header)!="undefined"&&window.dhx4.s2b(h.header)==false){u.hideHeader()}}}}s=null;return this}dhtmlXLayoutObject.prototype=new dhtmlXCellTop();dhtmlXLayoutObject.prototype.cells=function(g){for(var c in this.cdata){if(this.cdata[c].conf.name==g){return this.cdata[c]}if(this.cdata[c].dataType=="layout"&&this.cdata[c].dataNested==true&&this.cdata[c].dataObj!=null){var e=this.cdata[c].dataObj.cells(g);if(e!=null){return e}}}return null};dhtmlXLayoutObject.prototype.forEachItem=function(g,e){if(typeof(g)!="function"){return}if(typeof(e)=="undefined"){e=this}for(var c in this.cdata){if(typeof(this.cdata[c].conf.name)!="undefined"){g.apply(e,[this.cdata[c]])}if(this.cdata[c].dataType=="layout"&&this.cdata[c].dataNested==true&&this.cdata[c].dataObj!=null){this.cdata[c].dataObj.forEachItem(g,e)}}e=null};dhtmlXLayoutObject.prototype._forEachSep=function(g,e){if(typeof(g)!="function"){return}if(typeof(e)=="undefined"){e=this}if(this.sep!=null){g.apply(e,[this.sep])}for(var c in this.cdata){if(this.cdata[c].dataType=="layout"&&this.cdata[c].dataNested==true&&this.cdata[c].dataObj!=null){this.cdata[c].dataObj._forEachSep(g,e)}}e=null};dhtmlXLayoutObject.prototype._detectSW=function(){if(this._confGlob.sw==null){this._confGlob.sw={}}if(this._confGlob.sw[this.conf.skin]==null){this._confGlob.sw[this.conf.skin]=window.dhx4.readFromCss("dhxlayout_sep_sw_"+this.conf.skin)}return this._confGlob.sw[this.conf.skin]};dhtmlXLayoutObject.prototype._confGlob={};dhtmlXLayoutObject.prototype.listPatterns=function(){var e=[];for(var c in this.tplData){e.push(c)}return e};dhtmlXLayoutObject.prototype.listAutoSizes=function(){var g=(this.conf.as_cells!=null?(this.conf.as_cells.h).join(";"):"");var e=(this.conf.as_cells!=null?(this.conf.as_cells.v).join(";"):"");var c=this._availAutoSize[this.conf.pattern].h;var a=this._availAutoSize[this.conf.pattern].v;return[g,e,c,a]};dhtmlXLayoutObject.prototype._getCellsNames=function(g){var h={};if(this.cdata[g].conf.name!=null){h[this.cdata[g].conf.name]=true}if(this.cdata[g].dataType=="layout"&&this.cdata[g].dataObj!=null&&this.cdata[g].dataObj.mainInst==this){var c=this.cdata[g].dataObj._getCellsNames("a");var j=this.cdata[g].dataObj._getCellsNames("b");for(var e in c){h[e]=c[e]}for(var e in j){h[e]=j[e]}}return h};dhtmlXLayoutObject.prototype.setAutoSize=function(c,n,o){if(o!==true){var u=this.listAutoSizes();if(u[0]==c&&u[1]==n){return}var l=false;var j=false;for(var e=0;e<u[2].length;e++){l=l||u[2][e]==c}for(var e=0;e<u[3].length;e++){j=j||u[3][e]==n}if(!l||!j){return}}this.conf.as_cells={h:c.split(";"),v:n.split(";")};var g=(this.conf.mode=="v"?"h":"v");for(var r in this.cdata){var h=this._getCellsNames(r);var v=false;for(var e=0;e<this.conf.as_cells[g].length;e++){v=v||h[this.conf.as_cells[g][e]]}if(v){this.conf.autosize=r}if(this.cdata[r].dataType=="layout"&&this.cdata[r].dataObj!=null){this.cdata[r].dataObj.setAutoSize(c,n,true)}}};dhtmlXLayoutObject.prototype.tplData={"1C":{mode:"c",cells:{a:{name:"a"}}},"2E":{mode:"h",cells:{a:{name:"a",fsize:{v:1}},b:{name:"b",fsize:{v:1}}}},"2U":{mode:"v",cells:{a:{name:"a",fsize:{h:1}},b:{name:"b",fsize:{h:1}}}},"3E":{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{name:"b",fsize:{v:[1,2]}},b:{name:"c",fsize:{v:2}}}}}}},"3W":{mode:"v",cells:{a:{name:"a",width:1/3,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{name:"b",fsize:{h:[1,2]}},b:{name:"c",fsize:{h:2}}}}}}},"3J":{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"a",fsize:{h:1,v:2}},b:{name:"c",fsize:{h:1,v:2}}}}},b:{name:"b",fsize:{h:1}}}},"3L":{mode:"v",cells:{a:{name:"a",fsize:{h:1}},b:{layout:{mode:"h",cells:{a:{name:"b",fsize:{h:1,v:2}},b:{name:"c",fsize:{h:1,v:2}}}}}}},"3T":{mode:"h",cells:{a:{name:"a",fsize:{v:1}},b:{layout:{mode:"v",cells:{a:{name:"b",fsize:{h:2,v:1}},b:{name:"c",fsize:{h:2,v:1}}}}}}},"3U":{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"a",fsize:{h:2,v:1}},b:{name:"b",fsize:{h:2,v:1}}}}},b:{name:"c",fsize:{v:1}}}},"4H":{mode:"v",cells:{a:{name:"a",width:1/3,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"b",fsize:{h:[1,2],v:3}},b:{name:"c",fsize:{h:[1,2],v:3}}}}},b:{name:"d",fsize:{h:2}}}}}}},"4I":{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"b",fsize:{h:3,v:[1,2]}},b:{name:"c",fsize:{h:3,v:[1,2]}}}}},b:{name:"d",fsize:{v:2}}}}}}},"4T":{mode:"h",cells:{a:{name:"a",fsize:{v:1}},b:{layout:{mode:"v",cells:{a:{name:"b",width:1/3,fsize:{h:2,v:1}},b:{layout:{mode:"v",cells:{a:{name:"c",fsize:{h:[2,3],v:1}},b:{name:"d",fsize:{h:3,v:1}}}}}}}}}},"4U":{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"a",width:1/3,fsize:{h:2,v:1}},b:{layout:{mode:"v",cells:{a:{name:"b",fsize:{h:[2,3],v:1}},b:{name:"c",fsize:{h:3,v:1}}}}}}}},b:{name:"d",fsize:{v:1}}}},"4E":{mode:"h",cells:{a:{name:"a",height:1/4,fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{name:"b",height:1/3,fsize:{v:[1,2]}},b:{layout:{mode:"h",cells:{a:{name:"c",fsize:{v:[2,3]}},b:{name:"d",fsize:{v:3}}}}}}}}}},"4W":{mode:"v",cells:{a:{name:"a",width:1/4,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{name:"b",width:1/3,fsize:{h:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",fsize:{h:[2,3]}},b:{name:"d",fsize:{h:3}}}}}}}}}},"4A":{mode:"v",cells:{a:{width:1/3,layout:{mode:"h",cells:{a:{name:"a",fsize:{h:1,v:2}},b:{name:"b",fsize:{h:1,v:2}}}}},b:{layout:{mode:"v",cells:{a:{name:"c",fsize:{h:[1,3]}},b:{name:"d",fsize:{h:3}}}}}}},"4L":{mode:"v",cells:{a:{name:"a",width:1/3,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{name:"b",fsize:{h:[1,2]}},b:{layout:{mode:"h",cells:{a:{name:"c",fsize:{h:2,v:3}},b:{name:"d",fsize:{h:2,v:3}}}}}}}}}},"4J":{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{name:"b",fsize:{v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",fsize:{h:3,v:2}},b:{name:"d",fsize:{h:3,v:2}}}}}}}}}},"4F":{mode:"h",cells:{a:{height:1/3,layout:{mode:"v",cells:{a:{name:"a",fsize:{h:2,v:1}},b:{name:"b",fsize:{h:2,v:1}}}}},b:{layout:{mode:"h",cells:{a:{name:"c",fsize:{v:[1,3]}},b:{name:"d",fsize:{v:3}}}}}}},"4G":{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"b",fsize:{h:1,v:[2,3]}},b:{name:"c",fsize:{h:1,v:3}}}}}}}},b:{name:"d",fsize:{h:1}}}},"4C":{mode:"v",cells:{a:{name:"a",fsize:{h:1}},b:{layout:{mode:"h",cells:{a:{name:"b",height:1/3,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"c",fsize:{h:1,v:[2,3]}},b:{name:"d",fsize:{h:1,v:3}}}}}}}}}},"5H":{mode:"v",cells:{a:{width:1/3,name:"a",fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"b",height:1/3,fsize:{h:[1,2],v:3}},b:{layout:{mode:"h",cells:{a:{name:"c",fsize:{h:[1,2],v:[3,4]}},b:{name:"d",fsize:{h:[1,2],v:4}}}}}}}},b:{name:"e",fsize:{h:2}}}}}}},"5I":{mode:"h",cells:{a:{height:1/3,name:"a",fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"b",width:1/3,fsize:{h:3,v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",fsize:{h:[3,4],v:[1,2]}},b:{name:"d",fsize:{h:4,v:[1,2]}}}}}}}},b:{name:"e",fsize:{v:2}}}}}}},"5U":{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"a",width:1/4,fsize:{h:2,v:1}},b:{layout:{mode:"v",cells:{a:{name:"b",width:1/3,fsize:{h:[2,3],v:1}},b:{layout:{mode:"v",cells:{a:{name:"c",fsize:{h:[3,4],v:1}},b:{name:"d",fsize:{h:4,v:1}}}}}}}}}}},b:{name:"e",fsize:{v:1}}}},"5E":{mode:"h",cells:{a:{name:"a",height:1/5,fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{name:"b",height:1/4,fsize:{v:[1,2]}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/3,fsize:{v:[2,3]}},b:{layout:{mode:"h",cells:{a:{name:"d",fsize:{v:[3,4]}},b:{name:"e",fsize:{v:4}}}}}}}}}}}}},"5W":{mode:"v",cells:{a:{name:"a",width:1/5,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{name:"b",width:1/4,fsize:{h:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",width:1/3,fsize:{h:[2,3]}},b:{layout:{mode:"v",cells:{a:{name:"d",fsize:{h:[3,4]}},b:{name:"e",fsize:{h:4}}}}}}}}}}}}},"5K":{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"b",fsize:{h:1,v:[2,3]}},b:{name:"c",fsize:{h:1,v:3}}}}}}}},b:{layout:{mode:"h",cells:{a:{name:"d",fsize:{h:1,v:4}},b:{name:"e",fsize:{h:1,v:4}}}}}}},"5S":{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"a",fsize:{h:1,v:2}},b:{name:"b",fsize:{h:1,v:2}}}}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/3,fsize:{h:1,v:3}},b:{layout:{mode:"h",cells:{a:{name:"d",fsize:{h:1,v:[3,2]}},b:{name:"e",fsize:{h:1,v:4}}}}}}}}}},"5G":{mode:"v",cells:{a:{width:1/3,layout:{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"b",fsize:{h:1,v:[2,3]}},b:{name:"c",fsize:{h:1,v:3}}}}}}}},b:{layout:{mode:"v",cells:{a:{name:"d",fsize:{h:[1,4]}},b:{name:"e",fsize:{h:4}}}}}}},"5C":{mode:"v",cells:{a:{width:2/3,layout:{mode:"v",cells:{a:{name:"a",fsize:{h:2}},b:{name:"b",fsize:{h:[2,1]}}}}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/3,fsize:{h:1,v:3}},b:{layout:{mode:"h",cells:{a:{name:"d",fsize:{h:1,v:[3,4]}},b:{name:"e",fsize:{h:1,v:4}}}}}}}}}},"6H":{mode:"v",cells:{a:{width:1/3,name:"a",fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"b",height:1/4,fsize:{h:[1,2],v:3}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/3,fsize:{h:[1,2],v:[3,4]}},b:{layout:{mode:"h",cells:{a:{name:"d",fsize:{h:[1,2],v:[4,5]}},b:{name:"e",fsize:{h:[1,2],v:5}}}}}}}}}}},b:{name:"f",fsize:{h:2}}}}}}},"6I":{mode:"h",cells:{a:{height:1/3,name:"a",fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"b",width:1/4,fsize:{h:3,v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",width:1/3,fsize:{h:[3,4],v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"d",fsize:{h:[4,5],v:[1,2]}},b:{name:"e",fsize:{h:5,v:[1,2]}}}}}}}}}}},b:{name:"f",fsize:{v:2}}}}}}},"6A":{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"a",height:1/5,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"b",height:1/4,fsize:{h:1,v:[2,3]}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/3,fsize:{h:1,v:[3,4]}},b:{layout:{mode:"h",cells:{a:{name:"d",fsize:{h:1,v:[4,5]}},b:{name:"e",fsize:{h:1,v:5}}}}}}}}}}}}}},b:{name:"f",fsize:{h:1}}}},"6C":{mode:"v",cells:{a:{name:"a",fsize:{h:1}},b:{layout:{mode:"h",cells:{a:{name:"b",height:1/5,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/4,fsize:{h:1,v:[2,3]}},b:{layout:{mode:"h",cells:{a:{name:"d",height:1/3,fsize:{h:1,v:[3,4]}},b:{layout:{mode:"h",cells:{a:{name:"e",fsize:{h:1,v:[4,5]}},b:{name:"f",fsize:{h:1,v:5}}}}}}}}}}}}}}}},"6J":{mode:"v",cells:{a:{width:1/3,layout:{mode:"h",cells:{a:{name:"a",height:1/4,fsize:{h:1,v:2}},b:{layout:{mode:"h",cells:{a:{name:"b",height:1/3,fsize:{h:1,v:[2,3]}},b:{layout:{mode:"h",cells:{a:{name:"c",fsize:{h:1,v:[3,4]}},b:{name:"d",fsize:{h:1,v:4}}}}}}}}}}},b:{layout:{mode:"v",cells:{a:{name:"e",fsize:{h:[1,5]}},b:{name:"f",fsize:{h:5}}}}}}},"6E":{mode:"v",cells:{a:{name:"a",width:1/3,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{name:"b",fsize:{h:[1,2]}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/4,fsize:{h:2,v:3}},b:{layout:{mode:"h",cells:{a:{name:"d",height:1/3,fsize:{h:2,v:[3,4]}},b:{layout:{mode:"h",cells:{a:{name:"e",fsize:{h:2,v:[4,5]}},b:{name:"f",fsize:{h:2,v:5}}}}}}}}}}}}}}}},"6W":{mode:"v",cells:{a:{name:"a",width:1/6,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{name:"b",width:1/5,fsize:{h:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",width:1/4,fsize:{h:[2,3]}},b:{layout:{mode:"v",cells:{a:{name:"d",width:1/3,fsize:{h:[3,4]}},b:{layout:{mode:"v",cells:{a:{name:"e",fsize:{h:[4,5]}},b:{name:"f",fsize:{h:5}}}}}}}}}}}}}}}},"7H":{mode:"v",cells:{a:{name:"a",width:1/3,fsize:{h:1}},b:{layout:{mode:"v",cells:{a:{layout:{mode:"h",cells:{a:{name:"b",height:1/5,fsize:{h:[1,2],v:3}},b:{layout:{mode:"h",cells:{a:{name:"c",height:1/4,fsize:{h:[1,2],v:[3,4]}},b:{layout:{mode:"h",cells:{a:{name:"d",height:1/3,fsize:{h:[1,2],v:[4,5]}},b:{layout:{mode:"h",cells:{a:{name:"e",fsize:{h:[1,2],v:[5,6]}},b:{name:"f",fsize:{h:[1,2],v:6}}}}}}}}}}}}}},b:{name:"g",fsize:{h:2}}}}}}},"7I":{mode:"h",cells:{a:{name:"a",height:1/3,fsize:{v:1}},b:{layout:{mode:"h",cells:{a:{layout:{mode:"v",cells:{a:{name:"b",width:1/5,fsize:{h:3,v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"c",width:1/4,fsize:{h:[3,4],v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"d",width:1/3,fsize:{h:[4,5],v:[1,2]}},b:{layout:{mode:"v",cells:{a:{name:"e",fsize:{h:[5,6],v:[1,2]}},b:{name:"f",fsize:{h:6,v:[1,2]}}}}}}}}}}}}}},b:{name:"g",fsize:{v:2}}}}}}}};dhtmlXLayoutObject.prototype._availAutoSize={"1C":{h:["a"],v:["a"]},"2E":{h:["a;b"],v:["a","b"]},"2U":{h:["a","b"],v:["a;b"]},"3E":{h:["a;b;c"],v:["a","b","c"]},"3W":{h:["a","b","c"],v:["a;b;c"]},"3J":{h:["a;c","b"],v:["a;b","b;c"]},"3L":{h:["a","b;c"],v:["a;b","a;c"]},"3T":{h:["a;b","a;c"],v:["a","b;c"]},"3U":{h:["a;c","b;c"],v:["a;b","c"]},"4H":{h:["a","b;c","d"],v:["a;b;d","a;c;d"]},"4I":{h:["a;b;d","a;c;d"],v:["a","b;c","d"]},"4T":{h:["a;b","a;c","a;d"],v:["a","b;c;d"]},"4U":{h:["a;d","b;d","c;d"],v:["a;b;c","d"]},"4E":{h:["a;b;c;d"],v:["a","b","c","d"]},"4W":{h:["a","b","c","d"],v:["a;b;c;d"]},"4A":{h:["a;b","c","d"],v:["a;c;d","b;c;d"]},"4L":{h:["a","b","c;d"],v:["a;b;c","a;b;d"]},"4J":{h:["a;b;c","a;b;d"],v:["a","b","c;d"]},"4F":{h:["a;c;d","b;c;d"],v:["a;b","c","d"]},"4G":{h:["a;b;c","d"],v:["a;d","b;d","c;d"]},"4C":{h:["a","b;c;d"],v:["a;b","a;c","a;d"]},"5H":{h:["a","b;c;d","e"],v:["a;b;e","a;c;e","a;d;e"]},"5I":{h:["a;b;e","a;c;e","a;d;e"],v:["a","b;c;d","e"]},"5U":{h:["a;e","b;e","c;e","d;e"],v:["a;b;c;d","e"]},"5E":{h:["a;b;c;d;e"],v:["a","b","c","d","e"]},"5W":{h:["a","b","c","d","e"],v:["a;b;c;d;e"]},"5K":{h:["a;b;c","d;e"],v:["a;d","b;d","c;d","a;e","b;e","c;e"]},"5S":{h:["a;b","c;d;e"],v:["a;c","a;d","a;e","b;c","b;d","b;e"]},"5G":{h:["a;b;c","d","e"],v:["a;d;e","b;d;e","c;d;e"]},"5C":{h:["a","b","c;d;e"],v:["a;b;c","a;b;d","a;b;e"]},"6H":{h:["a","b;c;d;e","f"],v:["a;b;f","a;c;f","a;d;f","a;e;f"]},"6I":{h:["a;b;f","a;c;f","a;d;f","a;e;f"],v:["a","b;c;d;e","f"]},"6A":{h:["a;b;c;d;e","f"],v:["a;f","b;f","c;f","d;f","e;f"]},"6C":{h:["a","b;c;d;e;f"],v:["a;b","a;c","a;d","a;e","a;f"]},"6J":{h:["a;b;c;d","e","f"],v:["a;e;f","b;e;f","c;e;f","d;e;f"]},"6E":{h:["a","b","c;d;e;f"],v:["a;b;c","a;b;d","a;b;e","a;b;f"]},"6W":{h:["a","b","c","d","e","f"],v:["a;b;c;d;e;f"]},"7H":{h:["a","b;c;d;e;f","g"],v:["a;b;g","a;c;g","a;d;g","a;e;g","a;f;g"]},"7I":{h:["a;b;g","a;c;g","a;d;g","a;e;g","a;f;g"],v:["a","b;c;d;e;f","g"]}};function dhtmlXLayoutSepObject(e,a){var c=this;this.conf={mode:e,idx:a,blocked:false,locked:false,btn_left:((window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8)&&typeof(window.addEventListener)=="undefined"?1:0)};if(window.dhx4.isIE&&navigator.userAgent.indexOf("MSIE 7.0")>=0&&navigator.userAgent.indexOf("Trident")>=0){this.conf.btn_left=1}this.sep=document.createElement("DIV");this.sep.className="dhxlayout_sep";if(window.dhx4.isIE==true){this.sep.onselectstart=function(){return false}}this.sep.className="dhxlayout_sep dhxlayout_sep_resize_"+this.conf.mode;this._setSize=function(g,m,j,l){this.sep.style.left=g+"px";this.sep.style.top=m+"px";this.sep.style.width=Math.max(j,0)+"px";this.sep.style.height=Math.max(l,0)+"px"};this._lockSep=function(g){this.conf.locked=(g==true);this._blockSep()};this._setWH=function(g){var h=this._getLayout();h.conf.sw=(g==null?h._detectSW():Math.max(parseInt(g)||-1,-1));h._getMainInst().setSizes();h=null};this._blockSep=function(){var g=this._getLayout();var h=g.cdata.a.conf.collapsed||g.cdata.b.conf.collapsed||this.conf.locked;g=null;if(this.conf.blocked==h){return}this.sep.className="dhxlayout_sep"+(h?"":" dhxlayout_sep_resize_"+this.conf.mode);this.conf.blocked=h};this._beforeResize=function(h){if(this.conf.blocked){return}if(this.conf.resize!=null&&this.conf.resize.active==true){return}if(h.type==window.dhx4.dnd.evs.start){this.sep.className+=" dhxlayout_sep_resize_actv";var l=(h.pageX||h.touches[0].pageX);var j=(h.pageY||h.touches[0].pageY)}else{if(h.button!==this.conf.btn_left){return}var l=h.clientX;var j=h.clientY}if(window.dhx4.dnd.p_en==true){window.dhx4.dnd._touchOff()}var g=this._getLayout();this.conf.resize={sx:l,sy:j,tx:h.layerX,ty:h.layerY,sep_x:parseInt(this.sep.style.left),sep_y:parseInt(this.sep.style.top),min_wa:g.cdata.a._getAvailWidth("a"),min_wb:g.cdata.b._getAvailWidth("b"),min_ha:g.cdata.a._getAvailHeight("a"),min_hb:g.cdata.b._getAvailHeight("b")};this.conf.resize.nx=this.conf.resize.sep_x;this.conf.resize.ny=this.conf.resize.sep_y;if(typeof(window.addEventListener)=="function"){window.addEventListener("mousemove",this._doOnMouseMove,false);window.addEventListener("mouseup",this._doOnMouseUp,false);window.addEventListener(window.dhx4.dnd.evs.move,this._doOnMouseMove,false);window.addEventListener(window.dhx4.dnd.evs.end,this._doOnMouseUp,false)}else{document.body.attachEvent("onmousemove",this._doOnMouseMove);document.body.attachEvent("onmouseup",this._doOnMouseUp)}g=null};this._onResize=function(j){if(!this.conf.resize.active){this._initResizeArea();this.conf.resize.active=true}if(this.conf.mode=="v"){var g=(j.type=="mousemove"?j.clientX:(j.pageX||j.touches[0].pageX));var h=this.conf.resize.sx-g;this.conf.resize.nx=this.conf.resize.sep_x-h;if(this.conf.resize.nx>this.conf.resize.sep_x+this.conf.resize.min_wb){this.conf.resize.nx=this.conf.resize.sep_x+this.conf.resize.min_wb}else{if(this.conf.resize.nx<this.conf.resize.sep_x-this.conf.resize.min_wa){this.conf.resize.nx=this.conf.resize.sep_x-this.conf.resize.min_wa}}this.r_sep.style.left=this.conf.resize.nx+"px"}else{var l=(j.type=="mousemove"?j.clientY:(j.pageY||j.touches[0].pageY));var h=this.conf.resize.sy-l;this.conf.resize.ny=this.conf.resize.sep_y-h;if(this.conf.resize.ny>this.conf.resize.sep_y+this.conf.resize.min_hb){this.conf.resize.ny=this.conf.resize.sep_y+this.conf.resize.min_hb}else{if(this.conf.resize.ny<this.conf.resize.sep_y-this.conf.resize.min_ha){this.conf.resize.ny=this.conf.resize.sep_y-this.conf.resize.min_ha}}this.r_sep.style.top=this.conf.resize.ny+"px"}};this._afterResize=function(o){if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousemove",this._doOnMouseMove,false);window.removeEventListener("mouseup",this._doOnMouseUp,false);window.removeEventListener(window.dhx4.dnd.evs.move,this._doOnMouseMove,false);window.removeEventListener(window.dhx4.dnd.evs.end,this._doOnMouseUp,false)}else{document.body.detachEvent("onmousemove",this._doOnMouseMove);document.body.detachEvent("onmouseup",this._doOnMouseUp)}if(!this.conf.resize.active){this.conf.resize=null;return}if(o.type==window.dhx4.dnd.evs.end){this.sep.className=this.sep.className.replace(/\s{0,}dhxlayout_sep_resize_actv/gi,"")}else{if(o.button!==this.conf.btn_left){return}}var l=this._getLayout();var h=l._getMainInst();var m=(h.checkEvent("onPanelResizeFinish")==true?{}:false);if(m!==false){h.forEachItem(function(s){m[s.conf.name]={w:s.conf.size.w,h:s.conf.size.h};s=null})}var j=this.conf.resize.nx-this.conf.resize.sep_x;var g=this.conf.resize.ny-this.conf.resize.sep_y;l.cdata.a._setSize(l.cdata.a.conf.size.x,l.cdata.a.conf.size.y,l.cdata.a.conf.size.w+j,l.cdata.a.conf.size.h+g,"a");l.cdata.b._setSize(l.cdata.b.conf.size.x+j,l.cdata.b.conf.size.y+g,l.cdata.b.conf.size.w-j,l.cdata.b.conf.size.h-g,"b");this._setSize(parseInt(this.r_sep.style.left),parseInt(this.r_sep.style.top),parseInt(this.r_sep.style.width),parseInt(this.r_sep.style.height));if(window.dhx4.isIE){var r=this;window.setTimeout(function(){r._removeResizeArea();r=null},1)}else{this._removeResizeArea()}if(m!==false){var n=[];h.forEachItem(function(s){var u=m[s.conf.name];if(!(u.w==s.conf.size.w&&u.h==s.conf.size.h)){n.push(s.conf.name)}s=null});h._callMainEvent("onPanelResizeFinish",[n])}h=l=null;this.conf.resize.active=false;this.conf.resize=null;if(window.dhx4.dnd.p_en==true){window.dhx4.dnd._touchOn()}};this._initResizeArea=function(){if(this.r_sep==null){this.r_sep=document.createElement("DIV");this.r_sep.className="dhxlayout_resize_sep";this.r_sep.style.left=this.sep.style.left;this.r_sep.style.top=this.sep.style.top;this.r_sep.style.width=this.sep.style.width;this.r_sep.style.height=this.sep.style.height;this.sep.parentNode.appendChild(this.r_sep);if(window.dhx4.isIE){this.r_sep.onselectstart=function(){return false}}}if(this.r_area==null){this.r_area=document.createElement("DIV");this.r_area.className="dhxlayout_resize_area";this.sep.parentNode.appendChild(this.r_area);if(window.dhx4.isIE){this.r_area.onselectstart=function(){return false}}if(this.conf.mode=="v"){var g=parseInt(this.r_sep.style.left)-this.conf.resize.min_wa;var m=parseInt(this.r_sep.style.top);var j=this.conf.resize.min_wa+this.conf.resize.min_wb+parseInt(this.r_sep.style.width);var l=parseInt(this.r_sep.style.height)}else{var g=parseInt(this.r_sep.style.left);var m=parseInt(this.r_sep.style.top)-this.conf.resize.min_ha;var j=parseInt(this.r_sep.style.width);var l=this.conf.resize.min_ha+this.conf.resize.min_hb+parseInt(this.r_sep.style.height)}this.r_area.style.left=g+"px";this.r_area.style.top=m+"px";if(!dhtmlXLayoutObject.prototype._confGlob.reszieCover){dhtmlXLayoutObject.prototype._confGlob.reszieCover={};this.r_area.style.width=j+"px";this.r_area.style.height=l+"px";dhtmlXLayoutObject.prototype._confGlob.reszieCover.w=parseInt(this.r_area.style.width)-this.r_area.offsetWidth;dhtmlXLayoutObject.prototype._confGlob.reszieCover.h=parseInt(this.r_area.style.height)-this.r_area.offsetHeight}this.r_area.style.width=j+dhtmlXLayoutObject.prototype._confGlob.reszieCover.w+"px";this.r_area.style.height=l+dhtmlXLayoutObject.prototype._confGlob.reszieCover.h+"px"}document.body.className+=" dhxlayout_resize_"+this.conf.mode};this._removeResizeArea=function(){this.r_sep.onselectstart=null;this.r_sep.parentNode.removeChild(this.r_sep);this.r_sep=null;this.r_area.onselectstart=null;this.r_area.parentNode.removeChild(this.r_area);this.r_area=null;document.body.className=String(document.body.className).replace(/\s{0,}dhxlayout_resize_[vh]/gi,"")};this._doOnMouseDown=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.cancelBubble=true}c._beforeResize(g)};this._doOnBodyMouseDown=function(g){g=g||event;if(c.conf.resize==null){return}if(c.conf.resize.active==true&&g.button!==c.conf.btn_left){if(g.preventDefault){g.preventDefault()}g.returnValue=false;g.cancelBubble=true;return false}};this._doOnMouseMove=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.cancelBubble=true}c._onResize(g)};this._doOnMouseUp=function(g){g=g||event;if(g.type=="mouseup"&&g.button!==c.conf.btn_left){return}c._afterResize(g)};if(typeof(window.addEventListener)=="function"){this.sep.addEventListener("mousedown",this._doOnMouseDown,false);this.sep.addEventListener(window.dhx4.dnd.evs.start,this._doOnMouseDown,false);document.body.addEventListener("mousedown",this._doOnBodyMouseDown,false);document.body.addEventListener("contextmenu",this._doOnBodyMouseDown,false)}else{this.sep.attachEvent("onmousedown",this._doOnMouseDown);document.body.attachEvent("onmousedown",this._doOnBodyMouseDown);document.body.attachEvent("oncontextmenu",this._doOnBodyMouseDown)}this._unload=function(){if(typeof(window.addEventListener)=="function"){this.sep.removeEventListener("mousedown",this._doOnMouseDown,false);this.sep.removeEventListener(window.dhx4.dnd.evs.start,this._doOnMouseDown,false);document.body.removeEventListener("mousedown",this._doOnBodyMouseDown,false);document.body.removeEventListener("contextmenu",this._doOnBodyMouseDown,false)}else{this.sep.detachEvent("onmousedown",this._doOnMouseDown);document.body.detachEvent("onmousedown",this._doOnBodyMouseDown);document.body.detachEvent("oncontextmenu",this._doOnBodyMouseDown)}if(window.dhx4.isIE==true){this.sep.onselectstart=null}this.sep.parentNode.removeChild(this.sep);this.sep=null;for(var g in this){this[g]=null}c=null};return this}dhtmlXLayoutObject.prototype.setSeparatorSize=function(e,g){if(typeof(e)=="number"){var h=this.setSeparatorSize({index:e,current:-1},g);if(h.sep!=null){h.sep._setWH(g)}return}for(var c in this.cdata){if(this.cdata[c].dataType=="layout"&&this.cdata[c].dataNested==true&&this.cdata[c].dataObj!=null){e=this.cdata[c].dataObj.setSeparatorSize(e,g);if(e.sep!=null){return e}}if(c=="a"&&this.sep!=null){e.current++;if(e.index==e.current){return{sep:this.sep}}}}return e};window.dhtmlXLayoutCell=function(g,e){dhtmlXCellObject.apply(this,[g,"_layout"]);var c=this;this.layout=e;this.conf.skin=this.layout.conf.skin;this.conf.mode=this.layout.conf.mode;this.conf.collapsed=false;this.conf.fixed={w:false,h:false};this.conf.docked=true;this.conf.min_width=26;this.conf.min_height=26;this.attachEvent("_onCellUnload",function(){this.cell.childNodes[this.conf.idx.hdr].ondblclick=null;if(this.conf.mode!="c"){this.cell.childNodes[this.conf.idx.hdr].lastChild.onclick=null}this._unloadDocking();this.layout=null;c=null});this._hdrInit();this.cell.childNodes[this.conf.idx.hdr].ondblclick=function(){var h=c.layout._getMainInst();h._callMainEvent("onDblClick",[c.conf.name]);h=null};this.attachEvent("_onContentLoaded",function(){var h=this.layout._getMainInst();h._callMainEvent("onContentLoaded",[this.conf.name]);h=null});if(this.conf.mode!="c"){var a=document.createElement("DIV");a.className="dhxlayout_arrow dhxlayout_arrow_"+this.conf.mode+this._idd;this.cell.childNodes[this.conf.idx.hdr].appendChild(a);a.onclick=function(h){if(c.conf.collapsed){c.expand()}else{c.collapse()}};a=null}this.attachEvent("_onBeforeContentAttach",function(h){if(h=="tabbar"||h=="layout"||h=="acc"){this._hideBorders()}if(h=="sidebar"&&this.conf.skin!="dhx_skyblue"){this._hideBorders();this.showHeader()}});this._initDocking();return this};dhtmlXLayoutCell.prototype=new dhtmlXCellObject();dhtmlXLayoutCell.prototype.getId=function(){return this.conf.name};dhtmlXLayoutCell.prototype._initDocking=function(){var a=this;this.dock=function(){var e=this.layout._getMainInst();if(e.dhxWins==null||this.conf.docked){e=null;return}var c=e.dhxWins.window(this.conf.name);c.close();this._attachFromCell(c);this.conf.docked=true;if(!this.conf.dock_collapsed){this.expand()}e._callMainEvent("onDock",[this.conf.name]);e=c=null};this.undock=function(c,m,j,l){var g=this.layout._getMainInst();if(g.dhxWins==null||this.conf.docked==false){g=null;return}this.conf.dock_collapsed=this.conf.collapsed;if(!this.conf.collapsed){this.collapse()}if(g.dhxWins.window(this.conf.name)!=null){var e=g.dhxWins.window(this.conf.name);e.show()}else{if(c==null){c=20}if(m==null){m=20}if(j==null){j=320}if(l==null){l=200}var e=g.dhxWins.createWindow(this.conf.name,c,m,j,l);e.button("close").hide();e.addUserButton("dock",99,"Dock");e.button("dock").show();e.button("dock").attachEvent("onClick",this._doOnDockClick);e.setText(this.getText());e.attachEvent("onClose",this._doOnDockWinClose)}this.conf.docked=false;e._attachFromCell(this);g._callMainEvent("onUnDock",[this.conf.name]);g=e=null};this._doOnDockClick=function(){a.dock()};this._doOnDockWinClose=function(c){c.hide();return false};this._unloadDocking=function(){a=null}};dhtmlXLayoutCell.prototype._hdrInit=function(){var c="";if(window.dhx4.isIE){if(navigator.userAgent.indexOf("MSIE 9.0")!=-1){c=" dhx_cell_hdr_text_ie9"}else{if(window.dhx4.isIE8){c=" dhx_cell_hdr_text_ie8"}else{if(window.dhx4.isIE7){c=" dhx_cell_hdr_text_ie7"}else{if(window.dhx4.isIE6){c=" dhx_cell_hdr_text_ie6"}}}}}else{if(window.dhx4.isChrome||window.dhx4.isKHTML){c=" dhx_cell_hdr_text_chrome"}}var a=document.createElement("DIV");a.className="dhx_cell_hdr";a.innerHTML="<div class='dhx_cell_hdr_text"+c+"'></div>";this.cell.insertBefore(a,this.cell.childNodes[this.conf.idx.cont]);a=null;this.conf.ofs_nodes.t._getHdrHeight="func";this.conf.hdr={visible:true};this.conf.idx_data.hdr="dhx_cell_hdr";this._updateIdx();this.attachEvent("_onSetSize",this._hdrOnSetSize);this.attachEvent("_onBorderChange",this._hdrOnBorderChange);this.attachEvent("_onViewSave",this._hdrOnViewSave);this.attachEvent("_onViewRestore",this._hdrOnViewRestore)};dhtmlXLayoutCell.prototype.showHeader=function(a){if(this.conf.hdr.visible||this.conf.collapsed){return}if(this.conf.hdr.w_saved>this._getAvailWidth()||this.conf.hdr.h_saved>this._getAvailHeight()){return}this.conf.hdr.w_saved=this.conf.hdr.h_saved=null;this.conf.hdr.visible=true;this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_hdr";if(a!==true){this._adjustCont(this._idd)}};dhtmlXLayoutCell.prototype.hideHeader=function(a){if(!this.conf.hdr.visible||this.conf.collapsed){return}this.conf.hdr.w_saved=this._getMinWidth(this._idd);this.conf.hdr.h_saved=this._getMinHeight(this._idd);this.conf.hdr.visible=false;this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_hdr dhx_cell_hdr_hidden";this._hdrUpdBorder();this._mtbUpdBorder();if(a!==true){this._adjustCont(this._idd)}};dhtmlXLayoutCell.prototype.isHeaderVisible=function(){return(this.conf.hdr.visible==true)};dhtmlXLayoutCell.prototype.showArrow=function(){this.cell.childNodes[this.conf.idx.hdr].childNodes[1].style.display=""};dhtmlXLayoutCell.prototype.hideArrow=function(){this.cell.childNodes[this.conf.idx.hdr].childNodes[1].style.display="none"};dhtmlXLayoutCell.prototype.isArrowVisible=function(){return(this.cell.childNodes[this.conf.idx.hdr].childNodes[1].style.display=="")};dhtmlXLayoutCell.prototype.setText=function(a){this.conf.hdr.text=a;this._hdrUpdText()};dhtmlXLayoutCell.prototype.getText=function(){return this.conf.hdr.text};dhtmlXLayoutCell.prototype.setCollapsedText=function(a){this.conf.hdr.text_collapsed=a;this._hdrUpdText()};dhtmlXLayoutCell.prototype.getCollapsedText=function(){return(this.conf.hdr.text_collapsed!=null?this.conf.hdr.text_collapsed:this.conf.hdr.text)};dhtmlXLayoutCell.prototype._hdrUpdText=function(){var a=(this.conf.collapsed==true&&this.conf.hdr.text_collapsed!=null?this.conf.hdr.text_collapsed:this.conf.hdr.text);this.cell.childNodes[this.conf.idx.hdr].firstChild.innerHTML="<span>"+a+"</span>"};dhtmlXLayoutCell.prototype._hdrUpdBorder=function(){if(this.conf.borders==true){this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_hdr"+(this.conf.hdr.visible?"":" dhx_cell_hdr_hidden")}else{if(!this.conf.hdr.visible){this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_hdr dhx_cell_hdr_hidden_no_borders"}}};dhtmlXLayoutCell.prototype._hdrOnSetSize=function(){if(this.conf.collapsed&&this.conf.mode=="v"){this._fitHdr()}};dhtmlXLayoutCell.prototype._hdrOnBorderChange=function(){this.hideHeader(true);this._hdrUpdBorder()};dhtmlXLayoutCell.prototype._hdrOnViewSave=function(a){this.views[a].hdr_vis=this.conf.hdr.visible};dhtmlXLayoutCell.prototype._hdrOnViewRestore=function(a){if(this.conf.hdr.visible!=this.views[a].hdr_vis){this[this.views[a].hdr_vis?"showHeader":"hideHeader"](true)}this.views[a].hdr_vis=null;delete this.views[a].hdr_vis};dhtmlXLayoutCell.prototype._getHdrHeight=function(a){if(this.conf.collapsed&&this.conf.mode=="v"&&a!==true){return 27}return this.cell.childNodes[this.conf.idx.hdr].offsetHeight};dhtmlXLayoutCell.prototype._fitHdr=function(){if(this.conf.collapsed){if(typeof(dhtmlXLayoutObject.prototype._confGlob.hdrColH)=="undefined"){this.cell.childNodes[this.conf.idx.hdr].style.height=this.cell.offsetHeight+"px";dhtmlXLayoutObject.prototype._confGlob.hdrColH=parseInt(this.cell.childNodes[this.conf.idx.hdr].style.height)-this._getHdrHeight(true)}this.cell.childNodes[this.conf.idx.hdr].style.height=this.cell.offsetHeight+dhtmlXLayoutObject.prototype._confGlob.hdrColH+"px"}else{this.cell.childNodes[this.conf.idx.hdr].style.height=null}};dhtmlXLayoutCell.prototype.expand=function(l){if(!this.conf.collapsed){return true}var e=this.layout;if(this.conf.mode=="v"){var j=(l?e.conf.hh:e.cdata[e.conf.nextCell[this._idd]]._getMinWidth(this._idd));var g=e.cont.offsetWidth-e.conf.sw;if(j+this.conf.size.w_avl>g){e=null;return false}}else{var h=(l?e.conf.hh:e.cdata[e.conf.nextCell[this._idd]]._getMinHeight(this._idd)+e.cdata[e.conf.nextCell[this._idd]]._getHdrHeight());var c=e.cont.offsetHeight-e.conf.sw;if(h+this.conf.size.h_avl>c){e=null;return false}}if(this.conf.docked==false){this.dock();return}this.cell.className=String(this.cell.className).replace(/\s{0,}dhxlayout_collapsed_[hv]/gi,"");this.conf.collapsed=false;if(this.conf.mode=="v"){this.conf.size.w=Math.min(g-j,this.conf.size.w_saved);this.conf.size.w_saved=this.conf.size.w_avl=null}else{this.conf.size.h=Math.min(c-h,this.conf.size.h_saved);this.conf.size.h_saved=this.conf.size.h_avl=null}if(this.conf.mode=="v"){this._fitHdr()}e.setSizes(e.conf.nextCell[this._idd],e.conf.nextCell[this._idd],l==true,"expand");e.sep._blockSep();e=null;this._hdrUpdText();var a=this.layout._getMainInst();a._callMainEvent("onExpand",[this.conf.name]);a=null;return true};dhtmlXLayoutCell.prototype.collapse=function(){if(this.conf.collapsed){return false}var c=this.layout;if(c.cdata[c.conf.nextCell[this._idd]].expand(true)==false){return false}if(this.conf.mode=="v"){this.conf.size.w_saved=this.conf.size.w;this.conf.size.w_avl=this._getMinWidth(this._idd)}else{this.conf.size.h_saved=this.conf.size.h;this.conf.size.h_avl=this._getMinHeight(this._idd)+this._getHdrHeight()}this.cell.className+=" dhxlayout_collapsed_"+this.conf.mode;this.conf.collapsed=true;if(this.conf.mode=="v"){this.conf.size.w=c.conf.hh}else{this.conf.size.h=this._getHdrHeight()}c.setSizes(c.conf.nextCell[this._idd],c.conf.nextCell[this._idd],false,"collapse");c.sep._blockSep();c=null;this._hdrUpdText();var a=this.layout._getMainInst();a._callMainEvent("onCollapse",[this.conf.name]);a=null;return true};dhtmlXLayoutCell.prototype.isCollapsed=function(){return(this.conf.collapsed==true)};dhtmlXLayoutCell.prototype.setMinWidth=function(a){this.conf.min_width=parseInt(a)||0};dhtmlXLayoutCell.prototype.setMinHeight=function(a){this.conf.min_height=parseInt(a)||0};dhtmlXLayoutCell.prototype._getMinWidth=function(c){if(this.dataType=="layout"&&this.dataObj!=null){if(this.layout._getMainInst()!=this.dataObj._getMainInst()){return this.dataObj._getAvailWidth()}if(this.dataObj.conf.pattern=="1C"){return Math.max(this.conf.min_width,this.dataObj.cdata.a._getMinWidth(c))}else{if(this.dataObj.conf.mode=="v"){var a=c||this._idd;if(this.dataObj.cdata[a].conf.collapsed){a=this.dataObj.conf.nextCell[a]}return Math.max(this.conf.min_width,this.dataObj.cdata[a]._getMinWidth(c)+this.dataObj.cdata[this.dataObj.conf.nextCell[a]]._getWidth()+this.dataObj.conf.sw)}else{return Math.max(this.conf.min_width,this.dataObj.cdata.a._getMinWidth(c),this.dataObj.cdata.b._getMinWidth(c))}}}return Math.max(this.conf.min_width,1)};dhtmlXLayoutCell.prototype._getMinHeight=function(e){var c=0;if(this.conf.idx.menu!=null){c+=this.cell.childNodes[this.conf.idx.menu].offsetHeight}if(this.dataType=="layout"&&this.dataObj!=null){if(this.layout._getMainInst()!=this.dataObj._getMainInst()){return this.dataObj._getAvailHeight()}if(this.dataObj.conf.pattern=="1C"){return Math.max(this.conf.min_height,this.dataObj.cdata.a._getMinHeight(e))}else{if(this.dataObj.conf.mode=="h"){var a=e;if(this.dataObj.cdata[a].conf.collapsed){a=this.dataObj.conf.nextCell[a]}return Math.max(this.conf.min_height,this.dataObj.cdata[a]._getMinHeight(e)+this.dataObj.cdata[a]._getHdrHeight()+this.dataObj.cdata[this.dataObj.conf.nextCell[a]]._getHeight()+this.dataObj.conf.sw)}else{return Math.max(this.conf.min_height,this.dataObj.cdata.a._getMinHeight(e)+this.dataObj.cdata.a._getHdrHeight(),this.dataObj.cdata.b._getMinHeight(e)+this.dataObj.cdata.b._getHdrHeight())}}}return Math.max(this.conf.min_height,c)};dhtmlXLayoutCell.prototype._getAvailWidth=function(e){if(this.dataType=="layout"&&this.dataObj!=null){if(this.dataObj.conf.pattern=="1C"){return this.dataObj.cdata.a._getAvailWidth(e)}else{if(this.dataObj.conf.mode=="v"){var a=(this.dataObj.cdata.a.conf.collapsed==true);var c=(this.dataObj.cdata.b.conf.collapsed==true);if(e=="a"){return this.dataObj.cdata[c?"a":"b"]._getAvailWidth(e)}else{return this.dataObj.cdata[a?"b":"a"]._getAvailWidth(e)}}else{return Math.min(this.dataObj.cdata.a._getAvailWidth(e),this.dataObj.cdata.b._getAvailWidth(e))}}}return this.cell.offsetWidth-this._getMinWidth()};dhtmlXLayoutCell.prototype._getAvailHeight=function(g){if(this.dataType=="layout"&&this.dataObj!=null){if(this.dataObj.conf.pattern=="1C"){return this.dataObj.cdata.a._getAvailHeight(g)}else{if(this.dataObj.conf.mode=="h"){var c=(this.dataObj.cdata.a.conf.collapsed==true);var e=(this.dataObj.cdata.b.conf.collapsed==true);if(g=="a"){return this.dataObj.cdata[e?"a":"b"]._getAvailHeight(g)}else{return this.dataObj.cdata[c?"b":"a"]._getAvailHeight(g)}}else{return Math.min(this.dataObj.cdata.a._getAvailHeight(g),this.dataObj.cdata.b._getAvailHeight(g))}}}var a=this._getHdrHeight();if(this.conf.mode=="v"&&this.conf.collapsed){a=this.conf.hh}return this.cell.offsetHeight-a-this._getMinHeight()};dhtmlXLayoutCell.prototype.setWidth=function(g){if(this.conf.mode=="v"){if(this.conf.collapsed){return}var h=this.layout;var j=h.cdata[h.conf.nextCell[this._idd]];if(j.conf.collapsed){g=g+h.conf.sw+j._getWidth();l=h=j=null;return}var e=this._getMinWidth(this._idd);var m=h.cont.offsetWidth-j._getMinWidth(this._idd)-h.conf.sw;g=Math.max(e,Math.min(g,m));this.conf.size.w=g;h.setSizes(j._idd,j._idd);h=j=null}else{if(this.layout==null||this.layout.parentLayout==null){return}var l=this.layout.parentLayout;var h=this.layout;var j=h.cdata[h.conf.nextCell[this._idd]];for(var c in l.cdata){if(l.cdata[c].dataObj==h){l.cdata[c].setWidth(g)}}l=h=null}};dhtmlXLayoutCell.prototype.setHeight=function(m){if(this.conf.mode=="h"){if(this.conf.collapsed){return}var g=this.layout;var l=g.cdata[g.conf.nextCell[this._idd]];if(l.conf.collapsed){m=m+g.conf.sw+l._getHeight();var n=(this.layout!=null&&this.layout.parentLayout!=null?this.layout.parentLayout:null);if(n!=null){for(var c in n.cdata){if(n.cdata[c].dataObj==g){n.cdata[c].setHeight(m)}}}n=g=l=null;return}var j=this._getMinHeight(this._idd)+this._getHdrHeight();var e=g.cont.offsetHeight-l._getMinHeight(this._idd)-l._getHdrHeight()-g.conf.sw;m=Math.max(j,Math.min(m,e));this.conf.size.h=m;g.setSizes(l._idd,l._idd);g=l=null}else{if(this.layout==null||this.layout.parentLayout==null){return}var n=this.layout.parentLayout;var g=this.layout;var l=g.cdata[g.conf.nextCell[this._idd]];for(var c in n.cdata){if(n.cdata[c].dataObj==g){n.cdata[c].setHeight(m)}}n=g=null}};dhtmlXLayoutCell.prototype.getWidth=function(){return this.conf.size.w};dhtmlXLayoutCell.prototype.getHeight=function(){return this.conf.size.h};dhtmlXLayoutCell.prototype.fixSize=function(c,g){this.conf.fixed.w=window.dhx4.s2b(c);this.conf.fixed.h=window.dhx4.s2b(g);var a=this.layout._getMainInst();var e={};a.forEachItem(function(h){if(h.conf.fsize!=null){var n=h.getId();var m={h:(h.conf.fixed.w==true),v:(h.conf.fixed.h==true)};for(var j in m){if(m[j]==true&&h.conf.fsize[j]!=null){if(!(h.conf.fsize[j] instanceof Array)){h.conf.fsize[j]=[h.conf.fsize[j]]}for(var l=0;l<h.conf.fsize[j].length;l++){e[h.conf.fsize[j][l]]=true}}}}h=null});a._forEachSep(function(h){h._lockSep(e[h.conf.idx]==true);h=null});a=null};dhtmlXCellObject.prototype.attachLayout=function(a){this.callEvent("_onBeforeContentAttach",["layout"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";this._attachObject(c);if(typeof(this._layoutMainInst)!="undefined"){c._layoutMainInst=this._layoutMainInst}if(typeof(window.dhtmlXLayoutCell)=="function"&&this instanceof window.dhtmlXLayoutCell){c._isParentCell=true}if(typeof(window.dhtmlXAccordionCell)=="function"&&this instanceof window.dhtmlXAccordionCell){c._ofs={t:-1,r:-1,l:-1,b:-1}}if(typeof(window.dhtmlXTabBarCell)=="function"&&this instanceof window.dhtmlXTabBarCell){if(this.conf.skin=="dhx_skyblue"){c._ofs={t:-1,r:-1,b:-1,l:-1}}}if(typeof(window.dhtmlXSideBarCell)=="function"&&this instanceof window.dhtmlXSideBarCell){if(this.conf.skin=="dhx_web"){c._ofs={l:8};if(this.sidebar.conf.autohide==true){c._ofs.l=0}if(this.sidebar.conf.header==true){c._ofs.t=9}}else{if(this.conf.skin=="dhx_terrace"){c._ofs={l:11};if(this.sidebar.conf.autohide==true){c._ofs.l=0}if(this.sidebar.conf.header==true){c._ofs.t=10}}else{c._ofs={l:-1}}}}if(typeof(window.dhtmlXCarouselCell)=="function"&&this instanceof window.dhtmlXCarouselCell){this._hideBorders()}if(typeof(a)=="string"){a={pattern:a}}if(typeof(a.skin)=="undefined"){a.skin=this.conf.skin}a.parent=c;this.dataType="layout";this.dataObj=new dhtmlXLayoutObject(a);if(this instanceof window.dhtmlXLayoutCell){this.dataObj.parentLayout=this.layout}c._layoutMainInst=null;a.parent=null;c=a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};function dhtmlXTabBar(g,l){var h=this;this.conf={skin:(window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxtabbar")||"dhx_skyblue"),css:"dhxtabbar",lastActive:null,closeButton:false,align:"left",tabsMode:(l=="bottom"?"bottom":"top"),tabsContCss:"",contZone:true,transSpeed:"0.15s",arwMode:"always",tabsOfs:1,tabsTop:0,url_demand:false,urls:{},autoload:{},tabsWidth:{dhx_terrace:[44,14],dhx_web:[35,9],dhx_skyblue:[35,9]}};var c=navigator.userAgent;if(c.indexOf("Safari")>=0&&(c.indexOf("5.1.7")>=0||(c.match(/7[\.\d]* mobile/gi)!=null&&c.match(/AppleWebKit/gi)!=null))){this.conf.tabsContCss=" safari_517_fix"}var j;if(g!=null&&typeof(g)=="object"&&typeof(g.tagName)=="undefined"){j=g.parent;if(typeof(g.skin)!="undefined"){this.conf.skin=g.skin}if(typeof(g.mode)!="undefined"){this.conf.tabsMode=(g.mode=="bottom"?"bottom":"top")}if(typeof(g.align)!="undefined"){this.conf.align=(g.align=="right"?"right":"left")}if(typeof(g.close_button)!="undefined"){this.conf.closeButton=window.dhx4.s2b(g.close_button)}if(typeof(g.content_zone)!="undefined"){this.conf.contZone=window.dhx4.s2b(g.content_zone)}if(typeof(g.xml)!="undefined"){this.conf.autoload.xml=g.xml}if(typeof(g.json)!="undefined"){this.conf.autoload.xml=g.json}if(typeof(g.tabs)!="undefined"){this.conf.autoload.tabs=g.tabs}if(typeof(g.onload)!="undefined"){this.conf.autoload.tabs=g.tabs}if(typeof(g.arrows_mode)!="undefined"){this.conf.autoload.arrows_mode=g.arrows_mode}}else{j=g}window.dhtmlXCellTop.apply(this,[j,g.offsets]);if(this.base._ofs!=null&&this.base._ofs.t!=null){this.conf.tabsTop=this.base._ofs.t}this.tabsMode=document.createElement("DIV");this.tabsMode.className="dhxtabbar_tabs_"+this.conf.tabsMode;this.cont.appendChild(this.tabsMode);this.tabsArea=document.createElement("DIV");this.tabsArea.className="dhxtabbar_tabs dhxtabbar_tabs_"+this.conf.tabsMode;this.tabsArea.innerHTML="<div class='dhxtabbar_tabs_ar_left'><div class='dhxtabbar_arrow_img'></div></div><div class='dhxtabbar_tabs_base'><div class='dhxtabbar_tabs_cont_"+this.conf.align+this.conf.tabsContCss+"'><div class='dhxtabbar_tabs_line'></div></div></div><div class='dhxtabbar_tabs_ar_right'><div class='dhxtabbar_arrow_img'></div></div>";this.tabsArea.style.top=(this.conf.tabsMode=="top"?this.conf.tabsTop+"px":"auto");this.tabsMode.appendChild(this.tabsArea);this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]="0px";this.tabsArea.childNodes[0].onclick=function(){if(h.conf.align=="left"){h._moveTabs(1)}else{h._moveTabs(-1)}};this.tabsArea.childNodes[2].onclick=function(){if(h.conf.align=="left"){h._moveTabs(-1)}else{h._moveTabs(1)}};this._onTabsAreaClick=function(a){return this._callMainEvent("onTabClose",[a])};this.tabsArea.onclick=function(m){m=m||event;var a=(m.target||m.srcElement);while(a!=null){if(typeof(a._tabCloseId)!="undefined"){if(h._onTabsAreaClick(a._tabCloseId)!==true){return}h.t[a._tabCloseId].conf.remove=true;h._hideTab(a._tabCloseId);a=null}else{if(typeof(a._tabId)!="undefined"){h._doOnClick(a._tabId);a=null}}if(a!=null){a=a.parentNode;if(a==this){a=null}}}};this.tabsArea.onselectstart=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}};this._doOnClick=function(a){this.callEvent("onTabClick",[a,this.conf.lastActive]);if(this.t[a].conf.enabled){this._setTabActive(a)}};this.t={};this.addTab=function(a,v,n,s,r,w){w=(window.dhx4.s2b(w)||(this.conf.closeButton==true));r=window.dhx4.s2b(r);var o=document.createElement("DIV");o.className="dhxtabbar_tab";o.innerHTML="<div class='dhxtabbar_tab_text"+(w?" dhxtabbar_tab_text_close":"")+"'>"+v+"</div>"+(w?"<div class='dhxtabbar_tab_close'></div>":"");o._tabId=a;if(w){o.childNodes[1]._tabCloseId=a}var m=this.tabsArea.childNodes[1].firstChild;if(s!=null&&s+1>0&&s+1<m.childNodes.length){m.insertBefore(o,m.childNodes[s+1])}else{m.appendChild(o)}var x=false;if(typeof(n)=="undefined"||n==null||n=="*"){n=this._getLabelWidth(v,w);x=true}else{n=parseInt(n)}o.style.width=n+"px";var u=new dhtmlXTabBarCell(a,this);this.tabsMode.appendChild(u.cell);this.t[a]={tab:o,cell:u,conf:{text:v,visible:true,active:false,enabled:true,close:w,width:n,autowidth:x}};m=u=null;if(r){this._setTabActive(a)}else{this._adjustCell(a)}if(this.conf.initSeq!=true&&this.conf.arwMode=="auto"){this.setSizes()}};this.setSizes=function(){this._adjustCont();if(this.conf.tabsAreaOfs==null){this.tabsArea.style.width=this.cont.offsetWidth+"px";this.conf.tabsAreaOfs=parseInt(this.tabsArea.style.width)-this.tabsArea.offsetWidth}this.tabsArea.style.width=this.cont.offsetWidth+this.conf.tabsAreaOfs+"px";this._adjustCell(this.conf.lastActive);this._adjustTabs(true);this.callEvent("_onSetSizes",[])};this._adjustCell=function(o){if(!this.conf.contZone||o==null){return}var n=(this.conf.tabsMode=="top"?this.tabsArea.offsetHeight:0)+this.conf.tabsTop;var m=this.cont.offsetHeight-this.tabsArea.offsetHeight-this.conf.tabsTop;var a=this.t[o].cell.dataType;if(this.conf.skin=="dhx_skyblue"&&(a=="layout"||a=="tabbar"||a=="acc")){if(this.conf.tabsMode=="top"){n=n-1}m=m+1}if(o!=this.conf.lastActive){n=-5000;this.t[o].cell.cell.style.visibility="hidden";this.t[o].cell.cell.style.zIndex=0}this.t[o].cell._setSize(0,n,this.cont.offsetWidth,m)};this.setTabsMode=function(a){this.conf.tabsMode=(a=="bottom"?"bottom":"top");this.tabsMode.className="dhxtabbar_tabs_"+this.conf.tabsMode;this.tabsArea.className="dhxtabbar_tabs dhxtabbar_tabs_"+this.conf.tabsMode;this.tabsArea.style.top=(this.conf.tabsMode=="top"?this.conf.tabsTop+"px":"auto");this.setSizes()};this._tabCss=function(s,o){var m=this.t[s].conf.active;var r=!this.t[s].conf.enabled;var n=!this.t[s].conf.visible;return"dhxtabbar_tab"+(n?" dhxtabbar_tab_hidden":(m||r?" dhxtabbar_tab"+(m?"_actv":"")+(r?"_dis":""):""))};this._getLabelWidth=function(n,m){if(this.tabsTextTest==null){this.tabsTextTest=document.createElement("SPAN");this.tabsTextTest.className="dhxtabbar_tabs_text_test_"+this.conf.skin}document.body.appendChild(this.tabsTextTest);this.tabsTextTest.innerHTML=n;var a=this.tabsTextTest.offsetWidth;if(window.dhx4.isIE&&a==0){a=this.tabsTextTest.offsetWidth}a+=this.conf.tabsWidth[this.conf.skin][0];if(m==true){a+=this.conf.tabsWidth[this.conf.skin][1]}document.body.removeChild(this.tabsTextTest);return a};this._adjustTabs=function(o){if(this._checkArrows()==true||o==true){this.tabsArea.childNodes[1].style.left=this.tabsArea.childNodes[0].offsetWidth-1+"px";this.tabsArea.childNodes[1].style.width=Math.max(0,this.tabsArea.clientWidth-this.tabsArea.childNodes[0].offsetWidth-this.tabsArea.childNodes[2].offsetWidth)+this.conf.tabsOfs*2+"px"}var s=this.tabsArea.childNodes[1];if(s.offsetWidth<5){s=null;return}var a=parseInt(s.childNodes[0].style[this.conf.align]);var n=null;for(var r=0;r<s.childNodes[0].childNodes.length;r++){var u=s.childNodes[0].childNodes[r]._tabId;if(u!=null&&this.t[u].conf.visible){var m=this.t[u].tab.offsetWidth-this.conf.tabsOfs;if(this.t[u].conf.active){if(a<0||s.offsetWidth<m){n={d:1,id:u}}else{if(a+m>s.offsetWidth){n={d:-1,id:u}}}}a+=m}}if(n!=null){this._moveTabs(n.d,n.id)}else{if(s.offsetWidth>a+1){s.childNodes[0].style[this.conf.align]=Math.min(0,parseInt(s.childNodes[0].style[this.conf.align])+(s.offsetWidth-a))+"px"}}s=n=null};this._moveTabs=function(w,o){var n=this.tabsArea.childNodes[1].childNodes[0];var u=0;var y=[];var C=null;for(var a=0;a<n.childNodes.length;a++){var m=n.childNodes[a]._tabId;if(m!=null&&this.t[m].conf.visible){y.push({id:m,w:this.t[m].tab.offsetWidth-this.conf.tabsOfs,ind:u});if(m==o){C=u}u++}}var A=parseInt(this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]);var s=this.tabsArea.clientWidth-this.tabsArea.childNodes[0].offsetWidth-this.tabsArea.childNodes[2].offsetWidth+this.conf.tabsOfs;var v=null;var r=null;for(var a=0;a<y.length;a++){y[a].x=A;if(v==null&&A>=0&&A+y[a].w>0){v=y[a]}if(A<s&&A+y[a].w<=s){r=y[a]}A+=y[a].w}if(C!=null){var D=y[C]}else{var D=null;if(w>0){if(v==null){if(y.length>0){D=y[y.length-1]}}else{if(v.ind>0&&y.length>=v.ind){D=y[v.ind-1]}}}else{if(r==null){if(y.length>0){D=y[0]}}else{if(y.length>r.ind){D=y[r.ind+1]}}}}if(D!=null){if(w>0){if(A<s){n.style[this.conf.align]=Math.min(0,parseInt(n.style[this.conf.align])+(s-A))+"px"}else{n.style[this.conf.align]=parseInt(n.style[this.conf.align])-D.x+"px"}}else{n.style[this.conf.align]=parseInt(n.style[this.conf.align])-D.x+s-D.w+"px"}}n=D=y=null};this._getNextVisible=function(m,a){return this._getNearVisible(m,a,"next")};this._getPrevVisible=function(m,a){return this._getNearVisible(m,a,"previous")};this._getFirstVisible=function(){return this._getNearVisible(null,false,"first")};this._getNearVisible=function(s,n,r){if(r=="first"){var o=this.tabsArea.childNodes[1].childNodes[0].childNodes[1];r="next"}else{if(s==null||this.t[s]==null){return(n?this._getFirstVisible():null)}var o=this.t[s].tab[r+"Sibling"]}var m=null;while(o!=null&&m==null){var a=o._tabId;if(a!=null&&m==null&&this.t[a].conf.visible){m=a}else{o=o[r+"Sibling"]}}o=null;return m};this._showTab=function(m,a){if(this.t[m]==null){return}if(this.t[m].conf.transActv==true){if(this.t[m].conf.transMode=="show"){return}}else{if(this.t[m].conf.visible==true){return}}if(this.conf.transProp!==false){this.t[m].conf.transActv=true;this.t[m].conf.transMode="show";this.t[m].conf.transProp=this.conf.transProp;this.t[m].conf.transActvId=(a?m:null);if(!this.t[m].conf.transEv){this.t[m].tab.addEventListener(this.conf.transEv,this._doOnTrEnd,false);this.t[m].conf.transEv=true}this.t[m].conf.visible=true;this.t[m].tab.className=this._tabCss(m);this.t[m].tab.style[this.conf.transProp]=this.conf.transValueWidth;this.t[m].tab.style.width=this.t[m].conf.width+"px";if(this.t[m].tab.clientWidth>=this.t[m].conf.width){this.t[m].tab.style.visibility="visible"}}else{this.t[m].conf.visible=true;this.t[m].tab.style.display="";if(a||this.t[m].conf.active){this.t[m].conf.active=false;this._setTabActive(m)}else{this._adjustTabs()}}};this._hideTab=function(s,a){if(this.t[s]==null){return}if(this.t[s].conf.transActv==true){if(this.t[s].conf.transMode=="hide"){return}}else{if(this.t[s].conf.visible!=true){return}}var m=false;if(this.conf.lastActive==s){this.conf.lastActive=null;this.t[s].conf.active=false;this.t[s].tab.className=this._tabCss(s);m=true}var o=this._getPrevVisible(s);var n=this._getNextVisible(s);var r=(m==true&&a!==false?(a==true?null:a)||n||o:null);if(this.conf.transProp!==false){this.t[s].conf.transActv=true;this.t[s].conf.transMode="hide";this.t[s].conf.transProp=this.conf.transProp;this.t[s].conf.transActvId=r;this.t[s].conf.visible=false;if(!this.t[s].conf.transEv){this.t[s].tab.addEventListener(this.conf.transEv,this._doOnTrEnd,false);this.t[s].conf.transEv=true}this.t[s].tab.style.visibility="hidden";this.t[s].tab.className=h._tabCss(s);this.t[s].tab.style[this.conf.transProp]=this.conf.transValueWidth;this.t[s].tab.style.width="0px"}else{this.t[s].tab.style.display="none";this.t[s].conf.visible=false;if(this.conf.contZone){this.t[s].cell.cell.style.visibility="hidden";this.t[s].cell.cell.style.top="-5000px"}if(r!=null){this._setTabActive(r)}this._adjustTabs();if(this.t[s].conf.remove){this._removeTab(s)}}};this._isTabVisible=function(a){return(this.t[a].conf.visible==true)};this._doOnTrEnd=function(){var n=this._tabId;if(h.t[n]==null){return}var a=h.t[n];var m=a.conf.transActvId;if(a.conf.transMode=="hide"){if(a.conf.remove){h._removeTab(n)}else{a.tab.style[a.conf.transProp]="";if(h.conf.contZone){a.cell.cell.style.visibility="hidden";a.cell.cell.style.top="-5000px"}a.conf.transActv=false}}else{if(a.conf.transMode=="show"){a.tab.style[a.conf.transProp]="";a.tab.style.visibility="visible";a.conf.transMode=null;a.conf.transActv=false}}if(m!=null){h._setTabActive(m)}else{h._adjustTabs()}a=null};this.enableTabCloseButton=function(a){this.conf.closeButton=window.dhx4.s2b(a)};this.unload=function(){this.conf.unloading=true;this.clearAll();this.t=null;if(this.tabsTextTest!=null){if(this.tabsTextTest.parentNode){this.tabsTextTest.parentNode.removeChild(this.tabsTextTest)}this.tabsTextTest=null}window.dhx4._enableDataLoading(this,null,null,null,"clear");this.tabsArea.childNodes[0].onclick=null;this.tabsArea.childNodes[2].onclick=null;this.tabsArea.onclick=null;this.tabsArea.onselectstart=null;this.tabsArea.parentNode.removeChild(this.tabsArea);this.tabsArea=null;this.tabsMode.parentNode.removeChild(this.tabsMode);this.tabsMode=null;this._unloadTop();window.dhx4._eventable(this,"clear");for(var m in this){this[m]=null}h=null};this.enableContentZone=function(a){this.conf.contZone=(a==true)};this.setSkin=function(n){this._setBaseSkin(n);this.conf.skin=n;if(this.tabsTextTest!=null){this.tabsTextTest.className="dhxtabbar_tabs_text_test_"+this.conf.skin}for(var m in this.t){this.t[m].cell._resetSizeState();if(this.t[m].conf.autowidth==true){this.t[m].conf.width=this._getLabelWidth(this.t[m].conf.text,this.t[m].conf.close);if(this.t[m].conf.visible){this.t[m].tab.style.width=this.t[m].conf.width+"px"}}}this.conf.tabsAreaOfs=null;this._fixTabsOfs();this.setSizes()};this.setAlign=function(a){a=(a=="left"?"left":"right");if(a==this.conf.align){this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]="0px";return}if(this.conf.transProp!==false){this.tabsArea.childNodes[1].childNodes[0].style[this.conf.transProp]=""}this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]="";this.conf.align=a;this.tabsArea.childNodes[1].childNodes[0].className="dhxtabbar_tabs_cont_"+this.conf.align+this.conf.tabsContCss;this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]="0px";if(this.conf.transProp!==false){this.conf.transValuePos=this.conf.align+" "+this.conf.transSpeed;this.tabsArea.childNodes[1].childNodes[0].style[this.conf.transProp]=this.conf.transValuePos}};this._initObj=function(o){this.conf.initSeq=true;this.clearAll();var a=false;if(o.settings!=null){if(o.settings.skin!=null){this.setSkin(o.settings.skin)}if(o.settings.close_button!=null){this.enableTabCloseButton(window.dhx4.s2b(o.settings.close_button))}else{if(o.settings.closeButton!=null){this.enableTabCloseButton(window.dhx4.s2b(o.settings.closeButton))}}if(o.settings.align!=null){this.setAlign(o.settings.align)}if(o.settings.hrefmode=="ajax"){a=true}if(o.settings.hrefmode=="ajax-html"){a=true;this.conf.url_demand=true}}if(o.tabs!=null){for(var n=0;n<o.tabs.length;n++){var m=o.tabs[n];if(typeof(m.id)=="undefined"){m.id=window.dhx4.newId()}if(!isNaN(parseInt(m.width))){m.width=parseInt(m.width)}else{m.width=null}this.addTab(m.id,m.text||m.label||"",m.width,m.index,window.dhx4.s2b(m.selected)||window.dhx4.s2b(m.active),m.close);if(m.content!=null){this.cells(m.id).attachHTMLString(m.content)}else{if(m.href!=null){if(this.conf.url_demand==true){this.conf.urls[m.id]={href:m.href,ajax:a}}else{this.cells(m.id).attachURL(m.href,a)}}}if(typeof(m.enabled)!="undefined"&&window.dhx4.s2b(m.enabled)==false){this.tabs(m.id).disable()}else{if(typeof(m.disabled)!="undefined"&&window.dhx4.s2b(m.disabled)==true){this.tabs(m.id).disable()}}}}this.conf.initSeq=false;if(this.conf.arwMode=="auto"){this.setSizes()}if(this.conf.url_demand==true){this._loadURLOnDemand(this.conf.lastActive)}};this._xmlToObj=function(u){var s={settings:{},tabs:[]};var m=u.getElementsByTagName("tabbar")[0];if(m!=null){for(var v in {skin:1,align:1,closeButton:1,hrefmode:1}){if(m.getAttribute(v)!=null){s.settings[v]=m.getAttribute(v)}}var y=m.getElementsByTagName("tab");for(var n=0;n<y.length;n++){var o={text:(y[n].firstChild.nodeValue||"")};for(var v in {id:1,width:1,close:1,selected:1,active:1,enabled:1,disabled:1,href:1}){if(y[n].getAttribute(v)!=null){o[v]=y[n].getAttribute(v)}}var A=y[n].getElementsByTagName("content")[0];if(A!=null){o.content="";for(var x=0;x<A.childNodes.length;x++){o.content+=(A.childNodes[x].nodeValue||"")}}s.tabs.push(o)}}return s};dhx4._enableDataLoading(this,"_initObj","_xmlToObj","tabbar",{struct:true});var e=window.dhx4.transDetect();this.conf.transProp=e.transProp;this.conf.transEv=e.transEv;this.conf.transValueWidth="width "+this.conf.transSpeed;e=null;if(this.conf.transProp!==false){this.conf.transValuePos=this.conf.align+" "+this.conf.transSpeed;this.tabsArea.childNodes[1].childNodes[0].style[this.conf.transProp]=this.conf.transValuePos}this._callMainEvent=function(m,a){return this.callEvent(m,a)};window.dhx4._eventable(this);if(this.conf.autoload.json!=null){this.loadStruct(this.conf.autoload.json,this.conf.autoload.onload)}else{if(this.conf.autoload.xml!=null){this.loadStruct(this.conf.autoload.xml,this.conf.autoload.onload)}else{if(this.conf.autoload.tabs!=null){this.loadStruct({tabs:this.conf.autoload.tabs})}}}if(this.conf.autoload.arrows_mode!=null){this.setArrowsMode(this.conf.autoload.arrows_mode)}this._fixTabsOfs();this.setSizes();return this}dhtmlXTabBar.prototype=new dhtmlXCellTop();dhtmlXTabBar.prototype._fixTabsOfs=function(){this.conf.tabsOfs=(this.conf.skin=="dhx_web"?0:1)};dhtmlXTabBar.prototype.cells=dhtmlXTabBar.prototype.tabs=function(a){if(this.t[a]){return this.t[a].cell}return null};dhtmlXTabBar.prototype.getAllTabs=function(){var e=[];for(var c in this.t){e.push(c)}return e};dhtmlXTabBar.prototype._setTabActive=function(c,a){if(!this.t[c]||this.t[c].conf.active){return}if(typeof(a)=="undefined"){a=true}if(a==true&&this.callEvent("onSelect",[c,this.conf.lastActive])!==true){return}this.setTabInActive();this.t[c].conf.active=true;if(this.conf.contZone){this.t[c].cell.cell.style.visibility="visible";this.t[c].cell.cell.style.top="0px";this.t[c].cell.cell.style.zIndex=1}this.t[c].tab.className=this._tabCss(c);this.conf.lastActive=c;this.setSizes();if(this.conf.url_demand==true){this._loadURLOnDemand(c)}};dhtmlXTabBar.prototype.setTabInActive=function(){if(this.conf.lastActive!=null&&this.t[this.conf.lastActive]){this.t[this.conf.lastActive].conf.active=false;if(this.conf.contZone){this.t[this.conf.lastActive].cell.cell.style.visibility="hidden";this.t[this.conf.lastActive].cell.cell.style.top="-5000px";this.t[this.conf.lastActive].cell.cell.style.zIndex=0}this.t[this.conf.lastActive].tab.className=this._tabCss(this.conf.lastActive);this.conf.lastActive=null}};dhtmlXTabBar.prototype._isTabActive=function(a){return(a==this.conf.lastActive&&this.conf.lastActive!=null)};dhtmlXTabBar.prototype.getActiveTab=function(){return this.conf.lastActive};dhtmlXTabBar.prototype.goToNextTab=function(){var a=this._getNextVisible(this.conf.lastActive,true);if(a!=null){this._setTabActive(a)}};dhtmlXTabBar.prototype.goToPrevTab=function(){var a=this._getPrevVisible(this.conf.lastActive,true);if(a!=null){this._setTabActive(a)}};dhtmlXTabBar.prototype._enableTab=function(c,a){if(!this.t[c]||this.t[c].conf.enabled){return}this.t[c].conf.enabled=true;this.t[c].tab.className=this._tabCss(c);if(a==true){this._setTabActive(c)}};dhtmlXTabBar.prototype._disableTab=function(c,a){if(!this.t[c]||!this.t[c].conf.enabled){return}this.t[c].conf.enabled=false;this.t[c].tab.className=this._tabCss(c);if(a!==false&&this.conf.lastActive==c){if(a==true){a=this._getNextVisible(c)||this._getPrevVisible(c)}this._setTabActive(a)}};dhtmlXTabBar.prototype._isTabEnabled=function(a){return(this.t[a]!=null&&this.t[a].conf.enabled==true)};dhtmlXTabBar.prototype._setTabText=function(g,e,c){if(!this.t[g]){return}var a=false;if(typeof(c)=="undefined"||c==null){c=this._getLabelWidth(e,this.t[g].conf.close);a=true}this.t[g].tab.style.width=c+"px";this.t[g].tab.childNodes[0].innerHTML=e;this.t[g].conf.text=e;this.t[g].conf.width=c;this.t[g].conf.autowidth=a};dhtmlXTabBar.prototype._getTabText=function(a){if(!this.t[a]){return null}return this.t[a].conf.text};dhtmlXTabBar.prototype._removeTab=function(m,e,j){if(!this.t[m]){return}if(j!=true&&this.t[m].conf.remove!=true){this.t[m].conf.remove=true;this._hideTab(m,e);return}if(typeof(e)=="undefined"){e=true}var g=this._getNextVisible(m);var h=this._getPrevVisible(m);if(this.t[m].conf.transEv==true){this.t[m].tab.removeEventListener(this.conf.transEv,this._doOnTrEnd,false);this.t[m].conf.transEv=false}for(var c in this.t[m].conf){this.t[m].conf[c]=null}this.t[m].conf=null;delete this.t[m].conf;this.t[m].cell._unload();this.t[m].cell=null;this.t[m].tab.parentNode.removeChild(this.t[m].tab);this.t[m].tab=null;this.t[m]=null;delete this.t[m];this.conf.urls[m]=null;delete this.conf.urls[m];if(this.conf.lastActive==m){this.conf.lastActive=null;if(e!=false){var l=(e==true?(g||h||this._getFirstVisible()):e);if(l!=null){this._setTabActive(l)}}}else{if(j!=true){this._adjustTabs()}}};dhtmlXTabBar.prototype.clearAll=function(){for(var c in this.t){this._removeTab(c,false,true)}this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]="0px"};dhtmlXTabBar.prototype.moveTab=function(e,a){if(!this.t[e]||a<0){return}a+=1;var c=this.tabsArea.childNodes[1].firstChild;if(c.childNodes[a]!=this.t[e].tab){c.removeChild(this.t[e].tab);if(a>=c.childNodes.length){c.appendChild(this.t[e].tab)}else{c.insertBefore(this.t[e].tab,c.childNodes[a])}}c=null};dhtmlXTabBar.prototype._getIndex=function(g){var a=-1;var e=this.tabsArea.childNodes[1].firstChild;for(var c=1;c<e.childNodes.length;c++){if(e.childNodes[c]._tabId==g){a=c-1}}e=null;return a};dhtmlXTabBar.prototype.getNumberOfTabs=function(g){var e=0;for(var c in this.t){e+=(g!=true?1:(this.t[c].conf.visible==true?1:0))}return e};dhtmlXTabBar.prototype.forEachCell=dhtmlXTabBar.prototype.forEachTab=function(e){for(var c in this.t){e.apply(window,[this.t[c].cell])}};dhtmlXTabBar.prototype.enableAutoReSize=function(){this._initFSResize()};dhtmlXTabBar.prototype.setArrowsMode=function(a){a={auto:"auto",always:"always"}[String(a)];if(a==null||a==this.conf.mode){return}this.conf.arwMode=a;if(a=="always"){this.tabsArea.childNodes[0].className="dhxtabbar_tabs_ar_left";this.tabsArea.childNodes[2].className="dhxtabbar_tabs_ar_right"}this.setSizes()};dhtmlXTabBar.prototype._checkArrows=function(){var h=false;if(this.conf.arwMode=="auto"){var g=0;for(var e in this.t){g+=this.t[e].tab.offsetWidth}var c=this.tabsArea.childNodes[0];var j=this.tabsArea.childNodes[2];if(g>this.cont.offsetWidth){if(c.className.search(/dhxtabbar_tabs_ar_hidden/)>=0){c.className=c.className.replace(/\s{0,}dhxtabbar_tabs_ar_hidden/,"");j.className=j.className.replace(/\s{0,}dhxtabbar_tabs_ar_hidden/,"");h=true}}else{if(c.className.search(/dhxtabbar_tabs_ar_hidden/)<1){c.className+=" dhxtabbar_tabs_ar_hidden";j.className+=" dhxtabbar_tabs_ar_hidden";h=true}}c=j=null}return h};dhtmlXTabBar.prototype._loadURLOnDemand=function(a){if(a!=null&&this.conf.urls[a]!=null){this.cells(a).attachURL(this.conf.urls[a].href,this.conf.urls[a].ajax);this.conf.urls[a]=null}};window.dhtmlXTabBarCell=function(g,e){dhtmlXCellObject.apply(this,[g,"_tabbar"]);this.tabbar=e;this.conf.skin=this.tabbar.conf.skin;this.conf.tabbar_funcs={show:"_showTab",hide:"_hideTab",isVisible:"_isTabVisible",enable:"_enableTab",disable:"_disableTab",isEnabled:"_isTabEnabled",getIndex:"_getIndex",getText:"_getTabText",setText:"_setTabText",setActive:"_setTabActive",isActive:"_isTabActive",close:"_removeTab"};this._tabbarCall=function(a){return function(){var h=[this._idd];for(var j=0;j<arguments.length;j++){h.push(arguments[j])}return this.tabbar[a].apply(this.tabbar,h)}};for(var c in this.conf.tabbar_funcs){if(typeof(this[c])!="function"){this[c]=this._tabbarCall(this.conf.tabbar_funcs[c])}}this.attachEvent("_onCellUnload",function(){this.tabbar=null;for(var h in this.conf.tabbar_funcs){this[h]=null;this.conf.tabbar_funcs[h]=null}this.conf.tabbar_funcs=null});this.attachEvent("_onContentLoaded",function(){this.tabbar._callMainEvent("onContentLoaded",arguments);this.tabbar._callMainEvent("onTabContentLoaded",arguments)});this.attachEvent("_onContentAttach",function(){this.tabbar._adjustCell(this.tabbar.conf.lastActive)});this.attachEvent("_onBeforeContentAttach",function(a){if(a=="sidebar"&&this.conf.skin!="dhx_skyblue"){this._hideBorders()}})};window.dhtmlXTabBarCell.prototype=new dhtmlXCellObject();dhtmlXCellObject.prototype.attachTabbar=function(a){this.callEvent("_onBeforeContentAttach",["tabbar"]);if(typeof(a)=="string"){a={mode:a}}else{if(typeof(a)!="object"||a==null){a={}}}var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";if(typeof(window.dhtmlXAccordionCell)=="function"&&this instanceof window.dhtmlXAccordionCell){c._ofs={t:-1}}if(typeof(window.dhtmlXTabBarCell)=="function"&&this instanceof window.dhtmlXTabBarCell){if(this.conf.skin=="dhx_skyblue"){c._ofs={t:-1,r:-1,b:-1,l:-1}}}if(typeof(window.dhtmlXSideBarCell)=="function"&&this instanceof window.dhtmlXSideBarCell){c._ofs={l:-1};if(this.conf.skin=="dhx_web"&&this.sidebar.conf.autohide==true){c._ofs.l=0}if(this.conf.skin=="dhx_terrace"){if(this.sidebar.conf.autohide==true){c._ofs.l=0}if(this.sidebar.conf.header==true){c._ofs.t=-1}}}if(typeof(window.dhtmlXCarouselCell)=="function"&&this instanceof window.dhtmlXCarouselCell){this._hideBorders()}this._attachObject(c);a.skin=this.conf.skin;a.parent=c;this.dataType="tabbar";this.dataObj=new dhtmlXTabBar(a);a.parent=c=null;a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};function dhtmlXTabBarInitFromHTML(){var z=document.getElementsByTagName("div");for(var i=0;i<z.length;i++){if(z[i].className.indexOf("dhtmlxTabBar")!=-1){var conf={settings:{},tabs:[]};var n=z[i];var id=n.id;n.className="";var k=new Array();for(var j=0;j<n.childNodes.length;j++){if(n.childNodes[j].tagName&&n.childNodes[j].tagName!="!"){k[k.length]=n.childNodes[j]}}var skin=n.getAttribute("skin");if(skin!=null){conf.settings.skin=skin}var w=new dhtmlXTabBar({parent:id,mode:n.getAttribute("mode")});window[id]=w;acs=n.getAttribute("onbeforeinit");if(acs){eval(acs)}align=n.getAttribute("align");if(align){conf.settings.align=align}var cont={};for(var j=0;j<k.length;j++){var m=k[j];var tab={id:m.id,text:m.getAttribute("name"),width:m.getAttribute("width"),selected:m.getAttribute("selected"),active:m.getAttribute("active"),close:m.getAttribute("close")};var href=m.getAttribute("href");if(href){cont[m.id]={href:href}}else{cont[m.id]={cont:m}}conf.tabs.push(tab)}w.loadStruct(conf);for(var a in cont){if(cont[a].href){w.cells(a).attachURL(cont[a].href);cont[a].href=null}else{w.cells(a).attachObject(cont[a].cont);if(cont[a].cont.style.display=="none"){cont[a].cont.style.display=""}cont[a].cont=null}cont[a]=null}var selId=n.getAttribute("select");if(selId!=null){w.tabs(selId).setActive()}else{if(w.getActiveTab()==null){var v=w._getFirstVisible();if(v!=null){w.cells(v).setActive()}}}acs=n.getAttribute("oninit");if(acs){eval(acs)}}}if(typeof(window.addEventListener)=="function"){window.removeEventListener("load",dhtmlXTabBarInitFromHTML,false)}else{window.detachEvent("onload",dhtmlXTabBarInitFromHTML)}}if(typeof(window.addEventListener)=="function"){window.addEventListener("load",dhtmlXTabBarInitFromHTML,false)}else{window.attachEvent("onload",dhtmlXTabBarInitFromHTML)}function dhtmlXSideBar(c){var e=this;this.conf={skin:(c.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxsidebar")||"dhx_skyblue"),css:"dhxsidebar",width:c.width||200,scroll_size:12,scroll_mult:20,close_button:false,icons_path:c.icons_path||"",selected:null,single_cell:(typeof(c.single_cell)=="undefined"?false:window.dhx4.s2b(c.single_cell)),cell:null,header:window.dhx4.s2b(c.header),autohide:window.dhx4.s2b(c.autohide),animate_items:true};this.setTemplate(c.template);window.dhtmlXCellTop.apply(this,[c.parent,(c==null?null:c.offsets)]);window.dhx4._eventable(this);if(window.navigator.msPointerEnabled==true){this.conf.touch_ms=true;this.conf.touch_start="MSPointerDown",this.conf.touch_end="MSPointerUp"}else{this.conf.touch_ms=false;this.conf.touch_start="touchstart",this.conf.touch_end="touchend"}this.side=document.createElement("DIV");this.side.className="dhxsidebar_side dhxsidebar_tpl_"+this.conf.tpl_name;this.side.innerHTML="<div class='dhxsidebar_side_items'></div>";this.cont.appendChild(this.side);this.arw=document.createElement("DIV");this.arw.className="dhxsidebar_arrows dhxsidebar_arrows_hidden";this.arw.innerHTML="<div class='dhxsidebar_arrow dhxsidebar_arrow_left'><div class='dhxsidebar_arrow_image'></div></div><div class='dhxsidebar_arrow dhxsidebar_arrow_right'><div class='dhxsidebar_arrow_image'></div></div>";this.cont.appendChild(this.arw);if(this.conf.autohide==true){this.hideSide();this.cont.className+=" dhxsidebar_autohide";this._doOnBodyClick=function(){if(e.conf.clear_click==true){e.conf.clear_click=false;return}e.hideSide()};this._doOnEscDown=function(g){g=g||event;if(g.keyCode==27){e.conf.clear_click=false;e.hideSide()}};if(typeof(window.addEventListener)=="function"){window.addEventListener(this.conf.touch_start,this._doOnBodyClick,false);window.addEventListener("click",this._doOnBodyClick,false);window.addEventListener("keydown",this._doOnEscDown,false)}else{document.body.attachEvent("onclick",this._doOnBodyClick);document.body.attachEvent("onkeydown",this._doOnEscDown)}}window.setTimeout(function(){if(e!=null&&e.side!=null){e.side.firstChild.style.top="0px"}},1);this._doOnArwClick=function(h){h=h||event;if(h.type!="click"&&h.preventDefault){h.preventDefault()}h.cancelBubble=true;var g=h.target||h.srcElement;if(g.className.match(/dhxsidebar_arrow_image/)!=null){g=g.parentNode}if(g.className.match(/dhxsidebar_arrow_left/)!=null){e._scrollSide(-e.conf.scroll_size)}else{if(g.className.match(/dhxsidebar_arrow_right/)!=null){e._scrollSide(e.conf.scroll_size)}}g=null};if(typeof(window.addEventListener)=="function"){this.arw.addEventListener(this.conf.touch_start,this._doOnArwClick,false);this.arw.addEventListener("click",this._doOnArwClick,false)}else{this.arw.attachEvent("onclick",this._doOnArwClick)}this._doOnSideClick=function(j){j=j||event;var h=j.target||j.srcElement;var l=null;var g=false;e.conf.clear_click=true;if(j.type=="touchstart"||j.type=="pointerdown"||j.type=="MSPointerDown"){if(j.preventDefault){j.preventDefault()}if(this.className.match(/dhxsidebar_touch/gi)==null){if(j.type=="touchstart"||(j.type=="pointerdown"&&j.pointerType=="touch")){this.className+=" dhxsidebar_touch"}}}while(h!=null&&l==null&&j.type!="pointerdown"&&j.type!="MSPointerDown"){if(typeof(h.className)!="undefined"){if(h.className.match(/^dhxsidebar_item/)!=null&&typeof(h._idd)!="undefined"){l=h._idd}else{if(h.className.match(/^dhxsidebar_bubble/)!=null){g=true;l=h.parentNode._idd}}}h=h.parentNode}if(l!=null){if(g==false||(g==true&&e.callEvent("onBubbleClick",[l,e.t[l].conf.bubble])==true)){e._setItemActive(l,true)}}h=null};if(typeof(window.addEventListener)=="function"){this.side.addEventListener(this.conf.touch_start,this._doOnSideClick,false);this.side.addEventListener(this.conf.touch_end,this._doOnSideClick,false);this.side.addEventListener("mouseup",this._doOnSideClick,false)}else{this.side.attachEvent("onclick",this._doOnSideClick)}this.side.onmouseover=function(){this.className=this.className.replace(/\s*dhxsidebar_touch/gi,"")};this._doOnSideScroll=function(g){g=g||event;var h=(g.type=="mousewheel"?-g.wheelDelta:g.deltaY);e._scrollSide(h/Math.abs(h)*3)};this._scrollSide=function(g){var h=parseInt(this.side.firstChild.style.top||0)-g*this.conf.scroll_mult;if(h+this.side.firstChild.offsetHeight<this.side.clientHeight){h=this.side.clientHeight-this.side.firstChild.offsetHeight}if(h>0){h=0}this.side.firstChild.style.top=h+"px"};if(typeof(window.addEventListener)=="function"){this.side.addEventListener("wheel",this._doOnSideScroll,false)}else{this.side.attachEvent("onmousewheel",this._doOnSideScroll)}this.t={};this.s={};this._adjustCell=function(o,m){if(this.conf.single_cell!=true&&o==null){return}var g=(this.conf.autohide==true?0:this.conf.width);var j=this.cont.offsetWidth-g;var n=0;var l=this.cont.offsetHeight;if(this.conf.single_cell==true){if(m==true){this.conf.cell._setSize(g,n,j,l)}}else{if(o!=this.conf.selected){n=-5000;this.t[o].cell.cell.style.visibility="hidden";this.t[o].cell.cell.style.zIndex=0}this.t[o].cell._setSize(g,n,j,l)}};var a=window.dhx4.transDetect();this.conf.transProp=a.transProp;this.conf.transEv=a.transEv;this.conf.transValue="all 0.1s";this._doOnTrEnd=function(h){var l=this._idd;if(e.t[l]==null){return}var g=e.t[l];var j=g.conf.transActvId;if(g.conf.transMode=="hide"){if(g.conf.remove==true){e._removeItem(l)}else{g.item.style[g.conf.transProp]="";if(e.conf.single_cell!=true){g.cell.cell.style.visibility="hidden";g.cell.cell.style.top="-5000px"}g.conf.transActv=false}}else{if(g.conf.transMode=="show"){g.item.style[g.conf.transProp]="";g.item.style.visibility="visible";g.conf.transMode=null;g.conf.transActv=false}}if(j!=null){e._setItemActive(j)}else{e._checkHeight()}g=null};this._initObj=function(g){this.clearAll();if(g.items!=null){this.addItem(g.items)}};this._xmlToObj=function(o){var h=[];var m=o.getElementsByTagName("sidebar");if(m!=null&&m[0]!=null){var j=m[0].getElementsByTagName("item");for(var n=0;n<j.length;n++){var l={};for(var g=0;g<j[n].attributes.length;g++){l[j[n].attributes[g].nodeName]=j[n].attributes[g].nodeValue}h.push(l)}}return{items:h}};dhx4._enableDataLoading(this,"_initObj","_xmlToObj","sidebar",{struct:true});this.unload=function(){this.conf.unloading=true;if(typeof(window.addEventListener)=="function"){this.side.removeEventListener("wheel",this._doOnSideScroll,false)}else{this.side.detachEvent("onmousewheel",this._doOnSideScroll)}if(this.conf.autohide==true){if(typeof(window.addEventListener)=="function"){window.removeEventListener("click",this._doOnBodyClick,false);window.removeEventListener("keydown",this._doOnEscDown,false)}else{document.body.detachEvent("onclick",this._doOnBodyClick);document.body.detachEvent("onkeydown",this._doOnEscDown)}}if(typeof(this._sideCoverDetach)=="function"){this._sideCoverDetach()}this.clearAll();this.s=this.t=null;if(typeof(window.addEventListener)=="function"){this.arw.removeEventListener(this.conf.touch_start,this._doOnArwClick,false);this.arw.removeEventListener("click",this._doOnArwClick,false)}else{this.arw.detachEvent("onclick",this._doOnArwClick)}this.arw.parentNode.removeChild(this.arw);this.arw=null;if(typeof(window.addEventListener)=="function"){this.side.removeEventListener(this.conf.touch_start,this._doOnSideClick,false);this.side.removeEventListener(this.conf.touch_end,this._doOnSideClick,false);this.side.removeEventListener("click",this._doOnSideClick,false)}else{this.side.detachEvent("onclick",this._doOnSideClick)}this.side.onmouseover=null;this.side.parentNode.removeChild(this.side);this.side=null;this._unloadTop();if(this.conf.single_cell==true){this.conf.cell._unload();this.conf.cell=null}window.dhx4._eventable(this,"clear");window.dhx4._enableDataLoading(this,null,null,null,"clear");for(var g in this){this[g]=null}e=null};if(this.conf.single_cell==true){this.conf.cell=new dhtmlXSideBarCell("master",this);this.cont.appendChild(this.conf.cell.cell);this._cells_native=this.cells;this.cells=function(g){this.conf.cell._idd=g;return this.conf.cell}}this.setSizes();if(c.items!=null){this._initObj(c)}else{if(c.json!=null){this.loadStruct(c.json,c.onload)}else{if(c.xml!=null){this.loadStruct(c.xml,c.onload)}}}return this}dhtmlXSideBar.prototype=new dhtmlXCellTop();dhtmlXSideBar.prototype._addItem=function(c){var g=(typeof(c.id)!="undefined"?c.id:window.dhx4.newId());if(c.type=="separator"){var e=document.createElement("DIV");e.className="dhxsidebar_sep";this.side.firstChild.appendChild(e);this.s[g]={sep:e};e=null;return}c.icons_path=this.conf.icons_path;var e=document.createElement("DIV");e.className="dhxsidebar_item";e.innerHTML=window.dhx4.template(this.conf.tpl_str,c);e._idd=g;this.side.firstChild.appendChild(e);e.ondragstart=function(){return false};if(this.conf.single_cell==true){var a=this.conf.cell}else{var a=new dhtmlXSideBarCell(g,this);this.cont.appendChild(a.cell)}this.t[g]={item:e,cell:a,init:c,conf:{selected:false,visible:true,close:close}};if(typeof(c.bubble)!="undefined"){this._setItemBubble(g,c.bubble)}if(this.conf.header==true){a.setHeaderText(window.dhx4.template(this.tpl_header,c))}a=e=null;if(window.dhx4.s2b(c.selected)==true){this._setItemActive(g)}else{this._adjustCell(g)}this._checkHeight()};dhtmlXSideBar.prototype.addItem=function(a){if(!(a instanceof Array)){a=[a]}for(var c=0;c<a.length;c++){this._addItem(a[c])}};dhtmlXSideBar.prototype.items=dhtmlXSideBar.prototype.cells=function(a){if(this.conf.single_cell==true){return this.conf.cell}if(this.t[a]!=null){return this.t[a].cell}return null};dhtmlXSideBar.prototype.forEachCell=dhtmlXSideBar.prototype.forEachItem=function(e){if(this.conf.single_cell==true){if(typeof(e)=="function"){e.apply(window,[this.conf.cell])}else{if(typeof(e)=="string"&&typeof(window[e])=="function"){window[e].apply(window,[this.conf.cell])}}return}for(var c in this.t){if(typeof(e)=="function"){e.apply(window,[this.t[c].cell])}else{if(typeof(e)=="string"&&typeof(window[e])=="function"){window[e].apply(window,[this.t[c].cell])}}}};dhtmlXSideBar.prototype.getAllItems=function(){var e=[];for(var c in this.t){e.push(c)}return e};dhtmlXSideBar.prototype.getNumberOfItems=function(){return this.getAllItems().length};dhtmlXSideBar.prototype.clearAll=function(){for(var c in this.t){this._removeItem(c,false,true)}for(var c in this.s){this.removeSep(c)}};dhtmlXSideBar.prototype.setSizes=function(){this._adjustCont();this._adjustSide();this._checkHeight();this._adjustCell(this.conf.selected,true);this.callEvent("_onSetSizes",[])};dhtmlXSideBar.prototype.setSideWidth=function(a){this.conf.width=a;this.setSizes()};dhtmlXSideBar.prototype._adjustSide=function(){if(this.conf.side_ofs==null){this.conf.side_ofs={};this.side.style.width=this.conf.width+"px";this.side.style.height=this.side.parentNode.offsetHeight+"px";this.conf.side_ofs.w=this.side.offsetWidth-parseInt(this.side.style.width);this.conf.side_ofs.h=this.side.offsetHeight-parseInt(this.side.style.height)}this.side.style.width=this.conf.width-this.conf.side_ofs.w+"px";this.side.style.height=this.side.parentNode.offsetHeight-this.arw.offsetHeight-this.conf.side_ofs.h+"px";this.arw.style.width=this.side.style.width;this._scrollSide(0)};dhtmlXSideBar.prototype._checkHeight=function(){var a=(this.arw.className.match(/dhxsidebar_arrows_hidden/)!=null);if(this.conf.side_hfix==null){this.conf.side_hfix=this.side.offsetHeight-this.side.clientHeight}if(this.side.firstChild.offsetHeight>this.side.parentNode.clientHeight-this.conf.side_hfix){if(a==true){this.arw.className="dhxsidebar_arrows";this._adjustSide()}}else{if(a==false){this.arw.className="dhxsidebar_arrows dhxsidebar_arrows_hidden";this.side.firstChild.style.top="0px";this._adjustSide()}}};dhtmlXSideBar.prototype.removeSep=function(c){if(this.s[c]==null){return}this.side.firstChild.removeChild(this.s[c].sep);this.s[c].sep=null;this.s[c]=null;try{delete this.s[c]}catch(a){}};dhtmlXSideBar.prototype.showSide=function(){if(this.conf.autohide!=true){return}if(this.sideCover==null){this._sideCoverAttach()}if(this.conf.animate_items==true){var e=function(j,a,l){window.setTimeout(function(){j.style[l]="transform 0.3s";j.style.transform="translate(0px,0px)";j=null},a)};if(this.conf.transProp!==false){var h=100;for(var c in this.t){this.t[c].item.style[this.conf.transProp]="";this.t[c].item.style.transform="translate(-"+(this.conf.width+20)+"px,0px)";e(this.t[c].item,h+=50,this.conf.transProp)}}}var g=this;window.setTimeout(function(){g.arw.style.left=g.side.style.left="0px";g.sideCover.className="dhxsidebar_side_cover dhxsidebar_side_cover_actv";g=null},50)};dhtmlXSideBar.prototype.hideSide=function(a){if(this.conf.autohide!=true){return}this.arw.style.left=this.side.style.left=-this.conf.width-10+"px";if(this.sideCover!=null){if(this.conf.transProp!==false){this.sideCover.className="dhxsidebar_side_cover"}else{this._sideCoverDetach()}}};dhtmlXSideBar.prototype._sideCoverAttach=function(){var a=this;this.sideCover=document.createElement("DIV");this.sideCover.className="dhxsidebar_side_cover";if(this.arw.nextSibling!=null){this.cont.insertBefore(this.sideCover,this.arw.nextSibling)}else{this.cont.appendChild(this.sideCover)}this._sideCoverOnTrEnd=function(){if(this.className.match(/dhxsidebar_side_cover_actv/)==null){a._sideCoverDetach()}};this._sideCoverDetach=function(){if(this.sideCover==null){return}if(this.conf.transProp!==false){this.sideCover.removeEventListener(this.conf.transEv,this._sideCoverOnTrEnd,false)}this.sideCover.parentNode.removeChild(this.sideCover);this.sideCover=null;a=null};if(this.conf.transProp!==false){this.sideCover.addEventListener(this.conf.transEv,this._sideCoverOnTrEnd,false)}};dhtmlXSideBar.prototype._setItemActive=function(e,c){if(this.conf.selected==e){if(this.conf.autohide==true){this.hideSide()}return}if(typeof(c)=="undefined"){c=false}if(c==true&&this.callEvent("onBeforeSelect",[e,this.conf.selected])!==true){return}var a=null;if(this.conf.selected!=null){a=this.conf.selected;this._setItemInactive(this.conf.selected)}if(this.t[e]!=null){this.conf.selected=e;this.t[e].selected=true;this.t[e].item.className+=" dhxsidebar_item_selected";if(this.conf.single_cell!=true){this.t[e].cell.cell.style.visibility="visible";this.t[e].cell.cell.style.top="0px";this.t[e].cell.cell.style.zIndex=1}}else{this.conf.selected=null}this._adjustCell(e);if(c==true){this.callEvent("onSelect",[e,a])}if(this.conf.autohide==true){this.hideSide()}};dhtmlXSideBar.prototype._setItemInactive=function(a){if(this.t[a]==null){return}this.t[a].selected=false;this.t[a].item.className=this.t[a].item.className.replace(/\s{0,}dhxsidebar_item_selected/gi,"");if(this.conf.single_cell!=true){this.t[a].cell.cell.style.visibility="hidden";this.t[a].cell.cell.style.top="-5000px";this.t[a].cell.cell.style.zIndex=0}};dhtmlXSideBar.prototype._isItemActive=function(a){return(this.conf.selected==a)};dhtmlXSideBar.prototype._getNextVisible=function(c,a){return this._getNearVisible(c,a,"next")};dhtmlXSideBar.prototype._getPrevVisible=function(c,a){return this._getNearVisible(c,a,"previous")};dhtmlXSideBar.prototype._getFirstVisible=function(){return this._getNearVisible(null,false,"first")};dhtmlXSideBar.prototype._getNearVisible=function(j,c,h){if(h=="first"){var e=this.side.firstChild.firstChild;h="next"}else{if(j==null||this.t[j]==null){return(c?this._getFirstVisible():null)}var e=this.t[j].item[h+"Sibling"]}var g=null;while(e!=null&&g==null){var a=e._idd;if(a!=null&&g==null&&this.t[a].conf.visible){g=a}else{e=e[h+"Sibling"]}}e=null;return g};dhtmlXSideBar.prototype.goToNextItem=function(a){var c=this._getNextVisible(this.conf.selected,true);if(c!=null){this._setItemActive(c,a)}};dhtmlXSideBar.prototype.goToPrevItem=function(a){var c=this._getPrevVisible(this.conf.selected,true);if(c!=null){this._setItemActive(c,a)}};dhtmlXSideBar.prototype.getActiveItem=function(){return this.conf.selected};dhtmlXSideBar.prototype.setTemplate=function(g,c){this.conf.tpl_name=(g!=null&&this.templates[g]!=null?g:"details");this.conf.tpl_str=this.templates[this.conf.tpl_name];if(c!=null){this.conf.icons_path=c}for(var e in this.t){this.t[e].init.icons_path=this.conf.icons_path;this.t[e].item.innerHTML=window.dhx4.template(this.conf.tpl_str,this.t[e].init)}if(this.side!=null){this.side.className="dhxsidebar_side dhxsidebar_tpl_"+this.conf.tpl_name}if(this._scrollSide!=null){this._scrollSide(0);this._checkHeight()}};dhtmlXSideBar.prototype.templates={details:"<img class='dhxsidebar_item_icon' src='#icons_path##icon#' border='0'><div class='dhxsidebar_item_text'>#text#</div>",tiles:"<img class='dhxsidebar_item_icon' src='#icons_path##icon#' border='0'><div class='dhxsidebar_item_text'>#text#</div>",icons:"<img class='dhxsidebar_item_icon' src='#icons_path##icon#' border='0'>",icons_text:"<div class='dhxsidebar_item_icon'><img class='dhxsidebar_item_icon' src='#icons_path##icon#' border='0'></div><div class='dhxsidebar_item_text'>#text#</div>",text:"<div class='dhxsidebar_item_text'>#text#</div>"};dhtmlXSideBar.prototype.tpl_bubble="<div class='dhxsidebar_bubble'>#value#</div>";dhtmlXSideBar.prototype.tpl_header="#text#";window.dhtmlXSideBarCell=function(h,g){dhtmlXCellObject.apply(this,[h,"_sidebar"]);var e=this;this.sidebar=g;this.conf.skin=this.sidebar.conf.skin;this.conf.sidebar_funcs={show:"_showItem",hide:"_hideItem",isVisible:"_isItemVisible",setActive:"_setItemActive",isActive:"_isItemActive",setText:"_setItemText",getText:"_getItemText",remove:"_removeItem",setBubble:"_setItemBubble",getBubble:"_getItemBubble",clearBubble:"_clearItemBubble"};this._sidebarCall=function(a){return function(){var j=[this._idd];for(var l=0;l<arguments.length;l++){j.push(arguments[l])}return this.sidebar[a].apply(this.sidebar,j)}};for(var c in this.conf.sidebar_funcs){if(typeof(this[c])!="function"){this[c]=this._sidebarCall(this.conf.sidebar_funcs[c])}}if(this.sidebar.conf.header==true){this._initHeader();this.cell.childNodes[this.conf.idx.hdr].onclick=function(j){j=j||event;var a=(j.target||j.srcElement);if(a.className.match(/dhx_cell_sidebar_hdr_icon/gi)!=null){e.sidebar.conf.clear_click=true;e.sidebar.showSide()}a=null}}this.attachEvent("_onCellUnload",function(){if(this.conf.idx.hdr!=null){this.cell.childNodes[this.conf.idx.hdr].onclick=null}this.sidebar=null;for(var j in this.conf.sidebar_funcs){this[j]=this.conf.sidebar_funcs[j]=null}this.conf.sidebar_funcs=null;e=null});this.attachEvent("_onContentLoaded",function(){this.sidebar.callEvent("onContentLoaded",arguments)});this.attachEvent("_onBeforeContentAttach",function(a){if(a=="tabbar"||a=="layout"||a=="acc"){this._hideBorders()}if(a=="sidebar"&&this.conf.skin!="dhx_skyblue"){this._hideBorders()}if((this.conf.skin=="dhx_web"||this.conf.skin=="dhx_terrace")&&(a=="menu"||a=="toolbar"||a=="ribbon")){if(this.cell.className.match(/dhx_cell_cont_no_top/gi)==null){this.cell.className+=" dhx_cell_cont_no_top"}}})};dhtmlXSideBarCell.prototype=new dhtmlXCellObject();dhtmlXSideBar.prototype._setItemText=function(g,e){if(this.t[g]!=null){for(var c in e){this.t[g].init[c]=e[c]}this.t[g].init.icons_path=this.conf.icons_path;this.t[g].item.innerHTML=window.dhx4.template(this.conf.tpl_str,this.t[g].init);if(this.t[g].conf.bubble!=null){this.t[g].item.innerHTML+=window.dhx4.template(this.tpl_bubble,{value:this.t[g].conf.bubble})}if(this.conf.header==true){this.t[g].cell.setHeaderText(window.dhx4.template(this.tpl_header,this.t[g].init))}}};dhtmlXSideBar.prototype._getItemText=function(g){var e={};if(this.t[g]!=null){for(var c in this.t[g].init){e[c]=this.t[g].init[c]}}return e};dhtmlXSideBar.prototype._removeItem=function(n,m,j){if(this.t[n]==null){return}if(j!=true&&this.t[n].conf.remove!=true){this.t[n].conf.remove=true;this._hideItem(n,m);return}if(typeof(m)=="undefined"){m=true}var g=this._getNextVisible(n);var h=this._getPrevVisible(n);if(this.t[n].conf.transEv==true){this.t[n].item.removeEventListener(this.conf.transEv,this._doOnTrEnd);this.t[n].conf.transEv=false}if(this.conf.single_cell!=true){this.t[n].cell._unload();this.t[n].cell=null}this.t[n].item.ondragstart=null;this.t[n].item.parentNode.removeChild(this.t[n].item);this.t[n].item=null;for(var c in this.t[n]){this.t[n][c]=null}this.t[n]=null;try{delete this.t[n]}catch(l){}if(this.conf.selected==n&&m!=false){this.conf.selected=null;var m=(m==true?(g||h||this._getFirstVisible()):m);if(m!=null){this._setItemActive(m)}}else{if(j!=true){this._checkHeight()}}};dhtmlXSideBar.prototype._showItem=function(c,a){if(this.t[c]==null||this.t[c].conf.visible==true||this.t[c].conf.transActv==true){return}if(this.conf.transProp!==false){this.t[c].conf.transActv=true;this.t[c].conf.transMode="show";this.t[c].conf.transProp=this.conf.transProp;this.t[c].conf.transActvId=(a?c:null);if(this.t[c].conf.transEv!=true){this.t[c].item.addEventListener(this.conf.transEv,this._doOnTrEnd);this.t[c].conf.transEv=true}this.t[c].conf.visible=true;this.t[c].item.style[this.conf.transProp]=this.conf.transValue;this.t[c].item.className="dhxsidebar_item"}else{this.t[c].conf.visible=true;this.t[c].item.style.display="";if(a==true){this._setItemActive(c)}else{this._checkHeight()}}};dhtmlXSideBar.prototype._hideItem=function(h,g){if(this.t[h]==null||this.t[h].conf.visible!=true||this.t[h].conf.transActv==true){return}var e=false;if(this.conf.selected==h){this.conf.selected=null;this.t[h].conf.active=false;this.t[h].item.className="dhxsidebar_item";e=true}var c=this._getPrevVisible(h);var a=this._getNextVisible(h);var g=(e&&g!==false?(g==true?null:g)||a||c:null);if(this.conf.transProp!==false){this.t[h].conf.transActv=true;this.t[h].conf.transMode="hide";this.t[h].conf.transProp=this.conf.transProp;this.t[h].conf.transActvId=g;this.t[h].conf.visible=false;if(this.t[h].conf.transEv!=true){this.t[h].item.addEventListener(this.conf.transEv,this._doOnTrEnd);this.t[h].conf.transEv=true}this.t[h].item.style[this.conf.transProp]=this.conf.transValue;this.t[h].item.className="dhxsidebar_item dhxsidebar_item_hidden"}else{this.t[h].item.style.display="none";this.t[h].conf.visible=false;if(this.conf.single_cell!=true){this.t[h].cell.cell.style.visibility="hidden";this.t[h].cell.cell.style.top="-5000px"}if(g!=null){this._setItemActive(g)}this._checkHeight();if(this.t[h].conf.remove==true){this._removeItem(h)}}};dhtmlXSideBar.prototype._isItemVisible=function(a){return(this.t[a].conf.visible==true)};dhtmlXSideBar.prototype._setItemBubble=function(c,a){if(this.t[c]==null){return}this.t[c].item.innerHTML=window.dhx4.template(this.conf.tpl_str,this.t[c].init)+window.dhx4.template(this.tpl_bubble,{value:String(a)});this.t[c].conf.bubble=a};dhtmlXSideBar.prototype._getItemBubble=function(a){if(this.t[a]==null){return null}return(typeof(this.t[a].conf.bubble)=="undefuned"?null:this.t[a].conf.bubble)};dhtmlXSideBar.prototype._clearItemBubble=function(a){if(this.t[a]==null){return}this.t[a].item.innerHTML=window.dhx4.template(this.conf.tpl_str,this.t[a].init);this.t[a].conf.bubble=null};dhtmlXCellObject.prototype.attachSidebar=function(a){this.callEvent("_onBeforeContentAttach",["sidebar"]);if(a==null){a={}}var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";if(typeof(window.dhtmlXWindowsCell)=="function"&&this instanceof window.dhtmlXWindowsCell){}else{if(this.conf.skin=="dhx_skyblue"){c._ofs={t:-1,r:-1,b:-1,l:-1}}if(this.conf.skin=="dhx_web"){if(typeof(window.dhtmlXSideBarCell)=="function"&&this instanceof window.dhtmlXSideBarCell){c._ofs={l:8}}if(typeof(window.dhtmlXLayoutCell)=="function"&&this instanceof window.dhtmlXLayoutCell){c._ofs={t:2}}if(typeof(window.dhtmlXTabBarCell)=="function"&&this instanceof window.dhtmlXTabBarCell){c._ofs={t:8}}if(typeof(window.dhtmlXAccordionCell)=="function"&&this instanceof window.dhtmlXAccordionCell){c._ofs={t:2}}}if(this.conf.skin=="dhx_terrace"){if(typeof(window.dhtmlXSideBarCell)=="function"&&this instanceof window.dhtmlXSideBarCell){c._ofs={l:-1}}if(typeof(window.dhtmlXLayoutCell)=="function"&&this instanceof window.dhtmlXLayoutCell){c._ofs={t:-1}}if(typeof(window.dhtmlXTabBarCell)=="function"&&this instanceof window.dhtmlXTabBarCell){c._ofs={t:-1}}if(typeof(window.dhtmlXAccordionCell)=="function"&&this instanceof window.dhtmlXAccordionCell){c._ofs={t:-1,r:-1,b:-1,l:-1}}}}this._attachObject(c);a.skin=this.conf.skin;a.parent=c;this.dataType="sidebar";this.dataObj=new dhtmlXSideBar(a);a.parent=c=null;a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXSideBarCell.prototype._initHeader=function(){var a=document.createElement("DIV");a.className="dhx_cell_sidebar_hdr";a.innerHTML=(this.sidebar.conf.autohide==true?"<div class='dhx_cell_sidebar_hdr_icon'></div>":"")+"<div class='dhx_cell_sidebar_hdr_text"+(this.sidebar.conf.autohide==true?" dhx_cell_sidebar_hdr_text_icon":"")+"'></div>";this.cell.insertBefore(a,this.cell.childNodes[this.conf.idx.cont]);a=null;this.conf.ofs_nodes.t._getHdrHeight="func";this.conf.hdr={visible:true};this.conf.idx_data.hdr="dhx_cell_sidebar_hdr";this._updateIdx()};dhtmlXSideBarCell.prototype._getHdrHeight=function(){return this.cell.childNodes[this.conf.idx.hdr].offsetHeight};dhtmlXSideBarCell.prototype.showHeader=function(){if(this.conf.hdr.visible==true){return}this.conf.hdr.visible=true;this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_sidebar_hdr";this._adjustCont(this._idd)};dhtmlXSideBarCell.prototype.hideHeader=function(){if(this.conf.hdr.visible!=true){return}this.conf.hdr.visible=false;this.cell.childNodes[this.conf.idx.hdr].className="dhx_cell_sidebar_hdr dhx_cell_sidebar_hdr_hidden";this._adjustCont(this._idd)};dhtmlXSideBarCell.prototype.isHeaderVisible=function(){return(this.conf.hdr.visible==true)};dhtmlXSideBarCell.prototype.setHeaderText=function(c){this.conf.text=c;var a=this.cell.childNodes[this.conf.idx.hdr];a.childNodes[(a.firstChild.className=="dhx_cell_sidebar_hdr_icon"?1:0)].innerHTML="<span>"+c+"</span>";a=null};dhtmlXSideBarCell.prototype.getHeaderText=function(){return this.conf.text};function dhtmlXCarousel(g,j,m){if(typeof(g)=="string"||(typeof(g)=="object"&&typeof(g.tagName)!="undefined")){g={parent:(typeof(g)=="string"?document.getElementById(g):g),effect:j,skin:m,delete_conf:true}}else{if(typeof(g)=="undefined"||g==null){g={}}}this.conf={skin:(g.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxcarousel")||"dhx_skyblue"),css:"dhxcarousel",items_count:0,selected:-1,item_width:Number(g.item_width)||"auto",item_height:Number(g.item_height)||"auto",ofs_item:Number(g.offset_item)||1,ofs_left:Number(g.offset_left)||0,ofs_top:Number(g.offset_top)||0,buttons:(typeof(g.buttons)=="undefined"?true:window.dhx4.s2b(g.buttons)),drops:false,keys:(typeof(g.keys)=="undefined"?true:window.dhx4.s2b(g.keys)),key_data:{left:37,right:39},touch_scroll:(typeof(g.touch_scroll)!="undefined"?window.dhx4.s2b(g.touch_scroll):true),arw:["&#9668;","&#9658;"]};this.conf.autowidth=(this.conf.item_width=="auto");this.conf.autoheight=(this.conf.item_height=="auto");var e=window.dhx4.transDetect();this.conf.transProp=e.transProp;this.conf.transEv=e.transEv;this.conf.anim_type=(g.effect||"slide");if(this.ef[this.conf.anim_type]==true){var h=this["_"+this.conf.anim_type+"_init"]();if(h===false){this.conf.anim_type="slide";h=this["_"+this.conf.anim_type+"_init"]()}if(typeof(h)=="object"){for(var c in h){if(typeof(this.conf[c])=="undefined"){this.conf[c]=h[c]}}}}this.conf.anim_f=this["_"+this.conf.anim_type+"_f"]();var l=this;window.dhtmlXCellTop.apply(this,[g.parent,g.offsets]);this.area=document.createElement("DIV");this.area.className="dhxcarousel_area";this.cont.appendChild(this.area);if(typeof(window.addEventListener)=="function"&&l.conf.touch_scroll==true){this._doOnTouchStart=function(a){if(window.dhx4.dnd._mTouch(a)==true){return}if(l.conf.animating==true){return}if(a.preventDefault){a.preventDefault()}l.area.className+=" dhxcarousel_area_dnd";l.conf.touch_conf={t:new Date().getTime(),dx:null,dy:null};if(a.type.match(/^touch/)!=null){l.conf.touch_conf.id=a.touches[0].identifier;l.conf.touch_conf.x=a.touches[0].clientX;l.conf.touch_conf.y=a.touches[0].clientY}else{l.area.style.touchAction=l.area.style.msTouchAction="none";l.conf.touch_conf.x=a.clientX;l.conf.touch_conf.y=a.clientY}window.addEventListener(window.dhx4.dnd.evs.move,l._doOnTouchMove,false);window.addEventListener(window.dhx4.dnd.evs.end,l._doOnTouchEnd,false)};this._doOnTouchMove=function(a){};this._doOnTouchEnd=function(r){if(r.type.match(/^touch/)!=null){var n=0;for(var o=0;o<r.changedTouches.length;o++){if(r.changedTouches[o].identifier==l.conf.touch_conf.id){n=l.conf.touch_conf.x-r.changedTouches[o].clientX}}}else{var n=l.conf.touch_conf.x-r.clientX}window.removeEventListener(window.dhx4.dnd.evs.move,l._doOnTouchMove,false);window.removeEventListener(window.dhx4.dnd.evs.end,l._doOnTouchEnd,false);l.area.className=l.area.className.replace(/\s*dhxcarousel_area_dnd$/,"");if(n==0||new Date().getTime()-l.conf.touch_conf.t>400){return}var a=n/Math.abs(n);l._animateStart(a)};this.area.addEventListener(window.dhx4.dnd.evs.start,this._doOnTouchStart,false)}this.cdata={};this.ind={};this.addCell=function(s,r){this.conf.items_count++;if(this.conf.selected==-1){this.conf.selected=0}this.setSizes();this._checkControls();if(typeof(r)=="undefined"||r==null){r=this.conf.items_count-1}else{if(r<0){r=0}else{if(r>this.conf.items_count-1){r=this.conf.items_count-1}}}for(var o in this.cdata){if(this.cdata[o].index>=r){this.cdata[o].index++;this.ind[this.cdata[o].index]=o;this._adjustCell(o)}}if(s==null){s=String(window.dhx4.newId())}while(this.cdata[s]!=null){s=String(window.dhx4.newId())}var n=new dhtmlXCarouselCell(s,this);if(this.area.childNodes[r]!=null){this.area.insertBefore(n.cell,this.area.childNodes[r])}else{this.area.appendChild(n.cell)}this.cdata[s]={index:r,cell:n};this.ind[r]=s;this._adjustCell(s);this._addBar();this._setBarIndex(this.conf.selected);n=null;this[this.conf.anim_f.cell_added](s);return s};this._removeCell=function(u){var r=this.cdata[u].index;this.cdata[u].cell._unload();this.cdata[u].index=this.cdata[u].cell=null;this.cdata[u]=null;delete this.cdata[u];delete this.ind[r];this.conf.items_count--;if(this.conf.unloading==true){return}this.ind={};var n=0;for(var o in this.cdata){if(this.cdata[o].index>r){this.cdata[o].index--}this.ind[this.cdata[o].index]=o}var s=false;if(this.conf.selected>r){this.conf.selected--}else{if(this.conf.selected==r){this.conf.selected=Math.min(this.conf.selected,this.conf.items_count-1);s=true}else{}}this._removeBar(false);this._setBarIndex(this.conf.selected);if(s==true){if(this.conf.selected>=0){this[this.conf.anim_f.update_selected](this.ind[this.conf.selected])}}this.setSizes();this._checkControls()};this.setSizes=function(){this._adjustCont();var u={};this.area.style.height=this.cont.offsetHeight-this.controls.offsetHeight+"px";this.conf.width=(this.conf.autowidth?this.cont.offsetWidth-this.conf.ofs_left*2:this.conf.item_width);this.conf.height=(this.conf.autoheight?this.area.offsetHeight-this.conf.ofs_top*2:this.conf.item_height);this.conf.top=Math.max(0,(this.conf.autoheight?this.conf.ofs_top:Math.floor((this.area.offsetHeight-this.conf.height)/2)));this.area.style.width=this[this.conf.anim_f.detect_aw]()*(this.conf.width+this.conf.ofs_item)+this.conf.ofs_item+"px";this.area.style.left=Math.round(this.cont.offsetWidth/2-this.conf.width/2-this.conf.ofs_item)+"px";for(var o in this.cdata){var r={};for(var n in this.cdata[o].cell.conf.size){r[n]=this.cdata[o].cell.conf.size[n]}if(this.conf.autowidth==true){r.w=this.conf.width;r.x=this[this.conf.anim_f.detect_x](o)}if(this.conf.autoheight==true){r.h=this.conf.height}u[o]=r}this.area.style.left=Math.round(this.cont.offsetWidth/2-this.conf.width/2-this.conf.ofs_item)-(this.conf.width+this.conf.ofs_item)*this.conf.selected+"px";this._adjustControls();if(this.conf.autoheight!=true){this.conf.top=Math.max(0,Math.floor(this.area.offsetHeight-this.conf.height)/2);for(var o in u){u[o].y=this.conf.top}}for(var o in u){this.cdata[o].cell._setSize(u[o].x,u[o].y,u[o].w,u[o].h)}this.callEvent("_onSetSizes",[])};this._adjustCell=function(a){this.cdata[a].cell._setSize(this[this.conf.anim_f.detect_x](a),this.conf.top,this.conf.width,this.conf.height)};this._animateStart=function(n,a){if((this.conf.selected<=0&&n<0)||(this.conf.selected>=this.conf.items_count-1&&n>0)){return}if(this.conf.animating==true){return}this.conf.animating=true;this[this.conf.anim_f.prepare](n,a)};this._animateTransEnd=function(a){l[l.conf.anim_f.end](a||event,this)};this._animateEnd=function(a){this.conf.selected=this.conf.selected+a;this._checkControls();this._setBarIndex(this.conf.selected);this.callEvent("onSelect",[this.ind[this.conf.selected]]);this.conf.animating=false};this._initControls();this.setCellSize=function(a,n){this.conf.item_width=(a==null?"auto":a);this.conf.item_height=(n==null?"auto":n);this.setSizes()};this.setOffset=function(o,n,a){if(o!=null){this.conf.ofs_left=o}if(n!=null){this.conf.ofs_top=n}if(a!=null){this.conf.ofs_item=a}this.setSizes()};this.enableHotKeys=function(a){this.conf.keys=window.dhx4.s2b(a)};this.goFirst=function(){if(this.conf.selected==0){return}this._animateStart(-this.conf.selected)};this.goLast=function(){if(this.conf.selected==this.conf.items_count-1){return}this._animateStart(this.conf.items_count-1-this.conf.selected)};this.goNext=function(){this._animateStart(1)};this.goPrev=function(){this._animateStart(-1)};this.getActiveIndex=function(){return this.conf.selected};this.getActiveId=function(){return this.ind[this.conf.selected]};this.getActiveCell=function(){var a=this.getActiveId();if(a!=null){return this.cdata[a].cell}return null};this.unload=function(){this.conf.unloading=true;if(typeof(window.addEventListener)=="function"){window.removeEventListener("keydown",this._doOnWinKeyDown,false);if(this._doOnTouchStart!=null){this.area.removeEventListener(window.dhx4.dnd.evs.start,this._doOnTouchStart,false)}}else{document.body.detachEvent("onkeydown",this._doOnWinKeyDown)}for(var n in this.cdata){this._removeCell(n)}this.cdata[n]=null;this.area.parentNode.removeChild(this.area);this.area=null;this._unloadControls();this._unloadTop();window.dhx4._eventable(this,"clear");for(var n in this){this[n]=null}l=null};window.dhx4._eventable(this);this._callMainEvent=function(n,a){this.callEvent(n,a)};this.conf.ev_coverclick=this.attachEvent("_cellCoverClick",function(a){var n=a-this.conf.selected;if(Math.abs(n)==1){this._animateStart(n)}});this._doOnWinKeyDown=function(o){o=o||event;if(l.conf.keys==true){if(o.ctrlKey==true&&o.shiftKey!=true&&o.altKey!=true){var n=o.keyCode;var a=l.conf.key_data;if(n==a.left||n==a.right){if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}l._animateStart(n==a.left?-1:1)}}}};if(typeof(window.addEventListener)=="function"){window.addEventListener("keydown",this._doOnWinKeyDown,false)}else{document.body.attachEvent("onkeydown",this._doOnWinKeyDown)}if(g.delete_conf==true){for(var c in g){g[c]=null}g=null}return this}dhtmlXCarousel.prototype=new dhtmlXCellTop();dhtmlXCarousel.prototype.ef={};dhtmlXCarousel.prototype.cells=function(a){return this.cdata[a].cell};dhtmlXCarousel.prototype.forEachCell=function(e){for(var c in this.cdata){if(typeof(e)=="function"){e.apply(window,[this.cdata[c].cell])}else{if(typeof(e)=="string"&&typeof(window[e])=="function"){window[e].apply(window,[this.cdata[c].cell])}}}};dhtmlXCarousel.prototype._initControls=function(){var a=this;this.controls=document.createElement("DIV");this.controls.className="dhx_carousel_controls";this.controls.innerHTML="<div class='dhx_carousel_bars'></div><div class='dhx_carousel_btn dhx_carousel_btn_prev'>"+this.conf.arw[0]+"</div><div class='dhx_carousel_btn dhx_carousel_btn_next'>"+this.conf.arw[1]+"</div>";this.cont.appendChild(this.controls);this._doOnControlClick=function(j){if(a.conf.clear_click==true){a.conf.clear_click=false;return}j=j||event;if(window.dhx4.dnd.evs.start!=null&&j.type!="click"&&a.conf.clear_click!=true){if(window.dhx4.dnd._mTouch(j)==true){return}a.conf.clear_click=true}var c=j.target||j.srcElement;var h=null;if(c.className!=null){if(c.className.match(/btn_prev/)!=null){h=-1}else{if(c.className.match(/btn_next/)!=null){h=1}else{if(c.className.match(/dhx_carousel_onebar/)!=null&&c.className.match(/dhx_carousel_baractv/)==null){for(var g=0;g<c.parentNode.childNodes.length;g++){if(c.parentNode.childNodes[g]==c){h=g-a.conf.selected}}}}}}if(h!=null){a._animateStart(h)}c=null};if(typeof(window.addEventListener)=="function"){this.controls.addEventListener("click",this._doOnControlClick,false);if(window.dhx4.dnd.evs.start!=null){this.controls.addEventListener(window.dhx4.dnd.evs.start,this._doOnControlClick,false)}}else{this.controls.attachEvent("onclick",this._doOnControlClick);if(window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8){this.controls.onselectstart=function(c){c=c||event;if(c.preventDefault){c.preventDefault()}c.returnValue=false;return false}}}this.showControls=function(){this.controls.style.display="";this.setSizes()};this.hideControls=function(){this.controls.style.display="none";this.setSizes()};this._checkControls=function(){this.controls.childNodes[1].className="dhx_carousel_btn dhx_carousel_btn_prev"+(this.conf.selected<=0?"_dis":"");this.controls.childNodes[2].className="dhx_carousel_btn dhx_carousel_btn_next"+(this.conf.selected>=this.conf.items_count-1||this.conf.items_count==0?"_dis":"")};this._adjustControls=function(){this.controls.firstChild.style.left=Math.round(this.cont.offsetWidth/2-this.controls.firstChild.offsetWidth/2)+"px"};this._addBar=function(){var c=document.createElement("DIV");c.className="dhx_carousel_onebar";c.innerHTML="<div class='dhx_carousel_barcore'>&nbsp;</div>";this.controls.firstChild.appendChild(c);c=null;this._adjustControls()};this._removeBar=function(e){var c=this.controls.firstChild.lastChild;if(c!=null){c.parentNode.removeChild(c);c=null;if(e!==false){this._adjustControls()}}};this._setBarIndex=function(c){for(var e=0;e<this.controls.firstChild.childNodes.length;e++){this.controls.firstChild.childNodes[e].className="dhx_carousel_onebar"+(e==c?" dhx_carousel_baractv":"")}};this._unloadControls=function(){if(typeof(window.addEventListener)=="function"){this.controls.removeEventListener("click",this._doOnControlClick,false);if(window.dhx4.dnd.evs.start!=null){this.controls.removeEventListener(window.dhx4.dnd.evs.start,this._doOnControlClick,false)}}else{this.controls.detachEvent("onclick",this._doOnControlClick);if(window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8){this.controls.onselectstart=null}}while(this.controls.firstChild.childNodes.length>0){this._removeBar(false)}this.cont.removeChild(this.controls);this.controls=null;a=null};if(this.conf.buttons!=true){this.hideControls()}this._checkControls()};window.dhtmlXCarouselCell=function(e,c){dhtmlXCellObject.apply(this,[e,"_carousel"]);var a=this;this.carousel=c;this.conf.skin=this.carousel.conf.skin;this.attachEvent("_onCellUnload",function(){this.carousel=null;a=null});this.attachEvent("_onContentLoaded",function(){this.carousel._callMainEvent("onContentLoaded",[this._idd])});this._showCover=function(){if(this.conf.cover==true){return}this._showCellCover();var g=this.cell.childNodes[this.conf.idx.cover];g.onclick=function(){a.carousel._callMainEvent("_cellCoverClick",[a._idd])};g=null};this._hideCover=function(){if(this.conf.cover!=true){return}this.cell.childNodes[this.conf.idx.cover].onclick=null;this._hideCellCover()};return this};dhtmlXCarouselCell.prototype=new dhtmlXCellObject();dhtmlXCarouselCell.prototype.getId=function(){return this._idd};dhtmlXCarouselCell.prototype.getIndex=function(){return this.carousel.cdata[this._idd].index};dhtmlXCarouselCell.prototype.setActive=function(){var a=this.getIndex()-this.carousel.conf.selected;if(a!=0){this.carousel._animateStart(a)}};dhtmlXCarouselCell.prototype.remove=function(){this.carousel._removeCell(this._idd)};dhtmlXCellObject.prototype.attachCarousel=function(a){this.callEvent("_onBeforeContentAttach",["carousel"]);var c=document.createElement("DIV");c.style.width="100%";c.style.height="100%";c.style.position="relative";c.style.overflow="hidden";this._attachObject(c);if(typeof(window.dhtmlXSideBarCell)=="function"&&this instanceof window.dhtmlXSideBarCell){if(this.conf.skin=="dhx_terrace"){c._ofs={t:-1,r:-1,b:-1,l:-1}}}if(typeof(a)=="undefined"||a==null){a={}}if(typeof(a.skin)=="undefined"){a.skin=this.conf.skin}a.parent=c;this.dataType="carousel";this.dataObj=new dhtmlXCarousel(a);a.parent=null;c=a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCarousel.prototype.ef.slide=true;dhtmlXCarousel.prototype.ef.slide_conf={anim_step:25,anim_timeout:10,anim_slide:"left 0.3s"};dhtmlXCarousel.prototype.ef.slide_f={prepare:"_slide_prepare",start:"_slide_start",end:"_slide_end",update_selected:"_slide_update_selected",detect_x:"_slide_detect_x",detect_aw:"_slide_detect_area_width",cell_added:"_slide_cell_added"};dhtmlXCarousel.prototype._slide_init=function(){return this.ef.slide_conf};dhtmlXCarousel.prototype._slide_f=function(){return this.ef.slide_f};dhtmlXCarousel.prototype._slide_prepare=function(c,a){var g=this.conf.anim_step;var h=this.conf.width+this.conf.ofs_item;if(a==false){g=h+1}this.area._init=parseInt(this.area.style.left);var e=this.ind[this.conf.selected+c];this._slide_update_selected(e);if(this.conf.transProp!==false&&a!=false){if(this.conf.transEvInit!=true){this.area.addEventListener(this.conf.transEv,this._animateTransEnd,false);this.conf.transEvInit=true}this.conf.current_dir=c;this.area.style[this.conf.transProp]=this.conf.anim_slide;this.area.style.left=this.area._init+h*(-c)+"px"}else{this._slide_start(g,0,h,c)}};dhtmlXCarousel.prototype._slide_start=function(h,a,j,c){var g=false;a+=h;if(a>=j){a=j;g=true}this.area.style.left=this.area._init+a*(-c)+"px";if(g!=true){var e=this;window.setTimeout(function(){e._slide_start(h,a,j,c);e=null},this.conf.anim_timeout)}else{this.cdata[this.ind[this.conf.selected]].cell._showCover();this._animateEnd(c)}};dhtmlXCarousel.prototype._slide_end=function(c,a){if(c.type==this.conf.transEv&&a==this.area){this.area.style[this.conf.transProp]="";if(this.conf.transEvInit==true){this.area.removeEventListener(this.conf.transEv,this._animateTransEnd,false);this.conf.transEvInit=false}this.cdata[this.ind[this.conf.selected]].cell._showCover();this._animateEnd(this.conf.current_dir)}};dhtmlXCarousel.prototype._slide_update_selected=function(a){this.cdata[a].cell._hideCover()};dhtmlXCarousel.prototype._slide_detect_x=function(e){var c=this.cdata[e].index;var a=c*(this.conf.width+this.conf.ofs_item)+this.conf.ofs_item;return a};dhtmlXCarousel.prototype._slide_cell_added=function(a){if(this.conf.selected!=this.cdata[a].index){this.cdata[a].cell._showCover()}if(this.cdata[a].index<=this.conf.selected&&this.conf.items_count>1){this._animateStart(1,false)}};dhtmlXCarousel.prototype._slide_detect_area_width=function(){return this.conf.items_count};dhtmlXCarousel.prototype.ef.flip=true;dhtmlXCarousel.prototype.ef.flip_conf={anim_flip:"transform 0.3s ease-out",anim_flip_ang:-87,anim_flip_trstyle:"transform"};dhtmlXCarousel.prototype.ef.flip_f={prepare:"_flip_prepare",start:"_flip_start",end:"_flip_end",update_selected:"_flip_update_selected",detect_x:"_flip_detect_x",detect_aw:"_flip_detect_area_width",cell_added:"_flip_cell_added"};dhtmlXCarousel.prototype._flip_init=function(){var a=(this.conf.transProp==false?false:this.ef.flip_conf);if(a!==false&&window.dhx4.isKHTML==true&&a.anim_flip.match("webkit")==null){a.anim_flip=a.anim_flip.replace(/transform/,"-webkit-transform");a.anim_flip_trstyle="webkitTransform"}return a};dhtmlXCarousel.prototype._flip_f=function(){return this.ef.flip_f};dhtmlXCarousel.prototype._flip_prepare=function(a){this.conf.flip_data={fromIndex:this.conf.selected,toIndex:this.conf.selected+a,mode:0,dir:a};this._flip_start()};dhtmlXCarousel.prototype._flip_start=function(){var a=this.cdata[this.ind[this.conf.flip_data.mode==0?this.conf.flip_data.fromIndex:this.conf.flip_data.toIndex]].cell;if(this.area.className.match(/dhxcarousel_area_flip/)==null){this.area.className+=" dhxcarousel_area_flip"}if(a.conf.tr_ev!=true){a.cell.addEventListener(this.conf.transEv,this._animateTransEnd,false);a.conf.tr_ev=true}if(this.conf.flip_data.mode==0){a.cell.style[this.conf.anim_flip_trstyle]="rotateY("+String(this.conf.flip_data.dir>0?this.conf.anim_flip_ang:-this.conf.anim_flip_ang)+"deg)"}else{a.cell.style.visibility="visible";a.cell.style[this.conf.anim_flip_trstyle]="rotateY(0deg)"}a.cell.style[this.conf.transProp]=this.conf.anim_flip;a=null};dhtmlXCarousel.prototype._flip_end=function(m,l){if(m.type==this.conf.transEv){var a=this.cdata[this.ind[this.conf.flip_data.mode==0?this.conf.flip_data.fromIndex:this.conf.flip_data.toIndex]].cell;if(l==a.cell){a.cell.removeEventListener(this.conf.transEv,this._animateTransEnd,false);a.conf.tr_ev=false;if(this.conf.flip_data.mode==0){a.cell.style[this.conf.transProp]="";a.cell.style.visibility="hidden";this.conf.flip_data.mode=1;this._flip_start()}else{var g=this.conf.flip_data.dir;var h=Math.min(this.conf.flip_data.fromIndex,this.conf.flip_data.toIndex)+1;var c=Math.max(this.conf.flip_data.fromIndex,this.conf.flip_data.toIndex)-1;for(var j=h;j<=c;j++){this.cdata[this.ind[j]].cell.cell.style[this.conf.anim_flip_trstyle]="rotateY("+String(this.conf.anim_flip_ang*g/Math.abs(g))+"deg)"}if(this.area.className.match(/dhxcarousel_area_flip/)!=null){this.area.className=String(this.area.className).replace(/\s{0,}dhxcarousel_area_flip/gi,"")}this.conf.flip_data=null;a.cell.style[this.conf.transProp]="";this._animateEnd(g)}}a=null}};dhtmlXCarousel.prototype._flip_update_selected=function(a){};dhtmlXCarousel.prototype._flip_detect_x=function(e){var c=0;var a=c*(this.conf.width+this.conf.ofs_item)+this.conf.ofs_item;return a};dhtmlXCarousel.prototype._flip_cell_added=function(a){if(this.conf.selected!=this.cdata[a].index){this.cdata[a].cell.cell.style[this.conf.anim_flip_trstyle]="rotateY("+String(this.cdata[a].index<this.conf.selected?this.conf.anim_flip_ang:-this.conf.anim_flip_ang)+"deg)";this.cdata[a].cell.cell.style.visibility="hidden"}else{this.cdata[a].cell.cell.style[this.conf.anim_flip_trstyle]="rotateY(0deg)"}};dhtmlXCarousel.prototype._flip_detect_area_width=function(){return 1};dhtmlXCarousel.prototype.ef.cards=true;dhtmlXCarousel.prototype.ef.cards_conf={anim_cards:"left 0.3s"};dhtmlXCarousel.prototype.ef.cards_f={prepare:"_cards_prepare",start:"_cards_start",end:"_cards_end",update_selected:"_cards_update_selected",detect_x:"_cards_detect_x",detect_aw:"_cards_detect_area_width",cell_added:"_cards_cell_added"};dhtmlXCarousel.prototype._cards_init=function(){return(this.conf.transProp==false?false:this.ef.cards_conf)};dhtmlXCarousel.prototype._cards_f=function(){return this.ef.cards_f};dhtmlXCarousel.prototype._cards_prepare=function(e,c){if(e>0){var g=this.ind[this.conf.selected+e];var a=this.cdata[g].cell;this._cards_update_selected(g);if(a.conf.transEvInit!=true){a.cell.addEventListener(this.conf.transEv,this._animateTransEnd,false);a.conf.transEvInit=true}this.conf.current_id=g;this.conf.current_dir=e;a.cell.style[this.conf.transProp]=this.conf.anim_cards;a.cell.style.left=this._cards_detect_x(g,0)+"px";a=null}else{this._cards_adjust_middle(this.conf.selected+e+1,this.conf.selected-1,1);var g=this.ind[this.conf.selected];var a=this.cdata[g].cell;a._hideCover();if(a.conf.transEvInit!=true){a.cell.addEventListener(this.conf.transEv,this._animateTransEnd,false);a.conf.transEvInit=true}this.conf.current_id=g;this.conf.current_dir=e;this.cdata[this.ind[this.conf.selected+e]].cell._hideCover();a.cell.style[this.conf.transProp]=this.conf.anim_cards;a.cell.style.left=this._cards_detect_x(g,1)+"px";a=null}};dhtmlXCarousel.prototype._cards_start=function(e,a,g,c){};dhtmlXCarousel.prototype._cards_end=function(g,c){if(g.type==this.conf.transEv&&this.conf.current_id!=null&&c==this.cdata[this.conf.current_id].cell.cell){var a=this.cdata[this.conf.current_id].cell;a.cell.style[this.conf.transProp]="";if(a.conf.transEvInit!=true){a.cell.removeEventListener(this.conf.transEv,this._animateTransEnd,false);a.conf.transEvInit=false}this.conf.current_id=null;if(this.conf.current_dir>0){this._cards_adjust_middle(this.conf.selected+1,this.conf.selected+this.conf.current_dir-1,0)}this.cdata[this.ind[this.conf.selected]].cell._showCover();this._animateEnd(this.conf.current_dir)}};dhtmlXCarousel.prototype._cards_update_selected=function(a){this.cdata[a].cell._hideCover()};dhtmlXCarousel.prototype._cards_adjust_middle=function(e,h,c){for(var g=e;g<=h;g++){var j=this.ind[g];var a=this.cdata[j].cell;a.conf.size.x=this._cards_detect_x(j,c);a.cell.style.left=a.conf.size.x+"px";a=null}};dhtmlXCarousel.prototype._cards_detect_x=function(e,c){if(typeof(c)=="undefined"||c==null){c=(this.cdata[e].index<=this.conf.selected?0:1)}var a=c*(this.conf.width+this.conf.ofs_left+this.conf.ofs_item)+this.conf.ofs_item;return a};dhtmlXCarousel.prototype._cards_cell_added=function(a){this.cdata[a].cell.conf.size.x=this._cards_detect_x(a);this.cdata[a].cell.cell.style.left=this.cdata[a].cell.conf.size.x+"px";if(this.conf.selected!=this.cdata[a].index){this.cdata[a].cell._showCover()}};dhtmlXCarousel.prototype._cards_detect_area_width=function(){return 2};function dhtmlXWindows(m){var j=this;var g={};if(typeof(m)!="undefined"){for(var e in m){g[e]=m[e]}}m=null;this.conf={skin:window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxwins")||"dhx_skyblue",vp_pos_ofs:20,vp_custom:false,vp_of_auto:(g.vp_overflow=="auto"),vp_of_id:window.dhx4.newId(),ofs_w:null,ofs_h:null,button_last:null,dblclick_tm:300,dblclick_last:null,dblclick_id:null,dblclick_mode:"minmax",dblclick_active:false,dblclick_ev:(window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8),fr_cover:(navigator.userAgent.indexOf("MSIE 6.0")>=0)};var c=window.dhx4.transDetect();this.conf.tr={prop:c.transProp,ev:c.transEv,height_open:"height 0.2s cubic-bezier(0.25,0.1,0.25,1)",height_close:"height 0.18s cubic-bezier(0.25,0.1,0.25,1)",op_open:"opacity 0.16s ease-in",op_close:"opacity 0.2s ease-out",op_v_open:"1",op_v_close:"0.4"};if(!g.viewport){this.attachViewportTo(document.body)}else{if(g.viewport.object!=null){this.attachViewportTo(g.viewport.object)}else{if(g.viewport.left!=null&&g.viewport.top!=null&&g.viewport.width!=null&&g.viewport.height!=null){this.setViewport(g.viewport.left,g.viewport.top,g.viewport.width,g.viewport.height,g.viewport.parent)}else{this.attachViewportTo(document.body)}}}this.w={};this.createWindow=function(o,F,D,s,I){var n={};if(arguments.length==1&&typeof(o)=="object"){n=o}else{n.id=o;n.left=F;n.top=D;n.width=s;n.height=I;if(typeof(n.id)=="undefined"||n.id==null){n.id=window.dhx4.newId()}while(this.w[n.id]!=null){n.id=window.dhx4.newId()}}if(n.left==null){n.left=0}if(n.top==null){n.top=0}n.move=(n.move!=null&&window.dhx4.s2b(n.move)==false?false:(n.deny_move!=null&&window.dhx4.s2b(n.deny_move)==true?false:true));n.park=(n.park!=null&&window.dhx4.s2b(n.park)==false?false:(n.deny_park!=null&&window.dhx4.s2b(n.deny_park)==true?false:true));n.resize=(n.resize!=null&&window.dhx4.s2b(n.resize)==false?false:(n.deny_resize!=null&&window.dhx4.s2b(n.deny_resize)==true?false:true));n.keep_in_viewport=(n.keep_in_viewport!=null&&window.dhx4.s2b(n.keep_in_viewport));n.modal=(n.modal!=null&&window.dhx4.s2b(n.modal));n.center=(n.center!=null&&window.dhx4.s2b(n.center));n.text=(n.text!=null?n.text:(n.caption!=null?n.caption:"dhtmlxWindow"));n.header=(!(n.header!=null&&window.dhx4.s2b(n.header)==false));var J=document.createElement("DIV");J.className="dhxwin_active";this.vp.appendChild(J);J._isWindow=true;J._idd=n.id;var w=document.createElement("DIV");w.className="dhxwin_hdr";w.style.zIndex=0;w.innerHTML="<div class='dhxwin_icon'></div><div class='dhxwin_text'><div class='dhxwin_text_inside'>"+n.text+"</div></div><div class='dhxwin_btns'></div>";J.appendChild(w);w.onselectstart=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};w.oncontextmenu=function(a){a=a||event;a.cancelBubble=true;return false};w._isWinHdr=true;w.firstChild._isWinIcon=true;var u=document.createElement("DIV");u.className="dhxwin_brd";J.appendChild(u);var C=document.createElement("DIV");C.className="dhxwin_fr_cover";C.innerHTML="<iframe class='dhxwin_fr_cover_inner' frameborder='0' border='0'></iframe><div class='dhxwin_fr_cover_inner'></div>";J.appendChild(C);this.w[n.id]={win:J,hdr:w,brd:u,fr_cover:C,b:{},conf:{z_id:window.dhx4.newId(),actv:false,modal:false,maxed:false,parked:false,sticked:false,visible:true,header:true,text:n.text,keep_in_vp:n.keep_in_viewport,allow_move:n.move,allow_park:n.park,allow_resize:n.resize,max_w:null,max_h:null,min_w:80,min_h:80}};var v={help:{title:"Help",visible:false},stick:{title:"Stick",visible:false},park:{title:"Park",visible:true},minmax:{title:"Min/Max",visible:true},close:{title:"Close",visible:true}};for(var E in v){var A=new dhtmlXWindowsButton(this,n.id,E,v[E].title,false);if(v[E].visible==false){A.hide()}w.lastChild.appendChild(A.button);this.w[n.id].b[E]=A;A=null}this._winAdjustTitle(n.id);this.w[n.id].win.style.zIndex=window.dhx4.zim.reserve(this.w[n.id].conf.z_id);var H=new dhtmlXWindowsCell(n.id,this);this.w[n.id].win.insertBefore(H.cell,C);this.w[n.id].cell=H;if(typeof(window.addEventListener)=="function"){this.w[n.id].win.addEventListener("mousedown",this._winOnMouseDown,false);this.w[n.id].win.addEventListener("mouseup",this._winOnMouseDown,false);if(this.conf.dblclick_ev){this.w[n.id].win.addEventListener("dblclick",this._winOnMouseDown,false)}if(this.conf.dnd_enabled==true&&window.dhx4.dnd.evs.start!=null){this.w[n.id].win.addEventListener(window.dhx4.dnd.evs.start,this._winOnMouseDown,false);if(window.dhx4.dnd.p_en!=true){this.w[n.id].win.addEventListener(window.dhx4.dnd.evs.start,this._winOnMouseDown,false);this.w[n.id].win.addEventListener(window.dhx4.dnd.evs.end,this._winOnMouseDown,false)}}}else{this.w[n.id].win.attachEvent("onmousedown",this._winOnMouseDown);this.w[n.id].win.attachEvent("onmouseup",this._winOnMouseDown);if(this.conf.dblclick_ev){this.w[n.id].win.attachEvent("ondblclick",this._winOnMouseDown)}}this._winInitFRM(n.id);this._winSetPosition(n.id,n.left,n.top);this._winSetSize(n.id,n.width,n.height);this._winMakeActive(n.id);if(n.center==true){this.w[n.id].cell.center()}if(n.modal==true){this.w[n.id].cell.setModal(true)}if(n.header==false){this.w[n.id].cell.hideHeader()}f=J=w=u=C=H=null;return this.w[n.id].cell};this._winOnMouseDown=function(o){o=o||event;var a=o.target||o.srcElement;var n={press_type:o.type};if(o.type=="MSPointerDown"||o.type=="pointerdown"){j.conf.ev_skip=true}else{if(j.conf.ev_skip==true){j.conf.ev_skip=false;a=null;return}}while(a!=null&&a._isWindow!=true){if(typeof(a.className)!="undefined"&&n.mode==null){if(typeof(a._buttonName)!="undefined"){n.mode="button";n.button_name=a._buttonName}else{if(a._isWinHdr==true){n.mode="hdr"}else{if(a._isWinIcon==true){n.mode="icon"}}}}a=a.parentNode}if(n.mode==null){n.mode="win"}n.id=(a!=null&&a._isWindow==true?a._idd:null);a=null;if(n.id!=null&&j.w[n.id]!=null){j.callEvent("_winMouseDown",[o,n])}};this._winOnParkTrans=function(n){if(n.stopPropagation){n.stopPropagation()}var a=j.w[this._idd];if(n.propertyName=="opacity"){j._winCellClearOpacity(this._idd)}if(n.propertyName=="height"&&a.conf.tr_mode=="park"){if(a.conf.tr_mode=="park"){a.win.style[j.conf.tr.prop]="";if(!a.conf.parked){j._winAdjustCell(this._idd);j._callMainEvent("onParkDown",this._idd);if(a.conf.keep_in_vp){j._winAdjustPosition(this._idd,a.conf.x,a.conf.y)}}else{a.hdr.style.zIndex=3;j._callMainEvent("onParkUp",this._idd)}}}a=null};this.unload=function(){this.conf.unloading=true;if(this._dndInitModule){this._dndUnloadModule()}for(var n in this.w){this._winClose(n)}this.w=null;if(this.cm!=null&&typeof(this._unloadContextMenu)=="function"){this._unloadContextMenu()}window.dhx4._eventable(this,"clear");this.attachViewportTo(null);for(var n in this.conf){this.conf[n]=null;delete this.conf[n]}for(var n in this){this[n]=null}j=n=null};window.dhx4._eventable(this);this.attachEvent("_winMouseDown",this._winMouseDownHandler);if(this._dndInitModule){this._dndInitModule()}if(g.wins!=null){for(var l=0;l<g.wins.length;l++){var h=g.wins[l];this.createWindow(h)}}g=null;return this}dhtmlXWindows.prototype.forEachWindow=function(e){for(var c in this.w){e.apply(window,[this.w[c].cell])}};dhtmlXWindows.prototype.window=function(a){if(this.w[a]!=null){return this.w[a].cell}return null};dhtmlXWindows.prototype.isWindow=function(a){return(this.w[a]!=null)};dhtmlXWindows.prototype.findByText=function(g){var e=[];for(var c in this.w){if((this.w[c].cell.getText()).indexOf(String(g))>=0){e.push(this.w[c])}}return e};dhtmlXWindows.prototype.setSkin=function(e){if(e==this.conf.skin){return}if(this.vp!=null){this.vp.className=String(this.vp.className).replace("dhxwins_vp_"+this.conf.skin," dhxwins_vp_"+e)}for(var c in this.w){this.w[c].cell._resetSizeState();this._winAdjustCell(c);this._winAdjustTitle(c)}this.conf.skin=e};dhtmlXWindows.prototype.getBottommostWindow=function(){return this._getTopBottomWin(false)};dhtmlXWindows.prototype.getTopmostWindow=function(){return this._getTopBottomWin(true)};dhtmlXWindows.prototype._getTopBottomWin=function(h){var g=null;for(var c in this.w){if(this.w[c].conf.visible){var e=false;if(g!=null){e=g.z>this.w[c].win.style.zIndex;if(h){e=!e}}if(g==null||e){g={win:this.w[c].cell,z:this.w[c].win.style.zIndex}}}}return(g?g.win:null)};dhtmlXWindows.prototype._winMakeActive=function(e,h){if(e!=null&&h!==true&&this.w[e].conf.actv==true){return}var s=[];var m={};for(var c=0;c<this._zOrder.length;c++){var l=this._zOrder[c].name;var g=this._zOrder[c].value;var u=[];for(var o in this.w){var r=this.w[o];if(m[o]==null&&r.conf[l]===g&&r.conf.visible==true){if(e!=o){window.dhx4.zim.clear(r.conf.z_id);u.push([o,Number(r.win.style.zIndex)]);m[o]=true}}r=null}u.sort(function(w,v){return(w[1]<v[1]?1:-1)});if(e!=null&&this.w[e].conf[l]===g&&m[e]==null){window.dhx4.zim.clear(this.w[e].conf.z_id);var j=[[e,Number(this.w[e].win.style.zIndex)]];u=j.concat(u);m[e]=true}s=s.concat(u)}for(var c=s.length-1;c>=0;c--){var o=s[c][0];var r=this.w[o];r.win.style.zIndex=window.dhx4.zim.reserve(r.conf.z_id);if(r.conf.modal&&this.mcover!=null){for(var n in this.mcover){this.mcover[n].style.zIndex=r.win.style.zIndex}}this._winAdjustFRMZIndex(o);if(e==null&&c==0){e=o}r.conf.actv=(e==o);r.win.className=(r.conf.actv?"dhxwin_active":"dhxwin_inactive");r=null}if(e!=null&&this.conf.last_active!=e){this._callMainEvent("onFocus",e)}this.conf.last_active=e};dhtmlXWindows.prototype._zOrder=[{name:"modal",value:true},{name:"sticked",value:true},{name:"sticked",value:false}];dhtmlXWindows.prototype._vpPull={};dhtmlXWindows.prototype._vpOf={};dhtmlXWindows.prototype._vpPullAdd=function(){if(this.vp==null){return}var e=null;for(var c in this._vpPull){if(this._vpPull[c].vp==this.vp){this._vpPull[c].count++;e=c}}if(e==null){this._vpPull[window.dhx4.newId()]={vp:this.vp,count:1}}if(this.vp==document.body&&this.conf.vp_of_auto==true){this._vpOfInit()}this._vpOfUpd()};dhtmlXWindows.prototype._vpPullRemove=function(){if(this.vp==null){return 0}var e=0;for(var c in this._vpPull){if(this._vpPull[c].vp==this.vp){e=--this._vpPull[c].count;if(e==0){this._vpPull[c].vp=null;this._vpPull[c].count=null;delete this._vpPull[c]}}}this._vpOfClear();return e};dhtmlXWindows.prototype._vpOfInit=function(){this._vpOf[this.conf.vp_of_id]=true};dhtmlXWindows.prototype._vpOfClear=function(){this._vpOf[this.conf.vp_of_id]=false;delete this._vpOf[this.conf.vp_of_id];this._vpOfUpd()};dhtmlXWindows.prototype._vpOfUpd=function(){var e=false;for(var c in this._vpOf){e=e||this._vpOf[c]}if(e==true){if(document.body.className.match(/dhxwins_vp_auto/)==null){document.body.className+=" dhxwins_vp_auto"}}else{if(document.body.className.match(/dhxwins_vp_auto/)!=null){document.body.className=String(document.body.className).replace(/\s{0,}dhxwins_vp_auto/gi,"")}}};dhtmlXWindows.prototype.attachViewportTo=function(h){var e=this._vpPullRemove();if(this.conf.vp_custom){while(this.vp.childNodes.length>0){this.vp.removeChild(this.vp.lastChild)}this.vp.parentNode.removeChild(this.vp);this.vp=null}else{if(this.vp!=null&&e==0){this.vp.className=String(this.vp.className).replace(new RegExp("\\s{1,}dhxwins_vp_"+this.conf.skin),"")}}if(h==null){this.vp=null}else{this.vp=(typeof(h)=="string"?document.getElementById(h):h);var g="dhxwins_vp_"+this.conf.skin;if(this.vp.className.indexOf(g)<0){this.vp.className+=" "+g}h=null;for(var c in this.w){this.vp.appendChild(this.w[c].win)}this.conf.vp_custom=false}if(this.vp==document.body){document.body.style.position="static"}this._vpPullAdd()};dhtmlXWindows.prototype.setViewport=function(c,j,g,a,h){var e=document.createElement("DIV");e.style.position="absolute";e.style.left=c+"px";e.style.top=j+"px";e.style.width=g+"px";e.style.height=a+"px";if(typeof(h)=="undefined"||h==null){h=document.body}else{if(typeof(h)=="string"){h=document.getElementById(h)}}h.appendChild(e);this.attachViewportTo(e);this.conf.vp_custom=true;h=e=null};dhtmlXWindows.prototype._winSetPosition=function(g,a,e){var c=this.w[g];if(c.conf.maxed){c.conf.lastMX+=(a-c.conf.x);c.conf.lastMY+=(e-c.conf.y)}c.conf.x=a;c.conf.y=e;c.win.style.left=c.conf.x+"px";c.win.style.top=c.conf.y+"px";this._winAdjustFRMPosition(g);c=null};dhtmlXWindows.prototype._winAdjustPosition=function(l,c,j){var e=this.w[l];if(typeof(c)=="undefined"){c=e.conf.x}if(typeof(j)=="undefined"){j=e.conf.y}var a=(e.conf.keep_in_vp?0:-e.conf.w+this.conf.vp_pos_ofs);var h=(e.conf.keep_in_vp?this.vp.clientWidth-e.conf.w:this.vp.clientWidth-this.conf.vp_pos_ofs);if(c<a){c=a}else{if(c>h){c=h}}var g=(e.conf.keep_in_vp?this.vp.clientHeight-e.conf.h:this.vp.clientHeight-this.conf.vp_pos_ofs);if(j<0){j=0}else{if(j>g){j=g}}if(c!=e.conf.x||j!=e.conf.y){this._winSetPosition(l,c,j)}e=null};dhtmlXWindows.prototype._winSetSize=function(m,j,e,l,c){var g=this.w[m];var a=(j!=null?j:g.conf.w);var h=(e!=null?e:g.conf.h);if(this.conf.ofs_w==null){g.win.style.width=a+"px";g.win.style.height=h+"px";this.conf.ofs_w=g.win.offsetWidth-a;this.conf.ofs_h=g.win.offsetHeight-h}if(g.conf.min_w!=null&&a<g.conf.min_w){a=g.conf.min_w}if(g.conf.max_w!=null&&a>g.conf.max_w){a=g.conf.max_w}if(!g.conf.parked&&g.conf.min_h!=null&&h<g.conf.min_h){h=g.conf.min_h}if(g.conf.max_h!=null&&h>g.conf.max_h){h=g.conf.max_h}if(g.conf.keep_in_vp){if(a>this.vp.clientWidth){a=this.vp.clientWidth}if(h>this.vp.clientHeight){h=this.vp.clientHeight}}g.win.style.width=a-this.conf.ofs_w+"px";g.win.style.height=h-this.conf.ofs_h+"px";g.conf.w=a;g.conf.h=h;this._winAdjustFRMSize(m);if(c){this._winAdjustPosition(m,g.conf.x,g.conf.y)}if(!g.conf.parked&&l!=true){this._winAdjustCell(m)}g=null};dhtmlXWindows.prototype._winMinmax=function(h,e){if(typeof(e)!="undefined"&&this.w[h].conf.maxed==e){return}if(this.w[h].conf.allow_resize==false){return}var c=this.w[h];if(c.conf.parked){this._winPark(h,false)}if(c.conf.maxed){this._winSetSize(h,c.conf.lastMW,c.conf.lastMH);this._winAdjustPosition(h,c.conf.lastMX,c.conf.lastMY);c.conf.maxed=false}else{var a=0;var g=0;if(c.conf.max_w!=null){a=c.conf.x+Math.round(c.conf.w-c.conf.max_w)/2}if(c.conf.max_h!=null){g=Math.max(c.conf.y+Math.round(c.conf.h-c.conf.max_h)/2,0)}c.conf.lastMX=c.conf.x;c.conf.lastMY=c.conf.y;c.conf.lastMW=c.conf.w;c.conf.lastMH=c.conf.h;this._winSetSize(h,this.vp.clientWidth,this.vp.clientHeight);this._winAdjustPosition(h,a,g);c.conf.maxed=true}c.b.minmax.setCss(c.conf.maxed?"minmaxed":"minmax");if(c.conf.maxed){this._callMainEvent("onMaximize",h)}else{this._callMainEvent("onMinimize",h)}c=null};dhtmlXWindows.prototype._winShow=function(c,a){if(this.w[c].conf.visible==true){return}this.w[c].win.style.display="";this.w[c].conf.visible=true;if(a==true||this.conf.last_active==null){this._winMakeActive(c,true)}this._callMainEvent("onShow",c)};dhtmlXWindows.prototype._winHide=function(c,a){if(this.w[c].conf.visible==false){return}this.w[c].win.style.display="none";this.w[c].conf.visible=false;if(this.w[c].conf.actv){this.w[c].conf.actv=false;this.w[c].win.className="dhxwin_inactive";this._winMakeActive(null,true)}this._callMainEvent("onHide",c)};dhtmlXWindows.prototype._winPark=function(e,a){if(this.w[e].conf.allow_park==false){return}if(this.w[e].conf.header==false){return}var c=this.w[e];if(a==true&&this.conf.tr.prop!==false){c.win.style[this.conf.tr.prop]=this.conf.tr[c.conf.parked?"height_open":"height_close"];if(!c.conf.tr_ev){c.win.addEventListener(this.conf.tr.ev,this._winOnParkTrans,false);c.conf.tr_ev=true}}if(c.conf.parked){c.hdr.className=String(c.hdr.className).replace(/\s{1,}dhxwin_hdr_parked/gi,"");c.hdr.style.zIndex=0;c.conf.parked=false;c.conf.tr_mode="park";this._winCellSetOpacity(e,"open",a);this._winSetSize(e,c.conf.w,c.conf.lastPH,(a==true&&this.conf.tr.prop!==false));if(!(a==true&&this.conf.tr.prop!==false)){this._callMainEvent("onParkDown",e);if(c.conf.keep_in_vp){this._winAdjustPosition(e,c.conf.x,c.conf.y)}}if(window.dhx4.isIE8==true&&this.conf.tr.prop==false&&c.cell.cell.className.match(/dhxwin_parked/)!=null){c.cell.cell.className=c.cell.cell.className.replace(/\s{0,}dhxwin_parked/gi,"")}}else{c.conf.lastPH=c.conf.h;c.hdr.className+=" dhxwin_hdr_parked";if(a==false||this.conf.tr.prop==false){c.hdr.style.zIndex=3}c.conf.parked=true;c.conf.tr_mode="park";this._winCellSetOpacity(e,"close",a);this._winSetSize(e,c.conf.w,c.hdr.offsetHeight+this.conf.ofs_h,(a==true&&this.conf.tr.prop!==false));if(!(a==true&&this.conf.tr.prop!==false)){this._callMainEvent("onParkUp",e)}if(window.dhx4.isIE8==true&&this.conf.tr.prop==false&&c.cell.cell.className.match(/dhxwin_parked/)==null){c.cell.cell.className+=" dhxwin_parked"}}c=null};dhtmlXWindows.prototype._winCellSetOpacity=function(l,j,e,h){var c=this.w[l].cell;for(var g in c.conf.idx){if({pr1:true,pr2:true}[g]!=true){if(e==true&&this.conf.tr.prop!=false){c.cell.childNodes[c.conf.idx[g]].style[this.conf.tr.prop]=this.conf.tr["op_"+j]}c.cell.childNodes[c.conf.idx[g]].style.opacity=this.conf.tr["op_v_"+j]}}c=null};dhtmlXWindows.prototype._winCellClearOpacity=function(g){var c=this.w[g].cell;for(var e in c.conf.idx){if({pr1:true,pr2:true}[e]!=true){if(this.conf.tr.prop!=false){c.cell.childNodes[c.conf.idx[e]].style[this.conf.tr.prop]=""}}}c=null};dhtmlXWindows.prototype._winStick=function(c,a){if(typeof(a)!="undefined"&&this.w[c].conf.sticked==a){return}this.w[c].conf.sticked=!this.w[c].conf.sticked;this.w[c].b.stick.setCss(this.w[c].conf.sticked?"sticked":"stick");this._winMakeActive(this.conf.last_active,true);if(this.w[c].conf.sticked){this._callMainEvent("onStick",c)}else{this._callMainEvent("onUnStick",c)}};dhtmlXWindows.prototype._winClose=function(g){if(this._callMainEvent("onClose",g)!==true&&this.conf.unloading!=true){return}var e=this.w[g];if(e.conf.fs_mode){e.cell.setToFullScreen(false)}if(e.conf.modal){this._winSetModal(g,false)}window.dhx4.zim.clear(e.conf.z_id);if(this.cm!=null&&this.cm.icon[g]!=null){this._detachContextMenu("icon",g,null)}if(typeof(window.addEventListener)=="function"){e.win.removeEventListener("mousedown",this._winOnMouseDown,false);e.win.removeEventListener("mouseup",this._winOnMouseDown,false);if(this.conf.dblclick_ev){e.win.removeEventListener("dblclick",this._winOnMouseDown,false)}if(this.conf.dnd_enabled==true&&window.dhx4.dnd.evs.start!=null){e.win.removeEventListener(window.dhx4.dnd.evs.start,this._winOnMouseDown,false);if(window.dhx4.dnd.p_en!=true){e.win.removeEventListener(window.dhx4.dnd.evs.start,this._winOnMouseDown,false);e.win.removeEventListener(window.dhx4.dnd.evs.end,this._winOnMouseDown,false)}}}else{e.win.detachEvent("onmousedown",this._winOnMouseDown);e.win.detachEvent("onmouseup",this._winOnMouseDown);if(this.conf.dblclick_ev){e.win.attachEvent("ondblclick",this._winOnMouseDown)}}for(var c in e.b){this._winRemoveButton(g,c,true)}e.b=null;e.cell._unload();e.cell=null;e.brd.parentNode.removeChild(e.brd);e.brd=null;if(e.fr_cover!=null){e.fr_cover.parentNode.removeChild(e.fr_cover);e.fr_cover=null}if(e.fr_m_cover!=null){e.fr_m_cover.parentNode.removeChild(e.fr_m_cover);e.fr_m_cover=null}e.hdr._isWinHdr=true;e.hdr.firstChild._isWinIcon=true;e.hdr.onselectstart=null;e.hdr.parentNode.removeChild(e.hdr);e.hdr=null;for(var c in e.conf){e.conf[c]=null;delete e.conf[c]}e.conf=null;e.win._idd=null;e.win._isWindow=null;e.win.parentNode.removeChild(e.win);e.win=null;e=null;this.w[g]=null;delete this.w[g];if(!this.conf.unloading){this._winMakeActive(null,true)}};dhtmlXWindows.prototype._winSetModal=function(l,g,j){if(this.w[l].conf.modal==g){return}if(typeof(j)=="undefined"){j=true}var e=this.w[l];if(g==true&&e.conf.modal==false){if(this.conf.last_modal!=null){this._winSetModal(this.conf.last_modal,false,false)}if(this.mcover==null){var h=document.createElement("DIV");h.className="dhxwins_mcover";this.vp.insertBefore(h,e.fr_m_cover||e.win);this.mcover={d:h};if(this.conf.fr_cover){this.mcover.f=document.createElement("IFRAME");this.mcover.f.className="dhxwins_mcover";this.mcover.f.border=0;this.mcover.f.frameBorder=0;this.vp.insertBefore(this.mcover.f,h)}h=null}else{if(this.mcover.d.nextSibling!=(e.fr_m_cover||e.win)){this.vp.insertBefore(this.mcover.d,e.fr_m_cover||e.win);if(this.mcover.f!=null){this.vp.insertBefore(this.mcover.f,this.mcover.d)}}}e.conf.modal=true;this.conf.last_modal=l;this._winMakeActive(l,true)}else{if(g==false&&e.conf.modal==true){e.conf.modal=false;this.conf.last_modal=null;if(j&&this.mcover!=null){for(var c in this.mcover){this.vp.removeChild(this.mcover[c]);this.mcover[c]=null}this.mcover=null}}}e=null};dhtmlXWindows.prototype._winMouseDownHandler=function(g,c){var a=g.target||g.srcElement;if(g.button>=2){return}if(c.mode=="button"){if(c.press_type=="mousedown"){this.conf.button_last=c.button_name}else{if((c.press_type=="mouseup"&&c.button_name==this.conf.button_last)||c.press_type=="MSPointerDown"||c.press_type=="pointerdown"){this.conf.button_last=null;if(this._winButtonClick(c.id,c.button_name,g)!==true){return}}}}if((c.press_type=="pointerdown"||c.press_type=="mousedown"||c.press_type=="dblclick")&&c.mode=="hdr"){this.conf.dblclick_active=false;if(this.conf.dblclick_ev==true){if(c.press_type=="dblclick"){this.conf.dblclick_active=true}}else{if(this.conf.dblclick_last==null){this.conf.dblclick_last=new Date().getTime();this.dblclick_id=c.id}else{var a=new Date().getTime();if(this.conf.dblclick_last+this.conf.dblclick_tm>a&&this.dblclick_id==c.id){this.conf.dblclick_active=true;this.conf.dblclick_last=null;this.dblclick_id=null}else{this.conf.dblclick_last=a;this.dblclick_id=c.id}}}if(this.conf.dblclick_active){this._winDoHeaderDblClick(c.id);return}}if(c.press_type=="mousedown"||(c.press_type==window.dhx4.dnd.evs.start)){this._winMakeActive(c.id)}if(c.press_type=="touchend"){}};dhtmlXWindows.prototype._winDoHeaderDblClick=function(a){if(this.conf.dblclick_mode=="minmax"){this._winMinmax(a);return}if(this.conf.dblclick_mode=="park"){this._winPark(a,true);return}if(typeof(this.conf.dblclick_mode)=="function"){this.conf.dblclick_mode.apply(window,[a]);return}if(typeof(window[this.conf.dblclick_mode])=="function"){window[this.conf.dblclick_mode].apply(window,[a]);return}};dhtmlXWindows.prototype._winAdjustCell=function(c){var o=this.w[c];var n=1;var m=(o.conf.header?o.hdr.offsetHeight:1);var g=o.win.clientWidth-2;var r=o.win.clientHeight-m-1;o.brd.style.left=n+"px";o.brd.style.top=m+"px";if(o.conf.brd==null){o.brd.style.width=g+"px";o.brd.style.height=r+"px";o.conf.brd={w:g-o.brd.offsetWidth,h:r-o.brd.offsetHeight}}o.brd.style.width=g+o.conf.brd.w+"px";o.brd.style.height=r+o.conf.brd.h+"px";var e=5;var a=1+e;var l=(o.conf.header?m:m+e);var h=o.brd.clientWidth;var j=o.brd.clientHeight;o.cell._setSize(a,l,h,j);o.fr_cover.style.left=a+"px";o.fr_cover.style.top=l+"px";o.fr_cover.style.width=h+"px";o.fr_cover.style.height=j+"px";o=null};dhtmlXWindows.prototype._winAdjustTitle=function(g){var a=this.w[g].hdr.childNodes[0];var e=this.w[g].hdr.childNodes[1];var c=this.w[g].hdr.childNodes[2];e.style.paddingLeft=a.offsetWidth+12+"px";e.style.paddingRight=c.offsetWidth+10+"px";e=c=a=null};dhtmlXWindows.prototype._callMainEvent=function(c,g){var a=this.w[g];if(a.cell.checkEvent(c)){var e=a.cell._callMainEvent(c,[a.cell])}else{var e=this.callEvent(c,[a.cell])}a=null;return e};dhtmlXWindows.prototype._winInitFRM=function(e){if(this.conf.fr_cover!=true){return}var a=this.w[e];var c=document.createElement("IFRAME");c.className="dhxwin_main_fr_cover";c.border=0;c.frameBorder=0;c.style.zIndex=a.win.style.zIndex;a.win.parentNode.insertBefore(c,a.win);a.fr_m_cover=c;c=null};dhtmlXWindows.prototype._winAdjustFRMSize=function(c){var a=this.w[c];if(a.fr_m_cover!=null){a.fr_m_cover.style.width=a.conf.w+"px";a.fr_m_cover.style.height=a.conf.h+"px"}a=null};dhtmlXWindows.prototype._winAdjustFRMPosition=function(c){var a=this.w[c];if(a.fr_m_cover!=null){a.fr_m_cover.style.left=a.win.style.left;a.fr_m_cover.style.top=a.win.style.top}a=null};dhtmlXWindows.prototype._winAdjustFRMZIndex=function(c){var a=this.w[c];if(a.fr_m_cover!=null){a.fr_m_cover.style.zIndex=a.win.style.zIndex}a=null};function dhtmlXWindowsCell(h,g){dhtmlXCellObject.apply(this,[h,"_wins"]);this.wins=g;this.cell._winId=h;this.conf.skin=this.wins.conf.skin;this.attachEvent("_onCellUnload",function(){if(this._unloadResize){this._unloadResize()}window.dhx4._eventable(this.cell,"clear");this.cell._winId=null;this.wins=null;this.setText=null;this.getText=null;this.allowMove=null;this.denyMove=null;this.isMovable=null;this.allowResize=null;this.denyResize=null;this.isResizable=null;this.maximize=null;this.minimize=null;this.isMaximized=null;this.setPosition=null;this.getPosition=null;this.adjustPosition=null;this.park=null;this.isParked=null;this.allowPark=null;this.denyPark=null;this.isParkable=null;this.show=null;this.hide=null;this.isHidden=null;this.stick=null;this.unstick=null;this.isSticked=null;this.setDimension=null;this.getDimension=null;this.setMinDimension=null;this.getMinDimension=null;this.setMaxDimension=null;this.getMaxDimension=null;this.keepInViewport=null;this.center=null;this.centerOnScreen=null;this.bringToTop=null;this.bringToBottom=null;this.isOnTop=null;this.isOnBottom=null;this.showHeader=null;this.hideHeader=null;this.setModal=null;this.isModal=null;this.close=null;this._adjustByCont=null;this.button=null;this.addUserButton=null;this.removeUserButton=null;e=null});this.attachEvent("_onContentLoaded",function(){this.wins._callMainEvent("onContentLoaded",this._idd)});this.attachEvent("_onContentMouseDown",function(j,a){this.wins.callEvent("_winMouseDown",[a,{id:j,mode:"win"}])});this._callMainEvent=function(j,a){return this.callEvent(j,a)};this.conf.tr={};for(var c in this.wins.conf.tr){this.conf.tr[c]=this.wins.conf.tr[c]}if(this.conf.tr.prop!=false){}if(this._initResize){this._initResize()}window.dhx4._eventable(this.cell);var e=this;this.cell.attachEvent("_setCellSize",function(a,m){var j=e.wins.w[this._winId].conf.w-e.conf.size.w;var l=e.wins.w[this._winId].conf.h-e.conf.size.h;e.setDimension(a+j,m+l)});return this}dhtmlXWindowsCell.prototype=new dhtmlXCellObject();dhtmlXWindowsCell.prototype.setText=function(a){this.wins.w[this._idd].conf.text=a;this.wins.w[this._idd].hdr.childNodes[1].firstChild.innerHTML=a};dhtmlXWindowsCell.prototype.getText=function(){return this.wins.w[this._idd].conf.text};dhtmlXWindowsCell.prototype.allowMove=function(){this.wins.w[this._idd].conf.allow_move=true};dhtmlXWindowsCell.prototype.denyMove=function(){this.wins.w[this._idd].conf.allow_move=false};dhtmlXWindowsCell.prototype.isMovable=function(){return(this.wins.w[this._idd].conf.allow_move==true)};dhtmlXWindowsCell.prototype.allowResize=function(){this.wins.w[this._idd].conf.allow_resize=true;this.wins.w[this._idd].b.minmax.enable()};dhtmlXWindowsCell.prototype.denyResize=function(){this.wins.w[this._idd].conf.allow_resize=false;this.wins.w[this._idd].b.minmax.disable()};dhtmlXWindowsCell.prototype.isResizable=function(){return(this.wins.w[this._idd].conf.allow_resize==true)};dhtmlXWindowsCell.prototype.maximize=function(){this.wins._winMinmax(this._idd,true)};dhtmlXWindowsCell.prototype.minimize=function(){this.wins._winMinmax(this._idd,false)};dhtmlXWindowsCell.prototype.isMaximized=function(){return(this.wins.w[this._idd].conf.maxed==true)};dhtmlXWindowsCell.prototype.setPosition=function(a,c){this.wins._winSetPosition(this._idd,a,c)};dhtmlXWindowsCell.prototype.getPosition=function(){var a=this.wins.w[this._idd];var c=[a.conf.x,a.conf.y];a=null;return c};dhtmlXWindowsCell.prototype.adjustPosition=function(){this.wins._winAdjustPosition(this._idd)};dhtmlXWindowsCell.prototype.park=function(){this.wins._winPark(this._idd,true)};dhtmlXWindowsCell.prototype.isParked=function(){return(this.wins.w[this._idd].conf.parked==true)};dhtmlXWindowsCell.prototype.allowPark=function(){this.wins.w[this._idd].conf.allow_park=true;this.wins.w[this._idd].b.park.enable()};dhtmlXWindowsCell.prototype.denyPark=function(){this.wins.w[this._idd].conf.allow_park=false;this.wins.w[this._idd].b.park.disable()};dhtmlXWindowsCell.prototype.isParkable=function(){return(this.wins.w[this._idd].conf.allow_park==true)};dhtmlXWindowsCell.prototype.show=function(a){this.wins._winShow(this._idd,window.dhx4.s2b(a))};dhtmlXWindowsCell.prototype.hide=function(){this.wins._winHide(this._idd)};dhtmlXWindowsCell.prototype.isHidden=function(){return(this.wins.w[this._idd].conf.visible!=true)};dhtmlXWindowsCell.prototype.stick=function(){this.wins._winStick(this._idd,true)};dhtmlXWindowsCell.prototype.unstick=function(){this.wins._winStick(this._idd,false)};dhtmlXWindowsCell.prototype.isSticked=function(){return(this.wins.w[this._idd].conf.sticked==true)};dhtmlXWindowsCell.prototype.setDimension=function(e,a){var c=this.wins.w[this._idd];if(c.conf.parked){this.wins._winPark(this._idd,false)}if(c.conf.maxed){if(e!=null){c.conf.lastMW=e}if(a!=null){c.conf.lastMH=a}this.wins._winMinmax(this._idd)}else{this.wins._winSetSize(this._idd,e,a,false,true)}c=null};dhtmlXWindowsCell.prototype.getDimension=function(){var a=this.wins.w[this._idd];var c=[a.conf.w,a.conf.h];a=null;return c};dhtmlXWindowsCell.prototype.setMinDimension=function(e,a){var c=this.wins.w[this._idd];c.conf.min_w=e;c.conf.min_h=a;this.wins._winSetSize(this._idd,c.conf.w,c.conf.h);c=null};dhtmlXWindowsCell.prototype.getMinDimension=function(){var a=this.wins.w[this._idd];var c=[a.conf.min_w,a.conf.min_h];a=null;return c};dhtmlXWindowsCell.prototype.setMaxDimension=function(e,a){var c=this.wins.w[this._idd];c.conf.max_w=e;c.conf.max_h=a;this.wins._winSetSize(this._idd,c.conf.w,c.conf.h);c=null};dhtmlXWindowsCell.prototype.getMaxDimension=function(){var a=this.wins.w[this._idd];var c=[a.conf.max_w,a.conf.max_h];a=null;return c};dhtmlXWindowsCell.prototype.keepInViewport=function(a){this.wins.w[this._idd].conf.keep_in_vp=window.dhx4.s2b(a)};dhtmlXWindowsCell.prototype.center=function(){var e=this.wins.vp;var c=this.wins.w[this._idd];var a=Math.round((e.clientWidth-c.conf.w)/2);var g=Math.round((e.clientHeight-c.conf.h)/2);this.wins._winSetPosition(this._idd,a,g);e=c=null};dhtmlXWindowsCell.prototype.centerOnScreen=function(){var c=this.wins.w[this._idd];var j=window.dhx4.screenDim();var h=window.dhx4.absLeft(this.wins.vp);var g=window.dhx4.absTop(this.wins.vp);var e=this.wins.vp.parentNode;while(e!=null){if(e.scrollLeft){h=h-e.scrollLeft}if(e.scrollTop){g=g-e.scrollTop}e=e.parentNode}var a=Math.round((j.right-j.left-c.conf.w)/2);var l=Math.round((j.bottom-j.top-c.conf.h)/2);this.wins._winAdjustPosition(this._idd,a-h,l-g);d=c=null};dhtmlXWindowsCell.prototype.bringToTop=function(){this.wins._winMakeActive(this._idd,true)};dhtmlXWindowsCell.prototype.bringToBottom=function(){var a=(this.wins.w[this._idd].conf.actv?null:this.wins.conf.last_active);window.dhx4.zim.clear(this.wins.w[this._idd].conf.z_id);this.wins.w[this._idd].win.style.zIndex=0;this.wins._winMakeActive(a,true)};dhtmlXWindowsCell.prototype.isOnTop=function(){return(this.wins.w[this._idd].conf.actv==true)};dhtmlXWindowsCell.prototype.isOnBottom=function(){var e={id:null,z:+Infinity};for(var c in this.wins.w){if(this.wins.w[c].conf.visible&&this.wins.w[c].win.style.zIndex<e.z){e.id=c;e.z=this.wins.w[c].win.style.zIndex}}return(e.id==this._idd)};dhtmlXWindowsCell.prototype.showHeader=function(){var a=this.wins.w[this._idd];if(a.conf.header==false){a.hdr.className=String(a.hdr.className).replace(/\s{0,}dhxwin_hdr_hidden/gi,"");a.brd.className=String(a.brd.className).replace(/\s{0,}dhxwin_hdr_hidden/gi,"");this.conf.cells_cont=null;a.conf.brd=null;a.conf.header=true;this.wins._winAdjustCell(this._idd)}a=null};dhtmlXWindowsCell.prototype.hideHeader=function(){var a=this.wins.w[this._idd];if(a.conf.header==true){if(a.conf.parked){this.wins._winPark(this._idd,false)}a.hdr.className+=" dhxwin_hdr_hidden";a.brd.className+=" dhxwin_hdr_hidden";this.conf.cells_cont=null;a.conf.brd=null;a.conf.header=false;this.wins._winAdjustCell(this._idd)}a=null};dhtmlXWindowsCell.prototype.setModal=function(a){this.wins._winSetModal(this._idd,window.dhx4.s2b(a))};dhtmlXWindowsCell.prototype.isModal=function(){return(this.wins.w[this._idd].conf.modal==true)};dhtmlXWindowsCell.prototype._adjustByCont=function(a,c){a+=this.wins.w[this._idd].conf.w-this.conf.size.w;c+=this.wins.w[this._idd].conf.h-this.conf.size.h;this.wins._winSetSize(this._idd,a,c)};dhtmlXWindowsCell.prototype.close=function(){this.wins._winClose(this._idd)};dhtmlXWindowsCell.prototype.setIconCss=function(a){this.wins.w[this._idd].hdr.firstChild.className="dhxwin_icon "+a;this.wins._winAdjustTitle(this._idd)};dhtmlXWindowsCell.prototype.setToFullScreen=function(c){c=window.dhx4.s2b(c);var a=this.wins.w[this._idd];if(a.conf.fs_mode==c){a=null;return}if(this.wins.fsn==null){this.wins.fsn=document.createElement("DIV");this.wins.fsn.className=this.wins.vp.className+" dhxwins_vp_fs";document.body.appendChild(this.wins.fsn)}if(c){this.wins.fsn.appendChild(a.win);this.maximize();this.hideHeader()}else{this.wins.vp.appendChild(a.win);this.minimize();this.showHeader();if(this.wins.fsn.childNodes.length==0){this.wins.fsn.parentNode.removeChild(this.wins.fsn);this.wins.fsn=null}}a.conf.fs_mode=c;a=null};dhtmlXWindowsCell.prototype.button=function(a){if(a=="minmax1"||a=="minmax2"){a="minmax"}return this.wins.w[this._idd].b[a]};dhtmlXWindowsCell.prototype.addUserButton=function(l,j,e){var a=new dhtmlXWindowsButton(this.wins,this._idd,l,e,true);var g=null;var c=this.wins.w[this._idd].hdr.lastChild;if(isNaN(j)){j=0}else{if(j<0){j=0}}if(c.childNodes[j]!=null){g=c.childNodes[j]}if(g!=null){c.insertBefore(a.button,g)}else{c.appendChild(a.button)}this.wins.w[this._idd].b[l]=a;a=g=c=null;this.wins._winAdjustTitle(this._idd)};dhtmlXWindowsCell.prototype.removeUserButton=function(a){if(this.wins.w[this._idd].b[a]==null||this.wins.w[this._idd].b[a].conf.custom!=true){return}this.wins._winRemoveButton(this._idd,a)};window.dhtmlXWindowsButton=function(h,c,a,g,e){this.conf={wins:h,winId:c,name:a,enabled:true,visible:true,custom:true};this.button=document.createElement("DIV");this.button._buttonName=a;this.button.title=g;this.enable=function(){this.conf.enabled=true;this.setCss(this.conf.css)};this.disable=function(){this.conf.enabled=false;this.setCss(this.conf.css)};this.isEnabled=function(){return(this.conf.enabled==true)};this.show=function(){this.button.style.display="";this.conf.visible=true;this.conf.wins._winAdjustTitle(this.conf.winId)};this.hide=function(){this.button.style.display="none";this.conf.visible=false;this.conf.wins._winAdjustTitle(this.conf.winId)};this.isHidden=function(){return(this.conf.visible==false)};this.setCss=function(l){this.conf.css=l;var j=(this.conf.enabled?"":"_dis");this.button.className="dhxwin_button"+j+" dhxwin_button_"+this.conf.css+j};this._doOnClick=function(j){return this.callEvent("onClick",[this.conf.wins.w[this.conf.winId].cell,this])};this.unload=function(j){dhx4._eventable(this,"clear");this.button._buttonName=null;this.button.parentNode.removeChild(this.button);if(this.conf.wins.cm!=null&&this.conf.wins.cm.button[this.conf.winId]!=null&&this.conf.wins.cm.button[this.conf.winId][this.conf.name]!=null){this.conf.wins._detachContextMenu("button",this.conf.winId,this.conf.name)}this.button=null;this.enable=null;this.disable=null;this.isEnabled=null;this.show=null;this.hide=null;this.isHidden=null;this.setCss=null;this.unload=null;if(j!=true){this.conf.wins._winAdjustTitle(this.conf.winId)}this.conf.wins=null;this.conf.winId=null;this.conf=null};this.setCss(a);dhx4._eventable(this);return this};dhtmlXWindows.prototype._winButtonClick=function(e,a,c){if(!this.w[e].b[a].isEnabled()){return true}if(this.w[e].b[a]._doOnClick()!==true){return}if(a=="help"){this._callMainEvent("onHelp",e)}if(a=="park"){this._winPark(e,true)}if(a=="minmax"){this._winMinmax(e)}if(a=="stick"){this._winStick(e);return false}if(a=="close"){this._winClose(e);return false}return true};dhtmlXWindows.prototype._winRemoveButton=function(e,a,c){this.w[e].b[a].unload(c);this.w[e].b[a]=null;delete this.w[e].b[a]};dhtmlXWindows.prototype._dndInitModule=function(){var a=this;this.conf.dnd_enabled=true;this.conf.dnd_tm=null;this.conf.dnd_time=0;this._dndOnMouseDown=function(h,j){if(a.conf.dblclick_active){return}if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}if(a._callMainEvent("onBeforeMoveStart",j)!==true){return}a.conf.dnd={id:j,x:a._dndPos(h,"X"),y:a._dndPos(h,"Y"),ready:true,css:false,css_touch:false,css_vp:false,tr:null,mode:"def",moved:false,prevent:false};if(a.w[j].conf.keep_in_vp){a.conf.dnd.minX=0;a.conf.dnd.maxX=a.vp.clientWidth-a.w[j].conf.w;a.conf.dnd.minY=0;a.conf.dnd.maxY=a.vp.clientHeight-a.w[j].conf.h}else{a.conf.dnd.minX=-a.w[j].conf.w+a.conf.vp_pos_ofs;a.conf.dnd.maxX=a.vp.clientWidth-a.conf.vp_pos_ofs;a.conf.dnd.minY=0;a.conf.dnd.maxY=a.vp.clientHeight-a.conf.vp_pos_ofs}var c=["MozTransform","WebkitTransform","OTransform","msTransform","transform"];for(var g=0;g<c.length;g++){if(document.documentElement.style[c[g]]!=null&&a.conf.dnd.tr==null){a.conf.dnd.tr=c[g];a.conf.dnd.mode="tr"}}if(a.conf.dnd.mode=="tr"){a.w[j].win.style[a.conf.dnd.tr]="translate(0px,0px)";if(a.w[j].fr_m_cover!=null){a.w[j].fr_m_cover.style[a.conf.dnd.tr]=a.w[j].win.style[a.conf.dnd.tr]}}if(window.dhx4.dnd._mTouch(h)==false&&h.type==window.dhx4.dnd.evs.start){if(a.conf.dnd.css_touch==false){a.w[j].win.className+=" dhxwin_dnd_touch";a.conf.dnd.css_touch=true}if(a.conf.dnd.css_vp==false){a.vp.className+=" dhxwins_vp_dnd";a.conf.dnd.css_vp=true}}else{a._dndInitEvents()}};this._dndOnMouseMove=function(j){j=j||event;var h=a.conf.dnd;var c=a._dndPos(j,"X")-h.x;var l=a._dndPos(j,"Y")-h.y;if(j.type==window.dhx4.dnd.evs.move){if(h.moved!=true&&(Math.abs(c)>20||Math.abs(l)>20)){if(a.conf.dnd_tm!=null){window.clearTimeout(a.conf.dnd_tm);a.conf.dnd_tm=null}window.removeEventListener(window.dhx4.dnd.evs.start,a._dndOnMouseMove,false);return}}if(h.ready!=true){return}var g=a.w[h.id];if(j.preventDefault){j.preventDefault()}else{j.returnValue=false}if(h.css!=true){if(h.css_touch==false){g.win.className+=" dhxwin_dnd"}g.fr_cover.className+=" dhxwin_fr_cover_dnd";h.css=true}if(h.css_vp!=true){a.vp.className+=" dhxwins_vp_dnd";h.css_vp=true}h.newX=g.conf.x+c;h.newY=g.conf.y+l;if(h.mode=="tr"){h.newX=Math.min(Math.max(h.newX,h.minX),h.maxX);c=h.newX-g.conf.x;h.newY=Math.min(Math.max(h.newY,h.minY),h.maxY);l=h.newY-g.conf.y;g.win.style[h.tr]="translate("+c+"px,"+l+"px)";if(g.fr_m_cover!=null){g.fr_m_cover.style[h.tr]=g.win.style[h.tr]}}else{if(h.newX<h.minX||h.newX>h.maxX){h.newX=Math.min(Math.max(h.newX,h.minX),h.maxX)}else{h.x=a._dndPos(j,"X")}if(h.newY<h.minY||h.newY>h.maxY){h.newY=Math.min(Math.max(h.newY,h.minY),h.maxY)}else{h.y=a._dndPos(j,"Y")}a._winSetPosition(h.id,h.newX,h.newY)}h.moved=true;g=h=null};this._dndOnMouseUp=function(h){h=h||event;a._dndUnloadEvents();if(a.conf.dnd!=null&&a.conf.dnd.id!=null){var g=a.conf.dnd;var c=a.w[g.id];if(g.newX!=null){if(g.mode=="tr"){a._winSetPosition(g.id,g.newX,g.newY);c.win.style[g.tr]="translate(0px,0px)";if(c.fr_m_cover!=null){c.fr_m_cover.style[g.tr]=c.win.style[g.tr]}}}if(g.css==true){if(g.css_touch==false){c.win.className=String(c.win.className).replace(/\s{0,}dhxwin_dnd/gi,"")}c.fr_cover.className=String(c.fr_cover.className).replace(/\s{0,}dhxwin_fr_cover_dnd/gi,"")}if(g.css_touch==true){c.win.className=String(c.win.className).replace(/\s{0,}dhxwin_dnd_touch/gi,"")}if(g.css_vp==true){a.vp.className=String(a.vp.className).replace(/\s{0,}dhxwins_vp_dnd/gi,"")}if(g.moved==true){a._callMainEvent("onMoveFinish",g.id)}else{a._callMainEvent("onMoveCancel",g.id)}c=g=a.conf.dnd=null}if(window.dhx4.dnd.p_en==true&&h.type==window.dhx4.dnd.evs.end){window.dhx4.dnd._touchOn();window.removeEventListener(window.dhx4.dnd.evs.end,a._dndOnMouseUp,false);window.removeEventListener(window.dhx4.dnd.evs.move,a._dndOnMouseMove,false);if(a.conf.dnd_tm!=null){window.clearTimeout(a.conf.dnd_tm)}a.conf.dnd_tm=null}};this._dndOnSelectStart=function(c){c=c||event;if(c.preventDefault){c.preventDefault()}else{c.returnValue=false}return false};this._dndInitEvents=function(){if(typeof(window.addEventListener)=="function"){window.addEventListener("mousemove",this._dndOnMouseMove,false);window.addEventListener("mouseup",this._dndOnMouseUp,false);window.addEventListener("selectstart",this._dndOnSelectStart,false)}else{document.body.attachEvent("onmousemove",this._dndOnMouseMove);document.body.attachEvent("onmouseup",this._dndOnMouseUp);document.body.attachEvent("onselectstart",this._dndOnSelectStart)}};this._dndUnloadEvents=function(){if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousemove",this._dndOnMouseMove,false);window.removeEventListener("mouseup",this._dndOnMouseUp,false);window.removeEventListener("selectstart",this._dndOnSelectStart,false)}else{document.body.detachEvent("onmousemove",this._dndOnMouseMove);document.body.detachEvent("onmouseup",this._dndOnMouseUp);document.body.detachEvent("onselectstart",this._dndOnSelectStart)}};this._dndUnloadModule=function(){this.detachEvent(this.conf.dnd_evid);this.conf.dnd_evid=null;this._dndOnMouseDown=null;this._dndOnMouseMove=null;this._dndOnMouseUp=null;this._dndOnSelectStart=null;this._dndInitEvents=null;this._dndUnloadEvents=null;this._dndInitModule=null;this._dndUnloadModule=null;a=null};this._dndPos=function(e,c){var g=e[this.conf.dnd_ev_prefix+c];if((g==null||g==0)&&e.touches!=null){g=e.touches[0][this.conf.dnd_ev_prefix+c]}return g};this.conf.dnd_evid=this.attachEvent("_winMouseDown",function(g,c){if(this.w[c.id]==null||this.w[c.id].conf.allow_move!=true){return}if(typeof(g.button)!="undefined"&&g.button>=2){return}if(g.type==window.dhx4.dnd.evs.start){if(c.mode=="hdr"){if(this.w[c.id].conf.maxed&&this.w[c.id].conf.max_w==null&&this.w[c.id].conf.max_h==null){return}this.conf.dnd_ev_prefix="page";this.conf.dnd={x:this._dndPos(g,"X"),y:this._dndPos(g,"Y")};if(this.conf.dnd_time<1){this._dndOnMouseDown(g,c.id)}else{if(this.conf.dnd_tm!=null){window.clearTimeout(this.conf.dnd_tm)}this.conf.dnd_tm=window.setTimeout(function(){a._dndOnMouseDown(g,c.id)},this.conf.dnd_time)}if(window.dhx4.dnd.p_en==true){window.dhx4.dnd._touchOff();window.addEventListener(window.dhx4.dnd.evs.end,this._dndOnMouseUp,false)}window.addEventListener(window.dhx4.dnd.evs.move,this._dndOnMouseMove,false)}return false}if(g.type==window.dhx4.dnd.evs.end){if(this.conf.dnd_tm!=null){window.clearTimeout(this.conf.dnd_tm);this.conf.dnd_tm=null}this._dndOnMouseUp(g);window.removeEventListener(window.dhx4.dnd.evs.move,this._dndOnMouseMove,false);return false}this.conf.dnd_ev_prefix="client";if(!(c.mode=="hdr"&&g.type=="mousedown")){return}if(this.w[c.id].conf.maxed&&this.w[c.id].conf.max_w==null&&this.w[c.id].conf.max_h==null){return}if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}this._dndOnMouseDown(g,c.id);return false})};dhtmlXWindowsCell.prototype._initResize=function(){var a=this;var c=navigator.userAgent;this.conf.resize={b_width:6,c_type:(c.indexOf("MSIE 10.0")>0||c.indexOf("MSIE 9.0")>0||c.indexOf("MSIE 8.0")>0||c.indexOf("MSIE 7.0")>0||c.indexOf("MSIE 6.0")>0),btn_left:((window.dhx4.isIE6||window.dhx4.isIE7||window.dhx4.isIE8)&&typeof(window.addEventListener)=="undefined"?1:0)};this._rOnCellMouseMove=function(m){if(a.wins.conf.resize_actv==true||a.wins.w[a._idd].conf.allow_resize==false||a.conf.progress==true||a.wins.w[a._idd].conf.maxed==true||a.wins.w[a._idd].conf.fs_mode==true){var j=a.wins.w[a._idd].brd;if(j.style.cursor!="default"){j.style.cursor="default"}j=null;return}m=m||event;var v=a.wins.w[a._idd].brd;var g=a.conf.resize;var o=(a.wins.w[a._idd].conf.header==false);var s=m.clientX;var n=m.clientY;s+=(document.documentElement.scrollLeft||document.body.scrollLeft||0);n+=(document.documentElement.scrollTop||document.body.scrollTop||0);var h=window.dhx4.absLeft(v);var u=window.dhx4.absTop(v);var l="";if(s<=h+g.b_width){l="w"}else{if(s>=h+v.offsetWidth-g.b_width){l="e"}}if(n>=u+v.offsetHeight-g.b_width){l="s"+l}else{if(o&&n<=u+g.b_width){l="n"+l}}if(l==""){l=false}if(g.mode!=l){g.mode=l;if(l==false){v.style.cursor="default"}else{v.style.cursor=l+"-resize"}}v=g=null};this._rOnCellMouseDown=function(l){l=l||event;if(typeof(l.button)!="undefined"&&l.button!=a.conf.resize.btn_left){return}if(a.conf.resize.mode==false){return}if(a.conf.progress==true){return}if(a.wins.w[a._idd].conf.allow_resize==false){return}if(a.wins.w[a._idd].conf.fs_mode==true){return}if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}if(a.wins._callMainEvent("onBeforeResizeStart",a._idd)!==true){return}var g=a.wins.w[a._idd];var j=a.conf.resize;a.wins.conf.resize_actv=true;j.min_w=g.conf.min_w;j.min_h=g.conf.min_h;j.max_w=g.conf.max_w||+Infinity;j.max_h=g.conf.max_h||+Infinity;if(g.cell.dataType=="layout"&&g.cell.dataObj!=null&&typeof(g.cell.dataObj._getWindowMinDimension)=="function"){var h=g.cell.dataObj._getWindowMinDimension(g.cell);j.min_w=Math.max(h.w,j.min_w);j.min_h=Math.max(h.h,j.min_h)}j.vp_l=a.wins.conf.vp_pos_ofs;j.vp_r=a.wins.vp.clientWidth-a.wins.conf.vp_pos_ofs;j.vp_b=a.wins.vp.clientHeight-a.wins.conf.vp_pos_ofs;j.x=l.clientX;j.y=l.clientY;if(typeof(window.addEventListener)=="function"){window.addEventListener("mousemove",a._rOnWinMouseMove,false);window.addEventListener("mouseup",a._rOnWinMouseUp,false);window.addEventListener("selectstart",a._rOnSelectStart,false)}else{document.body.attachEvent("onmousemove",a._rOnWinMouseMove);document.body.attachEvent("onmouseup",a._rOnWinMouseUp);document.body.attachEvent("onselectstart",a._rOnSelectStart)}j.resized=false;j.vp_cursor=a.wins.vp.style.cursor;a.wins.vp.style.cursor=j.mode+"-resize";g=j=null};this._rOnCellContextMenu=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false};this._rOnWinMouseMove=function(l){l=l||event;var h=a.wins.w[a._idd];var j=a.conf.resize;if(!j.resized){h.fr_cover.className+=" dhxwin_fr_cover_resize";j.resized=true}var g=l.clientX-j.x;var m=l.clientY-j.y;if(j.mode.indexOf("e")>=0){j.rw=Math.min(Math.max(h.conf.w+g,j.min_w),j.max_w);j.rx=null;if(h.conf.x+j.rw<j.vp_l){j.rw=j.vp_l-h.conf.x}else{if(h.conf.x+j.rw>a.wins.vp.clientWidth){j.rw=a.wins.vp.clientWidth-h.conf.x}}}else{if(j.mode.indexOf("w")>=0){j.rw=Math.min(Math.max(h.conf.w-g,j.min_w),j.max_w);j.rx=h.conf.x+h.conf.w-j.rw;if(j.rx<0){j.rw=j.rw+j.rx;j.rx=0}else{if(j.rx>j.vp_r){j.rw=j.rw-j.vp_r;j.rx=j.vp_r}}}}if(j.mode.indexOf("s")>=0){j.rh=Math.min(Math.max(h.conf.h+m,j.min_h),j.max_h);j.ry=null;if(h.conf.y+j.rh>a.wins.vp.clientHeight){j.rh=a.wins.vp.clientHeight-h.conf.y}}else{if(j.mode.indexOf("n")>=0){j.rh=Math.min(Math.max(h.conf.h-m,j.min_h),j.max_h);j.ry=h.conf.y+h.conf.h-j.rh;if(j.ry<0){j.rh=j.rh+j.ry;j.ry=0}else{if(j.ry>j.vp_b){j.rh=j.rh-j.vp_b;j.ry=j.vp_b}}}}a._rAdjustSizer();h=j=null};this._rOnWinMouseUp=function(){var g=a.conf.resize;var e=a.wins.w[a._idd];a.wins.conf.resize_actv=false;a.wins.vp.style.cursor=g.vp_cursor;e.fr_cover.className=String(e.fr_cover.className).replace(/\s{0,}dhxwin_fr_cover_resize/gi,"");if(g.resized){a.wins._winSetSize(a._idd,g.rw,g.rh);if(g.rx==null){g.rx=e.conf.x}if(g.ry==null){g.ry=e.conf.y}if(g.rx!=e.conf.x||g.ry!=e.conf.y){a.wins._winSetPosition(a._idd,g.rx,g.ry)}}if(g.obj!=null){g.obj.parentNode.removeChild(g.obj);g.obj=null}if(g.objFR!=null){g.objFR.parentNode.removeChild(g.objFR);g.objFR=null}if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousemove",a._rOnWinMouseMove,false);window.removeEventListener("mouseup",a._rOnWinMouseUp,false);window.removeEventListener("selectstart",a._rOnSelectStart,false)}else{document.body.detachEvent("onmousemove",a._rOnWinMouseMove);document.body.detachEvent("onmouseup",a._rOnWinMouseUp);document.body.detachEvent("onselectstart",a._rOnSelectStart)}if(g.resized==true){if(a.dataType=="layout"&&a.dataObj!=null){a.dataObj.callEvent("onResize",[])}a.wins._callMainEvent("onResizeFinish",a._idd)}else{a.wins._callMainEvent("onResizeCancel",a._idd)}g.mode="";e=g=null};this._rOnSelectStart=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false};this._rInitSizer=function(){var g=a.conf.resize;var e=a.wins.w[a._idd];g.obj=document.createElement("DIV");g.obj.className="dhxwin_resize";g.obj.style.zIndex=e.win.style.zIndex;g.obj.style.cursor=g.mode+"-resize";a.wins.vp.appendChild(g.obj);if(a.wins.conf.fr_cover==true){g.objFR=document.createElement("IFRAME");g.objFR.className="dhxwin_resize_fr_cover";g.objFR.style.zIndex=g.obj.style.zIndex;a.wins.vp.insertBefore(g.objFR,g.obj)}g.rx=e.conf.x;g.ry=e.conf.y;g.rw=e.conf.w;g.rh=e.conf.h;g=null};this._rAdjustSizer=function(){var e=a.conf.resize;if(!e.obj){this._rInitSizer()}e.obj.style.width=e.rw+"px";e.obj.style.height=e.rh+"px";if(e.rx!=null){e.obj.style.left=e.rx+"px"}if(e.ry!=null){e.obj.style.top=e.ry+"px"}if(e.objFR!=null){e.objFR.style.width=e.obj.style.width;e.objFR.style.height=e.obj.style.height;if(e.rx!=null){e.objFR.style.left=e.obj.style.left}if(e.ry!=null){e.objFR.style.top=e.obj.style.top}}e=null};if(typeof(window.addEventListener)=="function"){this.wins.w[this._idd].brd.addEventListener("mousemove",this._rOnCellMouseMove,false);this.wins.w[this._idd].brd.addEventListener("mousedown",this._rOnCellMouseDown,false);this.wins.w[this._idd].brd.addEventListener("contextmenu",this._rOnCellContextMenu,false)}else{this.wins.w[this._idd].brd.attachEvent("onmousemove",this._rOnCellMouseMove);this.wins.w[this._idd].brd.attachEvent("onmousedown",this._rOnCellMouseDown);this.wins.w[this._idd].brd.attachEvent("oncontextmenu",this._rOnCellContextMenu)}this._unloadResize=function(){if(typeof(window.addEventListener)=="function"){this.wins.w[this._idd].brd.removeEventListener("mousemove",this._rOnCellMouseMove,false);this.wins.w[this._idd].brd.removeEventListener("mousedown",this._rOnCellMouseDown,false);this.wins.w[this._idd].brd.removeEventListener("contextmenu",this._rOnCellContextMenu,false)}else{this.wins.w[this._idd].brd.detachEvent("onmousemove",this._rOnCellMouseMove);this.wins.w[this._idd].brd.detachEvent("onmousedown",this._rOnCellMouseDown);this.wins.w[this._idd].brd.detachEvent("oncontextmenu",this._rOnCellContextMenu)}this._initResize=null;this._rOnCellMouseMove=null;this._rOnCellMouseDown=null;this._rOnWinMouseMove=null;this._rOnWinMouseUp=null;this._rOnSelectStart=null;this._rInitSizer=null;this._rAdjustSizer=null;this._unloadResize=null;this.conf.resize=null;a=null}};dhtmlXWindows.prototype.attachContextMenu=function(a){return this._renderContextMenu("icon",null,null,a)};dhtmlXWindows.prototype.getContextMenu=function(){if(this.cm!=null&&this.cm.global!=null){return this.cm.global}return null};dhtmlXWindows.prototype.detachContextMenu=function(){this._detachContextMenu("icon",null,null)};dhtmlXWindowsCell.prototype.attachContextMenu=function(a){return this.wins._renderContextMenu("icon",this._idd,null,a)};dhtmlXWindowsCell.prototype.getContextMenu=function(){if(this.wins.cm!=null&&this.wins.cm.icon[this._idd]!=null){return this.wins.cm.icon[this._idd]}return null};dhtmlXWindowsCell.prototype.detachContextMenu=function(){this.wins._detachContextMenu("icon",this._idd,null)};dhtmlXWindowsButton.prototype.attachContextMenu=function(a){return this.conf.wins._renderContextMenu("button",this.conf.winId,this.conf.name,a)};dhtmlXWindowsButton.prototype.getContextMenu=function(){if(this.conf.wins.cm==null||this.conf.wins.cm.button[this.conf.winId]==null){return null}if(this.conf.wins.cm.button[this.conf.winId][this.conf.name]!=null){return this.conf.wins.cm.button[this.conf.winId][this.conf.name]}return null};dhtmlXWindowsButton.prototype.detachContextMenu=function(){this.conf.wins._detachContextMenu("button",this.conf.winId,this.conf.name)};dhtmlXWindows.prototype._renderContextMenu=function(l,j,e,c){var g=this;var a=false;if(this.cm==null){this.cm={global:null,icon:{},button:{}};a=true}if(j==null){if(this.cm.global!=null){return}}else{if(l=="icon"){if(this.cm.icon[j]!=null){return}}else{if(l=="button"){if(this.cm.button[j]!=null&&this.cm.button[j][e]!=null){return}}}}if(c==null){c={}}c.parent=null;c.context=true;var h=new dhtmlXMenuObject(c);h.setAutoHideMode(false);h.attachEvent("onShow",function(){this.conf.wins_menu_open=true});h.attachEvent("onHide",function(){this.conf.wins_menu_open=false;g.conf.opened_menu=null});if(j==null){this.cm.global=h}else{if(l=="icon"){this.cm.icon[j]=h}else{if(l=="button"){if(this.cm.button[j]==null){this.cm.button[j]={}}this.cm.button[j][e]=h}}}if(a){this._showContextMenu=function(r,o){if(r.button>=2){return}if(o.mode=="icon"&&o.id!=null&&o.press_type=="mousedown"){var s=this.cm.icon[o.id]||this.cm.global;if(s==null){return}r.cancelBubble=true;var n=this.w[o.id].hdr.firstChild;if(s.conf.wins_menu_open&&this.conf.opened_menu==o.id){s.hideContextMenu()}else{this._hideContextMenu();s.showContextMenu(window.dhx4.absLeft(n),window.dhx4.absTop(n)+n.offsetHeight);this.conf.opened_menu=o.id}s=n=null}if(o.mode=="button"&&o.id!=null&&o.press_type=="mousedown"){if(this.cm.button[o.id]==null||this.cm.button[o.id][o.button_name]==null){return}r.cancelBubble=true;this.conf.button_last=null;var s=this.cm.button[o.id][o.button_name];var m=this.w[o.id].b[o.button_name].button;if(s.conf.wins_menu_open&&this.conf.opened_menu==o.id){s.hideContextMenu()}else{this._hideContextMenu();s.showContextMenu(window.dhx4.absLeft(m),window.dhx4.absTop(m)+m.offsetHeight);this.conf.opened_menu=o.id}s=m=null}};this._hideContextMenu=function(u){if(u!=null){u=u||event;if(u.type=="keydown"&&u.keyCode!=27){return}var s=u.target||u.srcElement;var o=true;while(s!=null&&o==true){if(s.className!=null&&s.className.search(/SubLevelArea_Polygon/)>=0){o=false}else{s=s.parentNode}}}if(o||u==null){if(g.cm.global!=null){g.cm.global.hideContextMenu()}for(var r in g.cm.icon){if(g.cm.icon[r]!=null){g.cm.icon[r].hideContextMenu()}}for(var r in g.cm.button){for(var n in g.cm.button[r]){if(g.cm.button[r][n]!=null){g.cm.button[r][n].hideContextMenu()}}}}};this._detachContextMenu=function(o,n,m){if(this.cm==null){return}if(n==null){if(this.cm.global!=null){this.cm.global.unload();this.cm.global=null}}else{if(o=="icon"){if(this.cm.icon[n]!=null){this.cm.icon[n].unload();this.cm.icon[n]=null}}else{if(o=="button"){if(this.cm.button[n]!=null&&this.cm.button[n][m]!=null){this.cm.button[n][m].unload();this.cm.button[n][m]=null}}}}};this.attachEvent("_winMouseDown",this._showContextMenu);if(typeof(window.addEventListener)=="function"){window.addEventListener("mousedown",this._hideContextMenu,false);window.addEventListener("keydown",this._hideContextMenu,false)}else{document.body.attachEvent("onmousedown",this._hideContextMenu);document.body.attachEvent("onkeydown",this._hideContextMenu)}this._unloadContextMenu=function(){this._detachContextMenu("icon",null,null);this.cm=null;if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousedown",this._hideContextMenu,false);window.removeEventListener("keydown",this._hideContextMenu,false)}else{document.body.detachEvent("onmousedown",this._hideContextMenu);document.body.detachEvent("onkeydown",this._hideContextMenu)}g=null}}return h};if(!window.dhtmlx){window.dhtmlx={}}(function(){var o=null;function s(y,w){var x=y.callback;r(false);y.box.parentNode.removeChild(y.box);o=y.box=null;if(x){x(w)}}function a(x){if(o){x=x||event;var w=x.which||event.keyCode;if(dhtmlx.message.keyboard){if(w==13||w==32){s(o,true)}if(w==27){s(o,false)}}if(x.preventDefault){x.preventDefault()}return !(x.cancelBubble=true)}}if(document.attachEvent){document.attachEvent("onkeydown",a)}else{document.addEventListener("keydown",a,true)}function r(x){if(!r.cover){r.cover=document.createElement("DIV");r.cover.onkeydown=a;r.cover.className="dhx_modal_cover";document.body.appendChild(r.cover)}var w=document.body.scrollHeight;r.cover.style.display=x?"inline-block":"none"}function j(x,w){return"<div class='dhtmlx_popup_button' result='"+w+"' ><div>"+x+"</div></div>"}function e(x){if(!u.area){u.area=document.createElement("DIV");u.area.className="dhtmlx_message_area";u.area.style[u.position]="5px";document.body.appendChild(u.area)}u.hide(x.id);var w=document.createElement("DIV");w.innerHTML="<div>"+x.text+"</div>";w.className="dhtmlx-info dhtmlx-"+x.type;w.onclick=function(){if(x){u.hide(x.id)}x=null};if(u.position=="bottom"&&u.area.firstChild){u.area.insertBefore(w,u.area.firstChild)}else{u.area.appendChild(w)}if(x.expire>0){u.timers[x.id]=window.setTimeout(function(){u.hide(x.id)},x.expire)}u.pull[x.id]=w;w=null;return x.id}function l(x,A,E){var D=document.createElement("DIV");D.className=" dhtmlx_modal_box dhtmlx-"+x.type;D.setAttribute("dhxbox",1);var w="";if(x.width){D.style.width=x.width}if(x.height){D.style.height=x.height}if(x.title){w+='<div class="dhtmlx_popup_title">'+x.title+"</div>"}w+='<div class="dhtmlx_popup_text"><span>'+(x.content?"":x.text)+'</span></div><div class="dhtmlx_popup_controls">';if(A){w+=j(x.ok||"OK",true)}if(E){w+=j(x.cancel||"Cancel",false)}if(x.buttons){for(var y=0;y<x.buttons.length;y++){w+=j(x.buttons[y],y)}}w+="</div>";D.innerHTML=w;if(x.content){var C=x.content;if(typeof C=="string"){C=document.getElementById(C)}if(C.style.display=="none"){C.style.display=""}D.childNodes[x.title?1:0].appendChild(C)}D.onclick=function(I){I=I||event;var H=I.target||I.srcElement;if(!H.className){H=H.parentNode}if(H.className=="dhtmlx_popup_button"){var F=H.getAttribute("result");F=(F=="true")||(F=="false"?false:F);s(x,F)}};x.box=D;if(A||E){o=x}return D}function v(A,C,E){var D=A.tagName?A:l(A,C,E);if(!A.hidden){r(true)}document.body.appendChild(D);var w=A.left||Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-D.offsetWidth)/2));var F=A.top||Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-D.offsetHeight)/2));if(A.position=="top"){D.style.top="-3px"}else{D.style.top=F+"px"}D.style.left=w+"px";D.onkeydown=a;D.focus();if(A.hidden){dhtmlx.modalbox.hide(D)}return D}function n(w){return v(w,true,false)}function c(w){return v(w,true,true)}function h(w){return v(w)}function m(x,w,y){if(typeof x!="object"){if(typeof w=="function"){y=w;w=""}x={text:x,type:w,callback:y}}return x}function g(y,x,w,A){if(typeof y!="object"||!y){y={text:y,type:x,expire:w,id:A}}y.id=y.id||u.uid();y.expire=y.expire||u.expire;return y}dhtmlx.alert=function(){var w=m.apply(this,arguments);w.type=w.type||"confirm";return n(w)};dhtmlx.confirm=function(){var w=m.apply(this,arguments);w.type=w.type||"alert";return c(w)};dhtmlx.modalbox=function(){var w=m.apply(this,arguments);w.type=w.type||"alert";return h(w)};dhtmlx.modalbox.hide=function(w){while(w&&w.getAttribute&&!w.getAttribute("dhxbox")){w=w.parentNode}if(w){w.parentNode.removeChild(w);r(false);o=null}};var u=dhtmlx.message=function(A,y,x,C){A=g.apply(this,arguments);A.type=A.type||"info";var w=A.type.split("-")[0];switch(w){case"alert":return n(A);case"confirm":return c(A);case"modalbox":return h(A);default:return e(A);break}};u.seed=(new Date()).valueOf();u.uid=function(){return u.seed++};u.expire=4000;u.keyboard=true;u.position="top";u.pull={};u.timers={};u.hideAll=function(){for(var w in u.pull){u.hide(w)}};u.hide=function(x){var w=u.pull[x];if(w&&w.parentNode){window.setTimeout(function(){w.parentNode.removeChild(w);w=null},2000);w.className+=" hidden";if(u.timers[x]){window.clearTimeout(u.timers[x])}delete u.pull[x]}}})();if(!window.dhx){dhx={}}dhx.assert=function(c,a){if(!c){dhx.assert_error(a)}};dhx.assert_error=function(message){dhx.log("error",message);if(dhx.message&&typeof message=="string"){dhx.message({type:"debug",text:message,expire:-1})}if(dhx.debug!==false){eval("debugger;")}};dhx.assert_core_ready=function(){if(window.dhx_on_core_ready){dhx_on_core_ready()}};dhx.codebase="./";dhx.name="Core";dhx.clone=function(c){var a=dhx.clone._function;a.prototype=c;return new a()};dhx.clone._function=function(){};dhx.extend=function(e,c,a){dhx.assert(e,"Invalid mixing target");dhx.assert(c,"Invalid mixing source");if(e._dhx_proto_wait){dhx.PowerArray.insertAt.call(e._dhx_proto_wait,c,1);return e}for(var g in c){if(!e[g]||a){e[g]=c[g]}}if(c.defaults){dhx.extend(e.defaults,c.defaults)}if(c.$init){c.$init.call(e)}return e};dhx.copy=function(a){dhx.assert(a,"Invalid mixing target");if(arguments.length>1){var c=arguments[0];a=arguments[1]}else{var c=(dhx.isArray(a)?[]:{})}for(var e in a){if(a[e]&&typeof a[e]=="object"&&!dhx.isDate(a[e])){c[e]=(dhx.isArray(a[e])?[]:{});dhx.copy(c[e],a[e])}else{c[e]=a[e]}}return c};dhx.single=function(e){var a=null;var c=function(g){if(!a){a=new e({})}if(a._reinit){a._reinit.apply(a,arguments)}return a};return c};dhx.protoUI=function(){if(dhx.debug_proto){dhx.log("UI registered: "+arguments[0].name)}var e=arguments;var a=e[0].name;var c=function(h){if(!c){return dhx.ui[a].prototype}var l=c._dhx_proto_wait;if(l){var j=[l[0]];for(var g=1;g<l.length;g++){j[g]=l[g];if(j[g]._dhx_proto_wait){j[g]=j[g].call(dhx,j[g].name)}if(j[g].prototype&&j[g].prototype.name){dhx.ui[j[g].prototype.name]=j[g]}}dhx.ui[a]=dhx.proto.apply(dhx,j);if(c._dhx_type_wait){for(var g=0;g<c._dhx_type_wait.length;g++){dhx.Type(dhx.ui[a],c._dhx_type_wait[g])}}c=l=null}if(this!=dhx){return new dhx.ui[a](h)}else{return dhx.ui[a]}};c._dhx_proto_wait=Array.prototype.slice.call(arguments,0);return dhx.ui[a]=c};dhx.proto=function(){if(dhx.debug_proto){dhx.log("Proto chain:"+arguments[0].name+"["+arguments.length+"]")}var j=arguments;var h=j[0];var c=!!h.$init;var m=[];dhx.assert(h,"Invalid mixing target");for(var g=j.length-1;g>0;g--){dhx.assert(j[g],"Invalid mixing source");if(typeof j[g]=="function"){j[g]=j[g].prototype}if(j[g].$init){m.push(j[g].$init)}if(j[g].defaults){var e=j[g].defaults;if(!h.defaults){h.defaults={}}for(var a in e){if(dhx.isUndefined(h.defaults[a])){h.defaults[a]=e[a]}}}if(j[g].type&&h.type){for(var a in j[g].type){if(!h.type[a]){h.type[a]=j[g].type[a]}}}for(var l in j[g]){if(!h[l]){h[l]=j[g][l]}}}if(c){m.push(h.$init)}h.$init=function(){for(var o=0;o<m.length;o++){m[o].apply(this,arguments)}};var n=function(o){this.$ready=[];dhx.assert(this.$init,"object without init method");this.$init(o);if(this._parseSettings){this._parseSettings(o,this.defaults)}for(var r=0;r<this.$ready.length;r++){this.$ready[r].call(this)}};n.prototype=h;h=j=null;return n};dhx.bind=function(c,a){return function(){return c.apply(a,arguments)}};dhx.require=function(c,m,l){if(typeof c!="string"){var j=c.length||0;var h=m;if(!j){for(var a in c){j++}m=function(){j--;if(j===0){h.apply(this,arguments)}};for(var a in c){dhx.require(a,m,l)}}else{m=function(){if(j){j--;dhx.require(c[c.length-j-1],m,l)}else{return h.apply(this,arguments)}};m()}return}if(dhx._modules[c]!==true){if(c.substr(-4)==".css"){var g=dhx.html.create("LINK",{type:"text/css",rel:"stylesheet",href:dhx.codebase+c});document.head.appendChild(g);if(m){m.call(l||window)}return}var e=arguments[4];if(!m){dhx.exec(dhx.ajax().sync().get(dhx.codebase+c).responseText);dhx._modules[c]=true}else{if(!dhx._modules[c]){dhx._modules[c]=[[m,l]];dhx.ajax(dhx.codebase+c,function(r){dhx.exec(r);var o=dhx._modules[c];dhx._modules[c]=true;for(var n=0;n<o.length;n++){o[n][0].call(o[n][1]||window,!n)}})}else{dhx._modules[c].push([m,l])}}}};dhx._modules={};dhx.exec=function(code){if(window.execScript){window.execScript(code)}else{window.eval(code)}};dhx.wrap=function(c,a){if(!c){return a}return function(){var e=c.apply(this,arguments);a.apply(this,arguments);return e}};dhx.isUndefined=function(c){return typeof c=="undefined"};dhx.delay=function(g,c,e,a){return window.setTimeout(function(){var h=g.apply(c,(e||[]));g=c=e=null;return h},a||1)};dhx.uid=function(){if(!this._seed){this._seed=(new Date).valueOf()}this._seed++;return this._seed};dhx.toNode=function(a){if(typeof a=="string"){return document.getElementById(a)}return a};dhx.toArray=function(a){return dhx.extend((a||[]),dhx.PowerArray,true)};dhx.toFunctor=function(str){return(typeof(str)=="string")?eval(str):str};dhx.isArray=function(a){return Array.isArray?Array.isArray(a):(Object.prototype.toString.call(a)==="[object Array]")};dhx.isDate=function(a){return a instanceof Date};dhx._events={};dhx.event=function(g,e,a,c){g=dhx.toNode(g);var h=dhx.uid();if(c){a=dhx.bind(a,c)}dhx._events[h]=[g,e,a];if(g.addEventListener){g.addEventListener(e,a,false)}else{if(g.attachEvent){g.attachEvent("on"+e,a)}}return h};dhx.eventRemove=function(c){if(!c){return}dhx.assert(this._events[c],"Removing non-existing event");var a=dhx._events[c];if(a[0].removeEventListener){a[0].removeEventListener(a[1],a[2],false)}else{if(a[0].detachEvent){a[0].detachEvent("on"+a[1],a[2])}}delete this._events[c]};dhx.log=function(c,e,a){if(arguments.length==1){e=c;c="log"}if(window.console&&console.log){c=c.toLowerCase();if(window.console[c]){window.console[c](e||"unknown error")}else{window.console.log(c+": "+e)}if(a){window.console.log(a)}}};dhx.log_full_time=function(a){dhx._start_time_log=new Date();dhx.log("Timing start ["+a+"]");window.setTimeout(function(){var c=new Date();dhx.log("Timing end ["+a+"]:"+(c.valueOf()-dhx._start_time_log.valueOf())/1000+"s")},1)};dhx.log_time=function(a){var e="_start_time_log"+a;if(!dhx[e]){dhx[e]=new Date();dhx.log("Info","Timing start ["+a+"]")}else{var c=new Date();dhx.log("Info","Timing end ["+a+"]:"+(c.valueOf()-dhx[e].valueOf())/1000+"s");dhx[e]=null}};dhx.debug_code=function(a){a.call(dhx)};dhx.EventSystem={$init:function(){if(!this._evs_events){this._evs_events={};this._evs_handlers={};this._evs_map={}}},blockEvent:function(){this._evs_events._block=true},unblockEvent:function(){this._evs_events._block=false},mapEvent:function(a){dhx.extend(this._evs_map,a,true)},on_setter:function(a){if(a){for(var c in a){if(typeof a[c]=="function"){this.attachEvent(c,a[c])}}}},callEvent:function(e,h){if(this._evs_events._block){return true}e=e.toLowerCase();var g=this._evs_events[e.toLowerCase()];var a=true;if(dhx.debug){dhx.log("info","["+this.name+"] event:"+e,h)}if(g){for(var c=0;c<g.length;c++){if(g[c].apply(this,(h||[]))===false){a=false}}}if(this._evs_map[e]&&!this._evs_map[e].callEvent(e,h)){a=false}return a},attachEvent:function(c,a,g){dhx.assert(a,"Invalid event handler for "+c);c=c.toLowerCase();g=g||dhx.uid();a=dhx.toFunctor(a);var e=this._evs_events[c]||dhx.toArray();e.push(a);this._evs_events[c]=e;this._evs_handlers[g]={f:a,t:c};return g},detachEvent:function(g){if(!this._evs_handlers[g]){return}var c=this._evs_handlers[g].t;var a=this._evs_handlers[g].f;var e=this._evs_events[c];e.remove(a);delete this._evs_handlers[g]},hasEvent:function(a){a=a.toLowerCase();return this._evs_events[a]?true:false}};dhx.extend(dhx,dhx.EventSystem);dhx.PowerArray={removeAt:function(c,a){if(c>=0){this.splice(c,(a||1))}},remove:function(a){this.removeAt(this.find(a))},insertAt:function(c,e){if(!e&&e!==0){this.push(c)}else{var a=this.splice(e,(this.length-e));this[e]=c;this.push.apply(this,a)}},find:function(c){for(var a=0;a<this.length;a++){if(c==this[a]){return a}}return -1},each:function(a,e){for(var c=0;c<this.length;c++){a.call((e||this),this[c])}},map:function(a,e){for(var c=0;c<this.length;c++){this[c]=a.call((e||this),this[c])}return this},filter:function(a,e){for(var c=0;c<this.length;c++){if(!a.call((e||this),this[c])){this.splice(c,1);c--}}return this}};dhx.env={};(function(){if(navigator.userAgent.indexOf("Mobile")!=-1){dhx.env.mobile=true}if(dhx.env.mobile||navigator.userAgent.indexOf("iPad")!=-1||navigator.userAgent.indexOf("Android")!=-1){dhx.env.touch=true}if(navigator.userAgent.indexOf("Opera")!=-1){dhx.env.isOpera=true}else{dhx.env.isIE=!!document.all;dhx.env.isFF=!document.all;dhx.env.isWebKit=(navigator.userAgent.indexOf("KHTML")!=-1);dhx.env.isSafari=dhx.env.isWebKit&&(navigator.userAgent.indexOf("Mac")!=-1)}if(navigator.userAgent.toLowerCase().indexOf("android")!=-1){dhx.env.isAndroid=true}dhx.env.transform=false;dhx.env.transition=false;var e={};e.names=["transform","transition"];e.transform=["transform","WebkitTransform","MozTransform","OTransform","msTransform"];e.transition=["transition","WebkitTransition","MozTransition","OTransition","msTransition"];var m=document.createElement("DIV");for(var h=0;h<e.names.length;h++){var g=e[e.names[h]];for(var c=0;c<g.length;c++){if(typeof m.style[g[c]]!="undefined"){dhx.env[e.names[h]]=g[c];break}}}m.style[dhx.env.transform]="translate3d(0,0,0)";dhx.env.translate=(m.style[dhx.env.transform])?"translate3d":"translate";var l="";var a=false;if(dhx.env.isOpera){l="-o-";a="O"}if(dhx.env.isFF){l="-Moz-"}if(dhx.env.isWebKit){l="-webkit-"}if(dhx.env.isIE){l="-ms-"}dhx.env.transformCSSPrefix=l;dhx.env.transformPrefix=a||(dhx.env.transformCSSPrefix.replace(/-/gi,""));dhx.env.transitionEnd=((dhx.env.transformCSSPrefix=="-Moz-")?"transitionend":(dhx.env.transformPrefix+"TransitionEnd"))})();dhx.env.svg=(function(){return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")})();dhx.html={_native_on_selectstart:0,denySelect:function(){if(!dhx._native_on_selectstart){dhx._native_on_selectstart=document.onselectstart}document.onselectstart=dhx.html.stopEvent},allowSelect:function(){if(dhx._native_on_selectstart!==0){document.onselectstart=dhx._native_on_selectstart||null}dhx._native_on_selectstart=0},index:function(c){var a=0;while(c=c.previousSibling){a++}return a},_style_cache:{},createCss:function(e){var g="";for(var c in e){g+=c+":"+e[c]+";"}var a=this._style_cache[g];if(!a){a="s"+dhx.uid();this.addStyle("."+a+"{"+g+"}");this._style_cache[g]=a}return a},addStyle:function(c){var a=document.createElement("style");a.setAttribute("type","text/css");a.setAttribute("media","screen");if(a.styleSheet){a.styleSheet.cssText=c}else{a.appendChild(document.createTextNode(c))}document.getElementsByTagName("head")[0].appendChild(a)},create:function(c,a,e){a=a||{};var g=document.createElement(c);for(var h in a){g.setAttribute(h,a[h])}if(a.style){g.style.cssText=a.style}if(a["class"]){g.className=a["class"]}if(e){g.innerHTML=e}return g},getValue:function(a){a=dhx.toNode(a);if(!a){return""}return dhx.isUndefined(a.value)?a.innerHTML:a.value},remove:function(c){if(c instanceof Array){for(var a=0;a<c.length;a++){this.remove(c[a])}}else{if(c&&c.parentNode){c.parentNode.removeChild(c)}}},insertBefore:function(c,e,a){if(!c){return}if(e&&e.parentNode){e.parentNode.insertBefore(c,e)}else{a.appendChild(c)}},locate:function(c,h){if(c.tagName){var a=c}else{c=c||event;var a=c.target||c.srcElement}while(a){if(a.getAttribute){var g=a.getAttribute(h);if(g){return g}}a=a.parentNode}return null},offset:function(g){if(g.getBoundingClientRect){var l=g.getBoundingClientRect();var m=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||m.scrollTop;var h=window.pageXOffset||c.scrollLeft||m.scrollLeft;var j=c.clientTop||m.clientTop||0;var n=c.clientLeft||m.clientLeft||0;var o=l.top+a-j;var e=l.left+h-n;return{y:Math.round(o),x:Math.round(e)}}else{var o=0,e=0;while(g){o=o+parseInt(g.offsetTop,10);e=e+parseInt(g.offsetLeft,10);g=g.offsetParent}return{y:o,x:e}}},posRelative:function(a){a=a||event;if(!dhx.isUndefined(a.offsetX)){return{x:a.offsetX,y:a.offsetY}}else{return{x:a.layerX,y:a.layerY}}},pos:function(a){a=a||event;if(a.pageX||a.pageY){return{x:a.pageX,y:a.pageY}}var c=((dhx.env.isIE)&&(document.compatMode!="BackCompat"))?document.documentElement:document.body;return{x:a.clientX+c.scrollLeft-c.clientLeft,y:a.clientY+c.scrollTop-c.clientTop}},preventEvent:function(a){if(a&&a.preventDefault){a.preventDefault()}return dhx.html.stopEvent(a)},stopEvent:function(a){(a||event).cancelBubble=true;return false},addCss:function(c,a){c.className+=" "+a},removeCss:function(c,a){c.className=c.className.replace(RegExp(" "+a,"g"),"")}};dhx.ready=function(a){if(this._ready){a.call()}else{this._ready_code.push(a)}};dhx._ready_code=[];(function(){var a=document.getElementsByTagName("SCRIPT");dhx.assert(a.length,"Can't locate codebase");if(a.length){a=(a[a.length-1].getAttribute("src")||"").split("/");a.splice(a.length-1,1);dhx.codebase=a.slice(0,a.length).join("/")+"/"}dhx.event(window,"load",function(){dhx4.callEvent("onReady",[]);dhx.delay(function(){dhx._ready=true;for(var c=0;c<dhx._ready_code.length;c++){dhx._ready_code[c].call()}dhx._ready_code=[]})})})();dhx.locale=dhx.locale||{};dhx.assert_core_ready();dhx.ready(function(){dhx.event(document.body,"click",function(a){dhx4.callEvent("onClick",[a||event])})});(function(){var e={};var c=new RegExp("(\\r\\n|\\n)","g");var a=new RegExp('(\\")',"g");dhx.Template=function(h){if(typeof h=="function"){return h}if(e[h]){return e[h]}h=(h||"").toString();if(h.indexOf("->")!=-1){h=h.split("->");switch(h[0]){case"html":h=dhx.html.getValue(h[1]);break;default:break}}h=(h||"").toString();h=h.replace(c,"\\n");h=h.replace(a,'\\"');h=h.replace(/\{obj\.([^}?]+)\?([^:]*):([^}]*)\}/g,'"+(obj.$1?"$2":"$3")+"');h=h.replace(/\{common\.([^}\(]*)\}/g,"\"+(common.$1||'')+\"");h=h.replace(/\{common\.([^\}\(]*)\(\)\}/g,'"+(common.$1?common.$1.apply(this, arguments):"")+"');h=h.replace(/\{obj\.([^}]*)\}/g,'"+(obj.$1)+"');h=h.replace("{obj}",'"+obj+"');h=h.replace(/#([^#'";, ]+)#/gi,'"+(obj.$1)+"');try{e[h]=Function("obj","common",'return "'+h+'";')}catch(g){dhx.assert_error("Invalid template:"+h)}return e[h]};dhx.Template.empty=function(){return""};dhx.Template.bind=function(g){return dhx.bind(dhx.Template(g),this)};dhx.Type=function(m,l){if(m._dhx_proto_wait){if(!m._dhx_type_wait){m._dhx_type_wait=[]}m._dhx_type_wait.push(l);return}if(typeof m=="function"){m=m.prototype}if(!m.types){m.types={"default":m.type};m.type.name="default"}var g=l.name;var j=m.type;if(g){j=m.types[g]=dhx.clone(l.baseType?m.types[l.baseType]:m.type)}for(var h in l){if(h.indexOf("template")===0){j[h]=dhx.Template(l[h])}else{j[h]=l[h]}}return g}})();dhx.Settings={$init:function(){this._settings=this.config={}},define:function(c,a){if(typeof c=="object"){return this._parseSeetingColl(c)}return this._define(c,a)},_define:function(c,a){var e=this[c+"_setter"];return this._settings[c]=e?e.call(this,a,c):a},_parseSeetingColl:function(e){if(e){for(var c in e){this._define(c,e[c])}}},_parseSettings:function(e,a){var c={};if(a){c=dhx.extend(c,a)}if(typeof e=="object"&&!e.tagName){dhx.extend(c,e,true)}this._parseSeetingColl(c)},_mergeSettings:function(a,e){for(var c in e){switch(typeof a[c]){case"object":a[c]=this._mergeSettings((a[c]||{}),e[c]);break;case"undefined":a[c]=e[c];break;default:break}}return a},debug_freid_c_id:true,debug_freid_a_name:true};dhx.ajax=function(a,c,e){if(arguments.length!==0){var g=new dhx.ajax();if(e){g.master=e}return g.get(a,null,c)}if(!this.getXHR){return new dhx.ajax()}return this};dhx.ajax.count=0;dhx.ajax.prototype={master:null,getXHR:function(){if(dhx.env.isIE){return new ActiveXObject("Microsoft.xmlHTTP")}else{return new XMLHttpRequest()}},send:function(h,n,l){var c=this.getXHR();if(!dhx.isArray(l)){l=[l]}if(typeof n=="object"){var j=[];for(var e in n){var m=n[e];if(m===null||m===dhx.undefined){m=""}j.push(e+"="+encodeURIComponent(m))}n=j.join("&")}if(n&&this.request==="GET"){h=h+(h.indexOf("?")!=-1?"&":"?")+n;n=null}c.open(this.request,h,!this._sync);if(this.request==="POST"){c.setRequestHeader("Content-type","application/x-www-form-urlencoded")}var g=this;c.onreadystatechange=function(){if(!c.readyState||c.readyState==4){if(dhx.debug_time){dhx.log_full_time("data_loading")}dhx.ajax.count++;if(l&&g){for(var a=0;a<l.length;a++){if(l[a]){var o=(l[a].success||l[a]);if(c.status>=400||(!c.status&&!c.responseText)){o=l[a].error}if(o){o.call((g.master||g),c.responseText,c.responseXML,c)}}}}if(g){g.master=null}l=g=null}};c.send(n||null);return c},get:function(a,e,c){if(arguments.length==2){c=e;e=null}this.request="GET";return this.send(a,e,c)},post:function(a,e,c){this.request="POST";return this.send(a,e,c)},put:function(a,e,c){this.request="PUT";return this.send(a,e,c)},del:function(a,e,c){this.request="DELETE";return this.send(a,e,c)},sync:function(){this._sync=true;return this},bind:function(a){this.master=a;return this}};dhx.send=function(e,c,l,j){var g=dhx.html.create("FORM",{target:(j||"_self"),action:e,method:(l||"POST")},"");for(var a in c){var h=dhx.html.create("INPUT",{type:"hidden",name:a,value:c[a]},"");g.appendChild(h)}g.style.display="none";document.body.appendChild(g);g.submit();document.body.removeChild(g)};dhx.AtomDataLoader={$init:function(a){this.data={};if(a){this._settings.datatype=a.datatype||"json";this.$ready.push(this._load_when_ready)}},_load_when_ready:function(){this._ready_for_data=true;if(this._settings.url){this.url_setter(this._settings.url)}if(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 true},debug_freid_c_datatype:true,debug_freid_c_dataFeed:true,load:function(a,c){if(a.$proxy){a.load(this,typeof c=="string"?c:"json");return}this.callEvent("onXLS",[]);if(typeof c=="string"){this.data.driver=dhx.DataDriver[c];c=arguments[2]}else{if(!this.data.driver){this.data.driver=dhx.DataDriver.json}}var e=[{success:this._onLoad,error:this._onLoadError}];if(c){if(dhx.isArray(c)){e.push.apply(e,c)}else{e.push(c)}}return dhx.ajax(a,e,this)},parse:function(c,a){this.callEvent("onXLS",[]);this.data.driver=dhx.DataDriver[a||"json"];this._onLoad(c,null)},_onLoad:function(l,c,a,e){var h=this.data.driver;var g=h.toObject(l,c);if(g){var j=h.getRecords(g)[0];this.data=(h?h.getDetails(j):l)}else{this._onLoadError(l,c,a)}this.callEvent("onXLE",[])},_onLoadError:function(e,a,c){this.callEvent("onXLE",[]);this.callEvent("onLoadError",arguments);dhx4.callEvent("onLoadError",[e,a,c,this])},_check_data_feed:function(c){if(!this._settings.dataFeed||this._ignore_feed||!c){return true}var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,(c.id||c),c)}a=a+(a.indexOf("?")==-1?"?":"&")+"action=get&id="+encodeURIComponent(c.id||c);this.callEvent("onXLS",[]);dhx.ajax(a,function(j,g,e){this._ignore_feed=true;var h=dhx.DataDriver.toObject(j,g);if(h){this.setValues(h.getDetails(h.getRecords()[0]))}else{this._onLoadError(j,g,e)}this._ignore_feed=false;this.callEvent("onXLE",[])},this);return false}};dhx.DataDriver={};dhx.DataDriver.json={toObject:function(data){if(!data){data="[]"}if(typeof data=="string"){try{eval("dhx.temp="+data)}catch(e){dhx.assert_error(e);return null}data=dhx.temp}if(data.data){var t=data.data.config={};for(var key in data){if(key!="data"){t[key]=data[key]}}data=data.data}return data},getRecords:function(a){if(a&&!dhx.isArray(a)){return[a]}return a},getDetails:function(a){if(typeof a=="string"){return{id:dhx.uid(),value:a}}return a},getInfo:function(c){var a=c.config;if(!a){return{}}return{_size:(a.total_count||0),_from:(a.pos||0),_parent:(a.parent||0),_config:(a.config),_key:(a.dhx_security)}},child:"data"};dhx.DataDriver.html={toObject:function(c){if(typeof c=="string"){var a=null;if(c.indexOf("<")==-1){a=dhx.toNode(c)}if(!a){a=document.createElement("DIV");a.innerHTML=c}return a.getElementsByTagName(this.tag)}return c},getRecords:function(c){var e=[];for(var a=0;a<c.childNodes.length;a++){var g=c.childNodes[a];if(g.nodeType==1){e.push(g)}}return e},getDetails:function(a){return dhx.DataDriver.xml.tagToObject(a)},getInfo:function(a){return{_size:0,_from:0}},tag:"LI"};dhx.DataDriver.jsarray={toObject:function(data){if(typeof data=="string"){eval("dhx.temp="+data);return dhx.temp}return data},getRecords:function(a){return a},getDetails:function(e){var a={};for(var c=0;c<e.length;c++){a["data"+c]=e[c]}return a},getInfo:function(a){return{_size:0,_from:0}}};dhx.DataDriver.csv={toObject:function(a){return a},getRecords:function(a){return a.split(this.row)},getDetails:function(e){e=this.stringToArray(e);var a={};for(var c=0;c<e.length;c++){a["data"+c]=e[c]}return a},getInfo:function(a){return{_size:0,_from:0}},stringToArray:function(c){c=c.split(this.cell);for(var a=0;a<c.length;a++){c[a]=c[a].replace(/^[ \t\n\r]*(\"|)/g,"").replace(/(\"|)[ \t\n\r]*$/g,"")}return c},row:"\n",cell:","};dhx.DataDriver.xml={_isValidXML:function(a){if(!a||!a.documentElement){return null}if(a.getElementsByTagName("parsererror").length){return null}return a},toObject:function(e,a){if(this._isValidXML(c)){return c}if(typeof e=="string"){var c=this.fromString(e.replace(/^[\s]+/,""))}else{c=e}if(this._isValidXML(c)){return c}return null},getRecords:function(a){return this.xpath(a,this.records)},records:"/*/item",child:"item",config:"/*/config",getDetails:function(a){return this.tagToObject(a,{})},getInfo:function(c){var a=this.xpath(c,this.config);if(a.length){a=this.assignTypes(this.tagToObject(a[0],{}))}else{a=null}return{_size:(c.documentElement.getAttribute("total_count")||0),_from:(c.documentElement.getAttribute("pos")||0),_parent:(c.documentElement.getAttribute("parent")||0),_config:a,_key:(c.documentElement.getAttribute("dhx_security")||null)}},xpath:function(h,o){if(window.XPathResult){var g=h;if(h.nodeName.indexOf("document")==-1){h=h.ownerDocument}var m=[];var c=h.evaluate(o,g,null,XPathResult.ANY_TYPE,null);var n=c.iterateNext();while(n){m.push(n);n=c.iterateNext()}return m}else{var l=true;try{if(typeof(h.selectNodes)=="undefined"){l=false}}catch(j){}if(l){return h.selectNodes(o)}else{var a=o.split("/").pop();return h.getElementsByTagName(a)}}},assignTypes:function(c){for(var a in c){var e=c[a];if(typeof e=="object"){this.assignTypes(e)}else{if(typeof e=="string"){if(e===""){continue}if(e=="true"){c[a]=true}else{if(e=="false"){c[a]=false}else{if(e==e*1){c[a]=c[a]*1}}}}}}return c},tagToObject:function(e,n){n=n||{};var h=false;var g=e.attributes;if(g&&g.length){for(var l=0;l<g.length;l++){n[g[l].name]=g[l].value}h=true}var c=e.childNodes;var m={};for(var l=0;l<c.length;l++){if(c[l].nodeType==1){var j=c[l].tagName;if(typeof n[j]!="undefined"){if(!dhx.isArray(n[j])){n[j]=[n[j]]}n[j].push(this.tagToObject(c[l],{}))}else{n[c[l].tagName]=this.tagToObject(c[l],{})}h=true}}if(!h){return this.nodeValue(e)}n.value=n.value||this.nodeValue(e);return n},nodeValue:function(a){if(a.firstChild){return a.firstChild.data}return""},fromString:function(g){try{if(window.DOMParser){return(new DOMParser()).parseFromString(g,"text/xml")}if(window.ActiveXObject){var a=new ActiveXObject("Microsoft.xmlDOM");a.loadXML(g);return a}}catch(c){dhx.assert_error(c);return null}dhx.assert_error("Load from xml string is not supported")}};dhx.DataLoader=dhx.proto({$init:function(a){a=a||"";this._ajax_queue=dhx.toArray();this.data=new dhx.DataStore();this.data.attachEvent("onClearAll",dhx.bind(this._call_onclearall,this));this.data.attachEvent("onServerConfig",dhx.bind(this._call_on_config,this));this.data.feed=this._feed},_feed:function(e,a,c){if(this._load_count){return this._load_count=[e,a,c]}else{this._load_count=true}this._feed_last=[e,a];this._feed_common.call(this,e,a,c)},_feed_common:function(g,c,e){var a=this.data.url;if(g<0){g=0}this.load(a+((a.indexOf("?")==-1)?"?":"&")+(this.dataCount()?("continue=true&"):"")+"start="+g+"&count="+c,[this._feed_callback,e])},_feed_callback:function(){var a=this._load_count;var c=this._feed_last;this._load_count=false;if(typeof a=="object"&&(a[0]!=c[0]||a[1]!=c[1])){this.data.feed.apply(this,a)}},load:function(a,c){var e=dhx.AtomDataLoader.load.apply(this,arguments);this._ajax_queue.push(e);if(!this.data.url){this.data.url=a}},loadNext:function(e,h,g,c,a){if(this._settings.datathrottle&&!a){if(this._throttle_request){window.clearTimeout(this._throttle_request)}this._throttle_request=dhx.delay(function(){this.loadNext(e,h,g,c,true)},this,0,this._settings.datathrottle);return}if(!h&&h!==0){h=this.dataCount()}this.data.url=this.data.url||c;if(this.callEvent("onDataRequest",[h,e,g,c])&&this.data.url){this.data.feed.call(this,h,e,g)}},_maybe_loading_already:function(c,e){var a=this._feed_last;if(this._load_count&&a){if(a[0]<=e&&(a[1]+a[0]>=c+e)){return true}}return false},_onLoad:function(g,c,a){this._ajax_queue.remove(a);var e=this.data.driver.toObject(g,c);if(e){this.data._parse(e)}else{return this._onLoadError(g,c,a)}this._call_onready();this.callEvent("onXLE",[])},removeMissed_setter:function(a){return this.data._removeMissed=a},scheme_setter:function(a){this.data.scheme(a)},dataFeed_setter:function(a){this.data.attachEvent("onBeforeFilter",dhx.bind(function(l,j){if(this._settings.dataFeed){var h={};if(!l&&!j){return}if(typeof l=="function"){if(!j){return}l(j,h)}else{h={text:j}}this.clearAll();var c=this._settings.dataFeed;var g=[];if(typeof c=="function"){return c.call(this,j,h)}for(var e in h){g.push("dhx_filter["+e+"]="+encodeURIComponent(h[e]))}this.load(c+(c.indexOf("?")<0?"?":"&")+g.join("&"),this._settings.datatype);return false}},this));return a},debug_freid_c_ready:true,debug_freid_c_datathrottle:true,_call_onready:function(){if(this._settings.ready&&!this._ready_was_used){var a=dhx.toFunctor(this._settings.ready);if(a){dhx.delay(a,this,arguments)}this._ready_was_used=true}},_call_onclearall:function(){for(var a=0;a<this._ajax_queue.length;a++){this._ajax_queue[a].abort()}this._ajax_queue=dhx.toArray()},_call_on_config:function(a){this._parseSeetingColl(a)}},dhx.AtomDataLoader);dhx.DataStore=function(){this.name="DataStore";dhx.extend(this,dhx.EventSystem);this.setDriver("json");this.pull={};this.order=dhx.toArray();this._marks={}};dhx.DataStore.prototype={setDriver:function(a){dhx.assert(dhx.DataDriver[a],"incorrect DataDriver");this.driver=dhx.DataDriver[a]},_parse:function(e,a){this.callEvent("onParse",[this.driver,e]);if(this._filter_order){this.filter()}var g=this.driver.getInfo(e);if(g._key){dhx.securityKey=g._key}if(g._config){this.callEvent("onServerConfig",[g._config])}var c=this.driver.getRecords(e);this._inner_parse(g,c);if(this._scheme_group&&this._group_processing){this._group_processing(this._scheme_group)}if(this._scheme_sort){this.blockEvent();this.sort(this._scheme_sort);this.unblockEvent()}this.callEvent("onStoreLoad",[this.driver,e]);this.refresh()},_inner_parse:function(c,m){var o=(c._from||0)*1;var l=true;var n=false;if(o===0&&this.order[0]){if(this._removeMissed){n={};for(var g=0;g<this.order.length;g++){n[this.order[g]]=true}}l=false;o=this.order.length}var e=0;for(var g=0;g<m.length;g++){var r=this.driver.getDetails(m[g]);var a=this.id(r);if(!this.pull[a]){this.order[e+o]=a;e++}else{if(l&&this.order[e+o]){e++}}if(this.pull[a]){dhx.extend(this.pull[a],r,true);if(this._scheme_update){this._scheme_update(this.pull[a])}if(n){delete n[a]}}else{this.pull[a]=r;if(this._scheme_init){this._scheme_init(r)}}}if(n){this.blockEvent();for(var h in n){this.remove(h)}this.unblockEvent()}if(!this.order[c._size-1]){this.order[c._size-1]=dhx.undefined}},id:function(a){return a.id||(a.id=dhx.uid())},changeId:function(c,a){if(this.pull[c]){this.pull[a]=this.pull[c]}this.pull[a].id=a;this.order[this.order.find(c)]=a;if(this._filter_order){this._filter_order[this._filter_order.find(c)]=a}if(this._marks[c]){this._marks[a]=this._marks[c];delete this._marks[c]}this.callEvent("onIdChange",[c,a]);if(this._render_change_id){this._render_change_id(c,a)}delete this.pull[c]},item:function(a){return this.pull[a]},update:function(c,a){if(dhx.isUndefined(a)){a=this.item(c)}if(this._scheme_update){this._scheme_update(a)}if(this.callEvent("onBeforeUpdate",[c,a])===false){return false}this.pull[c]=a;this.callEvent("onStoreUpdated",[c,a,"update"])},refresh:function(a){if(this._skip_refresh){return}if(a){this.callEvent("onStoreUpdated",[a,this.pull[a],"paint"])}else{this.callEvent("onStoreUpdated",[null,null,null])}},silent:function(c,a){this._skip_refresh=true;c.call(a||this);this._skip_refresh=false},getRange:function(g,e){if(g){g=this.indexById(g)}else{g=(this.$min||this.startOffset)||0}if(e){e=this.indexById(e)}else{e=Math.min(((this.$max||this.endOffset)||Infinity),(this.dataCount()-1));if(e<0){e=0}}if(g>e){var c=e;e=g;g=c}return this.getIndexRange(g,e)},getIndexRange:function(g,e){e=Math.min((e||Infinity),this.dataCount()-1);var a=dhx.toArray();for(var c=(g||0);c<=e;c++){a.push(this.item(this.order[c]))}return a},dataCount:function(){return this.order.length},exists:function(a){return !!(this.pull[a])},move:function(a,g){dhx.assert(a>=0&&g>=0,"DataStore::move","Incorrect indexes");var e=this.idByIndex(a);var c=this.item(e);this.order.removeAt(a);this.order.insertAt(e,Math.min(this.order.length,g));this.callEvent("onStoreUpdated",[e,c,"move"])},scheme:function(a){this._scheme={};this._scheme_init=a.$init;this._scheme_update=a.$update;this._scheme_serialize=a.$serialize;this._scheme_group=a.$group;this._scheme_sort=a.$sort;for(var c in a){if(c.substr(0,1)!="$"){this._scheme[c]=a[c]}}},sync:function(g,e,a){if(typeof g=="string"){g=$$("source")}if(typeof e!="function"){a=e;e=null}if(dhx.debug_bind){this.debug_sync_master=g;dhx.log("[sync] "+this.debug_bind_master.name+"@"+this.debug_bind_master._settings.id+" <= "+this.debug_sync_master.name+"@"+this.debug_sync_master._settings.id)}this._backbone_source=false;if(g.name!="DataStore"){if(g.data&&g.data.name=="DataStore"){g=g.data}else{this._backbone_source=true}}var c=dhx.bind(function(m,h,l){if(this._backbone_source){if(!m){return}if(m.indexOf("change")===0){if(m=="change"){this.pull[h.id]=h.attributes;this.refresh(h.id);return}else{return}}if(m=="reset"){l=h}this.order=[];this.pull={};this._filter_order=null;for(var j=0;j<l.models.length;j++){var n=l.models[j].id;this.order.push(n);this.pull[n]=l.models[j].attributes}}else{this._filter_order=null;this.order=dhx.toArray([].concat(g.order));this.pull=g.pull}if(e){this.silent(e)}if(this._on_sync){this._on_sync()}if(dhx.debug_bind){dhx.log("[sync:request] "+this.debug_sync_master.name+"@"+this.debug_sync_master._settings.id+" <= "+this.debug_bind_master.name+"@"+this.debug_bind_master._settings.id)}this.callEvent("onSyncApply",[]);if(!a){this.refresh()}else{a=false}},this);if(this._backbone_source){g.bind("all",c)}else{this._sync_events=[g.attachEvent("onStoreUpdated",c),g.attachEvent("onIdChange",dhx.bind(function(h,j){this.changeId(h,j)},this))]}c()},add:function(j,c){if(this._scheme){for(var e in this._scheme){if(dhx.isUndefined(j[e])){j[e]=this._scheme[e]}}}if(this._scheme_init){this._scheme_init(j)}var l=this.id(j);var a=arguments[2]||this.order;var h=a.length;if(dhx.isUndefined(c)||c<0){c=h}if(c>h){dhx.log("Warning","DataStore:add","Index of out of bounds");c=Math.min(a.length,c)}if(this.callEvent("onBeforeAdd",[l,j,c])===false){return false}dhx.assert(!this.exists(l),"Not unique ID");this.pull[l]=j;a.insertAt(l,c);if(this._filter_order){var g=this._filter_order.length;if(!c&&this.order.length){g=0}this._filter_order.insertAt(l,g)}this.callEvent("onAfterAdd",[l,c]);this.callEvent("onStoreUpdated",[l,j,"add"]);return l},remove:function(e){if(dhx.isArray(e)){for(var a=0;a<e.length;a++){this.remove(e[a])}return}if(this.callEvent("onBeforeDelete",[e])===false){return false}dhx.assert(this.exists(e),"Not existing ID in remove command"+e);var c=this.item(e);this.order.remove(e);if(this._filter_order){this._filter_order.remove(e)}delete this.pull[e];if(this._marks[e]){delete this._marks[e]}this.callEvent("onAfterDelete",[e]);this.callEvent("onStoreUpdated",[e,c,"delete"])},clearAll:function(){this.pull={};this.order=dhx.toArray();this._filter_order=this.url=null;this.callEvent("onClearAll",[]);this.refresh()},idByIndex:function(a){if(a>=this.order.length||a<0){dhx.log("Warning","DataStore::idByIndex Incorrect index")}return this.order[a]},indexById:function(c){var a=this.order.find(c);if(!this.pull[c]){dhx.log("Warning","DataStore::indexById Non-existing ID: "+c)}return a},next:function(c,a){return this.order[this.indexById(c)+(a||1)]},first:function(){return this.order[0]},last:function(){return this.order[this.order.length-1]},previous:function(c,a){return this.order[this.indexById(c)-(a||1)]},sort:function(h,c,a){var e=h;if(typeof h=="function"){e={as:h,dir:c}}else{if(typeof h=="string"){e={by:h.replace(/#/g,""),dir:c,as:a}}}var g=[e.by,e.dir,e.as];if(!this.callEvent("onBeforeSort",g)){return}this._sort_core(e);this.refresh();this.callEvent("onAfterSort",g)},_sort_core:function(a){if(this.order.length){var e=this._sort._create(a);var c=this.getRange(this.first(),this.last());c.sort(e);this.order=c.map(function(g){dhx.assert(g,"Client sorting can't be used with dynamic loading");return this.id(g)},this)}},_filter_reset:function(a){if(this._filter_order&&!a){this.order=this._filter_order;delete this._filter_order}},_filter_core:function(e,h,c){var g=dhx.toArray();for(var a=0;a<this.order.length;a++){var j=this.order[a];if(e(this.item(j),h)){g.push(j)}}if(!c||!this._filter_order){this._filter_order=this.order}this.order=g},filter:function(g,e,a){if(!this.callEvent("onBeforeFilter",[g,e])){return}this._filter_reset(a);if(!this.order.length){return}if(g){var c=g;e=e||"";if(typeof g=="string"){g=g.replace(/#/g,"");if(typeof e=="function"){c=function(h){return e(h[g])}}else{e=e.toString().toLowerCase();c=function(j,h){dhx.assert(j,"Client side filtering can't be used with dynamic loading");return(j[g]||"").toString().toLowerCase().indexOf(h)!=-1}}}this._filter_core(c,e,a,this._filterMode)}this.refresh();this.callEvent("onAfterFilter",[])},each:function(e,c){for(var a=0;a<this.order.length;a++){e.call((c||this),this.item(this.order[a]))}},_methodPush:function(a,c){return function(){return a[c].apply(a,arguments)}},addMark:function(h,g,a,c){var e=this._marks[h]||{};this._marks[h]=e;if(!e[g]){e[g]=c||true;if(a){this.item(h).$css=(this.item(h).$css||"")+" "+g;this.refresh(h)}}return e[g]},removeMark:function(h,g,a){var e=this._marks[h];if(e&&e[g]){delete e[g]}if(a){var c=this.item(h).$css;if(c){this.item(h).$css=c.replace(g,"");this.refresh(h)}}},hasMark:function(e,c){var a=this._marks[e];return(a&&a[c])},provideApi:function(g,c){this.debug_bind_master=g;if(c){this.mapEvent({onbeforesort:g,onaftersort:g,onbeforeadd:g,onafteradd:g,onbeforedelete:g,onafterdelete:g,onbeforeupdate:g})}var e=["sort","add","remove","exists","idByIndex","indexById","item","update","refresh","dataCount","filter","next","previous","clearAll","first","last","serialize","sync","addMark","removeMark","hasMark"];for(var a=0;a<e.length;a++){g[e[a]]=this._methodPush(this,e[a])}},serialize:function(){var g=this.order;var a=[];for(var c=0;c<g.length;c++){var e=this.pull[g[c]];if(this._scheme_serialize){e=this._scheme_serialize(e);if(e===false){continue}}a.push(e)}return a},_sort:{_create:function(a){return this._dir(a.dir,this._by(a.by,a.as))},_as:{date:function(e,c){e=e-0;c=c-0;return e>c?1:(e<c?-1:0)},"int":function(e,c){e=e*1;c=c*1;return e>c?1:(e<c?-1:0)},string_strict:function(e,c){e=e.toString();c=c.toString();return e>c?1:(e<c?-1:0)},string:function(e,c){if(!c){return 1}if(!e){return -1}e=e.toString().toLowerCase();c=c.toString().toLowerCase();return e>c?1:(e<c?-1:0)}},_by:function(c,a){if(!c){return a}if(typeof a!="function"){a=this._as[a||"string"]}dhx.assert(a,"Invalid sorting method");return function(g,e){return a(g[c],e[c])}},_dir:function(c,a){if(c=="asc"||!c){return a}return function(g,e){return a(g,e)*-1}}}};dhx.BaseBind={debug_freid_ignore:{id:true},bind:function(h,g,e){if(typeof h=="string"){h=dhx.ui.get(h)}if(h._initBindSource){h._initBindSource()}if(this._initBindSource){this._initBindSource()}if(!h.getBindData){dhx.extend(h,dhx.BindSource)}if(!this._bind_ready){var j=this.render;if(this.filter){var c=this._settings.id;this.data._on_sync=function(){h._bind_updated[c]=false}}this.render=function(){if(this._in_bind_processing){return}this._in_bind_processing=true;var l=this.callEvent("onBindRequest");this._in_bind_processing=false;return j.apply(this,((l===false)?arguments:[]))};if(this.getValue||this.getValues){this.save=function(){if(this.validate&&!this.validate()){return}h.setBindData((this.getValue?this.getValue:this.getValues()),this._settings.id)}}this._bind_ready=true}h.addBind(this._settings.id,g,e);if(dhx.debug_bind){dhx.log("[bind] "+this.name+"@"+this._settings.id+" <= "+h.name+"@"+h._settings.id)}var a=this._settings.id;this.attachEvent(this.touchable?"onAfterRender":"onBindRequest",function(){return h.getBindData(a)});if(!this._settings.dataFeed&&this.loadNext){this.data.attachEvent("onStoreLoad",function(){h._bind_updated[a]=false})}if(this.isVisible(this._settings.id)){this.refresh()}},unbind:function(a){return this._unbind(a)},_unbind:function(e){e.removeBind(this._settings.id);var c=(this._sync_events||(this.data?this.data._sync_events:0));if(c&&e.data){for(var a=0;a<c.length;a++){e.data.detachEvent(c[a])}}}};dhx.BindSource={$init:function(){this._bind_hash={};this._bind_updated={};this._ignore_binds={};this._bind_specific_rules(this)},saveBatch:function(a){this._do_not_update_binds=true;a.call(this);this._do_not_update_binds=false;this._update_binds()},setBindData:function(c,a){if(a){this._ignore_binds[a]=true}if(dhx.debug_bind){dhx.log("[bind:save] "+this.name+"@"+this._settings.id+" <= @"+a)}if(this.setValue){this.setValue(c)}else{if(this.setValues){this.setValues(c)}else{var e=this.getCursor();if(e){c=dhx.extend(this.item(e),c,true);this.update(e,c)}}}this.callEvent("onBindUpdate",[c,a]);if(this.save){this.save()}if(a){this._ignore_binds[a]=false}},getBindData:function(a,e){if(this._bind_updated[a]){return false}var c=dhx.ui.get(a);if(c.isVisible(c._settings.id)){this._bind_updated[a]=true;if(dhx.debug_bind){dhx.log("[bind:request] "+this.name+"@"+this._settings.id+" => "+c.name+"@"+c._settings.id)}this._bind_update(c,this._bind_hash[a][0],this._bind_hash[a][1]);if(e&&c.filter){c.refresh()}}},addBind:function(a,e,c){this._bind_hash[a]=[e,c]},removeBind:function(a){delete this._bind_hash[a];delete this._bind_updated[a];delete this._ignore_binds[a]},_bind_specific_rules:function(a){if(a.filter){dhx.extend(this,dhx.CollectionBind)}else{if(a.setValue){dhx.extend(this,dhx.ValueBind)}else{dhx.extend(this,dhx.RecordBind)}}},_update_binds:function(){if(!this._do_not_update_binds){for(var a in this._bind_hash){if(this._ignore_binds[a]){continue}this._bind_updated[a]=false;this.getBindData(a,true)}}},_bind_update_common:function(e,c,a){if(e.setValue){e.setValue(a?a[c]:a)}else{if(!e.filter){if(!a&&e.clear){e.clear()}else{if(e._check_data_feed(a)){e.setValues(dhx.clone(a))}}}else{e.data.silent(function(){this.filter(c,a)})}}e.callEvent("onBindApply",[a,c,this])}};dhx.DataValue=dhx.proto({name:"DataValue",isVisible:function(){return true},$init:function(a){this.data=""||a;var c=(a&&a.id)?a.id:dhx.uid();this._settings={id:c};dhx.ui.views[c]=this},setValue:function(a){this.data=a;this.callEvent("onChange",[a])},getValue:function(){return this.data},refresh:function(){this.callEvent("onBindRequest")}},dhx.EventSystem,dhx.BaseBind);dhx.DataRecord=dhx.proto({name:"DataRecord",isVisible:function(){return true},$init:function(a){this.data=a||{};var c=(a&&a.id)?a.id:dhx.uid();this._settings={id:c};dhx.ui.views[c]=this},getValues:function(){return this.data},setValues:function(a){this.data=a;this.callEvent("onChange",[a])},refresh:function(){this.callEvent("onBindRequest")}},dhx.EventSystem,dhx.BaseBind,dhx.AtomDataLoader,dhx.Settings);dhx.DataCollection=dhx.proto({name:"DataCollection",isVisible:function(){if(!this.data.order.length&&!this.data._filter_order&&!this._settings.dataFeed){return false}return true},$init:function(a){this.data.provideApi(this,true);var c=(a&&a.id)?a.id:dhx.uid();this._settings.id=c;dhx.ui.views[c]=this;this.data.attachEvent("onStoreLoad",dhx.bind(function(){this.callEvent("onBindRequest",[])},this))},refresh:function(){this.callEvent("onBindRequest",[])}},dhx.DataLoader,dhx.EventSystem,dhx.BaseBind,dhx.Settings);dhx.ValueBind={$init:function(){this.attachEvent("onChange",this._update_binds)},_bind_update:function(h,g,e){var c=this.getValue()||"";if(e){c=e(c)}if(h.setValue){h.setValue(c)}else{if(!h.filter){var a={};a[g]=c;if(h._check_data_feed(c)){h.setValues(a)}}else{h.data.silent(function(){this.filter(g,c)})}}h.callEvent("onBindApply",[c,g,this])}};dhx.RecordBind={$init:function(){this.attachEvent("onChange",this._update_binds)},_bind_update:function(e,c){var a=this.getValues()||null;this._bind_update_common(e,c,a)}};dhx.CollectionBind={$init:function(){this._cursor=null;this.attachEvent("onSelectChange",function(c){var a=this.getSelected();this.setCursor(a?(a.id||a):null)});this.attachEvent("onAfterCursorChange",this._update_binds);this.data.attachEvent("onStoreUpdated",dhx.bind(function(e,a,c){if(e&&e==this.getCursor()&&c!="paint"){this._update_binds()}},this));this.data.attachEvent("onClearAll",dhx.bind(function(){this._cursor=null},this));this.data.attachEvent("onIdChange",dhx.bind(function(c,a){if(this._cursor==c){this._cursor=a}},this))},setCursor:function(a){if(a==this._cursor||(a!==null&&!this.item(a))){return}this.callEvent("onBeforeCursorChange",[this._cursor]);this._cursor=a;this.callEvent("onAfterCursorChange",[a])},getCursor:function(){return this._cursor},_bind_update:function(e,c){var a=this.item(this.getCursor())||this._settings.defaultData||null;this._bind_update_common(e,c,a)}};if(!dhx.ui){dhx.ui={}}if(!dhx.ui.views){dhx.ui.views={};dhx.ui.get=function(a){if(a._settings){return a}return dhx.ui.views[a]}}dhtmlXDataStore=function(c){var e=new dhx.DataCollection(c);var a="_dp_init";e[a]=function(h){var g="_methods";h[g]=["dummy","dummy","changeId","dummy"];this.data._old_names={add:"inserted",update:"updated","delete":"deleted"};this.data.attachEvent("onStoreUpdated",function(m,j,l){if(m&&!h._silent){h.setUpdated(m,true,this._old_names[l])}});g="_getRowData";h[g]=function(o,j){var m=this.obj.data.item(o);var n={id:o};n[this.action_param]=this.obj.getUserData(o);if(m){for(var l in m){n[l]=m[l]}}return n};this.changeId=function(l,j){this.data.changeId(l,j);h._silent=true;this.data.callEvent("onStoreUpdated",[j,this.item(j),"update"]);h._silent=false};g="_clearUpdateFlag";h[g]=function(){};this._userdata={}};e.dummy=function(){};e.setUserData=function(j,g,h){this._userdata[j]=h};e.getUserData=function(h,g){return this._userdata[h]};e.dataFeed=function(g){this.define("dataFeed",g)};dhx.extend(e,dhx.BindSource);return e};if(window.dhtmlXDataView){dhtmlXDataView.prototype._initBindSource=function(){this.isVisible=function(){if(!this.data.order.length&&!this.data._filter_order&&!this._settings.dataFeed){return false}return true};var a="_settings";this._settings=this._settings||this[a];if(!this._settings.id){this._settings.id=dhx.uid()}this.unbind=dhx.BaseBind.unbind;this.unsync=dhx.BaseBind.unsync;dhx.ui.views[this._settings.id]=this}}if(window.dhtmlXChart){dhtmlXChart.prototype._initBindSource=function(){this.isVisible=function(){if(!this.data.order.length&&!this.data._filtered_state&&!this._settings.dataFeed){return false}return true};var a="_settings";this._settings=this._settings||this[a];if(!this._settings.id){this._settings.id=dhx.uid()}this.unbind=dhx.BaseBind.unbind;this.unsync=dhx.BaseBind.unsync;dhx.ui.views[this._settings.id]=this}}dhx.BaseBind.unsync=function(a){return dhx.BaseBind._unbind.call(this,a)};dhx.BaseBind.unbind=function(a){return dhx.BaseBind._unbind.call(this,a)};dhx.BaseBind.legacyBind=function(){return dhx.BaseBind.bind.apply(this,arguments)};dhx.BaseBind.legacySync=function(a,c){if(this._initBindSource){this._initBindSource()}if(a._initBindSource){a._initBindSource()}this.attachEvent("onAfterEditStop",function(e){this.save(e);return true});this.attachEvent("onDataRequest",function(h,g){for(var e=h;e<h+g;e++){if(!a.data.order[e]){a.loadNext(g,h);return false}}});this.save=function(j){if(!j){j=this.getCursor()}var h=this.item(j);var e=a.item(j);for(var g in h){if(g.indexOf("$")!==0){e[g]=h[g]}}a.refresh(j)};if(a&&a.name=="DataCollection"){return a.data.sync.apply(this.data,arguments)}else{return this.data.sync.apply(this.data,arguments)}};if(window.dhtmlXForm){dhtmlXForm.prototype.bind=function(a){dhx.BaseBind.bind.apply(this,arguments);a.getBindData(this._settings.id)};dhtmlXForm.prototype.unbind=function(a){dhx.BaseBind._unbind.call(this,a)};dhtmlXForm.prototype._initBindSource=function(){if(dhx.isUndefined(this._settings)){this._settings={id:dhx.uid(),dataFeed:this._server_feed};dhx.ui.views[this._settings.id]=this}};dhtmlXForm.prototype._check_data_feed=function(c){if(!this._settings.dataFeed||this._ignore_feed||!c){return true}var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,(c.id||c),c)}a=a+(a.indexOf("?")==-1?"?":"&")+"action=get&id="+encodeURIComponent(c.id||c);this.load(a);return false};dhtmlXForm.prototype.setValues=dhtmlXForm.prototype.setFormData;dhtmlXForm.prototype.getValues=function(){return this.getFormData(false,true)};dhtmlXForm.prototype.dataFeed=function(a){if(this._settings){this._settings.dataFeed=a}else{this._server_feed=a}};dhtmlXForm.prototype.refresh=dhtmlXForm.prototype.isVisible=function(a){return true}}if(window.scheduler){if(!window.Scheduler){window.Scheduler={}}Scheduler.$syncFactory=function(a){a.sync=function(e,h){if(this._initBindSource){this._initBindSource()}if(e._initBindSource){e._initBindSource()}var g="_process_loading";var c=function(o){a.clearAll();var j=e.data.order;var n=e.data.pull;var l=[];for(var m=0;m<j.length;m++){if(h&&h.copy){l[m]=dhx.clone(n[j[m]])}else{l[m]=n[j[m]]}}a[g](l);a.callEvent("onSyncApply",[])};this.save=function(m){if(!m){m=this.getCursor()}var l=this.item(m);var j=e.item(m);if(this.callEvent("onStoreSave",[m,l,j])){dhx.extend(e.item(m),l,true);e.update(m)}};this.item=function(j){return this.getEvent(j)};this._sync_events=[e.data.attachEvent("onStoreUpdated",function(m,j,l){c.call(this)}),e.data.attachEvent("onIdChange",function(l,j){combo.changeOptionId(l,j)})];this.attachEvent("onEventChanged",function(j){this.save(j)});this.attachEvent("onEventAdded",function(l,j){if(!e.data.pull[l]){e.add(j)}});this.attachEvent("onEventDeleted",function(j){if(e.data.pull[j]){e.remove(j)}});c()};a.unsync=function(c){dhx.BaseBind._unbind.call(this,c)};a._initBindSource=function(){if(!this._settings){this._settings={id:dhx.uid()}}}};Scheduler.$syncFactory(window.scheduler)}if(window.dhtmlXCombo){dhtmlXCombo.prototype.bind=function(){dhx.BaseBind.bind.apply(this,arguments)};dhtmlXCombo.unbind=function(a){dhx.BaseBind._unbind.call(this,a)};dhtmlXCombo.unsync=function(a){dhx.BaseBind._unbind.call(this,a)};dhtmlXCombo.prototype.dataFeed=function(a){if(this._settings){this._settings.dataFeed=a}else{this._server_feed=a}};dhtmlXCombo.prototype.sync=function(c,g){if(this._initBindSource){this._initBindSource()}if(c._initBindSource){c._initBindSource()}var e=this;var a=function(h){e.clearAll();e.addOption(this.serialize());e.callEvent("onSyncApply",[])};this._sync_events=[c.data.attachEvent("onStoreUpdated",function(l,h,j){a.call(this)}),c.data.attachEvent("onIdChange",function(j,h){e.changeOptionId(j,h)})];a.call(c)};dhtmlXCombo.prototype._initBindSource=function(){if(dhx.isUndefined(this._settings)){this._settings={id:dhx.uid(),dataFeed:this._server_feed};dhx.ui.views[this._settings.id]=this;this.data={silent:dhx.bind(function(a){a.call(this)},this)};dhx4._eventable(this.data);this.attachEvent("onChange",function(){this.callEvent("onSelectChange",[this.getSelectedValue()])});this.attachEvent("onXLE",function(){this.callEvent("onBindRequest",[])})}};dhtmlXCombo.prototype.item=function(a){return this.getOption(a)};dhtmlXCombo.prototype.getSelected=function(){return this.getSelectedValue()};dhtmlXCombo.prototype.isVisible=function(){if(!this.optionsArr.length&&!this._settings.dataFeed){return false}return true};dhtmlXCombo.prototype.refresh=function(){this.render(true)}}if(window.dhtmlXGridObject){dhtmlXGridObject.prototype.bind=function(a,e,c){dhx.BaseBind.bind.apply(this,arguments)};dhtmlXGridObject.prototype.unbind=function(a){dhx.BaseBind._unbind.call(this,a)};dhtmlXGridObject.prototype.unsync=function(a){dhx.BaseBind._unbind.call(this,a)};dhtmlXGridObject.prototype.dataFeed=function(a){if(this._settings){this._settings.dataFeed=a}else{this._server_feed=a}};dhtmlXGridObject.prototype.sync=function(a,n){if(this._initBindSource){this._initBindSource()}if(a._initBindSource){a._initBindSource()}var c=this;var m="_parsing";var e="_parser";var j="_locator";var g="_process_store_row";var l="_get_store_data";this.save=function(o){if(!o){o=this.getCursor()}dhx.extend(a.item(o),this.item(o),true);a.update(o)};var h=function(w){var s=c.getCursor?c.getCursor():null;var v=0;if(c._legacy_ignore_next){v=c._legacy_ignore_next;c._legacy_ignore_next=false}else{c.clearAll()}var r=this.dataCount();if(r){c[m]=true;for(var o=v;o<r;o++){var u=this.order[o];if(!u){continue}if(v&&c.rowsBuffer[o]){continue}c.rowsBuffer[o]={idd:u,data:this.pull[u]};c.rowsBuffer[o][e]=c[g];c.rowsBuffer[o][j]=c[l];c.rowsAr[u]=this.pull[u]}if(!c.rowsBuffer[r-1]){c.rowsBuffer[r-1]=dhtmlx.undefined;c.xmlFileUrl=c.xmlFileUrl||this.url}if(c.pagingOn){c.changePage()}else{if(c._srnd&&c._fillers){c._update_srnd_view()}else{c.render_dataset();c.callEvent("onXLE",[])}}c[m]=false}if(s&&c.setCursor){c.setCursor(c.rowsAr[s]?s:null)}c.callEvent("onSyncApply",[])};this._sync_events=[a.data.attachEvent("onStoreUpdated",function(s,o,r){if(r=="delete"){c.deleteRow(s);c.data.callEvent("onStoreUpdated",[s,o,r])}else{if(r=="update"){c.callEvent("onSyncUpdate",[o,r]);c.update(s,o);c.data.callEvent("onStoreUpdated",[s,o,r])}else{if(r=="add"){c.callEvent("onSyncUpdate",[o,r]);c.add(s,o,this.indexById(s));c.data.callEvent("onStoreUpdated",[s,o,r])}else{h.call(this)}}}}),a.data.attachEvent("onStoreLoad",function(r,o){c.xmlFileUrl=a.data.url;c._legacy_ignore_next=r.getInfo(o)._from}),a.data.attachEvent("onIdChange",function(r,o){c.changeRowId(r,o)})];c.attachEvent("onDynXLS",function(s,r){for(var o=s;o<s+r;o++){if(!a.data.order[o]){a.loadNext(r,s);return false}}c._legacy_ignore_next=s;h.call(a.data)});h.call(a.data);c.attachEvent("onEditCell",function(o,v,s,r,u){if(o==2&&r!=u){this.save(v)}return true});c.attachEvent("onClearAll",function(){var o="_f_rowsBuffer";this[o]=null});if(n&&n.sort){c.attachEvent("onBeforeSorting",function(s,r,o){if(r=="connector"){return false}var u=this.getColumnId(s);a.sort("#"+u+"#",(o=="asc"?"asc":"desc"),(r=="int"?r:"string"));c.setSortImgState(true,s,o);return false})}if(n&&n.filter){c.attachEvent("onFilterStart",function(s,o){var r="_con_f_used";if(c[r]&&c[r].length){return false}a.data.silent(function(){a.filter();for(var u=0;u<s.length;u++){if(o[u]==""){continue}var v=c.getColumnId(s[u]);a.filter("#"+v+"#",o[u],u!=0)}});a.refresh();return false});c.collectValues=function(o){var r=this.getColumnId(o);return(function(v){var s=[];var u={};this.data.each(function(x){var w=x[v];if(!u[w]){u[w]=true;s.push(w)}});s.sort();return s}).call(a,r)}}if(n&&n.select){c.attachEvent("onRowSelect",function(o){a.setCursor(o)})}c.clearAndLoad=function(o){a.clearAll();a.load(o)}};dhtmlXGridObject.prototype._initBindSource=function(){if(dhx.isUndefined(this._settings)){this._settings={id:dhx.uid(),dataFeed:this._server_feed};dhx.ui.views[this._settings.id]=this;this.data={silent:dhx.bind(function(e){e.call(this)},this)};dhx4._eventable(this.data);var a="_cCount";for(var c=0;c<this[a];c++){if(!this.columnIds[c]){this.columnIds[c]="cell"+c}}this.attachEvent("onSelectStateChanged",function(e){this.callEvent("onSelectChange",[e])});this.attachEvent("onSelectionCleared",function(){this.callEvent("onSelectChange",[null])});this.attachEvent("onEditCell",function(e,g){if(e===2&&this.getCursor){if(g&&g==this.getCursor()){this._update_binds()}}return true});this.attachEvent("onXLE",function(){this.callEvent("onBindRequest",[])})}};dhtmlXGridObject.prototype.item=function(j){if(j===null){return null}var h=this.getRowById(j);if(!h){return null}var a="_attrs";var g=dhx.copy(h[a]);g.id=j;var e=this.getColumnsNum();for(var c=0;c<e;c++){g[this.columnIds[c]]=this.cells(j,c).getValue()}return g};dhtmlXGridObject.prototype.update=function(j,h){for(var g=0;g<this.columnIds.length;g++){var e=this.columnIds[g];if(!dhx.isUndefined(h[e])){this.cells(j,g).setValue(h[e])}}var c="_attrs";var a=this.getRowById(j)[c];for(var e in h){a[e]=h[e]}this.callEvent("onBindUpdate",[j])};dhtmlXGridObject.prototype.add=function(l,j,e){var a=[];for(var h=0;h<this.columnIds.length;h++){var g=this.columnIds[h];a[h]=dhx.isUndefined(j[g])?"":j[g]}this.addRow(l,a,e);var c="_attrs";this.getRowById(l)[c]=dhx.copy(j)};dhtmlXGridObject.prototype.getSelected=function(){return this.getSelectedRowId()};dhtmlXGridObject.prototype.isVisible=function(){var a="_f_rowsBuffer";if(!this.rowsBuffer.length&&!this[a]&&!this._settings.dataFeed){return false}return true};dhtmlXGridObject.prototype.refresh=function(){this.render_dataset()};dhtmlXGridObject.prototype.filter=function(j,h){if(this._settings.dataFeed){var g={};if(!j&&!h){return}if(typeof j=="function"){if(!h){return}j(h,g)}else{if(dhx.isUndefined(j)){g=h}else{g[j]=h}}this.clearAll();var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,h,g)}var e=[];for(var c in g){e.push("dhx_filter["+c+"]="+encodeURIComponent(g[c]))}this.load(a+(a.indexOf("?")<0?"?":"&")+e.join("&"));return false}if(h===null){return this.filterBy(0,function(){return false})}this.filterBy(0,function(l,m){return j.call(this,m,h)})}}if(window.dhtmlXTreeObject){dhtmlXTreeObject.prototype.bind=function(){dhx.BaseBind.bind.apply(this,arguments)};dhtmlXTreeObject.prototype.unbind=function(a){dhx.BaseBind._unbind.call(this,a)};dhtmlXTreeObject.prototype.dataFeed=function(a){if(this._settings){this._settings.dataFeed=a}else{this._server_feed=a}};dhtmlXTreeObject.prototype._initBindSource=function(){if(dhx.isUndefined(this._settings)){this._settings={id:dhx.uid(),dataFeed:this._server_feed};dhx.ui.views[this._settings.id]=this;this.data={silent:dhx.bind(function(a){a.call(this)},this)};dhx4._eventable(this.data);this.attachEvent("onSelect",function(a){this.callEvent("onSelectChange",[a])});this.attachEvent("onEdit",function(a,c){if(a===2){if(c&&c==this.getCursor()){this._update_binds()}}return true})}};dhtmlXTreeObject.prototype.item=function(a){if(a===null){return null}return{id:a,text:this.getItemText(a)}};dhtmlXTreeObject.prototype.getSelected=function(){return this.getSelectedItemId()};dhtmlXTreeObject.prototype.isVisible=function(){return true};dhtmlXTreeObject.prototype.refresh=function(){};dhtmlXTreeObject.prototype.filter=function(j,h){if(this._settings.dataFeed){var g={};if(!j&&!h){return}if(typeof j=="function"){if(!h){return}j(h,g)}else{if(dhx.isUndefined(j)){g=h}else{g[j]=h}}this.deleteChildItems(0);var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,[(data.id||data),data])}var e=[];for(var c in g){e.push("dhx_filter["+c+"]="+encodeURIComponent(g[c]))}this.loadXML(a+(a.indexOf("?")<0?"?":"&")+e.join("&"));return false}};dhtmlXTreeObject.prototype.update=function(c,a){if(!dhx.isUndefined(a.text)){this.setItemText(c,a.text)}}}function dataProcessor(a){this.serverProcessor=a;this.action_param="!nativeeditor_status";this.object=null;this.updatedRows=[];this.autoUpdate=true;this.updateMode="cell";this._tMode="GET";this._headers=null;this._payload=null;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;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"};this.enableUTFencoding(true);dhx4._eventable(this);if(this.connector_init){this.setTransactionMode("POST",true);this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true"}return this}dataProcessor.prototype={setTransactionMode:function(c,a){if(typeof c=="object"){this._tMode=c.mode||this._tMode;this._headers=this._headers||c.headers;this._payload=this._payload||c.payload}else{this._tMode=c;this._tSend=a}if(this._tMode=="REST"){this._tSend=false;this._endnm=true}},escape:function(a){if(this._utf){return encodeURIComponent(a)}else{return escape(a)}},enableUTFencoding:function(a){this._utf=dhx4.s2b(a)},setDataColumns:function(a){this._columns=(typeof a=="string")?a.split(","):a},getSyncState:function(){return !this.updatedRows.length},enableDataNames:function(a){this._endnm=dhx4.s2b(a)},enablePartialDataSend:function(a){this._changed=dhx4.s2b(a)},setUpdateMode:function(c,a){this.autoUpdate=(c=="cell");this.updateMode=c;this.dnd=a},ignore:function(c,a){this._silent_mode=true;c.call(a||window);this._silent_mode=false},setUpdated:function(g,e,h){if(this._silent_mode){return}var c=this.findRow(g);h=h||"updated";var a=this.obj.getUserData(g,this.action_param);if(a&&h=="updated"){h=a}if(e){this.set_invalid(g,false);this.updatedRows[c]=g;this.obj.setUserData(g,this.action_param,h);if(this._in_progress[g]){this._in_progress[g]="wait"}}else{if(!this.is_invalid(g)){this.updatedRows.splice(c,1);this.obj.setUserData(g,this.action_param,"")}}if(!e){this._clearUpdateFlag(g)}this.markRow(g,e,h);if(e&&this.autoUpdate){this.sendData(g)}},_clearUpdateFlag:function(a){},markRow:function(j,e,h){var g="";var c=this.is_invalid(j);if(c){g=this.styles[c];e=true}if(this.callEvent("onRowMark",[j,e,h,c])){g=this.styles[e?h:"clear"]+g;this.obj[this._methods[0]](j,g);if(c&&c.details){g+=this.styles[c+"_cell"];for(var a=0;a<c.details.length;a++){if(c.details[a]){this.obj[this._methods[1]](j,a,g)}}}}},getState:function(a){return this.obj.getUserData(a,this.action_param)},is_invalid:function(a){return this._invalid[a]},set_invalid:function(e,c,a){if(a){c={value:c,details:a,toString:function(){return this.value.toString()}}}this._invalid[e]=c},checkBeforeUpdate:function(a){return true},sendData:function(a){if(this._waitMode&&(this.obj.mytype=="tree"||this.obj._h2)){return}if(this.obj.editStop){this.obj.editStop()}if(typeof a=="undefined"||this._tSend){return this.sendAllData()}if(this._in_progress[a]){return false}this.messages=[];if(this.getState(a)!=="deleted"){if(!this.checkBeforeUpdate(a)&&this.callEvent("onValidationError",[a,this.messages])){return false}}this._beforeSendData(this._getRowData(a),a)},_beforeSendData:function(a,c){if(!this.callEvent("onBeforeUpdate",[c,this.getState(c),a])){return false}this._sendData(a,c)},serialize:function(g,h){if(typeof g=="string"){return g}if(typeof h!="undefined"){return this.serialize_one(g,"")}else{var a=[];var e=[];for(var c in g){if(g.hasOwnProperty(c)){a.push(this.serialize_one(g[c],c+this.post_delim));e.push(c)}}a.push("ids="+this.escape(e.join(",")));if(dhtmlx.security_key){a.push("dhx_security="+dhtmlx.security_key)}return a.join("&")}},serialize_one:function(g,c){if(typeof g=="string"){return g}var a=[];for(var e in g){if(g.hasOwnProperty(e)){if((e=="id"||e==this.action_param)&&this._tMode=="REST"){continue}a.push(this.escape((c||"")+e)+"="+this.escape(g[e]))}}return a.join("&")},_sendData:function(h,j){if(!h){return}if(!this.callEvent("onBeforeDataSending",j?[j,this.getState(j),h]:[null,null,h])){return false}if(j){this._in_progress[j]=(new Date()).valueOf()}var o=this;var n=function(s){var v=[];if(j){v.push(j)}else{if(h){for(var u in h){v.push(u)}}}return o.afterUpdate(o,s,v)};var c=this.serverProcessor+(this._user?(dhtmlx.url(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&")):"");if(this._tMode=="GET"){dhx4.ajax.get(c+((c.indexOf("?")!=-1)?"&":"?")+this.serialize(h,j),n)}else{if(this._tMode=="POST"){dhx4.ajax.post(c,this.serialize(h,j),n)}else{if(this._tMode=="REST"){var e=this.getState(j);var g=c.replace(/(\&|\?)editing\=true/,"");var l=g.split("?");if(l[1]){l[1]="?"+l[1]}var m="";var a="post";if(e=="inserted"){m=this.serialize(h,j)}else{if(e=="deleted"){a="DELETE";g=l[0]+j+(l[1]||"")}else{a="PUT";m=this.serialize(h,j);g=l[0]+j+(l[1]||"")}}if(this._payload){for(var r in this._payload){g=g+(g.indexOf("?")===-1?"?":"&")+this.escape(r)+"="+this.escape(this._payload[r])}}dhx4.ajax.query({url:g,method:a,headers:this._headers,data:m,callback:n})}}}this._waitMode++},sendAllData:function(){if(!this.updatedRows.length){return}this.messages=[];var c=true;for(var a=0;a<this.updatedRows.length;a++){if(this.getState(this.updatedRows[a])!=="deleted"){c&=this.checkBeforeUpdate(this.updatedRows[a])}}if(!c&&!this.callEvent("onValidationError",["",this.messages])){return false}if(this._tSend){this._sendData(this._getAllData())}else{for(var a=0;a<this.updatedRows.length;a++){if(!this._in_progress[this.updatedRows[a]]){if(this.is_invalid(this.updatedRows[a])){continue}this._beforeSendData(this._getRowData(this.updatedRows[a]),this.updatedRows[a]);if(this._waitMode&&(this.obj.mytype=="tree"||this.obj._h2)){return}}}}},_getAllData:function(g){var c={};var a=false;for(var e=0;e<this.updatedRows.length;e++){var h=this.updatedRows[e];if(this._in_progress[h]||this.is_invalid(h)){continue}if(!this.callEvent("onBeforeUpdate",[h,this.getState(h),this._getRowData(h)])){continue}c[h]=this._getRowData(h,h+this.post_delim);a=true;this._in_progress[h]=(new Date()).valueOf()}return a?c:null},setVerificator:function(c,a){this.mandatoryFields[c]=a||(function(e){return(e!=="")})},clearVerificator:function(a){this.mandatoryFields[a]=false},findRow:function(c){var a=0;for(a=0;a<this.updatedRows.length;a++){if(c==this.updatedRows[a]){break}}return a},defineAction:function(a,c){if(!this._uActions){this._uActions=[]}this._uActions[a]=c},afterUpdateCallback:function(c,l,j,h){var a=c;var g=(j!="error"&&j!="invalid");if(!g){this.set_invalid(c,j)}if((this._uActions)&&(this._uActions[j])&&(!this._uActions[j](h))){return(delete this._in_progress[a])}if(this._in_progress[a]!="wait"){this.setUpdated(c,false)}var e=c;switch(j){case"inserted":case"insert":if(l!=c){this.obj[this._methods[2]](c,l);c=l}break;case"delete":case"deleted":this.obj.setUserData(c,this.action_param,"true_deleted");this.obj[this._methods[3]](c);delete this._in_progress[a];return this.callEvent("onAfterUpdate",[c,j,l,h]);break}if(this._in_progress[a]!="wait"){if(g){this.obj.setUserData(c,this.action_param,"")}delete this._in_progress[a]}else{delete this._in_progress[a];this.setUpdated(l,true,this.obj.getUserData(c,this.action_param))}this.callEvent("onAfterUpdate",[e,j,l,h])},afterUpdate:function(n,m,a){if(window.JSON){try{var u=JSON.parse(m.xmlDoc.responseText);var h=u.action||this.getState(a)||"updated";var c=u.sid||a[0];var g=u.tid||a[0];n.afterUpdateCallback(c,g,h,u);n.finalizeUpdate();return}catch(o){}}var s=dhx4.ajax.xmltop("data",m.xmlDoc);if(!s||s.tagName=="DIV"){return this.cleanUpdate(a)}var r=dhx4.ajax.xpath("//data/action",s);if(!r.length){return this.cleanUpdate(a)}for(var l=0;l<r.length;l++){var j=r[l];var h=j.getAttribute("type");var c=j.getAttribute("sid");var g=j.getAttribute("tid");n.afterUpdateCallback(c,g,h,j)}n.finalizeUpdate()},cleanUpdate:function(c){if(c){for(var a=0;a<c.length;a++){delete this._in_progress[c[a]]}}},finalizeUpdate:function(){if(this._waitMode){this._waitMode--}if((this.obj.mytype=="tree"||this.obj._h2)&&this.updatedRows.length){this.sendData()}this.callEvent("onAfterUpdateFinish",[]);if(!this.updatedRows.length){this.callEvent("onFullSync",[])}},init:function(a){this.obj=a;if(a._dp_init){a._dp_init(this)}if(this.connector_init){a._dataprocessor=this}},setOnAfterUpdate:function(a){this.attachEvent("onAfterUpdate",a)},enableDebug:function(a){},setOnBeforeUpdateHandler:function(a){this.attachEvent("onBeforeDataSending",a)},setAutoUpdate:function(e,c){e=e||2000;this._user=c||(new Date()).valueOf();this._need_update=false;this._update_busy=false;this.attachEvent("onAfterUpdate",function(g,j,l,h){this.afterAutoUpdate(g,j,l,h)});this.attachEvent("onFullSync",function(){this.fullSync()});var a=this;window.setInterval(function(){a.loadUpdate()},e)},afterAutoUpdate:function(a,e,g,c){if(e=="collision"){this._need_update=true;return false}else{return true}},fullSync:function(){if(this._need_update==true){this._need_update=false;this.loadUpdate()}return true},getUpdates:function(a,c){if(this._update_busy){return false}else{this._update_busy=true}dhx4.ajax.get(a,c)},_v:function(a){if(a.firstChild){return a.firstChild.nodeValue}return""},_a:function(a){var e=[];for(var c=0;c<a.length;c++){e[c]=this._v(a[c])}return e},loadUpdate:function(){var c=this;var a=this.obj.getUserData(0,"version");var e=this.serverProcessor+dhtmlx.url(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+a].join("&");e=e.replace("editing=true&","");this.getUpdates(e,function(n){var o=dhx4.ajax.xmltop("updates",n.xmlDoc);var j=dhx4.ajax.xpath("//userdata",o);c.obj.setUserData(0,"version",c._v(j[0]));var g=dhx4.ajax.xpath("//update",o);if(g.length){c._silent_mode=true;for(var l=0;l<g.length;l++){var h=g[l].getAttribute("status");var s=g[l].getAttribute("id");var m=g[l].getAttribute("parent");switch(h){case"inserted":c.callEvent("insertCallback",[g[l],s,m]);break;case"updated":c.callEvent("updateCallback",[g[l],s,m]);break;case"deleted":c.callEvent("deleteCallback",[g[l],s,m]);break}}c._silent_mode=false}c._update_busy=false;c=null})}};if(window.dataProcessor&&!dataProcessor.prototype.init_original){dataProcessor.prototype.connector_init=true}; \ No newline at end of file
diff --git a/pywrap/static/codebase/dhtmlx_deprecated.js b/pywrap/static/codebase/dhtmlx_deprecated.js
deleted file mode 100644
index 5731d3f..0000000
--- a/pywrap/static/codebase/dhtmlx_deprecated.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
-Product Name: dhtmlxSuite
-Version: 4.6
-Edition: Standard
-License: content of this file is covered by GPL. Usage outside GPL terms is prohibited. To obtain Commercial or Enterprise license contact sales@dhtmlx.com
-Copyright UAB Dinamenta http://www.dhtmlx.com
-*/
-
-window.dhtmlxAjax={get:function(a,c,b){if(b){return dhx4.ajax.getSync(a)}else{dhx4.ajax.get(a,c)}},post:function(a,b,d,c){if(c){return dhx4.ajax.postSync(a,b)}else{dhx4.ajax.post(a,b,d)}},getSync:function(a){return dhx4.ajax.getSync(a)},postSync:function(a,b){return dhx4.ajax.postSync(a,b)}};dhtmlXCalendarObject.prototype.draw=function(){this.show()};dhtmlXCalendarObject.prototype.close=function(){this.hide()};dhtmlXCalendarObject.prototype.setYearsRange=function(){};dhtmlXCombo.prototype.loadXML=function(a,b){this.load(a,b)};dhtmlXCombo.prototype.loadXMLString=function(a){this.load(a)};dhtmlXCombo.prototype.enableOptionAutoHeight=function(){};dhtmlXCombo.prototype.enableOptionAutoPositioning=function(){};dhtmlXCombo.prototype.enableOptionAutoWidth=function(){};dhtmlXCombo.prototype.destructor=function(){this.unload()};dhtmlXCombo.prototype.render=function(){};dhtmlXCombo.prototype.setOptionHeight=function(){};dhtmlXCombo.prototype.attachChildCombo=function(){};dhtmlXCombo.prototype.setAutoSubCombo=function(){};window.dhtmlXColorPickerInput=function(){return dhtmlXColorPicker.apply(window,arguments)};dhtmlXColorPicker.prototype.init=function(){};dhtmlXColorPicker.prototype.setOnSelectHandler=function(a){if(typeof a=="function"){this.attachEvent("onSelect",a)}};dhtmlXColorPicker.prototype.setOnCancelHandler=function(a){if(typeof a=="function"){this.attachEvent("onCancel",a)}};dhtmlXColorPicker.prototype._mergeLangModules=function(){if(typeof dhtmlxColorPickerLangModules!="object"){return}for(var a in dhtmlxColorPickerLangModules){this.i18n[a]=dhtmlxColorPickerLangModules[a]}};window.dhtmlxColorPickerLangModules=dhtmlXColorPicker.prototype.i18n;dhtmlXColorPicker.prototype.close=function(){this.hide()};dhtmlXColorPicker.prototype.setImagePath=function(a){};window.dhtmlxSlider=window.dhtmlXSlider;dhtmlXSlider.prototype.setOnChangeHandler=function(a){if(typeof a=="function"){this.attachEvent("onChange",a)}};dhtmlXSlider.prototype.init=function(){};dhtmlXSlider.prototype.setImagePath=function(){};dhtmlXMenuObject.prototype.loadXML=function(a,b){this.loadStruct(a,b)};dhtmlXMenuObject.prototype.loadXMLString=function(b,a){this.loadStruct(b,a)};dhtmlXMenuObject.prototype.setIconPath=function(a){this.setIconsPath(a)};dhtmlXMenuObject.prototype.setImagePath=function(){};dhtmlXToolbarObject.prototype.loadXML=function(a,b){this.loadStruct(a,b)};dhtmlXToolbarObject.prototype.loadXMLString=function(b,a){this.loadStruct(b,a)};dhtmlXToolbarObject.prototype.setIconPath=function(a){this.setIconsPath(a)};dhtmlXTreeObject.prototype.addPath=function(b,e,c,h){this.activatePaths();c=c||{};var d=[];var g=null;var f=this._idpull[e];var a=this._idpull[b];while(a!=g){d.push({open:this._getOpenState(f),from:f.id,size:(g?this._getIndex(g):0),to:(g?g.id:null),style:"border-left:"+(c.width||1)+"px "+(c.mode||"solid")+" "+(c.color||"red")+"; border-bottom:"+(c.width||1)+"px "+(c.mode||"solid")+" "+(c.color||"red")+";"});g=f;f=f.parentObject}while(!h||this._pathspull[h]){h=(h||0)+1}this._pathspull[h]={path:d,id:h};this._paths.push(this._pathspull[h]);this._renderPath(this._pathspull[h])};dhtmlXTreeObject.prototype.activatePaths=function(a){var b=this;this.attachEvent("onOpenEnd",function(){for(var c=0;c<b._paths.length;c++){b._clearPath(b._paths[c]);b._renderPath(b._paths[c])}});this.attachEvent("onXLE",function(e){var d=dhx4.ajax.xpath("//pathend",e);var h=dhx4.ajax.xpath("//pathstart",e);var g={};for(var f=0;f<h.length;f++){g[h[f].getAttribute("id")]=h[f]}for(var f=0;f<h.length;f++){var c=d[f].parentNode;var j=g[d[f].getAttribute("id")];this.addPath(j.parentNode.getAttribute("id"),c.getAttribute("id"),{color:j.getAttribute("color"),mode:j.getAttribute("mode"),width:j.getAttribute("width")},j.getAttribute("id"))}});if(a){this._halfHeight=a}else{if(this._idpull[0].childsCount){this._halfHeight=Math.floor(this._idpull[0].childNodes[0].span.parentNode.offsetHeight/2)}}if(!this._halfHeight){this._halfHeight=9}this.activatePaths=function(){}};dhtmlXTreeObject.prototype._clearPath=function(c){for(var b=c.path.length-1;b>0;b--){var a=c.path[b];if(a._html){a._html.parentNode.removeChild(a._html)}a._html=null}};dhtmlXTreeObject.prototype._renderPath=function(g){var k=this._idpull[g.path[g.path.length-1].from].span.parentNode.parentNode;var f=(_isIE?9:8)+this._halfHeight;var e=(_isIE?27:27);while(k.offsetParent!=this.allTree){f+=k.offsetTop;e+=k.offsetLeft;k=k.offsetParent}for(var b=g.path.length-1;b>0;b--){var a=g.path[b];var h=document.createElement("div");if(!this._idpull[a.to].tr.offsetHeight){return}var j=this._idpull[a.to].tr.offsetTop;h.style.cssText="position:absolute; z-index:1; width:"+(_isIE?10:8)+"px; height:"+(j-9)+"px; left:"+e+"px; top:"+f+"px;"+a.style;f+=j;e+=18;this.allTree.appendChild(h);a._html=h}};dhtmlXTreeObject.prototype.deletePath=function(c){var b=this._pathspull[c];if(b){this._clearPath(b);delete this._pathspull[c];for(var a=0;a<this._paths.length;a++){if(this._paths[a]==b){return this._paths.splice(a,1)}}}};dhtmlXTreeObject.prototype.deleteAllPaths=function(b){for(var a=this._paths.length-1;a>=0;a--){this.deletePath(this._paths[a].id)}};dhtmlXTreeObject.prototype._paths=[];dhtmlXTreeObject.prototype._pathspull={};dhtmlXTreeObject.prototype.enableSmartRendering=function(){this.enableSmartXMLParsing(true);this._srnd=true;this.itemHeight=18;var a=this;this.allTree.onscroll=function(){if(a._srndT){return}a._srndT=window.setTimeout(function(){a._srndT=null;a._renderState()},300)};this.attachEvent("onXLE",function(){a._renderState()});this._singleTimeSRND()};dhtmlXTreeObject.prototype._renderState=function(){if(!this._idpull[this.rootId]._sready){this.prepareSR(this.rootId,true)}var b=this.allTree.scrollTop;var c=Math.floor(b/this.itemHeight);var a=Math.ceil(this.allTree.offsetHeight/this.itemHeight);this._group_render=true;this._getItemByPos(b,this.itemHeight,a,null,false,this._renderItemSRND);this._group_render=false};dhtmlXTreeObject.prototype._renderItemSRND=function(k,j){if(!k.span){k.span=-1;var f=k.parentObject.htmlNode.childNodes[0].childNodes;var e=j*this.itemHeight;var l=null;for(var c=1;c<f.length;c++){l=f[c];var g=l.nodem?this.itemHeight:(l.offsetHeight||parseInt(l.childNodes[1].firstChild.style.height));e-=g;if(e<0){if(e==-1){e++;continue}var d=l.childNodes[1].firstChild;d.style.height=(parseInt(d.style.height)-(g-Math.abs(e)+this.itemHeight))+"px";if(Math.abs(e)!=g){var n=this._drawNewHolder(e+g,true);l.parentNode.insertBefore(n,l)}l.tr={nextSibling:l};break}}if(d&&d.style.height!="0px"&&!l.offsetHeight){var m=this._hAdI;this._hAdI=true}this._parseItem(k._sxml,k.parentObject,null,l);if(d&&d.style.height!="0px"&&!l.offsetHeight){this._hAdI=m}if(k.unParsed){this._correctPlus(k)}if(d&&d.style.height=="0px"){l.parentNode.removeChild(l)}}};dhtmlXTreeObject.prototype._buildSRND=function(b,a){if(b.parentObject){this._globalIdStorageFind(b.parentObject.id)}if(!this._idpull[this.rootId]._sready){this.prepareSR(this.rootId,true)}this._renderItemSRND(b,this._getIndex(b));if((b.unParsed)&&(!a)){this.reParse(b,0)}if(!b.prepareSR){this.prepareSR(b.id)}};dhtmlXTreeObject.prototype._getIndex=function(c){for(var b=0;b<c.parentObject.childsCount;b++){if(c.parentObject.childNodes[b]==c){return b}}};dhtmlXTreeObject.prototype.prepareSR=function(a,c){a=this._idpull[a];if(a._sready){return}var b=this._drawNewHolder(this.itemHeight*a.childsCount,c);a.htmlNode.childNodes[0].appendChild(b);a._sready=true};dhtmlXTreeObject.prototype._drawNewHolder=function(e,g){var d=document.createElement("TR");var a=document.createElement("TD");var c=document.createElement("TD");var f=document.createElement("DIV");f.innerHTML="&nbsp;";a.appendChild(f);d.appendChild(c);d.appendChild(a);if(!g){d.style.display="none"}f.style.height=e+"px";return d};dhtmlXTreeObject.prototype._getNextNodeSR=function(a,b){if((!b)&&(a.childsCount)){return a.childNodes[0]}if(a==this.htmlNode){return -1}if((a.tr)&&(a.tr.nextSibling)&&(a.tr.nextSibling.nodem)){return a.tr.nextSibling.nodem}return this._getNextNode(a.parentObject,true)};dhtmlXTreeObject.prototype._getItemByPos=function(k,e,b,d,a,g){if(!d){this._pos_c=k;d=this._idpull[this.rootId]}for(var c=0;c<d.childsCount;c++){this._pos_c-=e;if(this._pos_c<=0){a=true}if(a){g.apply(this,[d.childNodes[c],c]);b--}if(b<0){return b}if(d.childNodes[c]._open){b=this._getItemByPos(null,e,b,d.childNodes[c],a,g);if(b<0){return b}}}return b};dhtmlXTreeObject.prototype._addItemSRND=function(b,f,e){var c=this._idpull[b];var a=c.childsCount;var d=c.childNodes;d[a]=new dhtmlXTreeItemObject(f,"",c,this,null,1);itemId=d[a].id;d[a]._sxml=e.clone();c.childsCount++};dhtmlXTreeObject.prototype._singleTimeSRND=function(){this._redrawFrom=function(){};var a=dhtmlXTreeItemObject;this._singleTimeSRND=function(){};window.dhtmlXTreeItemObject=function(g,c,d,b,e,f){if(!b._srnd){return a.call(this,g,c,d,b,e,f)}this.htmlNode="";this.acolor="";this.scolor="";this.tr=0;this.childsCount=0;this.tempDOMM=0;this.tempDOMU=0;this.dragSpan=0;this.dragMove=0;this.span=0;this.closeble=1;this.childNodes=new Array();this.userData=new cObject();this.checkstate=0;this.treeNod=b;this.label=c;this.parentObject=d;this.actionHandler=e;this.images=new Array(b.imageArray[0],b.imageArray[1],b.imageArray[2]);this.id=b._globalIdStorageAdd(g,this);if(g==b.rootId){if(this.treeNod.checkBoxOff){this.htmlNode=this.treeNod._createItem(1,this,f)}else{this.htmlNode=this.treeNod._createItem(0,this,f)}this.htmlNode.objBelong=this}return this};this.setCheckSR=this.setCheck;this.setCheck=function(c,b){this._globalIdStorageFind(c);return this.setCheckSR(c,b)};this._get_srnd_p=function(e){var d=[];while(e!=this.rootId){var b=this.getParentId(e);for(var c=0;c<this._idpull[b].childsCount;c++){if(this._idpull[b].childNodes[c].id==e){d.push([b,c]);break}}e=b}d.reverse();return d};this._get_srnd_p_last=function(f,d,b){d=d||[];var e=0;while(true){var c=this._idpull[f];if(c._sxml&&this.findStrInXML(c._sxml.d,"text",b)){this._globalIdStorageFind(c.id)}var e=c.childsCount;if(!e){break}d.push([f,e-1]);f=c.childNodes[e-1].id}return d};this._get_prev_srnd=function(e,b){var c;if(!e.length){e.push.apply(e,this._get_srnd_p_last(this.rootId,null,b));c=e[e.length-1];return this._idpull[c[0]].childNodes[c[1]]}c=e[e.length-1];if(c[1]){c[1]--;var d=this._idpull[c[0]].childNodes[c[1]];this._get_srnd_p_last(d.id,e,b);var c=e[e.length-1];return this._idpull[c[0]].childNodes[c[1]]}else{e.pop();if(!e.length){return this._get_prev_srnd(e,b)}var c=e[e.length-1];return this._idpull[c[0]].childNodes[c[1]]}};this._get_next_srnd=function(e,c){if(!e.length){e.push([this.rootId,0]);return this._idpull[this.rootId].childNodes[0]}var b=e[e.length-1];var d=this._idpull[b[0]].childNodes[b[1]];if(d.childsCount&&!c){e.push([d.id,0]);return d.childNodes[0]}b[1]++;var d=this._idpull[b[0]].childNodes[b[1]];if(d){return d}e.pop();if(!e.length){return this.htmlNode}return this._get_next_srnd(e,true)};this._findNodeByLabel=function(b,f,d){var b=b.replace(new RegExp("^( )+"),"").replace(new RegExp("( )+$"),"");b=new RegExp(b.replace(/([\*\+\\\[\]\(\)]{1})/gi,"\\$1").replace(/ /gi,".*"),"gi");if(!d){d=this._selected[0];if(!d){d=this.htmlNode}}var c=d;var e=this._get_srnd_p(c.id);while(d=(f?this._get_prev_srnd(e,b):this._get_next_srnd(e))){if(d.label){if(d.label.search(b)!=-1){return d}}else{if(d._sxml){if(d._sxml.get("text").search(b)!=-1){return d}if(this.findStrInXML(d._sxml.d,"text",b)){this._globalIdStorageFind(d.id)}}}if((d.unParsed)&&(this.findStrInXML(d.unParsed.d,"text",b))){this.reParse(d)}if(c.id==d.id){break}if(f&&e.length==1&&e[0][1]==0){break}}return null};this.deleteChildItems=function(b){if(this.rootId==b){this._selected=new Array();this._idpull={};this._p=this._pos_c=this._pullSize=null;this.allTree.removeChild(this.htmlNode.htmlNode);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.insertBefore(this.htmlNode.htmlNode,this.selectionBar);if(_isFF){this.allTree.childNodes[0].width="100%";this.allTree.childNodes[0].style.overflow="hidden"}}};this._HideShow=function(c,g){if((this.XMLsource)&&(!c.XMLload)){if(g==1){return}c.XMLload=1;this._loadDynXML(c.id);return}if(!c.span){this._buildSRND(c)}if(c.unParsed){this.reParse(c);this.prepareSR(c.id)}if(c.childsCount==0){return}var f=c.htmlNode.childNodes[0].childNodes;var b=f.length;if(b>1){if(((f[1].style.display!="none")||(g==1))&&(g!=2)){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0";var e="none";c._open=false}else{var e="";c._open=true}for(var d=1;d<b;d++){f[d].style.display=e}this._renderState()}this._correctPlus(c)}};dhtmlXGridObject.prototype.hidePivot=function(a){if(this._pgridCont){if(this._pgrid){this._pgrid.destructor()}var b=this._pgridCont.parentNode;b.innerHTML="";if(b.parentNode==this.entBox){this.entBox.removeChild(b)}this._pgrid=this._pgridSelect=this._pUNI=this._pgridCont=null}};dhtmlXGridObject.prototype.makePivot=function(j,a){a=a||{};this.hidePivot();if(!j){var j=document.createElement("DIV");j.style.cssText="position:absolute; top:0px; left:0px;background-color:white;";j.style.height=this.entBox.offsetHeight+"px";j.style.width=this.entBox.offsetWidth+"px";if(this.entBox.style.position!="absolute"){this.entBox.style.position="relative"}this.entBox.appendChild(j)}if(typeof(j)!="object"){j=document.getElementById(j)}if(a.column_list){this._column_list=a.column_list}else{this._column_list=[];for(var g=0;g<this.hdr.rows[1].cells.length;g++){this._column_list.push(this.hdr.rows[1].cells[g][_isIE?"innerText":"textContent"])}}var h=this;j.innerHTML="<table cellspacing='0' cellpadding='0'><tr><td style='width:160px' align='center'></td><td>&nbsp;&nbsp;&nbsp;</td><td></td></tr></table><div></div>";var f=this.makePivotSelect(this._column_list);f.style.width="80px";f.onchange=function(){if(this.value!=-1){h._pivotS.value=this.value}else{h._pivotS.value=""}h._reFillPivotLists();h._renderPivot2()};var e=this.makePivotSelect(this._column_list);e.onchange=function(){if(this.value!=-1){h._pivotS.x=this.value}else{h._pivotS.x=""}h._reFillPivotLists();h._renderPivot()};var d=this.makePivotSelect(this._column_list);d.onchange=function(){if(this.value!=-1){h._pivotS.y=this.value}else{h._pivotS.y=""}h._reFillPivotLists();h._renderPivot()};var c=this.makePivotSelect(["Sum","Min","Max","Average","Count"],-1);c.style.width="70px";c.onchange=function(){if(this.value!=-1){h._pivotS.action=this.value}else{h._pivotS.action=null}h._renderPivot2()};if(a.readonly){f.disabled=e.disabled=d.disabled=c.disabled=true}j.firstChild.rows[0].cells[0].appendChild(c);j.firstChild.rows[0].cells[0].appendChild(f);j.firstChild.rows[0].cells[2].appendChild(e);var b=j.childNodes[1];b.style.width=j.offsetWidth+"px";b.style.height=j.offsetHeight-20+"px";b.style.overflow="hidden";this._pgridCont=b;this._pgridSelect=[f,e,d,c];this._pData=this._fetchPivotData();this._pUNI=[];this._pivotS={action:(a.action||"0"),value:(typeof a.value!="undefined"?(a.value||"0"):null),x:(typeof a.x!="undefined"?(a.x||"0"):null),y:(typeof a.y!="undefined"?(a.y||"0"):null)};f.value=this._pivotS.value;e.value=this._pivotS.x;d.value=this._pivotS.y;c.value=this._pivotS.action;h._reFillPivotLists();this._renderPivot()};dhtmlXGridObject.prototype._fetchPivotData=function(){var e=[];for(var b=0;b<this._cCount;b++){var c=[];for(var a=0;a<this.rowsCol.length;a++){if(this.rowsCol[a]._cntr){continue}c.push(this.cells2(a,b).getValue())}e.push(c)}return e};dhtmlXGridObject.prototype._renderPivot=function(){if(_isIE){this._pgridSelect[2].removeNode(true)}if(this._pgrid){this._pgrid.destructor()}this._pgrid=new dhtmlXGridObject(this._pgridCont);this._pgrid.setImagePath(this.imgURL);this._pgrid.attachEvent("onBeforeSelect",function(){return false});if(this._pivotS.x){var a=this._getUniList(this._pivotS.x);var d=[160];for(var c=0;c<a.length;c++){d.push(100)}a=[""].concat(a);this._pgrid.setHeader(a);this._pgrid.setInitWidths(d.join(","))}else{this._pgrid.setHeader("");this._pgrid.setInitWidths("160")}this._pgrid.init();this._pgrid.setEditable(false);this._pgrid.setSkin(this.entBox.className.replace("gridbox gridbox_",""));var b=this._pgrid.hdr.rows[1].cells[0];if(b.firstChild&&b.firstChild.tagName=="DIV"){b=b.firstChild}b.appendChild(this._pgridSelect[2]);this._pgrid.setSizes();if(this._pivotS.y){var a=this._getUniList(this._pivotS.y);for(var c=0;c<a.length;c++){this._pgrid.addRow(this._pgrid.uid(),[a[c]],-1)}}else{this._pgrid.addRow(1,"not ready",1)}this._renderPivot2()};dhtmlXGridObject.prototype._pivot_action_0=function(n,m,l,d,o,j){var k=0;var g=j[n];var f=j[m];var e=j[l];for(var h=g.length-1;h>=0;h--){if(g[h]==d&&f[h]==o){k+=this.parseFloat(e[h])}}return k};dhtmlXGridObject.prototype._pivot_action_1=function(m,l,k,d,n,j){ret=9999999999;var g=j[m];var f=j[l];var e=j[k];for(var h=g.length-1;h>=0;h--){if(g[h]==d&&f[h]==n){ret=Math.min(this.parseFloat(e[h]),ret)}}if(ret==9999999999){ret=""}return ret};dhtmlXGridObject.prototype._pivot_action_2=function(m,l,k,d,n,j){ret=-9999999999;var g=j[m];var f=j[l];var e=j[k];for(var h=g.length-1;h>=0;h--){if(g[h]==d&&f[h]==n){ret=Math.max(this.parseFloat(e[h]),ret)}}if(ret==-9999999999){ret=""}return ret};dhtmlXGridObject.prototype._pivot_action_3=function(o,n,m,d,p,j){var l=0;var k=0;var g=j[o];var f=j[n];var e=j[m];for(var h=g.length-1;h>=0;h--){if(g[h]==d&&f[h]==p){l+=this.parseFloat(e[h]);k++}}return k?l/k:""};dhtmlXGridObject.prototype._pivot_action_4=function(o,n,m,d,p,j){var l=0;var k=0;var g=j[o];var f=j[n];var e=j[m];for(var h=g.length-1;h>=0;h--){if(g[h]==d&&f[h]==p){l++}}return l};dhtmlXGridObject.prototype.parseFloat=function(a){a=parseFloat(a);if(isNaN(a)){return 0}return a};dhtmlXGridObject.prototype._renderPivot2=function(){if(!(this._pivotS.x&&this._pivotS.y&&this._pivotS.value&&this._pivotS.action)){return}var d=this["_pivot_action_"+this._pivotS.action];var a=this._getUniList(this._pivotS.x);var e=this._getUniList(this._pivotS.y);for(var c=0;c<a.length;c++){for(var b=0;b<e.length;b++){this._pgrid.cells2(b,c+1).setValue(Math.round(d(this._pivotS.x,this._pivotS.y,this._pivotS.value,a[c],e[b],this._pData)*100)/100)}}};dhtmlXGridObject.prototype._getUniList=function(c){if(!this._pUNI[c]){var e={};var b=[];for(var d=this._pData[c].length-1;d>=0;d--){e[this._pData[c][d]]=true}for(var f in e){if(e[f]===true){b.push(f)}}this._pUNI[c]=b.sort()}return this._pUNI[c]};dhtmlXGridObject.prototype._fillPivotList=function(e,d,c,a){if(!c){c={};a=-1}e.innerHTML="";e.options[e.options.length]=new Option("-select-",-1);for(var b=0;b<d.length;b++){if(c[b]||d[b]===null){continue}e.options[e.options.length]=new Option(d[b],b)}e.value=parseInt(a)};dhtmlXGridObject.prototype._reFillPivotLists=function(){var e=[];var b=[];for(var d=0;d<3;d++){e.push(this._pgridSelect[d]);b.push(e[d].value)}var c=this._reFfillPivotLists;var a={};a[b[1]]=a[b[2]]=true;this._fillPivotList(e[0],this._column_list,a,b[0]);a={};a[b[0]]=a[b[2]]=true;this._fillPivotList(e[1],this._column_list,a,b[1]);a={};a[b[1]]=a[b[0]]=true;this._fillPivotList(e[2],this._column_list,a,b[2]);this._reFfillPivotLists=c};dhtmlXGridObject.prototype.makePivotSelect=function(b,a){var c=document.createElement("SELECT");this._fillPivotList(c,b,a);c.style.cssText="width:150px; height:20px; font-family:Tahoma; font-size:8pt; font-weight:normal;";return c};function eXcell_dec(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.getValue=function(){return parseFloat(this.cell.innerHTML.replace(/,/g,""))};this.setValue=function(h){var f="0,000.00";if(h=="0"){this.setCValue(f.replace(/.*(0\.[0]+)/,"$1"),h);return}var g=f.substr(f.indexOf(".")+1).length;h=Math.round(h*Math.pow(10,g)).toString();var b="";var d=0;var e=false;for(var c=h.length-1;c>=0;c--){d++;b=h.charAt(c)+b;if(!e&&d==g){b="."+b;d=0;e=true}if(e&&d==3&&c!=0&&h.charAt(c-1)!="-"){b=","+b;d=0}}this.setCValue(b,h)}}eXcell_dec.prototype=new eXcell_ed;function eXcell_cor(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.combo=this.grid.getCombo(this.cell._cellIndex);this.editable=true}this.shiftNext=function(){var b=this.list.options[this.list.selectedIndex+1];if(b){b.selected=true}this.obj.value=this.list.value;return true};this.shiftPrev=function(){var b=this.list.options[this.list.selectedIndex-1];if(b){b.selected=true}this.obj.value=this.list.value;return true};this.edit=function(){this.val=this.getValue();this.text=this.cell.innerHTML._dhx_trim();var d=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.align;this.obj.onclick=function(g){(g||event).cancelBubble=true};this.obj.value=this.text;this.list=document.createElement("SELECT");this.list.editor_obj=this;this.list.className="dhx_combo_select";this.list.style.width=this.cell.offsetWidth+"px";this.list.style.left=d[0]+"px";this.list.style.top=d[1]+this.cell.offsetHeight+"px";this.list.onclick=function(i){var h=i||window.event;var g=h.target||h.srcElement;if(g.tagName=="OPTION"){g=g.parentNode}if(g.value!=-1){g.editor_obj._byClick=true;g.editor_obj.editable=false;g.editor_obj.grid.editStop()}else{h.cancelBubble=true;g.editor_obj.obj.value="";g.editor_obj.obj.focus()}};var b=this.combo.getKeys();var f=0;this.list.options[0]=new Option(this.combo.get(b[0]),b[0]);this.list.options[0].selected=true;for(var c=1;c<b.length;c++){var e=this.combo.get(b[c]);this.list.options[this.list.options.length]=new Option(e,b[c]);if(b[c]==this.val){f=this.list.options.length-1}}document.body.appendChild(this.list);this.list.size="6";this.cstate=1;if(this.editable){this.cell.innerHTML=""}else{this.obj.style.width="1px";this.obj.style.height="1px"}this.cell.appendChild(this.obj);this.list.options[f].selected=true;if(this.editable){this.obj.focus();this.obj.focus()}if(!this.editable){this.obj.style.visibility="hidden"}};this.getValue=function(){return((this.cell.combo_value==window.undefined)?"":this.cell.combo_value)};this.getText=function(){return this.cell.innerHTML};this.getState=function(){return{prev:this.cell.__prev,now:this.cell.__now}};this.detach=function(){if(this.val!=this.getValue()){this.cell.wasChanged=true}if(this.list.parentNode!=null){if((this.obj.value._dhx_trim()!=this.text)||(this._byClick)){var b=this.list.value;if(!this._byClick){this.combo.values[this.combo.keys._dhx_find(b)]=this.obj.value}this.setValue(b)}else{this.setValue(this.val)}}if(this.list.parentNode){this.list.parentNode.removeChild(this.list)}if(this.obj.parentNode){this.obj.parentNode.removeChild(this.obj)}return this.val!=this.getValue()}}eXcell_cor.prototype=new eXcell;eXcell_cor.prototype.setValue=function(b){if((b||"").toString()._dhx_trim()==""){b=null}var a=this.grid.getCombo(this.cell._cellIndex).get(b);if((b==-1)&&(a=="")){this.combo.values[this.combo.keys._dhx_find(-1)]="Create new value";b=null}if(b!==null){this.setCValue(a,b)}else{this.setCValue("&nbsp;",b)}this.cell.__prev=this.cell.__now;this.cell.__now={key:b,value:a};this.cell.combo_value=b};function eXcell_wbut(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.edit=function(){var h=this.getValue().toString();this.obj=document.createElement("INPUT");this.obj.readOnly=true;this.obj.style.width="60px";this.obj.style.height=(this.cell.offsetHeight-(this.grid.multiLine?5:4))+"px";this.obj.style.border="0px";this.obj.style.margin="0px";this.obj.style.padding="0px";this.obj.style.overflow="hidden";this.obj.style.fontSize=_isKHTML?"10px":"12px";this.obj.style.fontFamily="Arial";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.align;this.obj.onclick=function(i){(i||event).cancelBubble=true};this.cell.innerHTML="";this.cell.appendChild(this.obj);this.obj.onselectstart=function(i){if(!i){i=event}i.cancelBubble=true;return true};this.obj.style.textAlign=this.cell.align;this.obj.value=h;this.obj.focus();this.obj.focus();this.cell.appendChild(document.createTextNode(" "));var e=document.createElement("input");if(_isIE){e.style.height=(this.cell.offsetHeight-(this.grid.multiLine?5:4))+"px";e.style.lineHeight="5px"}else{e.style.fontSize="8px";e.style.width="10px";e.style.marginTop="-5px"}e.type="button";e.name="Lookup";e.value="...";var f=this.obj;var b=this.cell.cellIndex;var d=this.cell.parentNode.idd;var g=this.grid;var c=this;this.dhx_m_func=this.grid.getWButFunction(this.cell._cellIndex);e.onclick=function(i){c.dhx_m_func(c,c.cell.parentNode.idd,c.cell._cellIndex,h)};this.cell.appendChild(e)};this.detach=function(){this.setValue(this.obj.value);return this.val!=this.getValue()}}eXcell_wbut.prototype=new eXcell;dhtmlXGridObject.prototype.getWButFunction=function(a){if(this._wbtfna){return this._wbtfna[a]}else{return(function(){})}};dhtmlXGridObject.prototype.setWButFunction=function(a,b){if(!this._wbtfna){this._wbtfna=new Array()}this._wbtfna[a]=b};function eXcell_passw(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.edit=function(){this.cell.innerHTML="";this.cell.atag="INPUT";this.val=this.getValue();this.obj=document.createElement(this.cell.atag);this.obj.style.height=(this.cell.offsetHeight-(_isIE?6:4))+"px";this.obj.className="dhx_combo_edit";this.obj.type="password";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.align;this.obj.onclick=function(b){(b||event).cancelBubble=true};this.obj.onmousedown=function(b){(b||event).cancelBubble=true};this.obj.value=this.cell._rval||"";this.cell.appendChild(this.obj);if(_isFF){this.obj.style.overflow="visible";if((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(b){if(!b){b=event}b.cancelBubble=true;return true};this.obj.focus();this.obj.focus()};this.getValue=function(){return this.cell._rval};this.setValue=function(c){var b="*****";this.cell.innerHTML=b;this.cell._rval=c};this.detach=function(){this.setValue(this.obj.value);return this.val!=this.getValue()}}eXcell_passw.prototype=new eXcell;function eXcell_num(a){try{this.cell=a;this.grid=this.cell.parentNode.grid}catch(b){}this.edit=function(){this.val=this.getValue();this.obj=document.createElement(_isKHTML?"INPUT":"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.align;this.obj.onclick=function(c){(c||event).cancelBubble=true};this.obj.value=this.val;this.cell.innerHTML="";this.cell.appendChild(this.obj);this.obj.onselectstart=function(c){if(!c){c=event}c.cancelBubble=true;return true};this.obj.focus();this.obj.focus()};this.getValue=function(){if((this.cell.firstChild)&&(this.cell.firstChild.tagName=="TEXTAREA")){return this.cell.firstChild.value}else{return this.grid._aplNFb(this.cell.innerHTML.toString()._dhx_trim(),this.cell._cellIndex)}};this.setValue=function(d){var c=new RegExp("[a-z]|[A-Z]","i");if(d.match(c)){d="&nbsp;"}this.cell.innerHTML=d};this.detach=function(){var c=this.obj.value;this.setValue(c);return this.val!=this.getValue()}}eXcell_num.prototype=new eXcell;function eXcell_mro(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.edit=function(){}}eXcell_mro.prototype=new eXcell;eXcell_mro.prototype.getValue=function(){return this.cell.childNodes[0].innerHTML._dhx_trim()};eXcell_mro.prototype.setValue=function(a){if(!this.cell.childNodes.length){this.cell.style.whiteSpace="normal";this.cell.innerHTML="<div style='height:100%; white-space:nowrap; overflow:hidden;'></div>"}if(!a||a.toString()._dhx_trim()==""){a="&nbsp;"}this.cell.childNodes[0].innerHTML=a};function eXcell_liveedit(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.edit=function(){this.cell.inputObj.focus();this.cell.inputObj.focus()};this.detach=function(){this.setValue(this.cell.inputObj.value)};this.getValue=function(){return this.cell.inputObj?this.cell.inputObj.value:""};this.destructor=function(){};this.onFocus=function(){var b=this.grid.callEvent("onEditCell",[0,this.cell.parentNode.idd,this.cell._cellIndex]);if(b===false){this.cell.inputObj.blur()}};this.onBlur=function(){var b=this.grid.callEvent("onEditCell",[2,this.cell.parentNode.idd,this.cell._cellIndex]);this.detach()};this.onChange=function(){var b=this.grid.callEvent("onCellChanged",[this.cell.parentNode.idd,this.cell._cellIndex,this.cell.inputObj.value]);this.detach()}}eXcell_liveedit.prototype=new eXcell_ed;eXcell_liveedit.prototype.setValue=function(b){var a=this;this.cell.innerHTML='<input type="text" value="" style="width:100%;" />';this.cell.inputObj=this.cell.firstChild;this.cell.inputObj=this.cell.firstChild;this.cell.inputObj.value=b;this.cell.inputObj.onfocus=function(){a.onFocus()};this.cell.inputObj.onblur=function(){a.onFocus()};this.cell.inputObj.onchange=function(){a.onChange()}};if(window.eXcell_math){eXcell_liveedit.prototype.setValueA=eXcell_liveedit.prototype.setValue;eXcell_liveedit.prototype.setValue=eXcell_math.prototype._NsetValue}function eXcell_limit(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.style.height=(this.cell.offsetHeight-(_isIE?6:4))+"px";this.obj.className="dhx_combo_edit";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.align;this.obj.onclick=function(b){(b||event).cancelBubble=true};this.obj.onmousedown=function(b){(b||event).cancelBubble=true};this.obj.value=this.val;this.cell.innerHTML="";this.cell.appendChild(this.obj);if(_isFF){this.obj.style.overflow="visible";if((this.grid.multiLine)&&(this.obj.offsetHeight>=18)&&(this.obj.offsetHeight<40)){this.obj.style.height="36px";this.obj.style.overflow="scroll"}}this.obj.onkeypress=function(b){if(this.value.length>=15){return false}};this.obj.onselectstart=function(b){if(!b){b=event}b.cancelBubble=true;return true};this.obj.focus();this.obj.focus()};this.getValue=function(){if((this.cell.firstChild)&&((this.cell.atag)&&(this.cell.firstChild.tagName==this.cell.atag))){return this.cell.firstChild.value}else{return this.cell.innerHTML.toString()._dhx_trim()}};this.setValue=function(b){if(b.length>15){this.cell.innerHTML=b.substring(0,14)}else{this.cell.innerHTML=b}};this.detach=function(){this.setValue(this.obj.value);return this.val!=this.getValue()}}eXcell_limit.prototype=new eXcell;dhtmlXForm.prototype.getItemsList=function(){var d=[];var c=[];for(var b in this.itemPull){var e=null;if(this.itemPull[b]._group){e=this.itemPull[b]._group}else{e=b.replace(this.idPrefix,"")}if(c[e]!=true){d.push(e)}c[e]=true}return d};dhtmlXForm.prototype.setItemText=function(){this.setItemLabel.apply(this,arguments)};dhtmlXForm.prototype.getItemText=function(){return this.getItemLabel.apply(this,arguments)};dhtmlXForm.prototype.loadStructString=function(b,a){this.loadStruct(b,a)};dhtmlXAccordion.prototype.setEffect=function(a){};dhtmlXAccordion.prototype.setIcon=function(b,a){this.cells(b).setIcon(a)};dhtmlXAccordion.prototype.clearIcon=function(a){this.cells(a).clearIcon()};dhtmlXAccordion.prototype.setActive=function(a){this.cells(a).open()};dhtmlXAccordion.prototype.isActive=function(a){return this.cells(a).isOpened()};dhtmlXAccordion.prototype.openItem=function(a){this.cells(a).open()};dhtmlXAccordion.prototype.closeItem=function(a){this.cells(a).close()};dhtmlXAccordion.prototype.moveOnTop=function(a){this.cells(a).moveOnTop()};dhtmlXAccordion.prototype.setItemHeight=function(a){this.cells(id).setHeight(a)};dhtmlXAccordion.prototype.setText=function(b,a){this.cells(b).setText(a)};dhtmlXAccordion.prototype.getText=function(){return this.cells(id).getText()};dhtmlXAccordion.prototype.showItem=function(a){this.cells(a).show()};dhtmlXAccordion.prototype.hideItem=function(a){this.cells(a).hide()};dhtmlXAccordion.prototype.isItemHidden=function(a){return !this.cells(a).isVisible()};dhtmlXAccordion.prototype.loadJSON=function(a,b){this.loadStruct(a,b)};dhtmlXAccordion.prototype.loadXML=function(a,b){this.loadStruct(a,b)};dhtmlXAccordion.prototype.setSkinParameters=function(a,b){if(a!=null){this.setOffset(a)}};dhtmlXLayoutObject.prototype.listViews=function(){return this.listPatterns()};dhtmlXLayoutObject.prototype.setEffect=function(){};dhtmlXLayoutObject.prototype.getEffect=function(){};dhtmlXLayoutObject.prototype.dockWindow=function(a){this.cells(a).dock()};dhtmlXLayoutObject.prototype.unDockWindow=function(a){this.cells(a).undock()};dhtmlXLayoutObject.prototype.setCollapsedText=function(b,a){this.cells(b).setCollapsedText(a)};dhtmlXLayoutObject.prototype.getIdByIndex=function(a){if(a<0||a>this.items.length-1){return null}var b=null;this.forEachItem(function(c){if(b==null&&c==this.items[a]){b=c.conf.name}});return b};dhtmlXLayoutObject.prototype.getIndexById=function(d){var a=this.cells(d);var b=-1;for(var c=0;c<this.items.length;c++){if(a==this.items[c]){b=c}}return b};dhtmlXLayoutObject.prototype.showPanel=function(a){this.cells(a).showHeader()};dhtmlXLayoutObject.prototype.hidePanel=function(a){this.cells(a).hideHeader()};dhtmlXLayoutObject.prototype.isPanelVisible=function(a){return this.cells(a).isHeaderVisible()};dhtmlXLayoutObject.prototype.setImagePath=function(){};dhtmlXLayoutCell.prototype.getIndex=function(){return this.conf.index};dhtmlXTabBar.prototype.destructor=function(){this.unload()};dhtmlXTabBar.prototype.normalize=function(){};dhtmlXTabBar.prototype.setStyle=function(){};dhtmlXTabBar.prototype.setContent=function(b,a){this.cells(b).attachObject(a)};dhtmlXTabBar.prototype.setContentHTML=function(b,a){this.cells(b).attachHTMLString(a)};dhtmlXTabBar.prototype.setHrefMode=function(a){if(a=="iframes-on-demand"||a=="ajax-html"){this.conf.url_demand=true}this.conf.href_mode=a};dhtmlXTabBar.prototype.setContentHref=function(b,a){if(this.conf.href_mode==null){this.conf.href_mode="iframe"}switch(this.conf.href_mode){case"iframes":case"iframe":this.cells(b).attachURL(a);break;case"iframes-on-demand":this.conf.urls[b]={href:a,ajax:false};this._loadURLOnDemand(this.conf.lastActive);break;case"ajax":case"ajax-html":this.cells(b).attachURL(a,true);break}};dhtmlXTabBar.prototype.setMargin=function(){};dhtmlXTabBar.prototype.setOffset=function(){};dhtmlXTabBar.prototype.setImagePath=function(b,a){};dhtmlXTabBar.prototype.setSkinColors=function(b,a){};dhtmlXTabBar.prototype.tabWindow=function(a){return this.cells(a).getFrame()};dhtmlXTabBar.prototype.setCustomStyle=function(){};dhtmlXTabBar.prototype.enableScroll=function(){};dhtmlXTabBar.prototype.enableForceHiding=function(){};dhtmlXTabBar.prototype.setSize=function(a,b){this.base.style.width=a+"px";this.base.style.height=b+"px";this.setSizes()};dhtmlXTabBar.prototype.enableAutoSize=function(){};dhtmlXTabBar.prototype.adjustOuterSize=function(){this.setSizes()};dhtmlXTabBar.prototype.showInnerScroll=function(c){for(var b in this.t){if(c==null||c==b){this.t[b].cell.showInnerScroll()}}};dhtmlXTabBar.prototype.loadXML=function(a,b){this.loadStruct.apply(this,[a,b])};dhtmlXTabBar.prototype.loadXMLString=function(b,a){this.loadStruct.apply(this,[b,a])};dhtmlXTabBar.prototype.hideTab=function(b,a){this.tabs(b).hide(a)};dhtmlXTabBar.prototype.showTab=function(b,a){this.tabs(b).show(a)};dhtmlXTabBar.prototype.enableTab=function(a){this.tabs(a).enable()};dhtmlXTabBar.prototype.disableTab=function(a){this.tabs(a).disable()};dhtmlXTabBar.prototype.getIndex=function(a){return this.tabs(a).getIndex()};dhtmlXTabBar.prototype.getLabel=function(a){return this.tabs(a).getText()};dhtmlXTabBar.prototype.setLabel=function(b,a){this.tabs(b).setText(a)};dhtmlXTabBar.prototype.setTabActive=function(a){if(a!=null&&this.t[a]!=null){this.tabs(a).setActive()}};dhtmlXTabBar.prototype.removeTab=function(a){this.tabs(a).close()};dhtmlXTabBar.prototype.forceLoad=function(a){this.tabs(a).reloadURL()};dhtmlXWindows.prototype.enableAutoViewport=function(){};dhtmlXWindows.prototype.setImagePath=function(){};dhtmlXWindows.prototype.setEffect=function(){};dhtmlXWindows.prototype.getEffect=function(){};dhtmlXWindowsCell.prototype.setToFullScreen=function(){};dhtmlXWindowsCell.prototype.setIcon=function(){};dhtmlXWindowsCell.prototype.getIcon=function(){};dhtmlXWindowsCell.prototype.restoreIcon=function(){};dhtmlXWindowsCell.prototype.clearIcon=function(){}; \ No newline at end of file
diff --git a/pywrap/static/codebase/ext/dhxupload.xap b/pywrap/static/codebase/ext/dhxupload.xap
deleted file mode 100644
index f2deecd..0000000
--- a/pywrap/static/codebase/ext/dhxupload.xap
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/ext/swfobject.js b/pywrap/static/codebase/ext/swfobject.js
deleted file mode 100644
index 7a9d26f..0000000
--- a/pywrap/static/codebase/ext/swfobject.js
+++ /dev/null
@@ -1,777 +0,0 @@
-/*! SWFObject v2.2 <http://code.google.com/p/swfobject/>
- is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
-*/
-
-var swfobject = function() {
-
- var UNDEF = "undefined",
- OBJECT = "object",
- SHOCKWAVE_FLASH = "Shockwave Flash",
- SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
- FLASH_MIME_TYPE = "application/x-shockwave-flash",
- EXPRESS_INSTALL_ID = "SWFObjectExprInst",
- ON_READY_STATE_CHANGE = "onreadystatechange",
-
- win = window,
- doc = document,
- nav = navigator,
-
- plugin = false,
- domLoadFnArr = [main],
- regObjArr = [],
- objIdArr = [],
- listenersArr = [],
- storedAltContent,
- storedAltContentId,
- storedCallbackFn,
- storedCallbackObj,
- isDomLoaded = false,
- isExpressInstallActive = false,
- dynamicStylesheet,
- dynamicStylesheetMedia,
- autoHideShow = true,
-
- /* Centralized function for browser feature detection
- - User agent string detection is only used when no good alternative is possible
- - Is executed directly for optimal performance
- */
- ua = function() {
- var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
- u = nav.userAgent.toLowerCase(),
- p = nav.platform.toLowerCase(),
- windows = p ? /win/.test(p) : /win/.test(u),
- mac = p ? /mac/.test(p) : /mac/.test(u),
- webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
- ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html
- playerVersion = [0,0,0],
- d = null;
- if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
- d = nav.plugins[SHOCKWAVE_FLASH].description;
- if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
- plugin = true;
- ie = false; // cascaded feature detection for Internet Explorer
- d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
- playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
- playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
- playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
- }
- }
- else if (typeof win.ActiveXObject != UNDEF) {
- try {
- var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
- if (a) { // a will return null when ActiveX is disabled
- d = a.GetVariable("$version");
- if (d) {
- ie = true; // cascaded feature detection for Internet Explorer
- d = d.split(" ")[1].split(",");
- playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
- }
- }
- }
- catch(e) {}
- }
- return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac };
- }(),
-
- /* Cross-browser onDomLoad
- - Will fire an event as soon as the DOM of a web page is loaded
- - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/
- - Regular onload serves as fallback
- */
- onDomLoad = function() {
- if (!ua.w3) { return; }
- if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically
- callDomLoadFunctions();
- }
- if (!isDomLoaded) {
- if (typeof doc.addEventListener != UNDEF) {
- doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false);
- }
- if (ua.ie && ua.win) {
- doc.attachEvent(ON_READY_STATE_CHANGE, function() {
- if (doc.readyState == "complete") {
- doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee);
- callDomLoadFunctions();
- }
- });
- if (win == top) { // if not inside an iframe
- (function(){
- if (isDomLoaded) { return; }
- try {
- doc.documentElement.doScroll("left");
- }
- catch(e) {
- setTimeout(arguments.callee, 0);
- return;
- }
- callDomLoadFunctions();
- })();
- }
- }
- if (ua.wk) {
- (function(){
- if (isDomLoaded) { return; }
- if (!/loaded|complete/.test(doc.readyState)) {
- setTimeout(arguments.callee, 0);
- return;
- }
- callDomLoadFunctions();
- })();
- }
- addLoadEvent(callDomLoadFunctions);
- }
- }();
-
- function callDomLoadFunctions() {
- if (isDomLoaded) { return; }
- try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early
- var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
- t.parentNode.removeChild(t);
- }
- catch (e) { return; }
- isDomLoaded = true;
- var dl = domLoadFnArr.length;
- for (var i = 0; i < dl; i++) {
- domLoadFnArr[i]();
- }
- }
-
- function addDomLoadEvent(fn) {
- if (isDomLoaded) {
- fn();
- }
- else {
- domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
- }
- }
-
- /* Cross-browser onload
- - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
- - Will fire an event as soon as a web page including all of its assets are loaded
- */
- function addLoadEvent(fn) {
- if (typeof win.addEventListener != UNDEF) {
- win.addEventListener("load", fn, false);
- }
- else if (typeof doc.addEventListener != UNDEF) {
- doc.addEventListener("load", fn, false);
- }
- else if (typeof win.attachEvent != UNDEF) {
- addListener(win, "onload", fn);
- }
- else if (typeof win.onload == "function") {
- var fnOld = win.onload;
- win.onload = function() {
- fnOld();
- fn();
- };
- }
- else {
- win.onload = fn;
- }
- }
-
- /* Main function
- - Will preferably execute onDomLoad, otherwise onload (as a fallback)
- */
- function main() {
- if (plugin) {
- testPlayerVersion();
- }
- else {
- matchVersions();
- }
- }
-
- /* Detect the Flash Player version for non-Internet Explorer browsers
- - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description:
- a. Both release and build numbers can be detected
- b. Avoid wrong descriptions by corrupt installers provided by Adobe
- c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports
- - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available
- */
- function testPlayerVersion() {
- var b = doc.getElementsByTagName("body")[0];
- var o = createElement(OBJECT);
- o.setAttribute("type", FLASH_MIME_TYPE);
- var t = b.appendChild(o);
- if (t) {
- var counter = 0;
- (function(){
- if (typeof t.GetVariable != UNDEF) {
- var d = t.GetVariable("$version");
- if (d) {
- d = d.split(" ")[1].split(",");
- ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
- }
- }
- else if (counter < 10) {
- counter++;
- setTimeout(arguments.callee, 10);
- return;
- }
- b.removeChild(o);
- t = null;
- matchVersions();
- })();
- }
- else {
- matchVersions();
- }
- }
-
- /* Perform Flash Player and SWF version matching; static publishing only
- */
- function matchVersions() {
- var rl = regObjArr.length;
- if (rl > 0) {
- for (var i = 0; i < rl; i++) { // for each registered object element
- var id = regObjArr[i].id;
- var cb = regObjArr[i].callbackFn;
- var cbObj = {success:false, id:id};
- if (ua.pv[0] > 0) {
- var obj = getElementById(id);
- if (obj) {
- if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match!
- setVisibility(id, true);
- if (cb) {
- cbObj.success = true;
- cbObj.ref = getObjectById(id);
- cb(cbObj);
- }
- }
- else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported
- var att = {};
- att.data = regObjArr[i].expressInstall;
- att.width = obj.getAttribute("width") || "0";
- att.height = obj.getAttribute("height") || "0";
- if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); }
- if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); }
- // parse HTML object param element's name-value pairs
- var par = {};
- var p = obj.getElementsByTagName("param");
- var pl = p.length;
- for (var j = 0; j < pl; j++) {
- if (p[j].getAttribute("name").toLowerCase() != "movie") {
- par[p[j].getAttribute("name")] = p[j].getAttribute("value");
- }
- }
- showExpressInstall(att, par, id, cb);
- }
- else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF
- displayAltContent(obj);
- if (cb) { cb(cbObj); }
- }
- }
- }
- else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content)
- setVisibility(id, true);
- if (cb) {
- var o = getObjectById(id); // test whether there is an HTML object element or not
- if (o && typeof o.SetVariable != UNDEF) {
- cbObj.success = true;
- cbObj.ref = o;
- }
- cb(cbObj);
- }
- }
- }
- }
- }
-
- function getObjectById(objectIdStr) {
- var r = null;
- var o = getElementById(objectIdStr);
- if (o && o.nodeName == "OBJECT") {
- if (typeof o.SetVariable != UNDEF) {
- r = o;
- }
- else {
- var n = o.getElementsByTagName(OBJECT)[0];
- if (n) {
- r = n;
- }
- }
- }
- return r;
- }
-
- /* Requirements for Adobe Express Install
- - only one instance can be active at a time
- - fp 6.0.65 or higher
- - Win/Mac OS only
- - no Webkit engines older than version 312
- */
- function canExpressInstall() {
- return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);
- }
-
- /* Show the Adobe Express Install dialog
- - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
- */
- function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {
- isExpressInstallActive = true;
- storedCallbackFn = callbackFn || null;
- storedCallbackObj = {success:false, id:replaceElemIdStr};
- var obj = getElementById(replaceElemIdStr);
- if (obj) {
- if (obj.nodeName == "OBJECT") { // static publishing
- storedAltContent = abstractAltContent(obj);
- storedAltContentId = null;
- }
- else { // dynamic publishing
- storedAltContent = obj;
- storedAltContentId = replaceElemIdStr;
- }
- att.id = EXPRESS_INSTALL_ID;
- if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; }
- if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; }
- doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
- var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
- fv = "MMredirectURL=" + encodeURI(window.location).toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title;
- if (typeof par.flashvars != UNDEF) {
- par.flashvars += "&" + fv;
- }
- else {
- par.flashvars = fv;
- }
- // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
- // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
- if (ua.ie && ua.win && obj.readyState != 4) {
- var newObj = createElement("div");
- replaceElemIdStr += "SWFObjectNew";
- newObj.setAttribute("id", replaceElemIdStr);
- obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf
- obj.style.display = "none";
- (function(){
- if (obj.readyState == 4) {
- obj.parentNode.removeChild(obj);
- }
- else {
- setTimeout(arguments.callee, 10);
- }
- })();
- }
- createSWF(att, par, replaceElemIdStr);
- }
- }
-
- /* Functions to abstract and display alternative content
- */
- function displayAltContent(obj) {
- if (ua.ie && ua.win && obj.readyState != 4) {
- // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
- // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
- var el = createElement("div");
- obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content
- el.parentNode.replaceChild(abstractAltContent(obj), el);
- obj.style.display = "none";
- (function(){
- if (obj.readyState == 4) {
- obj.parentNode.removeChild(obj);
- }
- else {
- setTimeout(arguments.callee, 10);
- }
- })();
- }
- else {
- obj.parentNode.replaceChild(abstractAltContent(obj), obj);
- }
- }
-
- function abstractAltContent(obj) {
- var ac = createElement("div");
- if (ua.win && ua.ie) {
- ac.innerHTML = obj.innerHTML;
- }
- else {
- var nestedObj = obj.getElementsByTagName(OBJECT)[0];
- if (nestedObj) {
- var c = nestedObj.childNodes;
- if (c) {
- var cl = c.length;
- for (var i = 0; i < cl; i++) {
- if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
- ac.appendChild(c[i].cloneNode(true));
- }
- }
- }
- }
- }
- return ac;
- }
-
- /* Cross-browser dynamic SWF creation
- */
- function createSWF(attObj, parObj, id) {
- var r, el = getElementById(id);
- if (ua.wk && ua.wk < 312) { return r; }
- if (el) {
- if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
- attObj.id = id;
- }
- if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML
- var att = "";
- for (var i in attObj) {
- if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries
- if (i.toLowerCase() == "data") {
- parObj.movie = attObj[i];
- }
- else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
- att += ' class="' + attObj[i] + '"';
- }
- else if (i.toLowerCase() != "classid") {
- att += ' ' + i + '="' + attObj[i] + '"';
- }
- }
- }
- var par = "";
- for (var j in parObj) {
- if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries
- par += '<param name="' + j + '" value="' + parObj[j] + '" />';
- }
- }
- el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
- objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)
- r = getElementById(attObj.id);
- }
- else { // well-behaving browsers
- var o = createElement(OBJECT);
- o.setAttribute("type", FLASH_MIME_TYPE);
- for (var m in attObj) {
- if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries
- if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
- o.setAttribute("class", attObj[m]);
- }
- else if (m.toLowerCase() != "classid") { // filter out IE specific attribute
- o.setAttribute(m, attObj[m]);
- }
- }
- }
- for (var n in parObj) {
- if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element
- createObjParam(o, n, parObj[n]);
- }
- }
- el.parentNode.replaceChild(o, el);
- r = o;
- }
- }
- return r;
- }
-
- function createObjParam(el, pName, pValue) {
- var p = createElement("param");
- p.setAttribute("name", pName);
- p.setAttribute("value", pValue);
- el.appendChild(p);
- }
-
- /* Cross-browser SWF removal
- - Especially needed to safely and completely remove a SWF in Internet Explorer
- */
- function removeSWF(id) {
- var obj = getElementById(id);
- if (obj && obj.nodeName == "OBJECT") {
- if (ua.ie && ua.win) {
- obj.style.display = "none";
- (function(){
- if (obj.readyState == 4) {
- removeObjectInIE(id);
- }
- else {
- setTimeout(arguments.callee, 10);
- }
- })();
- }
- else {
- obj.parentNode.removeChild(obj);
- }
- }
- }
-
- function removeObjectInIE(id) {
- var obj = getElementById(id);
- if (obj) {
- for (var i in obj) {
- if (typeof obj[i] == "function") {
- obj[i] = null;
- }
- }
- obj.parentNode.removeChild(obj);
- }
- }
-
- /* Functions to optimize JavaScript compression
- */
- function getElementById(id) {
- var el = null;
- try {
- el = doc.getElementById(id);
- }
- catch (e) {}
- return el;
- }
-
- function createElement(el) {
- return doc.createElement(el);
- }
-
- /* Updated attachEvent function for Internet Explorer
- - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
- */
- function addListener(target, eventType, fn) {
- target.attachEvent(eventType, fn);
- listenersArr[listenersArr.length] = [target, eventType, fn];
- }
-
- /* Flash Player and SWF content version matching
- */
- function hasPlayerVersion(rv) {
- var pv = ua.pv, v = rv.split(".");
- v[0] = parseInt(v[0], 10);
- v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
- v[2] = parseInt(v[2], 10) || 0;
- return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
- }
-
- /* Cross-browser dynamic CSS creation
- - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
- */
- function createCSS(sel, decl, media, newStyle) {
- if (ua.ie && ua.mac) { return; }
- var h = doc.getElementsByTagName("head")[0];
- if (!h) { return; } // to also support badly authored HTML pages that lack a head element
- var m = (media && typeof media == "string") ? media : "screen";
- if (newStyle) {
- dynamicStylesheet = null;
- dynamicStylesheetMedia = null;
- }
- if (!dynamicStylesheet || dynamicStylesheetMedia != m) {
- // create dynamic stylesheet + get a global reference to it
- var s = createElement("style");
- s.setAttribute("type", "text/css");
- s.setAttribute("media", m);
- dynamicStylesheet = h.appendChild(s);
- if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
- dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];
- }
- dynamicStylesheetMedia = m;
- }
- // add style rule
- if (ua.ie && ua.win) {
- if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {
- dynamicStylesheet.addRule(sel, decl);
- }
- }
- else {
- if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {
- dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
- }
- }
- }
-
- function setVisibility(id, isVisible) {
- if (!autoHideShow) { return; }
- var v = isVisible ? "visible" : "hidden";
- if (isDomLoaded && getElementById(id)) {
- getElementById(id).style.visibility = v;
- }
- else {
- createCSS("#" + id, "visibility:" + v);
- }
- }
-
- /* Filter to avoid XSS attacks
- */
- function urlEncodeIfNecessary(s) {
- var regex = /[\\\"<>\.;]/;
- var hasBadChars = regex.exec(s) != null;
- return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;
- }
-
- /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
- */
- var cleanup = function() {
- if (ua.ie && ua.win) {
- window.attachEvent("onunload", function() {
- // remove listeners to avoid memory leaks
- var ll = listenersArr.length;
- for (var i = 0; i < ll; i++) {
- listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
- }
- // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
- var il = objIdArr.length;
- for (var j = 0; j < il; j++) {
- removeSWF(objIdArr[j]);
- }
- // cleanup library's main closures to avoid memory leaks
- for (var k in ua) {
- ua[k] = null;
- }
- ua = null;
- for (var l in swfobject) {
- swfobject[l] = null;
- }
- swfobject = null;
- });
- }
- }();
-
- return {
- /* Public API
- - Reference: http://code.google.com/p/swfobject/wiki/documentation
- */
- registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {
- if (ua.w3 && objectIdStr && swfVersionStr) {
- var regObj = {};
- regObj.id = objectIdStr;
- regObj.swfVersion = swfVersionStr;
- regObj.expressInstall = xiSwfUrlStr;
- regObj.callbackFn = callbackFn;
- regObjArr[regObjArr.length] = regObj;
- setVisibility(objectIdStr, false);
- }
- else if (callbackFn) {
- callbackFn({success:false, id:objectIdStr});
- }
- },
-
- getObjectById: function(objectIdStr) {
- if (ua.w3) {
- return getObjectById(objectIdStr);
- }
- },
-
- embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
- var callbackObj = {success:false, id:replaceElemIdStr};
- if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
- setVisibility(replaceElemIdStr, false);
- addDomLoadEvent(function() {
- widthStr += ""; // auto-convert to string
- heightStr += "";
- var att = {};
- if (attObj && typeof attObj === OBJECT) {
- for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs
- att[i] = attObj[i];
- }
- }
- att.data = swfUrlStr;
- att.width = widthStr;
- att.height = heightStr;
- var par = {};
- if (parObj && typeof parObj === OBJECT) {
- for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs
- par[j] = parObj[j];
- }
- }
- if (flashvarsObj && typeof flashvarsObj === OBJECT) {
- for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs
- if (typeof par.flashvars != UNDEF) {
- par.flashvars += "&" + k + "=" + flashvarsObj[k];
- }
- else {
- par.flashvars = k + "=" + flashvarsObj[k];
- }
- }
- }
- if (hasPlayerVersion(swfVersionStr)) { // create SWF
- var obj = createSWF(att, par, replaceElemIdStr);
- if (att.id == replaceElemIdStr) {
- setVisibility(replaceElemIdStr, true);
- }
- callbackObj.success = true;
- callbackObj.ref = obj;
- }
- else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install
- att.data = xiSwfUrlStr;
- showExpressInstall(att, par, replaceElemIdStr, callbackFn);
- return;
- }
- else { // show alternative content
- setVisibility(replaceElemIdStr, true);
- }
- if (callbackFn) { callbackFn(callbackObj); }
- });
- }
- else if (callbackFn) { callbackFn(callbackObj); }
- },
-
- switchOffAutoHideShow: function() {
- autoHideShow = false;
- },
-
- ua: ua,
-
- getFlashPlayerVersion: function() {
- return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
- },
-
- hasFlashPlayerVersion: hasPlayerVersion,
-
- createSWF: function(attObj, parObj, replaceElemIdStr) {
- if (ua.w3) {
- return createSWF(attObj, parObj, replaceElemIdStr);
- }
- else {
- return undefined;
- }
- },
-
- showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {
- if (ua.w3 && canExpressInstall()) {
- showExpressInstall(att, par, replaceElemIdStr, callbackFn);
- }
- },
-
- removeSWF: function(objElemIdStr) {
- if (ua.w3) {
- removeSWF(objElemIdStr);
- }
- },
-
- createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
- if (ua.w3) {
- createCSS(selStr, declStr, mediaStr, newStyleBoolean);
- }
- },
-
- addDomLoadEvent: addDomLoadEvent,
-
- addLoadEvent: addLoadEvent,
-
- getQueryParamValue: function(param) {
- var q = doc.location.search || doc.location.hash;
- if (q) {
- if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark
- if (param == null) {
- return urlEncodeIfNecessary(q);
- }
- var pairs = q.split("&");
- for (var i = 0; i < pairs.length; i++) {
- if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
- return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
- }
- }
- }
- return "";
- },
-
- // For internal usage only
- expressInstallCallback: function() {
- if (isExpressInstallActive) {
- var obj = getElementById(EXPRESS_INSTALL_ID);
- if (obj && storedAltContent) {
- obj.parentNode.replaceChild(storedAltContent, obj);
- if (storedAltContentId) {
- setVisibility(storedAltContentId, true);
- if (ua.ie && ua.win) { storedAltContent.style.display = "block"; }
- }
- if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }
- }
- isExpressInstallActive = false;
- }
- }
- };
-}();
diff --git a/pywrap/static/codebase/ext/uploader.swf b/pywrap/static/codebase/ext/uploader.swf
deleted file mode 100644
index 2fa8674..0000000
--- a/pywrap/static/codebase/ext/uploader.swf
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/blank.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/blank.gif
deleted file mode 100644
index d7ae406..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/blank.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/but_cut.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/but_cut.gif
deleted file mode 100644
index 942bd18..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/but_cut.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif
deleted file mode 100644
index e0a88ce..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/folderClosed.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif
deleted file mode 100644
index 1680dbc..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/folderOpen.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif
deleted file mode 100644
index a61302a..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckAll.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif
deleted file mode 100644
index 42447b8..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckDis.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif
deleted file mode 100644
index 0350b2a..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconCheckGray.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif
deleted file mode 100644
index 9f3fe50..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckAll.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif
deleted file mode 100644
index f15d9f7..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/iconUncheckDis.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/leaf.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/leaf.gif
deleted file mode 100644
index 9c3e531..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/leaf.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line.gif
deleted file mode 100644
index b4f560c..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line1.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line1.gif
deleted file mode 100644
index b4f560c..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line1.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif
deleted file mode 100644
index bf32db2..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line1_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line2.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line2.gif
deleted file mode 100644
index 23b2ce3..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line2.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif
deleted file mode 100644
index 6ec17b5..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line2_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line3.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line3.gif
deleted file mode 100644
index 43152c5..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line3.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif
deleted file mode 100644
index 74a874c..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line3_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line4.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line4.gif
deleted file mode 100644
index 907fe7a..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line4.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif
deleted file mode 100644
index 5c7e162..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/line4_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/lock.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/lock.gif
deleted file mode 100644
index 67456b1..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/lock.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus.gif
deleted file mode 100644
index caa3f57..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus1.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus1.gif
deleted file mode 100644
index 2ab1070..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus1.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus2.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus2.gif
deleted file mode 100644
index 036e5b3..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus2.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif
deleted file mode 100644
index b4672bf..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus2_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus3.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus3.gif
deleted file mode 100644
index 3242cca..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus3.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif
deleted file mode 100644
index 8c279e0..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus3_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus4.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus4.gif
deleted file mode 100644
index 1c7c0a7..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus4.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif
deleted file mode 100644
index 70992fe..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus4_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus5.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus5.gif
deleted file mode 100644
index 031c160..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus5.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif
deleted file mode 100644
index 47e25cd..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/minus5_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus.gif
deleted file mode 100644
index 019cfbd..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus1.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus1.gif
deleted file mode 100644
index 34dee94..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus1.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus2.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus2.gif
deleted file mode 100644
index d57afa9..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus2.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif
deleted file mode 100644
index fde3a58..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus2_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus3.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus3.gif
deleted file mode 100644
index 2b6546b..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus3.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif
deleted file mode 100644
index 863d34c..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus3_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus4.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus4.gif
deleted file mode 100644
index a4fe8c0..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus4.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif
deleted file mode 100644
index 635e6f6..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus4_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus5.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus5.gif
deleted file mode 100644
index 88c35a4..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus5.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif
deleted file mode 100644
index 2ae5444..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/plus5_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/radio_off.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/radio_off.gif
deleted file mode 100644
index a050afd..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/radio_off.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/imgs/dhxtree_skyblue/radio_on.gif b/pywrap/static/codebase/imgs/dhxtree_skyblue/radio_on.gif
deleted file mode 100644
index 4d594b5..0000000
--- a/pywrap/static/codebase/imgs/dhxtree_skyblue/radio_on.gif
+++ /dev/null
Binary files differ
diff --git a/pywrap/static/codebase/thirdparty/excanvas/AUTHORS b/pywrap/static/codebase/thirdparty/excanvas/AUTHORS
deleted file mode 100644
index 90decb3..0000000
--- a/pywrap/static/codebase/thirdparty/excanvas/AUTHORS
+++ /dev/null
@@ -1,10 +0,0 @@
-ExplorerCanvas
-
-Google Open Source:
- <http://code.google.com>
- <opensource@google.com>
-
-Developers:
- Emil A Eklund <emil@eae.net>
- Erik Arvidsson <erik@eae.net>
- Glen Murphy <glen@glenmurphy.com> \ No newline at end of file
diff --git a/pywrap/static/codebase/thirdparty/excanvas/COPYING b/pywrap/static/codebase/thirdparty/excanvas/COPYING
deleted file mode 100644
index 75b5248..0000000
--- a/pywrap/static/codebase/thirdparty/excanvas/COPYING
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/pywrap/static/codebase/thirdparty/excanvas/README b/pywrap/static/codebase/thirdparty/excanvas/README
deleted file mode 100644
index eb7c42f..0000000
--- a/pywrap/static/codebase/thirdparty/excanvas/README
+++ /dev/null
@@ -1,22 +0,0 @@
-ExplorerCanvas
-Copyright 2006 Google Inc.
-
--------------------------------------------------------------------------------
-DESCRIPTION
-
-Firefox, Safari and Opera 9 support the canvas tag to allow 2D command-based
-drawing operations. ExplorerCanvas brings the same functionality to Internet
-Explorer; web developers only need to include a single script tag in their
-existing canvas webpages to enable this support.
-
-
--------------------------------------------------------------------------------
-INSTALLATION
-
-Include the ExplorerCanvas tag in the same directory as your HTML files, and
-add the following code to your page, preferably in the <head> tag.
-
-<!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]-->
-
-If you run into trouble, please look at the included example code to see how
-to best implement this \ No newline at end of file
diff --git a/pywrap/static/codebase/thirdparty/excanvas/excanvas.js b/pywrap/static/codebase/thirdparty/excanvas/excanvas.js
deleted file mode 100644
index 66310a8..0000000
--- a/pywrap/static/codebase/thirdparty/excanvas/excanvas.js
+++ /dev/null
@@ -1,927 +0,0 @@
-// Copyright 2006 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-// Known Issues:
-//
-// * Patterns are not implemented.
-// * Radial gradient are not implemented. The VML version of these look very
-// different from the canvas one.
-// * Clipping paths are not implemented.
-// * Coordsize. The width and height attribute have higher priority than the
-// width and height style values which isn't correct.
-// * Painting mode isn't implemented.
-// * Canvas width/height should is using content-box by default. IE in
-// Quirks mode will draw the canvas using border-box. Either change your
-// doctype to HTML5
-// (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype)
-// or use Box Sizing Behavior from WebFX
-// (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html)
-// * Non uniform scaling does not correctly scale strokes.
-// * Optimize. There is always room for speed improvements.
-
-// Only add this code if we do not already have a canvas implementation
-if (!document.createElement('canvas').getContext) {
-
-(function() {
-
- // alias some functions to make (compiled) code shorter
- var m = Math;
- var mr = m.round;
- var ms = m.sin;
- var mc = m.cos;
- var abs = m.abs;
- var sqrt = m.sqrt;
-
- // this is used for sub pixel precision
- var Z = 10;
- var Z2 = Z / 2;
-
- /**
- * This funtion is assigned to the <canvas> elements as element.getContext().
- * @this {HTMLElement}
- * @return {CanvasRenderingContext2D_}
- */
- function getContext() {
- return this.context_ ||
- (this.context_ = new CanvasRenderingContext2D_(this));
- }
-
- var slice = Array.prototype.slice;
-
- /**
- * Binds a function to an object. The returned function will always use the
- * passed in {@code obj} as {@code this}.
- *
- * Example:
- *
- * g = bind(f, obj, a, b)
- * g(c, d) // will do f.call(obj, a, b, c, d)
- *
- * @param {Function} f The function to bind the object to
- * @param {Object} obj The object that should act as this when the function
- * is called
- * @param {*} var_args Rest arguments that will be used as the initial
- * arguments when the function is called
- * @return {Function} A new function that has bound this
- */
- function bind(f, obj, var_args) {
- var a = slice.call(arguments, 2);
- return function() {
- return f.apply(obj, a.concat(slice.call(arguments)));
- };
- }
-
- var G_vmlCanvasManager_ = {
- init: function(opt_doc) {
- if (/MSIE/.test(navigator.userAgent) && !window.opera) {
- var doc = opt_doc || document;
- // Create a dummy element so that IE will allow canvas elements to be
- // recognized.
- doc.createElement('canvas');
- doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
- }
- },
-
- init_: function(doc) {
- // create xmlns
- if (!doc.namespaces['g_vml_']) {
- doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml',
- '#default#VML');
-
- }
- if (!doc.namespaces['g_o_']) {
- doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office',
- '#default#VML');
- }
-
- // Setup default CSS. Only add one style sheet per document
- if (!doc.styleSheets['ex_canvas_']) {
- var ss = doc.createStyleSheet();
- ss.owningElement.id = 'ex_canvas_';
- ss.cssText = 'canvas{display:inline-block;overflow:hidden;' +
- // default size is 300x150 in Gecko and Opera
- 'text-align:left;width:300px;height:150px}' +
- 'g_vml_\\:*{behavior:url(#default#VML)}' +
- 'g_o_\\:*{behavior:url(#default#VML)}';
-
- }
-
- // find all canvas elements
- var els = doc.getElementsByTagName('canvas');
- for (var i = 0; i < els.length; i++) {
- this.initElement(els[i]);
- }
- },
-
- /**
- * Public initializes a canvas element so that it can be used as canvas
- * element from now on. This is called automatically before the page is
- * loaded but if you are creating elements using createElement you need to
- * make sure this is called on the element.
- * @param {HTMLElement} el The canvas element to initialize.
- * @return {HTMLElement} the element that was created.
- */
- initElement: function(el) {
- if (!el.getContext) {
-
- el.getContext = getContext;
-
- // Remove fallback content. There is no way to hide text nodes so we
- // just remove all childNodes. We could hide all elements and remove
- // text nodes but who really cares about the fallback content.
- el.innerHTML = '';
-
- // do not use inline function because that will leak memory
- el.attachEvent('onpropertychange', onPropertyChange);
- el.attachEvent('onresize', onResize);
-
- var attrs = el.attributes;
- if (attrs.width && attrs.width.specified) {
- // TODO: use runtimeStyle and coordsize
- // el.getContext().setWidth_(attrs.width.nodeValue);
- el.style.width = attrs.width.nodeValue + 'px';
- } else {
- el.width = el.clientWidth;
- }
- if (attrs.height && attrs.height.specified) {
- // TODO: use runtimeStyle and coordsize
- // el.getContext().setHeight_(attrs.height.nodeValue);
- el.style.height = attrs.height.nodeValue + 'px';
- } else {
- el.height = el.clientHeight;
- }
- //el.getContext().setCoordsize_()
- }
- return el;
- }
- };
-
- function onPropertyChange(e) {
- var el = e.srcElement;
-
- switch (e.propertyName) {
- case 'width':
- el.style.width = el.attributes.width.nodeValue + 'px';
- el.getContext().clearRect();
- break;
- case 'height':
- el.style.height = el.attributes.height.nodeValue + 'px';
- el.getContext().clearRect();
- break;
- }
- }
-
- function onResize(e) {
- var el = e.srcElement;
- if (el.firstChild) {
- el.firstChild.style.width = el.clientWidth + 'px';
- el.firstChild.style.height = el.clientHeight + 'px';
- }
- }
-
- G_vmlCanvasManager_.init();
-
- // precompute "00" to "FF"
- var dec2hex = [];
- for (var i = 0; i < 16; i++) {
- for (var j = 0; j < 16; j++) {
- dec2hex[i * 16 + j] = i.toString(16) + j.toString(16);
- }
- }
-
- function createMatrixIdentity() {
- return [
- [1, 0, 0],
- [0, 1, 0],
- [0, 0, 1]
- ];
- }
-
- function matrixMultiply(m1, m2) {
- var result = createMatrixIdentity();
-
- for (var x = 0; x < 3; x++) {
- for (var y = 0; y < 3; y++) {
- var sum = 0;
-
- for (var z = 0; z < 3; z++) {
- sum += m1[x][z] * m2[z][y];
- }
-
- result[x][y] = sum;
- }
- }
- return result;
- }
-
- function copyState(o1, o2) {
- o2.fillStyle = o1.fillStyle;
- o2.lineCap = o1.lineCap;
- o2.lineJoin = o1.lineJoin;
- o2.lineWidth = o1.lineWidth;
- o2.miterLimit = o1.miterLimit;
- o2.shadowBlur = o1.shadowBlur;
- o2.shadowColor = o1.shadowColor;
- o2.shadowOffsetX = o1.shadowOffsetX;
- o2.shadowOffsetY = o1.shadowOffsetY;
- o2.strokeStyle = o1.strokeStyle;
- o2.globalAlpha = o1.globalAlpha;
- o2.arcScaleX_ = o1.arcScaleX_;
- o2.arcScaleY_ = o1.arcScaleY_;
- o2.lineScale_ = o1.lineScale_;
- }
-
- function processStyle(styleString) {
- var str, alpha = 1;
-
- styleString = String(styleString);
- if (styleString.substring(0, 3) == 'rgb') {
- var start = styleString.indexOf('(', 3);
- var end = styleString.indexOf(')', start + 1);
- var guts = styleString.substring(start + 1, end).split(',');
-
- str = '#';
- for (var i = 0; i < 3; i++) {
- str += dec2hex[Number(guts[i])];
- }
-
- if (guts.length == 4 && styleString.substr(3, 1) == 'a') {
- alpha = guts[3];
- }
- } else {
- str = styleString;
- }
-
- return {color: str, alpha: alpha};
- }
-
- function processLineCap(lineCap) {
- switch (lineCap) {
- case 'butt':
- return 'flat';
- case 'round':
- return 'round';
- case 'square':
- default:
- return 'square';
- }
- }
-
- /**
- * This class implements CanvasRenderingContext2D interface as described by
- * the WHATWG.
- * @param {HTMLElement} surfaceElement The element that the 2D context should
- * be associated with
- */
- function CanvasRenderingContext2D_(surfaceElement) {
- this.m_ = createMatrixIdentity();
-
- this.mStack_ = [];
- this.aStack_ = [];
- this.currentPath_ = [];
-
- // Canvas context properties
- this.strokeStyle = '#000';
- this.fillStyle = '#000';
-
- this.lineWidth = 1;
- this.lineJoin = 'miter';
- this.lineCap = 'butt';
- this.miterLimit = Z * 1;
- this.globalAlpha = 1;
- this.canvas = surfaceElement;
-
- var el = surfaceElement.ownerDocument.createElement('div');
- el.style.width = surfaceElement.clientWidth + 'px';
- el.style.height = surfaceElement.clientHeight + 'px';
- el.style.overflow = 'hidden';
- el.style.position = 'absolute';
- surfaceElement.appendChild(el);
-
- this.element_ = el;
- this.arcScaleX_ = 1;
- this.arcScaleY_ = 1;
- this.lineScale_ = 1;
- }
-
- var contextPrototype = CanvasRenderingContext2D_.prototype;
- contextPrototype.clearRect = function() {
- this.element_.innerHTML = '';
- };
-
- contextPrototype.beginPath = function() {
- // TODO: Branch current matrix so that save/restore has no effect
- // as per safari docs.
- this.currentPath_ = [];
- };
-
- contextPrototype.moveTo = function(aX, aY) {
- var p = this.getCoords_(aX, aY);
- this.currentPath_.push({type: 'moveTo', x: p.x, y: p.y});
- this.currentX_ = p.x;
- this.currentY_ = p.y;
- };
-
- contextPrototype.lineTo = function(aX, aY) {
- var p = this.getCoords_(aX, aY);
- this.currentPath_.push({type: 'lineTo', x: p.x, y: p.y});
-
- this.currentX_ = p.x;
- this.currentY_ = p.y;
- };
-
- contextPrototype.bezierCurveTo = function(aCP1x, aCP1y,
- aCP2x, aCP2y,
- aX, aY) {
- var p = this.getCoords_(aX, aY);
- var cp1 = this.getCoords_(aCP1x, aCP1y);
- var cp2 = this.getCoords_(aCP2x, aCP2y);
- bezierCurveTo(this, cp1, cp2, p);
- };
-
- // Helper function that takes the already fixed cordinates.
- function bezierCurveTo(self, cp1, cp2, p) {
- self.currentPath_.push({
- type: 'bezierCurveTo',
- cp1x: cp1.x,
- cp1y: cp1.y,
- cp2x: cp2.x,
- cp2y: cp2.y,
- x: p.x,
- y: p.y
- });
- self.currentX_ = p.x;
- self.currentY_ = p.y;
- }
-
- contextPrototype.quadraticCurveTo = function(aCPx, aCPy, aX, aY) {
- // the following is lifted almost directly from
- // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes
-
- var cp = this.getCoords_(aCPx, aCPy);
- var p = this.getCoords_(aX, aY);
-
- var cp1 = {
- x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_),
- y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_)
- };
- var cp2 = {
- x: cp1.x + (p.x - this.currentX_) / 3.0,
- y: cp1.y + (p.y - this.currentY_) / 3.0
- };
-
- bezierCurveTo(this, cp1, cp2, p);
- };
-
- contextPrototype.arc = function(aX, aY, aRadius,
- aStartAngle, aEndAngle, aClockwise) {
- aRadius *= Z;
- var arcType = aClockwise ? 'at' : 'wa';
-
- var xStart = aX + mc(aStartAngle) * aRadius - Z2;
- var yStart = aY + ms(aStartAngle) * aRadius - Z2;
-
- var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
- var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
-
- // IE won't render arches drawn counter clockwise if xStart == xEnd.
- if (xStart == xEnd && !aClockwise) {
- xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something
- // that can be represented in binary
- }
-
- var p = this.getCoords_(aX, aY);
- var pStart = this.getCoords_(xStart, yStart);
- var pEnd = this.getCoords_(xEnd, yEnd);
-
- this.currentPath_.push({type: arcType,
- x: p.x,
- y: p.y,
- radius: aRadius,
- xStart: pStart.x,
- yStart: pStart.y,
- xEnd: pEnd.x,
- yEnd: pEnd.y});
-
- };
-
- contextPrototype.rect = function(aX, aY, aWidth, aHeight) {
- this.moveTo(aX, aY);
- this.lineTo(aX + aWidth, aY);
- this.lineTo(aX + aWidth, aY + aHeight);
- this.lineTo(aX, aY + aHeight);
- this.closePath();
- };
-
- contextPrototype.strokeRect = function(aX, aY, aWidth, aHeight) {
- var oldPath = this.currentPath_;
- this.beginPath();
-
- this.moveTo(aX, aY);
- this.lineTo(aX + aWidth, aY);
- this.lineTo(aX + aWidth, aY + aHeight);
- this.lineTo(aX, aY + aHeight);
- this.closePath();
- this.stroke();
-
- this.currentPath_ = oldPath;
- };
-
- contextPrototype.fillRect = function(aX, aY, aWidth, aHeight) {
- var oldPath = this.currentPath_;
- this.beginPath();
-
- this.moveTo(aX, aY);
- this.lineTo(aX + aWidth, aY);
- this.lineTo(aX + aWidth, aY + aHeight);
- this.lineTo(aX, aY + aHeight);
- this.closePath();
- this.fill();
-
- this.currentPath_ = oldPath;
- };
-
- contextPrototype.createLinearGradient = function(aX0, aY0, aX1, aY1) {
- var gradient = new CanvasGradient_('gradient');
- gradient.x0_ = aX0;
- gradient.y0_ = aY0;
- gradient.x1_ = aX1;
- gradient.y1_ = aY1;
- return gradient;
- };
-
- contextPrototype.createRadialGradient = function(aX0, aY0, aR0,
- aX1, aY1, aR1) {
- var gradient = new CanvasGradient_('gradientradial');
- gradient.x0_ = aX0;
- gradient.y0_ = aY0;
- gradient.r0_ = aR0;
- gradient.x1_ = aX1;
- gradient.y1_ = aY1;
- gradient.r1_ = aR1;
- return gradient;
- };
-
- contextPrototype.drawImage = function(image, var_args) {
- var dx, dy, dw, dh, sx, sy, sw, sh;
-
- // to find the original width we overide the width and height
- var oldRuntimeWidth = image.runtimeStyle.width;
- var oldRuntimeHeight = image.runtimeStyle.height;
- image.runtimeStyle.width = 'auto';
- image.runtimeStyle.height = 'auto';
-
- // get the original size
- var w = image.width;
- var h = image.height;
-
- // and remove overides
- image.runtimeStyle.width = oldRuntimeWidth;
- image.runtimeStyle.height = oldRuntimeHeight;
-
- if (arguments.length == 3) {
- dx = arguments[1];
- dy = arguments[2];
- sx = sy = 0;
- sw = dw = w;
- sh = dh = h;
- } else if (arguments.length == 5) {
- dx = arguments[1];
- dy = arguments[2];
- dw = arguments[3];
- dh = arguments[4];
- sx = sy = 0;
- sw = w;
- sh = h;
- } else if (arguments.length == 9) {
- sx = arguments[1];
- sy = arguments[2];
- sw = arguments[3];
- sh = arguments[4];
- dx = arguments[5];
- dy = arguments[6];
- dw = arguments[7];
- dh = arguments[8];
- } else {
- throw Error('Invalid number of arguments');
- }
-
- var d = this.getCoords_(dx, dy);
-
- var w2 = sw / 2;
- var h2 = sh / 2;
-
- var vmlStr = [];
-
- var W = 10;
- var H = 10;
-
- // For some reason that I've now forgotten, using divs didn't work
- vmlStr.push(' <g_vml_:group',
- ' coordsize="', Z * W, ',', Z * H, '"',
- ' coordorigin="0,0"' ,
- ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
-
- // If filters are necessary (rotation exists), create them
- // filters are bog-slow, so only create them if abbsolutely necessary
- // The following check doesn't account for skews (which don't exist
- // in the canvas spec (yet) anyway.
-
- if (this.m_[0][0] != 1 || this.m_[0][1]) {
- var filter = [];
-
- // Note the 12/21 reversal
- filter.push('M11=', this.m_[0][0], ',',
- 'M12=', this.m_[1][0], ',',
- 'M21=', this.m_[0][1], ',',
- 'M22=', this.m_[1][1], ',',
- 'Dx=', mr(d.x / Z), ',',
- 'Dy=', mr(d.y / Z), '');
-
- // Bounding box calculation (need to minimize displayed area so that
- // filters don't waste time on unused pixels.
- var max = d;
- var c2 = this.getCoords_(dx + dw, dy);
- var c3 = this.getCoords_(dx, dy + dh);
- var c4 = this.getCoords_(dx + dw, dy + dh);
-
- max.x = m.max(max.x, c2.x, c3.x, c4.x);
- max.y = m.max(max.y, c2.y, c3.y, c4.y);
-
- vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z),
- 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(',
- filter.join(''), ", sizingmethod='clip');")
- } else {
- vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
- }
-
- vmlStr.push(' ">' ,
- '<g_vml_:image src="', image.src, '"',
- ' style="width:', Z * dw, 'px;',
- ' height:', Z * dh, 'px;"',
- ' cropleft="', sx / w, '"',
- ' croptop="', sy / h, '"',
- ' cropright="', (w - sx - sw) / w, '"',
- ' cropbottom="', (h - sy - sh) / h, '"',
- ' />',
- '</g_vml_:group>');
-
- this.element_.insertAdjacentHTML('BeforeEnd',
- vmlStr.join(''));
- };
-
- contextPrototype.stroke = function(aFill) {
- var lineStr = [];
- var lineOpen = false;
- var a = processStyle(aFill ? this.fillStyle : this.strokeStyle);
- var color = a.color;
- var opacity = a.alpha * this.globalAlpha;
-
- var W = 10;
- var H = 10;
-
- lineStr.push('<g_vml_:shape',
- ' filled="', !!aFill, '"',
- ' style="position:absolute;width:', W, 'px;height:', H, 'px;"',
- ' coordorigin="0 0" coordsize="', Z * W, ' ', Z * H, '"',
- ' stroked="', !aFill, '"',
- ' path="');
-
- var newSeq = false;
- var min = {x: null, y: null};
- var max = {x: null, y: null};
-
- for (var i = 0; i < this.currentPath_.length; i++) {
- var p = this.currentPath_[i];
- var c;
-
- switch (p.type) {
- case 'moveTo':
- c = p;
- lineStr.push(' m ', mr(p.x), ',', mr(p.y));
- break;
- case 'lineTo':
- lineStr.push(' l ', mr(p.x), ',', mr(p.y));
- break;
- case 'close':
- lineStr.push(' x ');
- p = null;
- break;
- case 'bezierCurveTo':
- lineStr.push(' c ',
- mr(p.cp1x), ',', mr(p.cp1y), ',',
- mr(p.cp2x), ',', mr(p.cp2y), ',',
- mr(p.x), ',', mr(p.y));
- break;
- case 'at':
- case 'wa':
- lineStr.push(' ', p.type, ' ',
- mr(p.x - this.arcScaleX_ * p.radius), ',',
- mr(p.y - this.arcScaleY_ * p.radius), ' ',
- mr(p.x + this.arcScaleX_ * p.radius), ',',
- mr(p.y + this.arcScaleY_ * p.radius), ' ',
- mr(p.xStart), ',', mr(p.yStart), ' ',
- mr(p.xEnd), ',', mr(p.yEnd));
- break;
- }
-
-
- // TODO: Following is broken for curves due to
- // move to proper paths.
-
- // Figure out dimensions so we can do gradient fills
- // properly
- if (p) {
- if (min.x == null || p.x < min.x) {
- min.x = p.x;
- }
- if (max.x == null || p.x > max.x) {
- max.x = p.x;
- }
- if (min.y == null || p.y < min.y) {
- min.y = p.y;
- }
- if (max.y == null || p.y > max.y) {
- max.y = p.y;
- }
- }
- }
- lineStr.push(' ">');
-
- if (!aFill) {
- var lineWidth = this.lineScale_ * this.lineWidth;
-
- // VML cannot correctly render a line if the width is less than 1px.
- // In that case, we dilute the color to make the line look thinner.
- if (lineWidth < 1) {
- opacity *= lineWidth;
- }
-
- lineStr.push(
- '<g_vml_:stroke',
- ' opacity="', opacity, '"',
- ' joinstyle="', this.lineJoin, '"',
- ' miterlimit="', this.miterLimit, '"',
- ' endcap="', processLineCap(this.lineCap), '"',
- ' weight="', lineWidth, 'px"',
- ' color="', color, '" />'
- );
- } else if (typeof this.fillStyle == 'object') {
- var fillStyle = this.fillStyle;
- var angle = 0;
- var focus = {x: 0, y: 0};
-
- // additional offset
- var shift = 0;
- // scale factor for offset
- var expansion = 1;
-
- if (fillStyle.type_ == 'gradient') {
- var x0 = fillStyle.x0_ / this.arcScaleX_;
- var y0 = fillStyle.y0_ / this.arcScaleY_;
- var x1 = fillStyle.x1_ / this.arcScaleX_;
- var y1 = fillStyle.y1_ / this.arcScaleY_;
- var p0 = this.getCoords_(x0, y0);
- var p1 = this.getCoords_(x1, y1);
- var dx = p1.x - p0.x;
- var dy = p1.y - p0.y;
- angle = Math.atan2(dx, dy) * 180 / Math.PI;
-
- // The angle should be a non-negative number.
- if (angle < 0) {
- angle += 360;
- }
-
- // Very small angles produce an unexpected result because they are
- // converted to a scientific notation string.
- if (angle < 1e-6) {
- angle = 0;
- }
- } else {
- var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_);
- var width = max.x - min.x;
- var height = max.y - min.y;
- focus = {
- x: (p0.x - min.x) / width,
- y: (p0.y - min.y) / height
- };
-
- width /= this.arcScaleX_ * Z;
- height /= this.arcScaleY_ * Z;
- var dimension = m.max(width, height);
- shift = 2 * fillStyle.r0_ / dimension;
- expansion = 2 * fillStyle.r1_ / dimension - shift;
- }
-
- // We need to sort the color stops in ascending order by offset,
- // otherwise IE won't interpret it correctly.
- var stops = fillStyle.colors_;
- stops.sort(function(cs1, cs2) {
- return cs1.offset - cs2.offset;
- });
-
- var length = stops.length;
- var color1 = stops[0].color;
- var color2 = stops[length - 1].color;
- var opacity1 = stops[0].alpha * this.globalAlpha;
- var opacity2 = stops[length - 1].alpha * this.globalAlpha;
-
- var colors = [];
- for (var i = 0; i < length; i++) {
- var stop = stops[i];
- colors.push(stop.offset * expansion + shift + ' ' + stop.color);
- }
-
- // When colors attribute is used, the meanings of opacity and o:opacity2
- // are reversed.
- lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"',
- ' method="none" focus="100%"',
- ' color="', color1, '"',
- ' color2="', color2, '"',
- ' colors="', colors.join(','), '"',
- ' opacity="', opacity2, '"',
- ' g_o_:opacity2="', opacity1, '"',
- ' angle="', angle, '"',
- ' focusposition="', focus.x, ',', focus.y, '" />');
- } else {
- lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity,
- '" />');
- }
-
- lineStr.push('</g_vml_:shape>');
-
- this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
- };
-
- contextPrototype.fill = function() {
- this.stroke(true);
- }
-
- contextPrototype.closePath = function() {
- this.currentPath_.push({type: 'close'});
- };
-
- /**
- * @private
- */
- contextPrototype.getCoords_ = function(aX, aY) {
- var m = this.m_;
- return {
- x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
- y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
- }
- };
-
- contextPrototype.save = function() {
- var o = {};
- copyState(this, o);
- this.aStack_.push(o);
- this.mStack_.push(this.m_);
- this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
- };
-
- contextPrototype.restore = function() {
- copyState(this.aStack_.pop(), this);
- this.m_ = this.mStack_.pop();
- };
-
- function matrixIsFinite(m) {
- for (var j = 0; j < 3; j++) {
- for (var k = 0; k < 2; k++) {
- if (!isFinite(m[j][k]) || isNaN(m[j][k])) {
- return false;
- }
- }
- }
- return true;
- }
-
- function setM(ctx, m, updateLineScale) {
- if (!matrixIsFinite(m)) {
- return;
- }
- ctx.m_ = m;
-
- if (updateLineScale) {
- // Get the line scale.
- // Determinant of this.m_ means how much the area is enlarged by the
- // transformation. So its square root can be used as a scale factor
- // for width.
- var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
- ctx.lineScale_ = sqrt(abs(det));
- }
- }
-
- contextPrototype.translate = function(aX, aY) {
- var m1 = [
- [1, 0, 0],
- [0, 1, 0],
- [aX, aY, 1]
- ];
-
- setM(this, matrixMultiply(m1, this.m_), false);
- };
-
- contextPrototype.rotate = function(aRot) {
- var c = mc(aRot);
- var s = ms(aRot);
-
- var m1 = [
- [c, s, 0],
- [-s, c, 0],
- [0, 0, 1]
- ];
-
- setM(this, matrixMultiply(m1, this.m_), false);
- };
-
- contextPrototype.scale = function(aX, aY) {
- this.arcScaleX_ *= aX;
- this.arcScaleY_ *= aY;
- var m1 = [
- [aX, 0, 0],
- [0, aY, 0],
- [0, 0, 1]
- ];
-
- setM(this, matrixMultiply(m1, this.m_), true);
- };
-
- contextPrototype.transform = function(m11, m12, m21, m22, dx, dy) {
- var m1 = [
- [m11, m12, 0],
- [m21, m22, 0],
- [dx, dy, 1]
- ];
-
- setM(this, matrixMultiply(m1, this.m_), true);
- };
-
- contextPrototype.setTransform = function(m11, m12, m21, m22, dx, dy) {
- var m = [
- [m11, m12, 0],
- [m21, m22, 0],
- [dx, dy, 1]
- ];
-
- setM(this, m, true);
- };
-
- /******** STUBS ********/
- contextPrototype.clip = function() {
- // TODO: Implement
- };
-
- contextPrototype.arcTo = function() {
- // TODO: Implement
- };
-
- contextPrototype.createPattern = function() {
- return new CanvasPattern_;
- };
-
- // Gradient / Pattern Stubs
- function CanvasGradient_(aType) {
- this.type_ = aType;
- this.x0_ = 0;
- this.y0_ = 0;
- this.r0_ = 0;
- this.x1_ = 0;
- this.y1_ = 0;
- this.r1_ = 0;
- this.colors_ = [];
- }
-
- CanvasGradient_.prototype.addColorStop = function(aOffset, aColor) {
- aColor = processStyle(aColor);
- this.colors_.push({offset: aOffset,
- color: aColor.color,
- alpha: aColor.alpha});
- };
-
- function CanvasPattern_() {}
-
- // set up externs
- G_vmlCanvasManager = G_vmlCanvasManager_;
- CanvasRenderingContext2D = CanvasRenderingContext2D_;
- CanvasGradient = CanvasGradient_;
- CanvasPattern = CanvasPattern_;
-
-})();
-
-} // if
-
-if (dhtmlx && dhtmlx._modules)
- dhtmlx._modules["thirdparty/excanvas/excanvas.js"] = true; \ No newline at end of file
diff --git a/pywrap/static/jquery-2.2.1.js b/pywrap/static/jquery-2.2.1.js
deleted file mode 100644
index b7c491f..0000000
--- a/pywrap/static/jquery-2.2.1.js
+++ /dev/null
@@ -1,9831 +0,0 @@
-/*!
- * jQuery JavaScript Library v2.2.1
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2016-02-22T19:11Z
- */
-
-(function( global, factory ) {
-
- if ( typeof module === "object" && typeof module.exports === "object" ) {
- // For CommonJS and CommonJS-like environments where a proper `window`
- // is present, execute the factory and get jQuery.
- // For environments that do not have a `window` with a `document`
- // (such as Node.js), expose a factory as module.exports.
- // This accentuates the need for the creation of a real `window`.
- // e.g. var jQuery = require("jquery")(window);
- // See ticket #14549 for more info.
- module.exports = global.document ?
- factory( global, true ) :
- function( w ) {
- if ( !w.document ) {
- throw new Error( "jQuery requires a window with a document" );
- }
- return factory( w );
- };
- } else {
- factory( global );
- }
-
-// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Support: Firefox 18+
-// Can't be in strict mode, several libs including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-//"use strict";
-var arr = [];
-
-var document = window.document;
-
-var slice = arr.slice;
-
-var concat = arr.concat;
-
-var push = arr.push;
-
-var indexOf = arr.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var support = {};
-
-
-
-var
- version = "2.2.1",
-
- // Define a local copy of jQuery
- jQuery = function( selector, context ) {
-
- // The jQuery object is actually just the init constructor 'enhanced'
- // Need init if jQuery is called (just allow error to be thrown if not included)
- return new jQuery.fn.init( selector, context );
- },
-
- // Support: Android<4.1
- // Make sure we trim BOM and NBSP
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
- // Matches dashed string for camelizing
- rmsPrefix = /^-ms-/,
- rdashAlpha = /-([\da-z])/gi,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
- };
-
-jQuery.fn = jQuery.prototype = {
-
- // The current version of jQuery being used
- jquery: version,
-
- constructor: jQuery,
-
- // Start with an empty selector
- selector: "",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- toArray: function() {
- return slice.call( this );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num != null ?
-
- // Return just the one element from the set
- ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
-
- // Return all the elements in a clean array
- slice.call( this );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems ) {
-
- // Build a new jQuery matched element set
- var ret = jQuery.merge( this.constructor(), elems );
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
- ret.context = this.context;
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- each: function( callback ) {
- return jQuery.each( this, callback );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map( this, function( elem, i ) {
- return callback.call( elem, i, elem );
- } ) );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ) );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- eq: function( i ) {
- var len = this.length,
- j = +i + ( i < 0 ? len : 0 );
- return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
- },
-
- end: function() {
- return this.prevObject || this.constructor();
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: arr.sort,
- splice: arr.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[ 0 ] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
-
- // Skip the boolean and the target
- target = arguments[ i ] || {};
- i++;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
- target = {};
- }
-
- // Extend jQuery itself if only one argument is passed
- if ( i === length ) {
- target = this;
- i--;
- }
-
- for ( ; i < length; i++ ) {
-
- // Only deal with non-null/undefined values
- if ( ( options = arguments[ i ] ) != null ) {
-
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
- ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
-
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray( src ) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject( src ) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend( {
-
- // Unique for each copy of jQuery on the page
- expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
- // Assume jQuery is ready without the ready module
- isReady: true,
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- noop: function() {},
-
- isFunction: function( obj ) {
- return jQuery.type( obj ) === "function";
- },
-
- isArray: Array.isArray,
-
- isWindow: function( obj ) {
- return obj != null && obj === obj.window;
- },
-
- isNumeric: function( obj ) {
-
- // parseFloat NaNs numeric-cast false positives (null|true|false|"")
- // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
- // subtraction forces infinities to NaN
- // adding 1 corrects loss of precision from parseFloat (#15100)
- var realStringObj = obj && obj.toString();
- return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
- },
-
- isPlainObject: function( obj ) {
-
- // Not plain objects:
- // - Any object or value whose internal [[Class]] property is not "[object Object]"
- // - DOM nodes
- // - window
- if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- if ( obj.constructor &&
- !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
- return false;
- }
-
- // If the function hasn't returned already, we're confident that
- // |obj| is a plain object, created by {} or constructed with new Object
- return true;
- },
-
- isEmptyObject: function( obj ) {
- var name;
- for ( name in obj ) {
- return false;
- }
- return true;
- },
-
- type: function( obj ) {
- if ( obj == null ) {
- return obj + "";
- }
-
- // Support: Android<4.0, iOS<6 (functionish RegExp)
- return typeof obj === "object" || typeof obj === "function" ?
- class2type[ toString.call( obj ) ] || "object" :
- typeof obj;
- },
-
- // Evaluates a script in a global context
- globalEval: function( code ) {
- var script,
- indirect = eval;
-
- code = jQuery.trim( code );
-
- if ( code ) {
-
- // If the code includes a valid, prologue position
- // strict mode pragma, execute code by injecting a
- // script tag into the document.
- if ( code.indexOf( "use strict" ) === 1 ) {
- script = document.createElement( "script" );
- script.text = code;
- document.head.appendChild( script ).parentNode.removeChild( script );
- } else {
-
- // Otherwise, avoid the DOM node creation, insertion
- // and removal by using an indirect global eval
-
- indirect( code );
- }
- }
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Support: IE9-11+
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
- },
-
- each: function( obj, callback ) {
- var length, i = 0;
-
- if ( isArrayLike( obj ) ) {
- length = obj.length;
- for ( ; i < length; i++ ) {
- if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
- break;
- }
- }
- } else {
- for ( i in obj ) {
- if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
- break;
- }
- }
- }
-
- return obj;
- },
-
- // Support: Android<4.1
- trim: function( text ) {
- return text == null ?
- "" :
- ( text + "" ).replace( rtrim, "" );
- },
-
- // results is for internal usage only
- makeArray: function( arr, results ) {
- var ret = results || [];
-
- if ( arr != null ) {
- if ( isArrayLike( Object( arr ) ) ) {
- jQuery.merge( ret,
- typeof arr === "string" ?
- [ arr ] : arr
- );
- } else {
- push.call( ret, arr );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, arr, i ) {
- return arr == null ? -1 : indexOf.call( arr, elem, i );
- },
-
- merge: function( first, second ) {
- var len = +second.length,
- j = 0,
- i = first.length;
-
- for ( ; j < len; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, invert ) {
- var callbackInverse,
- matches = [],
- i = 0,
- length = elems.length,
- callbackExpect = !invert;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( ; i < length; i++ ) {
- callbackInverse = !callback( elems[ i ], i );
- if ( callbackInverse !== callbackExpect ) {
- matches.push( elems[ i ] );
- }
- }
-
- return matches;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var length, value,
- i = 0,
- ret = [];
-
- // Go through the array, translating each of the items to their new values
- if ( isArrayLike( elems ) ) {
- length = elems.length;
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret.push( value );
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( i in elems ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret.push( value );
- }
- }
- }
-
- // Flatten any nested arrays
- return concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- var tmp, args, proxy;
-
- if ( typeof context === "string" ) {
- tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- args = slice.call( arguments, 2 );
- proxy = function() {
- return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
- return proxy;
- },
-
- now: Date.now,
-
- // jQuery.support is not used in Core but other projects attach their
- // properties to it so it needs to exist.
- support: support
-} );
-
-// JSHint would error on this code due to the Symbol not being defined in ES5.
-// Defining this global in .jshintrc would create a danger of using the global
-// unguarded in another place, it seems safer to just disable JSHint for these
-// three lines.
-/* jshint ignore: start */
-if ( typeof Symbol === "function" ) {
- jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
-}
-/* jshint ignore: end */
-
-// Populate the class2type map
-jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
-function( i, name ) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-} );
-
-function isArrayLike( obj ) {
-
- // Support: iOS 8.2 (not reproducible in simulator)
- // `in` check used to prevent JIT error (gh-2145)
- // hasOwn isn't used here due to false negatives
- // regarding Nodelist length in IE
- var length = !!obj && "length" in obj && obj.length,
- type = jQuery.type( obj );
-
- if ( type === "function" || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- return type === "array" || length === 0 ||
- typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-var Sizzle =
-/*!
- * Sizzle CSS Selector Engine v2.2.1
- * http://sizzlejs.com/
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2015-10-17
- */
-(function( window ) {
-
-var i,
- support,
- Expr,
- getText,
- isXML,
- tokenize,
- compile,
- select,
- outermostContext,
- sortInput,
- hasDuplicate,
-
- // Local document vars
- setDocument,
- document,
- docElem,
- documentIsHTML,
- rbuggyQSA,
- rbuggyMatches,
- matches,
- contains,
-
- // Instance-specific data
- expando = "sizzle" + 1 * new Date(),
- preferredDoc = window.document,
- dirruns = 0,
- done = 0,
- classCache = createCache(),
- tokenCache = createCache(),
- compilerCache = createCache(),
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- }
- return 0;
- },
-
- // General-purpose constants
- MAX_NEGATIVE = 1 << 31,
-
- // Instance methods
- hasOwn = ({}).hasOwnProperty,
- arr = [],
- pop = arr.pop,
- push_native = arr.push,
- push = arr.push,
- slice = arr.slice,
- // Use a stripped-down indexOf as it's faster than native
- // http://jsperf.com/thor-indexof-vs-for/5
- indexOf = function( list, elem ) {
- var i = 0,
- len = list.length;
- for ( ; i < len; i++ ) {
- if ( list[i] === elem ) {
- return i;
- }
- }
- return -1;
- },
-
- booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
- // Regular expressions
-
- // http://www.w3.org/TR/css3-selectors/#whitespace
- whitespace = "[\\x20\\t\\r\\n\\f]",
-
- // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
- // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
- attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
- // Operator (capture 2)
- "*([*^$|!~]?=)" + whitespace +
- // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
- "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
- "*\\]",
-
- pseudos = ":(" + identifier + ")(?:\\((" +
- // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
- // 1. quoted (capture 3; capture 4 or capture 5)
- "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
- // 2. simple (capture 6)
- "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
- // 3. anything else (capture 2)
- ".*" +
- ")\\)|)",
-
- // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
- rwhitespace = new RegExp( whitespace + "+", "g" ),
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
- rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
- rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
- rpseudo = new RegExp( pseudos ),
- ridentifier = new RegExp( "^" + identifier + "$" ),
-
- matchExpr = {
- "ID": new RegExp( "^#(" + identifier + ")" ),
- "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
- "TAG": new RegExp( "^(" + identifier + "|[*])" ),
- "ATTR": new RegExp( "^" + attributes ),
- "PSEUDO": new RegExp( "^" + pseudos ),
- "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
- "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
- "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
- "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
- // For use in libraries implementing .is()
- // We use this for POS matching in `select`
- "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
- whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
- },
-
- rinputs = /^(?:input|select|textarea|button)$/i,
- rheader = /^h\d$/i,
-
- rnative = /^[^{]+\{\s*\[native \w/,
-
- // Easily-parseable/retrievable ID or TAG or CLASS selectors
- rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
- rsibling = /[+~]/,
- rescape = /'|\\/g,
-
- // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
- runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
- funescape = function( _, escaped, escapedWhitespace ) {
- var high = "0x" + escaped - 0x10000;
- // NaN means non-codepoint
- // Support: Firefox<24
- // Workaround erroneous numeric interpretation of +"0x"
- return high !== high || escapedWhitespace ?
- escaped :
- high < 0 ?
- // BMP codepoint
- String.fromCharCode( high + 0x10000 ) :
- // Supplemental Plane codepoint (surrogate pair)
- String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
- },
-
- // Used for iframes
- // See setDocument()
- // Removing the function wrapper causes a "Permission Denied"
- // error in IE
- unloadHandler = function() {
- setDocument();
- };
-
-// Optimize for push.apply( _, NodeList )
-try {
- push.apply(
- (arr = slice.call( preferredDoc.childNodes )),
- preferredDoc.childNodes
- );
- // Support: Android<4.0
- // Detect silently failing push.apply
- arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
- push = { apply: arr.length ?
-
- // Leverage slice if possible
- function( target, els ) {
- push_native.apply( target, slice.call(els) );
- } :
-
- // Support: IE<9
- // Otherwise append directly
- function( target, els ) {
- var j = target.length,
- i = 0;
- // Can't trust NodeList.length
- while ( (target[j++] = els[i++]) ) {}
- target.length = j - 1;
- }
- };
-}
-
-function Sizzle( selector, context, results, seed ) {
- var m, i, elem, nid, nidselect, match, groups, newSelector,
- newContext = context && context.ownerDocument,
-
- // nodeType defaults to 9, since context defaults to document
- nodeType = context ? context.nodeType : 9;
-
- results = results || [];
-
- // Return early from calls with invalid selector or context
- if ( typeof selector !== "string" || !selector ||
- nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
-
- return results;
- }
-
- // Try to shortcut find operations (as opposed to filters) in HTML documents
- if ( !seed ) {
-
- if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
- setDocument( context );
- }
- context = context || document;
-
- if ( documentIsHTML ) {
-
- // If the selector is sufficiently simple, try using a "get*By*" DOM method
- // (excepting DocumentFragment context, where the methods don't exist)
- if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
-
- // ID selector
- if ( (m = match[1]) ) {
-
- // Document context
- if ( nodeType === 9 ) {
- if ( (elem = context.getElementById( m )) ) {
-
- // Support: IE, Opera, Webkit
- // TODO: identify versions
- // getElementById can match elements by name instead of ID
- if ( elem.id === m ) {
- results.push( elem );
- return results;
- }
- } else {
- return results;
- }
-
- // Element context
- } else {
-
- // Support: IE, Opera, Webkit
- // TODO: identify versions
- // getElementById can match elements by name instead of ID
- if ( newContext && (elem = newContext.getElementById( m )) &&
- contains( context, elem ) &&
- elem.id === m ) {
-
- results.push( elem );
- return results;
- }
- }
-
- // Type selector
- } else if ( match[2] ) {
- push.apply( results, context.getElementsByTagName( selector ) );
- return results;
-
- // Class selector
- } else if ( (m = match[3]) && support.getElementsByClassName &&
- context.getElementsByClassName ) {
-
- push.apply( results, context.getElementsByClassName( m ) );
- return results;
- }
- }
-
- // Take advantage of querySelectorAll
- if ( support.qsa &&
- !compilerCache[ selector + " " ] &&
- (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-
- if ( nodeType !== 1 ) {
- newContext = context;
- newSelector = selector;
-
- // qSA looks outside Element context, which is not what we want
- // Thanks to Andrew Dupont for this workaround technique
- // Support: IE <=8
- // Exclude object elements
- } else if ( context.nodeName.toLowerCase() !== "object" ) {
-
- // Capture the context ID, setting it first if necessary
- if ( (nid = context.getAttribute( "id" )) ) {
- nid = nid.replace( rescape, "\\$&" );
- } else {
- context.setAttribute( "id", (nid = expando) );
- }
-
- // Prefix every selector in the list
- groups = tokenize( selector );
- i = groups.length;
- nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
- while ( i-- ) {
- groups[i] = nidselect + " " + toSelector( groups[i] );
- }
- newSelector = groups.join( "," );
-
- // Expand context for sibling selectors
- newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
- context;
- }
-
- if ( newSelector ) {
- try {
- push.apply( results,
- newContext.querySelectorAll( newSelector )
- );
- return results;
- } catch ( qsaError ) {
- } finally {
- if ( nid === expando ) {
- context.removeAttribute( "id" );
- }
- }
- }
- }
- }
- }
-
- // All others
- return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {function(string, object)} Returns the Object data after storing it on itself with
- * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- * deleting the oldest entry
- */
-function createCache() {
- var keys = [];
-
- function cache( key, value ) {
- // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
- if ( keys.push( key + " " ) > Expr.cacheLength ) {
- // Only keep the most recent entries
- delete cache[ keys.shift() ];
- }
- return (cache[ key + " " ] = value);
- }
- return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
- fn[ expando ] = true;
- return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
- var div = document.createElement("div");
-
- try {
- return !!fn( div );
- } catch (e) {
- return false;
- } finally {
- // Remove from its parent by default
- if ( div.parentNode ) {
- div.parentNode.removeChild( div );
- }
- // release memory in IE
- div = null;
- }
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
- var arr = attrs.split("|"),
- i = arr.length;
-
- while ( i-- ) {
- Expr.attrHandle[ arr[i] ] = handler;
- }
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
- var cur = b && a,
- diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
- ( ~b.sourceIndex || MAX_NEGATIVE ) -
- ( ~a.sourceIndex || MAX_NEGATIVE );
-
- // Use IE sourceIndex if available on both nodes
- if ( diff ) {
- return diff;
- }
-
- // Check if b follows a
- if ( cur ) {
- while ( (cur = cur.nextSibling) ) {
- if ( cur === b ) {
- return -1;
- }
- }
- }
-
- return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === type;
- };
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
- };
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
- argument = +argument;
- return markFunction(function( seed, matches ) {
- var j,
- matchIndexes = fn( [], seed.length, argument ),
- i = matchIndexes.length;
-
- // Match elements found at the specified indexes
- while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
- return context && typeof context.getElementsByTagName !== "undefined" && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
- var hasCompare, parent,
- doc = node ? node.ownerDocument || node : preferredDoc;
-
- // Return early if doc is invalid or already selected
- if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
- return document;
- }
-
- // Update global variables
- document = doc;
- docElem = document.documentElement;
- documentIsHTML = !isXML( document );
-
- // Support: IE 9-11, Edge
- // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
- if ( (parent = document.defaultView) && parent.top !== parent ) {
- // Support: IE 11
- if ( parent.addEventListener ) {
- parent.addEventListener( "unload", unloadHandler, false );
-
- // Support: IE 9 - 10 only
- } else if ( parent.attachEvent ) {
- parent.attachEvent( "onunload", unloadHandler );
- }
- }
-
- /* Attributes
- ---------------------------------------------------------------------- */
-
- // Support: IE<8
- // Verify that getAttribute really returns attributes and not properties
- // (excepting IE8 booleans)
- support.attributes = assert(function( div ) {
- div.className = "i";
- return !div.getAttribute("className");
- });
-
- /* getElement(s)By*
- ---------------------------------------------------------------------- */
-
- // Check if getElementsByTagName("*") returns only elements
- support.getElementsByTagName = assert(function( div ) {
- div.appendChild( document.createComment("") );
- return !div.getElementsByTagName("*").length;
- });
-
- // Support: IE<9
- support.getElementsByClassName = rnative.test( document.getElementsByClassName );
-
- // Support: IE<10
- // Check if getElementById returns elements by name
- // The broken getElementById methods don't pick up programatically-set names,
- // so use a roundabout getElementsByName test
- support.getById = assert(function( div ) {
- docElem.appendChild( div ).id = expando;
- return !document.getElementsByName || !document.getElementsByName( expando ).length;
- });
-
- // ID find and filter
- if ( support.getById ) {
- Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
- var m = context.getElementById( id );
- return m ? [ m ] : [];
- }
- };
- Expr.filter["ID"] = function( id ) {
- var attrId = id.replace( runescape, funescape );
- return function( elem ) {
- return elem.getAttribute("id") === attrId;
- };
- };
- } else {
- // Support: IE6/7
- // getElementById is not reliable as a find shortcut
- delete Expr.find["ID"];
-
- Expr.filter["ID"] = function( id ) {
- var attrId = id.replace( runescape, funescape );
- return function( elem ) {
- var node = typeof elem.getAttributeNode !== "undefined" &&
- elem.getAttributeNode("id");
- return node && node.value === attrId;
- };
- };
- }
-
- // Tag
- Expr.find["TAG"] = support.getElementsByTagName ?
- function( tag, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( tag );
-
- // DocumentFragment nodes don't have gEBTN
- } else if ( support.qsa ) {
- return context.querySelectorAll( tag );
- }
- } :
-
- function( tag, context ) {
- var elem,
- tmp = [],
- i = 0,
- // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
- results = context.getElementsByTagName( tag );
-
- // Filter out possible comments
- if ( tag === "*" ) {
- while ( (elem = results[i++]) ) {
- if ( elem.nodeType === 1 ) {
- tmp.push( elem );
- }
- }
-
- return tmp;
- }
- return results;
- };
-
- // Class
- Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
- if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
- return context.getElementsByClassName( className );
- }
- };
-
- /* QSA/matchesSelector
- ---------------------------------------------------------------------- */
-
- // QSA and matchesSelector support
-
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
- rbuggyMatches = [];
-
- // qSa(:focus) reports false when true (Chrome 21)
- // We allow this because of a bug in IE8/9 that throws an error
- // whenever `document.activeElement` is accessed on an iframe
- // So, we allow :focus to pass through QSA all the time to avoid the IE error
- // See http://bugs.jquery.com/ticket/13378
- rbuggyQSA = [];
-
- if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
- // Build QSA regex
- // Regex strategy adopted from Diego Perini
- assert(function( div ) {
- // Select is set to empty string on purpose
- // This is to test IE's treatment of not explicitly
- // setting a boolean content attribute,
- // since its presence should be enough
- // http://bugs.jquery.com/ticket/12359
- docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
- "<select id='" + expando + "-\r\\' msallowcapture=''>" +
- "<option selected=''></option></select>";
-
- // Support: IE8, Opera 11-12.16
- // Nothing should be selected when empty strings follow ^= or $= or *=
- // The test attribute must be unknown in Opera but "safe" for WinRT
- // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
- if ( div.querySelectorAll("[msallowcapture^='']").length ) {
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
- }
-
- // Support: IE8
- // Boolean attributes and "value" are not treated correctly
- if ( !div.querySelectorAll("[selected]").length ) {
- rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
- }
-
- // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
- if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
- rbuggyQSA.push("~=");
- }
-
- // Webkit/Opera - :checked should return selected option elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- // IE8 throws error here and will not see later tests
- if ( !div.querySelectorAll(":checked").length ) {
- rbuggyQSA.push(":checked");
- }
-
- // Support: Safari 8+, iOS 8+
- // https://bugs.webkit.org/show_bug.cgi?id=136851
- // In-page `selector#id sibing-combinator selector` fails
- if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
- rbuggyQSA.push(".#.+[+~]");
- }
- });
-
- assert(function( div ) {
- // Support: Windows 8 Native Apps
- // The type and name attributes are restricted during .innerHTML assignment
- var input = document.createElement("input");
- input.setAttribute( "type", "hidden" );
- div.appendChild( input ).setAttribute( "name", "D" );
-
- // Support: IE8
- // Enforce case-sensitivity of name attribute
- if ( div.querySelectorAll("[name=d]").length ) {
- rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
- }
-
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
- // IE8 throws error here and will not see later tests
- if ( !div.querySelectorAll(":enabled").length ) {
- rbuggyQSA.push( ":enabled", ":disabled" );
- }
-
- // Opera 10-11 does not throw on post-comma invalid pseudos
- div.querySelectorAll("*,:x");
- rbuggyQSA.push(",.*:");
- });
- }
-
- if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
- docElem.webkitMatchesSelector ||
- docElem.mozMatchesSelector ||
- docElem.oMatchesSelector ||
- docElem.msMatchesSelector) )) ) {
-
- assert(function( div ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9)
- support.disconnectedMatch = matches.call( div, "div" );
-
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( div, "[s!='']:x" );
- rbuggyMatches.push( "!=", pseudos );
- });
- }
-
- rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
- rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
- /* Contains
- ---------------------------------------------------------------------- */
- hasCompare = rnative.test( docElem.compareDocumentPosition );
-
- // Element contains another
- // Purposefully self-exclusive
- // As in, an element does not contain itself
- contains = hasCompare || rnative.test( docElem.contains ) ?
- function( a, b ) {
- var adown = a.nodeType === 9 ? a.documentElement : a,
- bup = b && b.parentNode;
- return a === bup || !!( bup && bup.nodeType === 1 && (
- adown.contains ?
- adown.contains( bup ) :
- a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
- ));
- } :
- function( a, b ) {
- if ( b ) {
- while ( (b = b.parentNode) ) {
- if ( b === a ) {
- return true;
- }
- }
- }
- return false;
- };
-
- /* Sorting
- ---------------------------------------------------------------------- */
-
- // Document order sorting
- sortOrder = hasCompare ?
- function( a, b ) {
-
- // Flag for duplicate removal
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- // Sort on method existence if only one input has compareDocumentPosition
- var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
- if ( compare ) {
- return compare;
- }
-
- // Calculate position if both inputs belong to the same document
- compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
- a.compareDocumentPosition( b ) :
-
- // Otherwise we know they are disconnected
- 1;
-
- // Disconnected nodes
- if ( compare & 1 ||
- (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
- // Choose the first element that is related to our preferred document
- if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
- return -1;
- }
- if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
- return 1;
- }
-
- // Maintain original order
- return sortInput ?
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
- 0;
- }
-
- return compare & 4 ? -1 : 1;
- } :
- function( a, b ) {
- // Exit early if the nodes are identical
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- var cur,
- i = 0,
- aup = a.parentNode,
- bup = b.parentNode,
- ap = [ a ],
- bp = [ b ];
-
- // Parentless nodes are either documents or disconnected
- if ( !aup || !bup ) {
- return a === document ? -1 :
- b === document ? 1 :
- aup ? -1 :
- bup ? 1 :
- sortInput ?
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
- 0;
-
- // If the nodes are siblings, we can do a quick check
- } else if ( aup === bup ) {
- return siblingCheck( a, b );
- }
-
- // Otherwise we need full lists of their ancestors for comparison
- cur = a;
- while ( (cur = cur.parentNode) ) {
- ap.unshift( cur );
- }
- cur = b;
- while ( (cur = cur.parentNode) ) {
- bp.unshift( cur );
- }
-
- // Walk down the tree looking for a discrepancy
- while ( ap[i] === bp[i] ) {
- i++;
- }
-
- return i ?
- // Do a sibling check if the nodes have a common ancestor
- siblingCheck( ap[i], bp[i] ) :
-
- // Otherwise nodes in our document sort first
- ap[i] === preferredDoc ? -1 :
- bp[i] === preferredDoc ? 1 :
- 0;
- };
-
- return document;
-};
-
-Sizzle.matches = function( expr, elements ) {
- return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- // Make sure that attribute selectors are quoted
- expr = expr.replace( rattributeQuotes, "='$1']" );
-
- if ( support.matchesSelector && documentIsHTML &&
- !compilerCache[ expr + " " ] &&
- ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
- ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
-
- try {
- var ret = matches.call( elem, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || support.disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9
- elem.document && elem.document.nodeType !== 11 ) {
- return ret;
- }
- } catch (e) {}
- }
-
- return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
- // Set document vars if needed
- if ( ( context.ownerDocument || context ) !== document ) {
- setDocument( context );
- }
- return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- var fn = Expr.attrHandle[ name.toLowerCase() ],
- // Don't get fooled by Object.prototype properties (jQuery #13807)
- val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
- fn( elem, name, !documentIsHTML ) :
- undefined;
-
- return val !== undefined ?
- val :
- support.attributes || !documentIsHTML ?
- elem.getAttribute( name ) :
- (val = elem.getAttributeNode(name)) && val.specified ?
- val.value :
- null;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
- var elem,
- duplicates = [],
- j = 0,
- i = 0;
-
- // Unless we *know* we can detect duplicates, assume their presence
- hasDuplicate = !support.detectDuplicates;
- sortInput = !support.sortStable && results.slice( 0 );
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- while ( (elem = results[i++]) ) {
- if ( elem === results[ i ] ) {
- j = duplicates.push( i );
- }
- }
- while ( j-- ) {
- results.splice( duplicates[ j ], 1 );
- }
- }
-
- // Clear input after sorting to release objects
- // See https://github.com/jquery/sizzle/pull/225
- sortInput = null;
-
- return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
- var node,
- ret = "",
- i = 0,
- nodeType = elem.nodeType;
-
- if ( !nodeType ) {
- // If no nodeType, this is expected to be an array
- while ( (node = elem[i++]) ) {
- // Do not traverse comment nodes
- ret += getText( node );
- }
- } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent for elements
- // innerText usage removed for consistency of new lines (jQuery #11153)
- if ( typeof elem.textContent === "string" ) {
- return elem.textContent;
- } else {
- // Traverse its children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- // Do not include comment or processing instruction nodes
-
- return ret;
-};
-
-Expr = Sizzle.selectors = {
-
- // Can be adjusted by the user
- cacheLength: 50,
-
- createPseudo: markFunction,
-
- match: matchExpr,
-
- attrHandle: {},
-
- find: {},
-
- relative: {
- ">": { dir: "parentNode", first: true },
- " ": { dir: "parentNode" },
- "+": { dir: "previousSibling", first: true },
- "~": { dir: "previousSibling" }
- },
-
- preFilter: {
- "ATTR": function( match ) {
- match[1] = match[1].replace( runescape, funescape );
-
- // Move the given value to match[3] whether quoted or unquoted
- match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
- }
-
- return match.slice( 0, 4 );
- },
-
- "CHILD": function( match ) {
- /* matches from matchExpr["CHILD"]
- 1 type (only|nth|...)
- 2 what (child|of-type)
- 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
- 4 xn-component of xn+y argument ([+-]?\d*n|)
- 5 sign of xn-component
- 6 x of xn-component
- 7 sign of y-component
- 8 y of y-component
- */
- match[1] = match[1].toLowerCase();
-
- if ( match[1].slice( 0, 3 ) === "nth" ) {
- // nth-* requires argument
- if ( !match[3] ) {
- Sizzle.error( match[0] );
- }
-
- // numeric x and y parameters for Expr.filter.CHILD
- // remember that false/true cast respectively to 0/1
- match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
- match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
- // other types prohibit arguments
- } else if ( match[3] ) {
- Sizzle.error( match[0] );
- }
-
- return match;
- },
-
- "PSEUDO": function( match ) {
- var excess,
- unquoted = !match[6] && match[2];
-
- if ( matchExpr["CHILD"].test( match[0] ) ) {
- return null;
- }
-
- // Accept quoted arguments as-is
- if ( match[3] ) {
- match[2] = match[4] || match[5] || "";
-
- // Strip excess characters from unquoted arguments
- } else if ( unquoted && rpseudo.test( unquoted ) &&
- // Get excess from tokenize (recursively)
- (excess = tokenize( unquoted, true )) &&
- // advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
- // excess is a negative index
- match[0] = match[0].slice( 0, excess );
- match[2] = unquoted.slice( 0, excess );
- }
-
- // Return only captures needed by the pseudo filter method (type and argument)
- return match.slice( 0, 3 );
- }
- },
-
- filter: {
-
- "TAG": function( nodeNameSelector ) {
- var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
- return nodeNameSelector === "*" ?
- function() { return true; } :
- function( elem ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
- };
- },
-
- "CLASS": function( className ) {
- var pattern = classCache[ className + " " ];
-
- return pattern ||
- (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
- classCache( className, function( elem ) {
- return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
- });
- },
-
- "ATTR": function( name, operator, check ) {
- return function( elem ) {
- var result = Sizzle.attr( elem, name );
-
- if ( result == null ) {
- return operator === "!=";
- }
- if ( !operator ) {
- return true;
- }
-
- result += "";
-
- return operator === "=" ? result === check :
- operator === "!=" ? result !== check :
- operator === "^=" ? check && result.indexOf( check ) === 0 :
- operator === "*=" ? check && result.indexOf( check ) > -1 :
- operator === "$=" ? check && result.slice( -check.length ) === check :
- operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
- operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
- false;
- };
- },
-
- "CHILD": function( type, what, argument, first, last ) {
- var simple = type.slice( 0, 3 ) !== "nth",
- forward = type.slice( -4 ) !== "last",
- ofType = what === "of-type";
-
- return first === 1 && last === 0 ?
-
- // Shortcut for :nth-*(n)
- function( elem ) {
- return !!elem.parentNode;
- } :
-
- function( elem, context, xml ) {
- var cache, uniqueCache, outerCache, node, nodeIndex, start,
- dir = simple !== forward ? "nextSibling" : "previousSibling",
- parent = elem.parentNode,
- name = ofType && elem.nodeName.toLowerCase(),
- useCache = !xml && !ofType,
- diff = false;
-
- if ( parent ) {
-
- // :(first|last|only)-(child|of-type)
- if ( simple ) {
- while ( dir ) {
- node = elem;
- while ( (node = node[ dir ]) ) {
- if ( ofType ?
- node.nodeName.toLowerCase() === name :
- node.nodeType === 1 ) {
-
- return false;
- }
- }
- // Reverse direction for :only-* (if we haven't yet done so)
- start = dir = type === "only" && !start && "nextSibling";
- }
- return true;
- }
-
- start = [ forward ? parent.firstChild : parent.lastChild ];
-
- // non-xml :nth-child(...) stores cache data on `parent`
- if ( forward && useCache ) {
-
- // Seek `elem` from a previously-cached index
-
- // ...in a gzip-friendly way
- node = parent;
- outerCache = node[ expando ] || (node[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
-
- cache = uniqueCache[ type ] || [];
- nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
- diff = nodeIndex && cache[ 2 ];
- node = nodeIndex && parent.childNodes[ nodeIndex ];
-
- while ( (node = ++nodeIndex && node && node[ dir ] ||
-
- // Fallback to seeking `elem` from the start
- (diff = nodeIndex = 0) || start.pop()) ) {
-
- // When found, cache indexes on `parent` and break
- if ( node.nodeType === 1 && ++diff && node === elem ) {
- uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
- break;
- }
- }
-
- } else {
- // Use previously-cached element index if available
- if ( useCache ) {
- // ...in a gzip-friendly way
- node = elem;
- outerCache = node[ expando ] || (node[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
-
- cache = uniqueCache[ type ] || [];
- nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
- diff = nodeIndex;
- }
-
- // xml :nth-child(...)
- // or :nth-last-child(...) or :nth(-last)?-of-type(...)
- if ( diff === false ) {
- // Use the same loop as above to seek `elem` from the start
- while ( (node = ++nodeIndex && node && node[ dir ] ||
- (diff = nodeIndex = 0) || start.pop()) ) {
-
- if ( ( ofType ?
- node.nodeName.toLowerCase() === name :
- node.nodeType === 1 ) &&
- ++diff ) {
-
- // Cache the index of each encountered element
- if ( useCache ) {
- outerCache = node[ expando ] || (node[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
-
- uniqueCache[ type ] = [ dirruns, diff ];
- }
-
- if ( node === elem ) {
- break;
- }
- }
- }
- }
- }
-
- // Incorporate the offset, then check against cycle size
- diff -= last;
- return diff === first || ( diff % first === 0 && diff / first >= 0 );
- }
- };
- },
-
- "PSEUDO": function( pseudo, argument ) {
- // pseudo-class names are case-insensitive
- // http://www.w3.org/TR/selectors/#pseudo-classes
- // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
- // Remember that setFilters inherits from pseudos
- var args,
- fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
- Sizzle.error( "unsupported pseudo: " + pseudo );
-
- // The user may use createPseudo to indicate that
- // arguments are needed to create the filter function
- // just as Sizzle does
- if ( fn[ expando ] ) {
- return fn( argument );
- }
-
- // But maintain support for old signatures
- if ( fn.length > 1 ) {
- args = [ pseudo, pseudo, "", argument ];
- return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
- var idx,
- matched = fn( seed, argument ),
- i = matched.length;
- while ( i-- ) {
- idx = indexOf( seed, matched[i] );
- seed[ idx ] = !( matches[ idx ] = matched[i] );
- }
- }) :
- function( elem ) {
- return fn( elem, 0, args );
- };
- }
-
- return fn;
- }
- },
-
- pseudos: {
- // Potentially complex pseudos
- "not": markFunction(function( selector ) {
- // Trim the selector passed to compile
- // to avoid treating leading and trailing
- // spaces as combinators
- var input = [],
- results = [],
- matcher = compile( selector.replace( rtrim, "$1" ) );
-
- return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
- var elem,
- unmatched = matcher( seed, null, xml, [] ),
- i = seed.length;
-
- // Match elements unmatched by `matcher`
- while ( i-- ) {
- if ( (elem = unmatched[i]) ) {
- seed[i] = !(matches[i] = elem);
- }
- }
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
- matcher( input, null, xml, results );
- // Don't keep the element (issue #299)
- input[0] = null;
- return !results.pop();
- };
- }),
-
- "has": markFunction(function( selector ) {
- return function( elem ) {
- return Sizzle( selector, elem ).length > 0;
- };
- }),
-
- "contains": markFunction(function( text ) {
- text = text.replace( runescape, funescape );
- return function( elem ) {
- return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
- };
- }),
-
- // "Whether an element is represented by a :lang() selector
- // is based solely on the element's language value
- // being equal to the identifier C,
- // or beginning with the identifier C immediately followed by "-".
- // The matching of C against the element's language value is performed case-insensitively.
- // The identifier C does not have to be a valid language name."
- // http://www.w3.org/TR/selectors/#lang-pseudo
- "lang": markFunction( function( lang ) {
- // lang value must be a valid identifier
- if ( !ridentifier.test(lang || "") ) {
- Sizzle.error( "unsupported lang: " + lang );
- }
- lang = lang.replace( runescape, funescape ).toLowerCase();
- return function( elem ) {
- var elemLang;
- do {
- if ( (elemLang = documentIsHTML ?
- elem.lang :
- elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
- elemLang = elemLang.toLowerCase();
- return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
- }
- } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
- return false;
- };
- }),
-
- // Miscellaneous
- "target": function( elem ) {
- var hash = window.location && window.location.hash;
- return hash && hash.slice( 1 ) === elem.id;
- },
-
- "root": function( elem ) {
- return elem === docElem;
- },
-
- "focus": function( elem ) {
- return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
- },
-
- // Boolean properties
- "enabled": function( elem ) {
- return elem.disabled === false;
- },
-
- "disabled": function( elem ) {
- return elem.disabled === true;
- },
-
- "checked": function( elem ) {
- // In CSS3, :checked should return both checked and selected elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- var nodeName = elem.nodeName.toLowerCase();
- return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
- },
-
- "selected": function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- // Contents
- "empty": function( elem ) {
- // http://www.w3.org/TR/selectors/#empty-pseudo
- // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
- // but not by others (comment: 8; processing instruction: 7; etc.)
- // nodeType < 6 works because attributes (2) do not appear as children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- if ( elem.nodeType < 6 ) {
- return false;
- }
- }
- return true;
- },
-
- "parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
- },
-
- // Element/input types
- "header": function( elem ) {
- return rheader.test( elem.nodeName );
- },
-
- "input": function( elem ) {
- return rinputs.test( elem.nodeName );
- },
-
- "button": function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === "button" || name === "button";
- },
-
- "text": function( elem ) {
- var attr;
- return elem.nodeName.toLowerCase() === "input" &&
- elem.type === "text" &&
-
- // Support: IE<8
- // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
- },
-
- // Position-in-collection
- "first": createPositionalPseudo(function() {
- return [ 0 ];
- }),
-
- "last": createPositionalPseudo(function( matchIndexes, length ) {
- return [ length - 1 ];
- }),
-
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ argument < 0 ? argument + length : argument ];
- }),
-
- "even": createPositionalPseudo(function( matchIndexes, length ) {
- var i = 0;
- for ( ; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "odd": createPositionalPseudo(function( matchIndexes, length ) {
- var i = 1;
- for ( ; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- var i = argument < 0 ? argument + length : argument;
- for ( ; --i >= 0; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- var i = argument < 0 ? argument + length : argument;
- for ( ; ++i < length; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- })
- }
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
- Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
- Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
- var matched, match, tokens, type,
- soFar, groups, preFilters,
- cached = tokenCache[ selector + " " ];
-
- if ( cached ) {
- return parseOnly ? 0 : cached.slice( 0 );
- }
-
- soFar = selector;
- groups = [];
- preFilters = Expr.preFilter;
-
- while ( soFar ) {
-
- // Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
- if ( match ) {
- // Don't consume trailing commas as valid
- soFar = soFar.slice( match[0].length ) || soFar;
- }
- groups.push( (tokens = []) );
- }
-
- matched = false;
-
- // Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
- matched = match.shift();
- tokens.push({
- value: matched,
- // Cast descendant combinators to space
- type: match[0].replace( rtrim, " " )
- });
- soFar = soFar.slice( matched.length );
- }
-
- // Filters
- for ( type in Expr.filter ) {
- if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
- (match = preFilters[ type ]( match ))) ) {
- matched = match.shift();
- tokens.push({
- value: matched,
- type: type,
- matches: match
- });
- soFar = soFar.slice( matched.length );
- }
- }
-
- if ( !matched ) {
- break;
- }
- }
-
- // Return the length of the invalid excess
- // if we're just parsing
- // Otherwise, throw an error or return tokens
- return parseOnly ?
- soFar.length :
- soFar ?
- Sizzle.error( selector ) :
- // Cache the tokens
- tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
- var i = 0,
- len = tokens.length,
- selector = "";
- for ( ; i < len; i++ ) {
- selector += tokens[i].value;
- }
- return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
- var dir = combinator.dir,
- checkNonElements = base && dir === "parentNode",
- doneName = done++;
-
- return combinator.first ?
- // Check against closest ancestor/preceding element
- function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- return matcher( elem, context, xml );
- }
- }
- } :
-
- // Check against all ancestor/preceding elements
- function( elem, context, xml ) {
- var oldCache, uniqueCache, outerCache,
- newCache = [ dirruns, doneName ];
-
- // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
- if ( xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- if ( matcher( elem, context, xml ) ) {
- return true;
- }
- }
- }
- } else {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- outerCache = elem[ expando ] || (elem[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
-
- if ( (oldCache = uniqueCache[ dir ]) &&
- oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
- // Assign to newCache so results back-propagate to previous elements
- return (newCache[ 2 ] = oldCache[ 2 ]);
- } else {
- // Reuse newcache so results back-propagate to previous elements
- uniqueCache[ dir ] = newCache;
-
- // A match means we're done; a fail means we have to keep checking
- if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
- return true;
- }
- }
- }
- }
- }
- };
-}
-
-function elementMatcher( matchers ) {
- return matchers.length > 1 ?
- function( elem, context, xml ) {
- var i = matchers.length;
- while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
- return false;
- }
- }
- return true;
- } :
- matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
- var i = 0,
- len = contexts.length;
- for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results );
- }
- return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
- var elem,
- newUnmatched = [],
- i = 0,
- len = unmatched.length,
- mapped = map != null;
-
- for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
- if ( !filter || filter( elem, context, xml ) ) {
- newUnmatched.push( elem );
- if ( mapped ) {
- map.push( i );
- }
- }
- }
- }
-
- return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
- if ( postFilter && !postFilter[ expando ] ) {
- postFilter = setMatcher( postFilter );
- }
- if ( postFinder && !postFinder[ expando ] ) {
- postFinder = setMatcher( postFinder, postSelector );
- }
- return markFunction(function( seed, results, context, xml ) {
- var temp, i, elem,
- preMap = [],
- postMap = [],
- preexisting = results.length,
-
- // Get initial elements from seed or context
- elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
- // Prefilter to get matcher input, preserving a map for seed-results synchronization
- matcherIn = preFilter && ( seed || !selector ) ?
- condense( elems, preMap, preFilter, context, xml ) :
- elems,
-
- matcherOut = matcher ?
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
- // ...intermediate processing is necessary
- [] :
-
- // ...otherwise use results directly
- results :
- matcherIn;
-
- // Find primary matches
- if ( matcher ) {
- matcher( matcherIn, matcherOut, context, xml );
- }
-
- // Apply postFilter
- if ( postFilter ) {
- temp = condense( matcherOut, postMap );
- postFilter( temp, [], context, xml );
-
- // Un-match failing elements by moving them back to matcherIn
- i = temp.length;
- while ( i-- ) {
- if ( (elem = temp[i]) ) {
- matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
- }
- }
- }
-
- if ( seed ) {
- if ( postFinder || preFilter ) {
- if ( postFinder ) {
- // Get the final matcherOut by condensing this intermediate into postFinder contexts
- temp = [];
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) ) {
- // Restore matcherIn since elem is not yet a final match
- temp.push( (matcherIn[i] = elem) );
- }
- }
- postFinder( null, (matcherOut = []), temp, xml );
- }
-
- // Move matched elements from seed to results to keep them synchronized
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) &&
- (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
-
- seed[temp] = !(results[temp] = elem);
- }
- }
- }
-
- // Add elements to results, through postFinder if defined
- } else {
- matcherOut = condense(
- matcherOut === results ?
- matcherOut.splice( preexisting, matcherOut.length ) :
- matcherOut
- );
- if ( postFinder ) {
- postFinder( null, results, matcherOut, xml );
- } else {
- push.apply( results, matcherOut );
- }
- }
- });
-}
-
-function matcherFromTokens( tokens ) {
- var checkContext, matcher, j,
- len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
- i = leadingRelative ? 1 : 0,
-
- // The foundational matcher ensures that elements are reachable from top-level context(s)
- matchContext = addCombinator( function( elem ) {
- return elem === checkContext;
- }, implicitRelative, true ),
- matchAnyContext = addCombinator( function( elem ) {
- return indexOf( checkContext, elem ) > -1;
- }, implicitRelative, true ),
- matchers = [ function( elem, context, xml ) {
- var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
- matchContext( elem, context, xml ) :
- matchAnyContext( elem, context, xml ) );
- // Avoid hanging onto element (issue #299)
- checkContext = null;
- return ret;
- } ];
-
- for ( ; i < len; i++ ) {
- if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
- matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
- } else {
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
- // Return special upon seeing a positional matcher
- if ( matcher[ expando ] ) {
- // Find the next relative operator (if any) for proper handling
- j = ++i;
- for ( ; j < len; j++ ) {
- if ( Expr.relative[ tokens[j].type ] ) {
- break;
- }
- }
- return setMatcher(
- i > 1 && elementMatcher( matchers ),
- i > 1 && toSelector(
- // If the preceding token was a descendant combinator, insert an implicit any-element `*`
- tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
- ).replace( rtrim, "$1" ),
- matcher,
- i < j && matcherFromTokens( tokens.slice( i, j ) ),
- j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
- j < len && toSelector( tokens )
- );
- }
- matchers.push( matcher );
- }
- }
-
- return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
- var bySet = setMatchers.length > 0,
- byElement = elementMatchers.length > 0,
- superMatcher = function( seed, context, xml, results, outermost ) {
- var elem, j, matcher,
- matchedCount = 0,
- i = "0",
- unmatched = seed && [],
- setMatched = [],
- contextBackup = outermostContext,
- // We must always have either seed elements or outermost context
- elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
- // Use integer dirruns iff this is the outermost matcher
- dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
- len = elems.length;
-
- if ( outermost ) {
- outermostContext = context === document || context || outermost;
- }
-
- // Add elements passing elementMatchers directly to results
- // Support: IE<9, Safari
- // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
- for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
- if ( byElement && elem ) {
- j = 0;
- if ( !context && elem.ownerDocument !== document ) {
- setDocument( elem );
- xml = !documentIsHTML;
- }
- while ( (matcher = elementMatchers[j++]) ) {
- if ( matcher( elem, context || document, xml) ) {
- results.push( elem );
- break;
- }
- }
- if ( outermost ) {
- dirruns = dirrunsUnique;
- }
- }
-
- // Track unmatched elements for set filters
- if ( bySet ) {
- // They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
- matchedCount--;
- }
-
- // Lengthen the array for every element, matched or not
- if ( seed ) {
- unmatched.push( elem );
- }
- }
- }
-
- // `i` is now the count of elements visited above, and adding it to `matchedCount`
- // makes the latter nonnegative.
- matchedCount += i;
-
- // Apply set filters to unmatched elements
- // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
- // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
- // no element matchers and no seed.
- // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
- // case, which will result in a "00" `matchedCount` that differs from `i` but is also
- // numerically zero.
- if ( bySet && i !== matchedCount ) {
- j = 0;
- while ( (matcher = setMatchers[j++]) ) {
- matcher( unmatched, setMatched, context, xml );
- }
-
- if ( seed ) {
- // Reintegrate element matches to eliminate the need for sorting
- if ( matchedCount > 0 ) {
- while ( i-- ) {
- if ( !(unmatched[i] || setMatched[i]) ) {
- setMatched[i] = pop.call( results );
- }
- }
- }
-
- // Discard index placeholder values to get only actual matches
- setMatched = condense( setMatched );
- }
-
- // Add matches to results
- push.apply( results, setMatched );
-
- // Seedless set matches succeeding multiple successful matchers stipulate sorting
- if ( outermost && !seed && setMatched.length > 0 &&
- ( matchedCount + setMatchers.length ) > 1 ) {
-
- Sizzle.uniqueSort( results );
- }
- }
-
- // Override manipulation of globals by nested matchers
- if ( outermost ) {
- dirruns = dirrunsUnique;
- outermostContext = contextBackup;
- }
-
- return unmatched;
- };
-
- return bySet ?
- markFunction( superMatcher ) :
- superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
- var i,
- setMatchers = [],
- elementMatchers = [],
- cached = compilerCache[ selector + " " ];
-
- if ( !cached ) {
- // Generate a function of recursive functions that can be used to check each element
- if ( !match ) {
- match = tokenize( selector );
- }
- i = match.length;
- while ( i-- ) {
- cached = matcherFromTokens( match[i] );
- if ( cached[ expando ] ) {
- setMatchers.push( cached );
- } else {
- elementMatchers.push( cached );
- }
- }
-
- // Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
- // Save selector and tokenization
- cached.selector = selector;
- }
- return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- * selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- * selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
- var i, tokens, token, type, find,
- compiled = typeof selector === "function" && selector,
- match = !seed && tokenize( (selector = compiled.selector || selector) );
-
- results = results || [];
-
- // Try to minimize operations if there is only one selector in the list and no seed
- // (the latter of which guarantees us context)
- if ( match.length === 1 ) {
-
- // Reduce context if the leading compound selector is an ID
- tokens = match[0] = match[0].slice( 0 );
- if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- support.getById && context.nodeType === 9 && documentIsHTML &&
- Expr.relative[ tokens[1].type ] ) {
-
- context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
- if ( !context ) {
- return results;
-
- // Precompiled matchers will still verify ancestry, so step up a level
- } else if ( compiled ) {
- context = context.parentNode;
- }
-
- selector = selector.slice( tokens.shift().value.length );
- }
-
- // Fetch a seed set for right-to-left matching
- i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
- while ( i-- ) {
- token = tokens[i];
-
- // Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
- break;
- }
- if ( (find = Expr.find[ type ]) ) {
- // Search, expanding context for leading sibling combinators
- if ( (seed = find(
- token.matches[0].replace( runescape, funescape ),
- rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
- )) ) {
-
- // If seed is empty or no tokens remain, we can return early
- tokens.splice( i, 1 );
- selector = seed.length && toSelector( tokens );
- if ( !selector ) {
- push.apply( results, seed );
- return results;
- }
-
- break;
- }
- }
- }
- }
-
- // Compile and execute a filtering function if one is not provided
- // Provide `match` to avoid retokenization if we modified the selector above
- ( compiled || compile( selector, match ) )(
- seed,
- context,
- !documentIsHTML,
- results,
- !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
- );
- return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome 14-35+
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
- // Should return 1, but returns 4 (following)
- return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
- div.innerHTML = "<a href='#'></a>";
- return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
- addHandle( "type|href|height|width", function( elem, name, isXML ) {
- if ( !isXML ) {
- return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
- }
- });
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
- div.innerHTML = "<input/>";
- div.firstChild.setAttribute( "value", "" );
- return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
- addHandle( "value", function( elem, name, isXML ) {
- if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
- return elem.defaultValue;
- }
- });
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
- return div.getAttribute("disabled") == null;
-}) ) {
- addHandle( booleans, function( elem, name, isXML ) {
- var val;
- if ( !isXML ) {
- return elem[ name ] === true ? name.toLowerCase() :
- (val = elem.getAttributeNode( name )) && val.specified ?
- val.value :
- null;
- }
- });
-}
-
-return Sizzle;
-
-})( window );
-
-
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[ ":" ] = jQuery.expr.pseudos;
-jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-
-var dir = function( elem, dir, until ) {
- var matched = [],
- truncate = until !== undefined;
-
- while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
- if ( elem.nodeType === 1 ) {
- if ( truncate && jQuery( elem ).is( until ) ) {
- break;
- }
- matched.push( elem );
- }
- }
- return matched;
-};
-
-
-var siblings = function( n, elem ) {
- var matched = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- matched.push( n );
- }
- }
-
- return matched;
-};
-
-
-var rneedsContext = jQuery.expr.match.needsContext;
-
-var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
-
-
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep( elements, function( elem, i ) {
- /* jshint -W018 */
- return !!qualifier.call( elem, i, elem ) !== not;
- } );
-
- }
-
- if ( qualifier.nodeType ) {
- return jQuery.grep( elements, function( elem ) {
- return ( elem === qualifier ) !== not;
- } );
-
- }
-
- if ( typeof qualifier === "string" ) {
- if ( risSimple.test( qualifier ) ) {
- return jQuery.filter( qualifier, elements, not );
- }
-
- qualifier = jQuery.filter( qualifier, elements );
- }
-
- return jQuery.grep( elements, function( elem ) {
- return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
- } );
-}
-
-jQuery.filter = function( expr, elems, not ) {
- var elem = elems[ 0 ];
-
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 && elem.nodeType === 1 ?
- jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
- jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
- return elem.nodeType === 1;
- } ) );
-};
-
-jQuery.fn.extend( {
- find: function( selector ) {
- var i,
- len = this.length,
- ret = [],
- self = this;
-
- if ( typeof selector !== "string" ) {
- return this.pushStack( jQuery( selector ).filter( function() {
- for ( i = 0; i < len; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- } ) );
- }
-
- for ( i = 0; i < len; i++ ) {
- jQuery.find( selector, self[ i ], ret );
- }
-
- // Needed because $( selector, context ) becomes $( context ).find( selector )
- ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
- ret.selector = this.selector ? this.selector + " " + selector : selector;
- return ret;
- },
- filter: function( selector ) {
- return this.pushStack( winnow( this, selector || [], false ) );
- },
- not: function( selector ) {
- return this.pushStack( winnow( this, selector || [], true ) );
- },
- is: function( selector ) {
- return !!winnow(
- this,
-
- // If this is a positional/relative selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- typeof selector === "string" && rneedsContext.test( selector ) ?
- jQuery( selector ) :
- selector || [],
- false
- ).length;
- }
-} );
-
-
-// Initialize a jQuery object
-
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
- // A simple way to check for HTML strings
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
- // Strict HTML recognition (#11290: must start with <)
- rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
- init = jQuery.fn.init = function( selector, context, root ) {
- var match, elem;
-
- // HANDLE: $(""), $(null), $(undefined), $(false)
- if ( !selector ) {
- return this;
- }
-
- // Method init() accepts an alternate rootjQuery
- // so migrate can support jQuery.sub (gh-2101)
- root = root || rootjQuery;
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- if ( selector[ 0 ] === "<" &&
- selector[ selector.length - 1 ] === ">" &&
- selector.length >= 3 ) {
-
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = rquickExpr.exec( selector );
- }
-
- // Match html or make sure no context is specified for #id
- if ( match && ( match[ 1 ] || !context ) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[ 1 ] ) {
- context = context instanceof jQuery ? context[ 0 ] : context;
-
- // Option to run scripts is true for back-compat
- // Intentionally let the error be thrown if parseHTML is not present
- jQuery.merge( this, jQuery.parseHTML(
- match[ 1 ],
- context && context.nodeType ? context.ownerDocument || context : document,
- true
- ) );
-
- // HANDLE: $(html, props)
- if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
- for ( match in context ) {
-
- // Properties of context are called as methods if possible
- if ( jQuery.isFunction( this[ match ] ) ) {
- this[ match ]( context[ match ] );
-
- // ...and otherwise set as attributes
- } else {
- this.attr( match, context[ match ] );
- }
- }
- }
-
- return this;
-
- // HANDLE: $(#id)
- } else {
- elem = document.getElementById( match[ 2 ] );
-
- // Support: Blackberry 4.6
- // gEBID returns nodes no longer in the document (#6963)
- if ( elem && elem.parentNode ) {
-
- // Inject the element directly into the jQuery object
- this.length = 1;
- this[ 0 ] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || root ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(DOMElement)
- } else if ( selector.nodeType ) {
- this.context = this[ 0 ] = selector;
- this.length = 1;
- return this;
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return root.ready !== undefined ?
- root.ready( selector ) :
-
- // Execute immediately if ready is not present
- selector( jQuery );
- }
-
- if ( selector.selector !== undefined ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- };
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-
- // Methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend( {
- has: function( target ) {
- var targets = jQuery( target, this ),
- l = targets.length;
-
- return this.filter( function() {
- var i = 0;
- for ( ; i < l; i++ ) {
- if ( jQuery.contains( this, targets[ i ] ) ) {
- return true;
- }
- }
- } );
- },
-
- closest: function( selectors, context ) {
- var cur,
- i = 0,
- l = this.length,
- matched = [],
- pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( ; i < l; i++ ) {
- for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
-
- // Always skip document fragments
- if ( cur.nodeType < 11 && ( pos ?
- pos.index( cur ) > -1 :
-
- // Don't pass non-elements to Sizzle
- cur.nodeType === 1 &&
- jQuery.find.matchesSelector( cur, selectors ) ) ) {
-
- matched.push( cur );
- break;
- }
- }
- }
-
- return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
- },
-
- // Determine the position of an element within the set
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
- }
-
- // Index in selector
- if ( typeof elem === "string" ) {
- return indexOf.call( jQuery( elem ), this[ 0 ] );
- }
-
- // Locate the position of the desired element
- return indexOf.call( this,
-
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[ 0 ] : elem
- );
- },
-
- add: function( selector, context ) {
- return this.pushStack(
- jQuery.uniqueSort(
- jQuery.merge( this.get(), jQuery( selector, context ) )
- )
- );
- },
-
- addBack: function( selector ) {
- return this.add( selector == null ?
- this.prevObject : this.prevObject.filter( selector )
- );
- }
-} );
-
-function sibling( cur, dir ) {
- while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
- return cur;
-}
-
-jQuery.each( {
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return sibling( elem, "nextSibling" );
- },
- prev: function( elem ) {
- return sibling( elem, "previousSibling" );
- },
- nextAll: function( elem ) {
- return dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return siblings( ( elem.parentNode || {} ).firstChild, elem );
- },
- children: function( elem ) {
- return siblings( elem.firstChild );
- },
- contents: function( elem ) {
- return elem.contentDocument || jQuery.merge( [], elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var matched = jQuery.map( this, fn, until );
-
- if ( name.slice( -5 ) !== "Until" ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- matched = jQuery.filter( selector, matched );
- }
-
- if ( this.length > 1 ) {
-
- // Remove duplicates
- if ( !guaranteedUnique[ name ] ) {
- jQuery.uniqueSort( matched );
- }
-
- // Reverse order for parents* and prev-derivatives
- if ( rparentsprev.test( name ) ) {
- matched.reverse();
- }
- }
-
- return this.pushStack( matched );
- };
-} );
-var rnotwhite = ( /\S+/g );
-
-
-
-// Convert String-formatted options into Object-formatted ones
-function createOptions( options ) {
- var object = {};
- jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
- object[ flag ] = true;
- } );
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * options: an optional list of space-separated options that will change how
- * the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
- // Convert options from String-formatted to Object-formatted if needed
- // (we check in cache first)
- options = typeof options === "string" ?
- createOptions( options ) :
- jQuery.extend( {}, options );
-
- var // Flag to know if list is currently firing
- firing,
-
- // Last fire value for non-forgettable lists
- memory,
-
- // Flag to know if list was already fired
- fired,
-
- // Flag to prevent firing
- locked,
-
- // Actual callback list
- list = [],
-
- // Queue of execution data for repeatable lists
- queue = [],
-
- // Index of currently firing callback (modified by add/remove as needed)
- firingIndex = -1,
-
- // Fire callbacks
- fire = function() {
-
- // Enforce single-firing
- locked = options.once;
-
- // Execute callbacks for all pending executions,
- // respecting firingIndex overrides and runtime changes
- fired = firing = true;
- for ( ; queue.length; firingIndex = -1 ) {
- memory = queue.shift();
- while ( ++firingIndex < list.length ) {
-
- // Run callback and check for early termination
- if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
- options.stopOnFalse ) {
-
- // Jump to end and forget the data so .add doesn't re-fire
- firingIndex = list.length;
- memory = false;
- }
- }
- }
-
- // Forget the data if we're done with it
- if ( !options.memory ) {
- memory = false;
- }
-
- firing = false;
-
- // Clean up if we're done firing for good
- if ( locked ) {
-
- // Keep an empty list if we have data for future add calls
- if ( memory ) {
- list = [];
-
- // Otherwise, this object is spent
- } else {
- list = "";
- }
- }
- },
-
- // Actual Callbacks object
- self = {
-
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
-
- // If we have memory from a past run, we should fire after adding
- if ( memory && !firing ) {
- firingIndex = list.length - 1;
- queue.push( memory );
- }
-
- ( function add( args ) {
- jQuery.each( args, function( _, arg ) {
- if ( jQuery.isFunction( arg ) ) {
- if ( !options.unique || !self.has( arg ) ) {
- list.push( arg );
- }
- } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
-
- // Inspect recursively
- add( arg );
- }
- } );
- } )( arguments );
-
- if ( memory && !firing ) {
- fire();
- }
- }
- return this;
- },
-
- // Remove a callback from the list
- remove: function() {
- jQuery.each( arguments, function( _, arg ) {
- var index;
- while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
- list.splice( index, 1 );
-
- // Handle firing indexes
- if ( index <= firingIndex ) {
- firingIndex--;
- }
- }
- } );
- return this;
- },
-
- // Check if a given callback is in the list.
- // If no argument is given, return whether or not list has callbacks attached.
- has: function( fn ) {
- return fn ?
- jQuery.inArray( fn, list ) > -1 :
- list.length > 0;
- },
-
- // Remove all callbacks from the list
- empty: function() {
- if ( list ) {
- list = [];
- }
- return this;
- },
-
- // Disable .fire and .add
- // Abort any current/pending executions
- // Clear all callbacks and values
- disable: function() {
- locked = queue = [];
- list = memory = "";
- return this;
- },
- disabled: function() {
- return !list;
- },
-
- // Disable .fire
- // Also disable .add unless we have memory (since it would have no effect)
- // Abort any pending executions
- lock: function() {
- locked = queue = [];
- if ( !memory ) {
- list = memory = "";
- }
- return this;
- },
- locked: function() {
- return !!locked;
- },
-
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- if ( !locked ) {
- args = args || [];
- args = [ context, args.slice ? args.slice() : args ];
- queue.push( args );
- if ( !firing ) {
- fire();
- }
- }
- return this;
- },
-
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
-
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!fired;
- }
- };
-
- return self;
-};
-
-
-jQuery.extend( {
-
- Deferred: function( func ) {
- var tuples = [
-
- // action, add listener, listener list, final state
- [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
- [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
- [ "notify", "progress", jQuery.Callbacks( "memory" ) ]
- ],
- state = "pending",
- promise = {
- state: function() {
- return state;
- },
- always: function() {
- deferred.done( arguments ).fail( arguments );
- return this;
- },
- then: function( /* fnDone, fnFail, fnProgress */ ) {
- var fns = arguments;
- return jQuery.Deferred( function( newDefer ) {
- jQuery.each( tuples, function( i, tuple ) {
- var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-
- // deferred[ done | fail | progress ] for forwarding actions to newDefer
- deferred[ tuple[ 1 ] ]( function() {
- var returned = fn && fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise()
- .progress( newDefer.notify )
- .done( newDefer.resolve )
- .fail( newDefer.reject );
- } else {
- newDefer[ tuple[ 0 ] + "With" ](
- this === promise ? newDefer.promise() : this,
- fn ? [ returned ] : arguments
- );
- }
- } );
- } );
- fns = null;
- } ).promise();
- },
-
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- return obj != null ? jQuery.extend( obj, promise ) : promise;
- }
- },
- deferred = {};
-
- // Keep pipe for back-compat
- promise.pipe = promise.then;
-
- // Add list-specific methods
- jQuery.each( tuples, function( i, tuple ) {
- var list = tuple[ 2 ],
- stateString = tuple[ 3 ];
-
- // promise[ done | fail | progress ] = list.add
- promise[ tuple[ 1 ] ] = list.add;
-
- // Handle state
- if ( stateString ) {
- list.add( function() {
-
- // state = [ resolved | rejected ]
- state = stateString;
-
- // [ reject_list | resolve_list ].disable; progress_list.lock
- }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
- }
-
- // deferred[ resolve | reject | notify ]
- deferred[ tuple[ 0 ] ] = function() {
- deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
- return this;
- };
- deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
- } );
-
- // Make the deferred a promise
- promise.promise( deferred );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( subordinate /* , ..., subordinateN */ ) {
- var i = 0,
- resolveValues = slice.call( arguments ),
- length = resolveValues.length,
-
- // the count of uncompleted subordinates
- remaining = length !== 1 ||
- ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
- // the master Deferred.
- // If resolveValues consist of only a single Deferred, just use that.
- deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
- // Update function for both resolve and progress values
- updateFunc = function( i, contexts, values ) {
- return function( value ) {
- contexts[ i ] = this;
- values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
- if ( values === progressValues ) {
- deferred.notifyWith( contexts, values );
- } else if ( !( --remaining ) ) {
- deferred.resolveWith( contexts, values );
- }
- };
- },
-
- progressValues, progressContexts, resolveContexts;
-
- // Add listeners to Deferred subordinates; treat others as resolved
- if ( length > 1 ) {
- progressValues = new Array( length );
- progressContexts = new Array( length );
- resolveContexts = new Array( length );
- for ( ; i < length; i++ ) {
- if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
- resolveValues[ i ].promise()
- .progress( updateFunc( i, progressContexts, progressValues ) )
- .done( updateFunc( i, resolveContexts, resolveValues ) )
- .fail( deferred.reject );
- } else {
- --remaining;
- }
- }
- }
-
- // If we're not waiting on anything, resolve the master
- if ( !remaining ) {
- deferred.resolveWith( resolveContexts, resolveValues );
- }
-
- return deferred.promise();
- }
-} );
-
-
-// The deferred used on DOM ready
-var readyList;
-
-jQuery.fn.ready = function( fn ) {
-
- // Add the callback
- jQuery.ready.promise().done( fn );
-
- return this;
-};
-
-jQuery.extend( {
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
-
- // Abort if there are pending holds or we're already ready
- if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
- return;
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.resolveWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.triggerHandler ) {
- jQuery( document ).triggerHandler( "ready" );
- jQuery( document ).off( "ready" );
- }
- }
-} );
-
-/**
- * The ready event handler and self cleanup method
- */
-function completed() {
- document.removeEventListener( "DOMContentLoaded", completed );
- window.removeEventListener( "load", completed );
- jQuery.ready();
-}
-
-jQuery.ready.promise = function( obj ) {
- if ( !readyList ) {
-
- readyList = jQuery.Deferred();
-
- // Catch cases where $(document).ready() is called
- // after the browser event has already occurred.
- // Support: IE9-10 only
- // Older IE sometimes signals "interactive" too soon
- if ( document.readyState === "complete" ||
- ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
-
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- window.setTimeout( jQuery.ready );
-
- } else {
-
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", completed );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", completed );
- }
- }
- return readyList.promise( obj );
-};
-
-// Kick off the DOM ready check even if the user does not
-jQuery.ready.promise();
-
-
-
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
- var i = 0,
- len = elems.length,
- bulk = key == null;
-
- // Sets many values
- if ( jQuery.type( key ) === "object" ) {
- chainable = true;
- for ( i in key ) {
- access( elems, fn, i, key[ i ], true, emptyGet, raw );
- }
-
- // Sets one value
- } else if ( value !== undefined ) {
- chainable = true;
-
- if ( !jQuery.isFunction( value ) ) {
- raw = true;
- }
-
- if ( bulk ) {
-
- // Bulk operations run against the entire set
- if ( raw ) {
- fn.call( elems, value );
- fn = null;
-
- // ...except when executing function values
- } else {
- bulk = fn;
- fn = function( elem, key, value ) {
- return bulk.call( jQuery( elem ), value );
- };
- }
- }
-
- if ( fn ) {
- for ( ; i < len; i++ ) {
- fn(
- elems[ i ], key, raw ?
- value :
- value.call( elems[ i ], i, fn( elems[ i ], key ) )
- );
- }
- }
- }
-
- return chainable ?
- elems :
-
- // Gets
- bulk ?
- fn.call( elems ) :
- len ? fn( elems[ 0 ], key ) : emptyGet;
-};
-var acceptData = function( owner ) {
-
- // Accepts only:
- // - Node
- // - Node.ELEMENT_NODE
- // - Node.DOCUMENT_NODE
- // - Object
- // - Any
- /* jshint -W018 */
- return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
-};
-
-
-
-
-function Data() {
- this.expando = jQuery.expando + Data.uid++;
-}
-
-Data.uid = 1;
-
-Data.prototype = {
-
- register: function( owner, initial ) {
- var value = initial || {};
-
- // If it is a node unlikely to be stringify-ed or looped over
- // use plain assignment
- if ( owner.nodeType ) {
- owner[ this.expando ] = value;
-
- // Otherwise secure it in a non-enumerable, non-writable property
- // configurability must be true to allow the property to be
- // deleted with the delete operator
- } else {
- Object.defineProperty( owner, this.expando, {
- value: value,
- writable: true,
- configurable: true
- } );
- }
- return owner[ this.expando ];
- },
- cache: function( owner ) {
-
- // We can accept data for non-element nodes in modern browsers,
- // but we should not, see #8335.
- // Always return an empty object.
- if ( !acceptData( owner ) ) {
- return {};
- }
-
- // Check if the owner object already has a cache
- var value = owner[ this.expando ];
-
- // If not, create one
- if ( !value ) {
- value = {};
-
- // We can accept data for non-element nodes in modern browsers,
- // but we should not, see #8335.
- // Always return an empty object.
- if ( acceptData( owner ) ) {
-
- // If it is a node unlikely to be stringify-ed or looped over
- // use plain assignment
- if ( owner.nodeType ) {
- owner[ this.expando ] = value;
-
- // Otherwise secure it in a non-enumerable property
- // configurable must be true to allow the property to be
- // deleted when data is removed
- } else {
- Object.defineProperty( owner, this.expando, {
- value: value,
- configurable: true
- } );
- }
- }
- }
-
- return value;
- },
- set: function( owner, data, value ) {
- var prop,
- cache = this.cache( owner );
-
- // Handle: [ owner, key, value ] args
- if ( typeof data === "string" ) {
- cache[ data ] = value;
-
- // Handle: [ owner, { properties } ] args
- } else {
-
- // Copy the properties one-by-one to the cache object
- for ( prop in data ) {
- cache[ prop ] = data[ prop ];
- }
- }
- return cache;
- },
- get: function( owner, key ) {
- return key === undefined ?
- this.cache( owner ) :
- owner[ this.expando ] && owner[ this.expando ][ key ];
- },
- access: function( owner, key, value ) {
- var stored;
-
- // In cases where either:
- //
- // 1. No key was specified
- // 2. A string key was specified, but no value provided
- //
- // Take the "read" path and allow the get method to determine
- // which value to return, respectively either:
- //
- // 1. The entire cache object
- // 2. The data stored at the key
- //
- if ( key === undefined ||
- ( ( key && typeof key === "string" ) && value === undefined ) ) {
-
- stored = this.get( owner, key );
-
- return stored !== undefined ?
- stored : this.get( owner, jQuery.camelCase( key ) );
- }
-
- // When the key is not a string, or both a key and value
- // are specified, set or extend (existing objects) with either:
- //
- // 1. An object of properties
- // 2. A key and value
- //
- this.set( owner, key, value );
-
- // Since the "set" path can have two possible entry points
- // return the expected data based on which path was taken[*]
- return value !== undefined ? value : key;
- },
- remove: function( owner, key ) {
- var i, name, camel,
- cache = owner[ this.expando ];
-
- if ( cache === undefined ) {
- return;
- }
-
- if ( key === undefined ) {
- this.register( owner );
-
- } else {
-
- // Support array or space separated string of keys
- if ( jQuery.isArray( key ) ) {
-
- // If "name" is an array of keys...
- // When data is initially created, via ("key", "val") signature,
- // keys will be converted to camelCase.
- // Since there is no way to tell _how_ a key was added, remove
- // both plain key and camelCase key. #12786
- // This will only penalize the array argument path.
- name = key.concat( key.map( jQuery.camelCase ) );
- } else {
- camel = jQuery.camelCase( key );
-
- // Try the string as a key before any manipulation
- if ( key in cache ) {
- name = [ key, camel ];
- } else {
-
- // If a key with the spaces exists, use it.
- // Otherwise, create an array by matching non-whitespace
- name = camel;
- name = name in cache ?
- [ name ] : ( name.match( rnotwhite ) || [] );
- }
- }
-
- i = name.length;
-
- while ( i-- ) {
- delete cache[ name[ i ] ];
- }
- }
-
- // Remove the expando if there's no more data
- if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
-
- // Support: Chrome <= 35-45+
- // Webkit & Blink performance suffers when deleting properties
- // from DOM nodes, so set to undefined instead
- // https://code.google.com/p/chromium/issues/detail?id=378607
- if ( owner.nodeType ) {
- owner[ this.expando ] = undefined;
- } else {
- delete owner[ this.expando ];
- }
- }
- },
- hasData: function( owner ) {
- var cache = owner[ this.expando ];
- return cache !== undefined && !jQuery.isEmptyObject( cache );
- }
-};
-var dataPriv = new Data();
-
-var dataUser = new Data();
-
-
-
-// Implementation Summary
-//
-// 1. Enforce API surface and semantic compatibility with 1.9.x branch
-// 2. Improve the module's maintainability by reducing the storage
-// paths to a single mechanism.
-// 3. Use the same single mechanism to support "private" and "user" data.
-// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
-// 5. Avoid exposing implementation details on user objects (eg. expando properties)
-// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
-
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
- rmultiDash = /[A-Z]/g;
-
-function dataAttr( elem, key, data ) {
- var name;
-
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
- name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
-
- // Only convert to a number if it doesn't change the string
- +data + "" === data ? +data :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch ( e ) {}
-
- // Make sure we set the data so it isn't changed later
- dataUser.set( elem, key, data );
- } else {
- data = undefined;
- }
- }
- return data;
-}
-
-jQuery.extend( {
- hasData: function( elem ) {
- return dataUser.hasData( elem ) || dataPriv.hasData( elem );
- },
-
- data: function( elem, name, data ) {
- return dataUser.access( elem, name, data );
- },
-
- removeData: function( elem, name ) {
- dataUser.remove( elem, name );
- },
-
- // TODO: Now that all calls to _data and _removeData have been replaced
- // with direct calls to dataPriv methods, these can be deprecated.
- _data: function( elem, name, data ) {
- return dataPriv.access( elem, name, data );
- },
-
- _removeData: function( elem, name ) {
- dataPriv.remove( elem, name );
- }
-} );
-
-jQuery.fn.extend( {
- data: function( key, value ) {
- var i, name, data,
- elem = this[ 0 ],
- attrs = elem && elem.attributes;
-
- // Gets all values
- if ( key === undefined ) {
- if ( this.length ) {
- data = dataUser.get( elem );
-
- if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
- i = attrs.length;
- while ( i-- ) {
-
- // Support: IE11+
- // The attrs elements can be null (#14894)
- if ( attrs[ i ] ) {
- name = attrs[ i ].name;
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.slice( 5 ) );
- dataAttr( elem, name, data[ name ] );
- }
- }
- }
- dataPriv.set( elem, "hasDataAttrs", true );
- }
- }
-
- return data;
- }
-
- // Sets multiple values
- if ( typeof key === "object" ) {
- return this.each( function() {
- dataUser.set( this, key );
- } );
- }
-
- return access( this, function( value ) {
- var data, camelKey;
-
- // The calling jQuery object (element matches) is not empty
- // (and therefore has an element appears at this[ 0 ]) and the
- // `value` parameter was not undefined. An empty jQuery object
- // will result in `undefined` for elem = this[ 0 ] which will
- // throw an exception if an attempt to read a data cache is made.
- if ( elem && value === undefined ) {
-
- // Attempt to get data from the cache
- // with the key as-is
- data = dataUser.get( elem, key ) ||
-
- // Try to find dashed key if it exists (gh-2779)
- // This is for 2.2.x only
- dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() );
-
- if ( data !== undefined ) {
- return data;
- }
-
- camelKey = jQuery.camelCase( key );
-
- // Attempt to get data from the cache
- // with the key camelized
- data = dataUser.get( elem, camelKey );
- if ( data !== undefined ) {
- return data;
- }
-
- // Attempt to "discover" the data in
- // HTML5 custom data-* attrs
- data = dataAttr( elem, camelKey, undefined );
- if ( data !== undefined ) {
- return data;
- }
-
- // We tried really hard, but the data doesn't exist.
- return;
- }
-
- // Set the data...
- camelKey = jQuery.camelCase( key );
- this.each( function() {
-
- // First, attempt to store a copy or reference of any
- // data that might've been store with a camelCased key.
- var data = dataUser.get( this, camelKey );
-
- // For HTML5 data-* attribute interop, we have to
- // store property names with dashes in a camelCase form.
- // This might not apply to all properties...*
- dataUser.set( this, camelKey, value );
-
- // *... In the case of properties that might _actually_
- // have dashes, we need to also store a copy of that
- // unchanged property.
- if ( key.indexOf( "-" ) > -1 && data !== undefined ) {
- dataUser.set( this, key, value );
- }
- } );
- }, null, value, arguments.length > 1, null, true );
- },
-
- removeData: function( key ) {
- return this.each( function() {
- dataUser.remove( this, key );
- } );
- }
-} );
-
-
-jQuery.extend( {
- queue: function( elem, type, data ) {
- var queue;
-
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- queue = dataPriv.get( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !queue || jQuery.isArray( data ) ) {
- queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
- } else {
- queue.push( data );
- }
- }
- return queue || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- startLength = queue.length,
- fn = queue.shift(),
- hooks = jQuery._queueHooks( elem, type ),
- next = function() {
- jQuery.dequeue( elem, type );
- };
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- startLength--;
- }
-
- if ( fn ) {
-
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- // Clear up the last queue stop function
- delete hooks.stop;
- fn.call( elem, next, hooks );
- }
-
- if ( !startLength && hooks ) {
- hooks.empty.fire();
- }
- },
-
- // Not public - generate a queueHooks object, or return the current one
- _queueHooks: function( elem, type ) {
- var key = type + "queueHooks";
- return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
- empty: jQuery.Callbacks( "once memory" ).add( function() {
- dataPriv.remove( elem, [ type + "queue", key ] );
- } )
- } );
- }
-} );
-
-jQuery.fn.extend( {
- queue: function( type, data ) {
- var setter = 2;
-
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- setter--;
- }
-
- if ( arguments.length < setter ) {
- return jQuery.queue( this[ 0 ], type );
- }
-
- return data === undefined ?
- this :
- this.each( function() {
- var queue = jQuery.queue( this, type, data );
-
- // Ensure a hooks for this queue
- jQuery._queueHooks( this, type );
-
- if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- } );
- },
- dequeue: function( type ) {
- return this.each( function() {
- jQuery.dequeue( this, type );
- } );
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
-
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, obj ) {
- var tmp,
- count = 1,
- defer = jQuery.Deferred(),
- elements = this,
- i = this.length,
- resolve = function() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- };
-
- if ( typeof type !== "string" ) {
- obj = type;
- type = undefined;
- }
- type = type || "fx";
-
- while ( i-- ) {
- tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
- if ( tmp && tmp.empty ) {
- count++;
- tmp.empty.add( resolve );
- }
- }
- resolve();
- return defer.promise( obj );
- }
-} );
-var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
-
-var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
-
-
-var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
-
-var isHidden = function( elem, el ) {
-
- // isHidden might be called from jQuery#filter function;
- // in that case, element will be second argument
- elem = el || elem;
- return jQuery.css( elem, "display" ) === "none" ||
- !jQuery.contains( elem.ownerDocument, elem );
- };
-
-
-
-function adjustCSS( elem, prop, valueParts, tween ) {
- var adjusted,
- scale = 1,
- maxIterations = 20,
- currentValue = tween ?
- function() { return tween.cur(); } :
- function() { return jQuery.css( elem, prop, "" ); },
- initial = currentValue(),
- unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
- // Starting value computation is required for potential unit mismatches
- initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
- rcssNum.exec( jQuery.css( elem, prop ) );
-
- if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
-
- // Trust units reported by jQuery.css
- unit = unit || initialInUnit[ 3 ];
-
- // Make sure we update the tween properties later on
- valueParts = valueParts || [];
-
- // Iteratively approximate from a nonzero starting point
- initialInUnit = +initial || 1;
-
- do {
-
- // If previous iteration zeroed out, double until we get *something*.
- // Use string for doubling so we don't accidentally see scale as unchanged below
- scale = scale || ".5";
-
- // Adjust and apply
- initialInUnit = initialInUnit / scale;
- jQuery.style( elem, prop, initialInUnit + unit );
-
- // Update scale, tolerating zero or NaN from tween.cur()
- // Break the loop if scale is unchanged or perfect, or if we've just had enough.
- } while (
- scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
- );
- }
-
- if ( valueParts ) {
- initialInUnit = +initialInUnit || +initial || 0;
-
- // Apply relative offset (+=/-=) if specified
- adjusted = valueParts[ 1 ] ?
- initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
- +valueParts[ 2 ];
- if ( tween ) {
- tween.unit = unit;
- tween.start = initialInUnit;
- tween.end = adjusted;
- }
- }
- return adjusted;
-}
-var rcheckableType = ( /^(?:checkbox|radio)$/i );
-
-var rtagName = ( /<([\w:-]+)/ );
-
-var rscriptType = ( /^$|\/(?:java|ecma)script/i );
-
-
-
-// We have to close these tags to support XHTML (#13200)
-var wrapMap = {
-
- // Support: IE9
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
-
- // XHTML parsers do not magically insert elements in the
- // same way that tag soup parsers do. So we cannot shorten
- // this by omitting <tbody> or other required elements.
- thead: [ 1, "<table>", "</table>" ],
- col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
-
- _default: [ 0, "", "" ]
-};
-
-// Support: IE9
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-
-function getAll( context, tag ) {
-
- // Support: IE9-11+
- // Use typeof to avoid zero-argument method invocation on host objects (#15151)
- var ret = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( tag || "*" ) :
- typeof context.querySelectorAll !== "undefined" ?
- context.querySelectorAll( tag || "*" ) :
- [];
-
- return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
- jQuery.merge( [ context ], ret ) :
- ret;
-}
-
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
- var i = 0,
- l = elems.length;
-
- for ( ; i < l; i++ ) {
- dataPriv.set(
- elems[ i ],
- "globalEval",
- !refElements || dataPriv.get( refElements[ i ], "globalEval" )
- );
- }
-}
-
-
-var rhtml = /<|&#?\w+;/;
-
-function buildFragment( elems, context, scripts, selection, ignored ) {
- var elem, tmp, tag, wrap, contains, j,
- fragment = context.createDocumentFragment(),
- nodes = [],
- i = 0,
- l = elems.length;
-
- for ( ; i < l; i++ ) {
- elem = elems[ i ];
-
- if ( elem || elem === 0 ) {
-
- // Add nodes directly
- if ( jQuery.type( elem ) === "object" ) {
-
- // Support: Android<4.1, PhantomJS<2
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
- // Convert non-html into a text node
- } else if ( !rhtml.test( elem ) ) {
- nodes.push( context.createTextNode( elem ) );
-
- // Convert html into DOM nodes
- } else {
- tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
-
- // Deserialize a standard representation
- tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
- wrap = wrapMap[ tag ] || wrapMap._default;
- tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
-
- // Descend through wrappers to the right content
- j = wrap[ 0 ];
- while ( j-- ) {
- tmp = tmp.lastChild;
- }
-
- // Support: Android<4.1, PhantomJS<2
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( nodes, tmp.childNodes );
-
- // Remember the top-level container
- tmp = fragment.firstChild;
-
- // Ensure the created nodes are orphaned (#12392)
- tmp.textContent = "";
- }
- }
- }
-
- // Remove wrapper from fragment
- fragment.textContent = "";
-
- i = 0;
- while ( ( elem = nodes[ i++ ] ) ) {
-
- // Skip elements already in the context collection (trac-4087)
- if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
- if ( ignored ) {
- ignored.push( elem );
- }
- continue;
- }
-
- contains = jQuery.contains( elem.ownerDocument, elem );
-
- // Append to fragment
- tmp = getAll( fragment.appendChild( elem ), "script" );
-
- // Preserve script evaluation history
- if ( contains ) {
- setGlobalEval( tmp );
- }
-
- // Capture executables
- if ( scripts ) {
- j = 0;
- while ( ( elem = tmp[ j++ ] ) ) {
- if ( rscriptType.test( elem.type || "" ) ) {
- scripts.push( elem );
- }
- }
- }
- }
-
- return fragment;
-}
-
-
-( function() {
- var fragment = document.createDocumentFragment(),
- div = fragment.appendChild( document.createElement( "div" ) ),
- input = document.createElement( "input" );
-
- // Support: Android 4.0-4.3, Safari<=5.1
- // Check state lost if the name is set (#11217)
- // Support: Windows Web Apps (WWA)
- // `name` and `type` must use .setAttribute for WWA (#14901)
- input.setAttribute( "type", "radio" );
- input.setAttribute( "checked", "checked" );
- input.setAttribute( "name", "t" );
-
- div.appendChild( input );
-
- // Support: Safari<=5.1, Android<4.2
- // Older WebKit doesn't clone checked state correctly in fragments
- support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Support: IE<=11+
- // Make sure textarea (and checkbox) defaultValue is properly cloned
- div.innerHTML = "<textarea>x</textarea>";
- support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-} )();
-
-
-var
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
- rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
-
-function returnTrue() {
- return true;
-}
-
-function returnFalse() {
- return false;
-}
-
-// Support: IE9
-// See #13393 for more info
-function safeActiveElement() {
- try {
- return document.activeElement;
- } catch ( err ) { }
-}
-
-function on( elem, types, selector, data, fn, one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
-
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
-
- // ( types-Object, data )
- data = data || selector;
- selector = undefined;
- }
- for ( type in types ) {
- on( elem, type, selector, data, types[ type ], one );
- }
- return elem;
- }
-
- if ( data == null && fn == null ) {
-
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
-
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
-
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return elem;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
-
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
-
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return elem.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- } );
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- global: {},
-
- add: function( elem, types, handler, data, selector ) {
-
- var handleObjIn, eventHandle, tmp,
- events, t, handleObj,
- special, handlers, type, namespaces, origType,
- elemData = dataPriv.get( elem );
-
- // Don't attach events to noData or text/comment nodes (but allow plain objects)
- if ( !elemData ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- if ( !( events = elemData.events ) ) {
- events = elemData.events = {};
- }
- if ( !( eventHandle = elemData.handle ) ) {
- eventHandle = elemData.handle = function( e ) {
-
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
- jQuery.event.dispatch.apply( elem, arguments ) : undefined;
- };
- }
-
- // Handle multiple events separated by a space
- types = ( types || "" ).match( rnotwhite ) || [ "" ];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[ t ] ) || [];
- type = origType = tmp[ 1 ];
- namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
-
- // There *must* be a type, no attaching namespace-only handlers
- if ( !type ) {
- continue;
- }
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend( {
- type: type,
- origType: origType,
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
- namespace: namespaces.join( "." )
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- if ( !( handlers = events[ type ] ) ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener if the special events handler returns false
- if ( !special.setup ||
- special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- },
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var j, origCount, tmp,
- events, t, handleObj,
- special, handlers, type, namespaces, origType,
- elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
-
- if ( !elemData || !( events = elemData.events ) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = ( types || "" ).match( rnotwhite ) || [ "" ];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[ t ] ) || [];
- type = origType = tmp[ 1 ];
- namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector ? special.delegateType : special.bindType ) || type;
- handlers = events[ type ] || [];
- tmp = tmp[ 2 ] &&
- new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
-
- // Remove matching events
- origCount = j = handlers.length;
- while ( j-- ) {
- handleObj = handlers[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !tmp || tmp.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector ||
- selector === "**" && handleObj.selector ) ) {
- handlers.splice( j, 1 );
-
- if ( handleObj.selector ) {
- handlers.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( origCount && !handlers.length ) {
- if ( !special.teardown ||
- special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove data and the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- dataPriv.remove( elem, "handle events" );
- }
- },
-
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event );
-
- var i, j, ret, matched, handleObj,
- handlerQueue = [],
- args = slice.call( arguments ),
- handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
- special = jQuery.event.special[ event.type ] || {};
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[ 0 ] = event;
- event.delegateTarget = this;
-
- // Call the preDispatch hook for the mapped type, and let it bail if desired
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
- return;
- }
-
- // Determine handlers
- handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
- // Run delegates first; they may want to stop propagation beneath us
- i = 0;
- while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
- event.currentTarget = matched.elem;
-
- j = 0;
- while ( ( handleObj = matched.handlers[ j++ ] ) &&
- !event.isImmediatePropagationStopped() ) {
-
- // Triggered event must either 1) have no namespace, or 2) have namespace(s)
- // a subset or equal to those in the bound event (both can have no namespace).
- if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
-
- event.handleObj = handleObj;
- event.data = handleObj.data;
-
- ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
- handleObj.handler ).apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- if ( ( event.result = ret ) === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- // Call the postDispatch hook for the mapped type
- if ( special.postDispatch ) {
- special.postDispatch.call( this, event );
- }
-
- return event.result;
- },
-
- handlers: function( event, handlers ) {
- var i, matches, sel, handleObj,
- handlerQueue = [],
- delegateCount = handlers.delegateCount,
- cur = event.target;
-
- // Support (at least): Chrome, IE9
- // Find delegate handlers
- // Black-hole SVG <use> instance trees (#13180)
- //
- // Support: Firefox<=42+
- // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
- if ( delegateCount && cur.nodeType &&
- ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
-
- for ( ; cur !== this; cur = cur.parentNode || this ) {
-
- // Don't check non-elements (#13208)
- // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
- if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
- matches = [];
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
-
- // Don't conflict with Object.prototype properties (#13203)
- sel = handleObj.selector + " ";
-
- if ( matches[ sel ] === undefined ) {
- matches[ sel ] = handleObj.needsContext ?
- jQuery( sel, this ).index( cur ) > -1 :
- jQuery.find( sel, this, null, [ cur ] ).length;
- }
- if ( matches[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push( { elem: cur, handlers: matches } );
- }
- }
- }
- }
-
- // Add the remaining (directly-bound) handlers
- if ( delegateCount < handlers.length ) {
- handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
- }
-
- return handlerQueue;
- },
-
- // Includes some event props shared by KeyEvent and MouseEvent
- props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
- "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
-
- fixHooks: {},
-
- keyHooks: {
- props: "char charCode key keyCode".split( " " ),
- filter: function( event, original ) {
-
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
-
- return event;
- }
- },
-
- mouseHooks: {
- props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " +
- "screenX screenY toElement" ).split( " " ),
- filter: function( event, original ) {
- var eventDoc, doc, body,
- button = original.button;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
-
- event.pageX = original.clientX +
- ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
- ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY +
- ( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
- ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
- }
-
- return event;
- }
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // Create a writable copy of the event object and normalize some properties
- var i, prop, copy,
- type = event.type,
- originalEvent = event,
- fixHook = this.fixHooks[ type ];
-
- if ( !fixHook ) {
- this.fixHooks[ type ] = fixHook =
- rmouseEvent.test( type ) ? this.mouseHooks :
- rkeyEvent.test( type ) ? this.keyHooks :
- {};
- }
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = new jQuery.Event( originalEvent );
-
- i = copy.length;
- while ( i-- ) {
- prop = copy[ i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Support: Cordova 2.5 (WebKit) (#13255)
- // All events should have a target; Cordova deviceready doesn't
- if ( !event.target ) {
- event.target = document;
- }
-
- // Support: Safari 6.0+, Chrome<28
- // Target should not be a text node (#504, #13143)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
- },
-
- special: {
- load: {
-
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
- focus: {
-
- // Fire native event if possible so blur/focus sequence is correct
- trigger: function() {
- if ( this !== safeActiveElement() && this.focus ) {
- this.focus();
- return false;
- }
- },
- delegateType: "focusin"
- },
- blur: {
- trigger: function() {
- if ( this === safeActiveElement() && this.blur ) {
- this.blur();
- return false;
- }
- },
- delegateType: "focusout"
- },
- click: {
-
- // For checkbox, fire native event so checked state will be right
- trigger: function() {
- if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
- this.click();
- return false;
- }
- },
-
- // For cross-browser consistency, don't fire native .click() on links
- _default: function( event ) {
- return jQuery.nodeName( event.target, "a" );
- }
- },
-
- beforeunload: {
- postDispatch: function( event ) {
-
- // Support: Firefox 20+
- // Firefox doesn't alert if the returnValue field is not set.
- if ( event.result !== undefined && event.originalEvent ) {
- event.originalEvent.returnValue = event.result;
- }
- }
- }
- }
-};
-
-jQuery.removeEvent = function( elem, type, handle ) {
-
- // This "if" is needed for plain objects
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle );
- }
-};
-
-jQuery.Event = function( src, props ) {
-
- // Allow instantiation without the 'new' keyword
- if ( !( this instanceof jQuery.Event ) ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = src.defaultPrevented ||
- src.defaultPrevented === undefined &&
-
- // Support: Android<4.0
- src.returnValue === false ?
- returnTrue :
- returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- constructor: jQuery.Event,
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse,
-
- preventDefault: function() {
- var e = this.originalEvent;
-
- this.isDefaultPrevented = returnTrue;
-
- if ( e ) {
- e.preventDefault();
- }
- },
- stopPropagation: function() {
- var e = this.originalEvent;
-
- this.isPropagationStopped = returnTrue;
-
- if ( e ) {
- e.stopPropagation();
- }
- },
- stopImmediatePropagation: function() {
- var e = this.originalEvent;
-
- this.isImmediatePropagationStopped = returnTrue;
-
- if ( e ) {
- e.stopImmediatePropagation();
- }
-
- this.stopPropagation();
- }
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-// so that event delegation works in jQuery.
-// Do the same for pointerenter/pointerleave and pointerover/pointerout
-//
-// Support: Safari 7 only
-// Safari sends mouseenter too often; see:
-// https://code.google.com/p/chromium/issues/detail?id=470258
-// for the description of the bug (it existed in older Chrome versions as well).
-jQuery.each( {
- mouseenter: "mouseover",
- mouseleave: "mouseout",
- pointerenter: "pointerover",
- pointerleave: "pointerout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
-
- handle: function( event ) {
- var ret,
- target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj;
-
- // For mouseenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-} );
-
-jQuery.fn.extend( {
- on: function( types, selector, data, fn ) {
- return on( this, types, selector, data, fn );
- },
- one: function( types, selector, data, fn ) {
- return on( this, types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- var handleObj, type;
- if ( types && types.preventDefault && types.handleObj ) {
-
- // ( event ) dispatched jQuery.Event
- handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace ?
- handleObj.origType + "." + handleObj.namespace :
- handleObj.origType,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
-
- // ( types-object [, selector] )
- for ( type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
-
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
- }
- return this.each( function() {
- jQuery.event.remove( this, types, fn, selector );
- } );
- }
-} );
-
-
-var
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
-
- // Support: IE 10-11, Edge 10240+
- // In IE/Edge using regex groups here causes severe slowdowns.
- // See https://connect.microsoft.com/IE/feedback/details/1736512/
- rnoInnerhtml = /<script|<style|<link/i,
-
- // checked="checked" or checked
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptTypeMasked = /^true\/(.*)/,
- rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
-
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
- return jQuery.nodeName( elem, "table" ) &&
- jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
-
- elem.getElementsByTagName( "tbody" )[ 0 ] ||
- elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) :
- elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
- elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
- return elem;
-}
-function restoreScript( elem ) {
- var match = rscriptTypeMasked.exec( elem.type );
-
- if ( match ) {
- elem.type = match[ 1 ];
- } else {
- elem.removeAttribute( "type" );
- }
-
- return elem;
-}
-
-function cloneCopyEvent( src, dest ) {
- var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
-
- if ( dest.nodeType !== 1 ) {
- return;
- }
-
- // 1. Copy private data: events, handlers, etc.
- if ( dataPriv.hasData( src ) ) {
- pdataOld = dataPriv.access( src );
- pdataCur = dataPriv.set( dest, pdataOld );
- events = pdataOld.events;
-
- if ( events ) {
- delete pdataCur.handle;
- pdataCur.events = {};
-
- for ( type in events ) {
- for ( i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type, events[ type ][ i ] );
- }
- }
- }
- }
-
- // 2. Copy user data
- if ( dataUser.hasData( src ) ) {
- udataOld = dataUser.access( src );
- udataCur = jQuery.extend( {}, udataOld );
-
- dataUser.set( dest, udataCur );
- }
-}
-
-// Fix IE bugs, see support tests
-function fixInput( src, dest ) {
- var nodeName = dest.nodeName.toLowerCase();
-
- // Fails to persist the checked state of a cloned checkbox or radio button.
- if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
- dest.checked = src.checked;
-
- // Fails to return the selected option to the default selected state when cloning options
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
- dest.defaultValue = src.defaultValue;
- }
-}
-
-function domManip( collection, args, callback, ignored ) {
-
- // Flatten any nested arrays
- args = concat.apply( [], args );
-
- var fragment, first, scripts, hasScripts, node, doc,
- i = 0,
- l = collection.length,
- iNoClone = l - 1,
- value = args[ 0 ],
- isFunction = jQuery.isFunction( value );
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( isFunction ||
- ( l > 1 && typeof value === "string" &&
- !support.checkClone && rchecked.test( value ) ) ) {
- return collection.each( function( index ) {
- var self = collection.eq( index );
- if ( isFunction ) {
- args[ 0 ] = value.call( this, index, self.html() );
- }
- domManip( self, args, callback, ignored );
- } );
- }
-
- if ( l ) {
- fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
- first = fragment.firstChild;
-
- if ( fragment.childNodes.length === 1 ) {
- fragment = first;
- }
-
- // Require either new content or an interest in ignored elements to invoke the callback
- if ( first || ignored ) {
- scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
- hasScripts = scripts.length;
-
- // Use the original fragment for the last item
- // instead of the first because it can end up
- // being emptied incorrectly in certain situations (#8070).
- for ( ; i < l; i++ ) {
- node = fragment;
-
- if ( i !== iNoClone ) {
- node = jQuery.clone( node, true, true );
-
- // Keep references to cloned scripts for later restoration
- if ( hasScripts ) {
-
- // Support: Android<4.1, PhantomJS<2
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( scripts, getAll( node, "script" ) );
- }
- }
-
- callback.call( collection[ i ], node, i );
- }
-
- if ( hasScripts ) {
- doc = scripts[ scripts.length - 1 ].ownerDocument;
-
- // Reenable scripts
- jQuery.map( scripts, restoreScript );
-
- // Evaluate executable scripts on first document insertion
- for ( i = 0; i < hasScripts; i++ ) {
- node = scripts[ i ];
- if ( rscriptType.test( node.type || "" ) &&
- !dataPriv.access( node, "globalEval" ) &&
- jQuery.contains( doc, node ) ) {
-
- if ( node.src ) {
-
- // Optional AJAX dependency, but won't run scripts if not present
- if ( jQuery._evalUrl ) {
- jQuery._evalUrl( node.src );
- }
- } else {
- jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
- }
- }
- }
- }
- }
- }
-
- return collection;
-}
-
-function remove( elem, selector, keepData ) {
- var node,
- nodes = selector ? jQuery.filter( selector, elem ) : elem,
- i = 0;
-
- for ( ; ( node = nodes[ i ] ) != null; i++ ) {
- if ( !keepData && node.nodeType === 1 ) {
- jQuery.cleanData( getAll( node ) );
- }
-
- if ( node.parentNode ) {
- if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
- setGlobalEval( getAll( node, "script" ) );
- }
- node.parentNode.removeChild( node );
- }
- }
-
- return elem;
-}
-
-jQuery.extend( {
- htmlPrefilter: function( html ) {
- return html.replace( rxhtmlTag, "<$1></$2>" );
- },
-
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
- var i, l, srcElements, destElements,
- clone = elem.cloneNode( true ),
- inPage = jQuery.contains( elem.ownerDocument, elem );
-
- // Fix IE cloning issues
- if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
- !jQuery.isXMLDoc( elem ) ) {
-
- // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
- destElements = getAll( clone );
- srcElements = getAll( elem );
-
- for ( i = 0, l = srcElements.length; i < l; i++ ) {
- fixInput( srcElements[ i ], destElements[ i ] );
- }
- }
-
- // Copy the events from the original to the clone
- if ( dataAndEvents ) {
- if ( deepDataAndEvents ) {
- srcElements = srcElements || getAll( elem );
- destElements = destElements || getAll( clone );
-
- for ( i = 0, l = srcElements.length; i < l; i++ ) {
- cloneCopyEvent( srcElements[ i ], destElements[ i ] );
- }
- } else {
- cloneCopyEvent( elem, clone );
- }
- }
-
- // Preserve script evaluation history
- destElements = getAll( clone, "script" );
- if ( destElements.length > 0 ) {
- setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
- }
-
- // Return the cloned set
- return clone;
- },
-
- cleanData: function( elems ) {
- var data, elem, type,
- special = jQuery.event.special,
- i = 0;
-
- for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
- if ( acceptData( elem ) ) {
- if ( ( data = elem[ dataPriv.expando ] ) ) {
- if ( data.events ) {
- for ( type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- // This is a shortcut to avoid jQuery.event.remove's overhead
- } else {
- jQuery.removeEvent( elem, type, data.handle );
- }
- }
- }
-
- // Support: Chrome <= 35-45+
- // Assign undefined instead of using delete, see Data#remove
- elem[ dataPriv.expando ] = undefined;
- }
- if ( elem[ dataUser.expando ] ) {
-
- // Support: Chrome <= 35-45+
- // Assign undefined instead of using delete, see Data#remove
- elem[ dataUser.expando ] = undefined;
- }
- }
- }
- }
-} );
-
-jQuery.fn.extend( {
-
- // Keep domManip exposed until 3.0 (gh-2225)
- domManip: domManip,
-
- detach: function( selector ) {
- return remove( this, selector, true );
- },
-
- remove: function( selector ) {
- return remove( this, selector );
- },
-
- text: function( value ) {
- return access( this, function( value ) {
- return value === undefined ?
- jQuery.text( this ) :
- this.empty().each( function() {
- if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
- this.textContent = value;
- }
- } );
- }, null, value, arguments.length );
- },
-
- append: function() {
- return domManip( this, arguments, function( elem ) {
- if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
- var target = manipulationTarget( this, elem );
- target.appendChild( elem );
- }
- } );
- },
-
- prepend: function() {
- return domManip( this, arguments, function( elem ) {
- if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
- var target = manipulationTarget( this, elem );
- target.insertBefore( elem, target.firstChild );
- }
- } );
- },
-
- before: function() {
- return domManip( this, arguments, function( elem ) {
- if ( this.parentNode ) {
- this.parentNode.insertBefore( elem, this );
- }
- } );
- },
-
- after: function() {
- return domManip( this, arguments, function( elem ) {
- if ( this.parentNode ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- }
- } );
- },
-
- empty: function() {
- var elem,
- i = 0;
-
- for ( ; ( elem = this[ i ] ) != null; i++ ) {
- if ( elem.nodeType === 1 ) {
-
- // Prevent memory leaks
- jQuery.cleanData( getAll( elem, false ) );
-
- // Remove any remaining nodes
- elem.textContent = "";
- }
- }
-
- return this;
- },
-
- clone: function( dataAndEvents, deepDataAndEvents ) {
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
- return this.map( function() {
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
- } );
- },
-
- html: function( value ) {
- return access( this, function( value ) {
- var elem = this[ 0 ] || {},
- i = 0,
- l = this.length;
-
- if ( value === undefined && elem.nodeType === 1 ) {
- return elem.innerHTML;
- }
-
- // See if we can take a shortcut and just use innerHTML
- if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
- !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
-
- value = jQuery.htmlPrefilter( value );
-
- try {
- for ( ; i < l; i++ ) {
- elem = this[ i ] || {};
-
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( getAll( elem, false ) );
- elem.innerHTML = value;
- }
- }
-
- elem = 0;
-
- // If using innerHTML throws an exception, use the fallback method
- } catch ( e ) {}
- }
-
- if ( elem ) {
- this.empty().append( value );
- }
- }, null, value, arguments.length );
- },
-
- replaceWith: function() {
- var ignored = [];
-
- // Make the changes, replacing each non-ignored context element with the new content
- return domManip( this, arguments, function( elem ) {
- var parent = this.parentNode;
-
- if ( jQuery.inArray( this, ignored ) < 0 ) {
- jQuery.cleanData( getAll( this ) );
- if ( parent ) {
- parent.replaceChild( elem, this );
- }
- }
-
- // Force callback invocation
- }, ignored );
- }
-} );
-
-jQuery.each( {
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var elems,
- ret = [],
- insert = jQuery( selector ),
- last = insert.length - 1,
- i = 0;
-
- for ( ; i <= last; i++ ) {
- elems = i === last ? this : this.clone( true );
- jQuery( insert[ i ] )[ original ]( elems );
-
- // Support: QtWebKit
- // .get() because push.apply(_, arraylike) throws
- push.apply( ret, elems.get() );
- }
-
- return this.pushStack( ret );
- };
-} );
-
-
-var iframe,
- elemdisplay = {
-
- // Support: Firefox
- // We have to pre-define these values for FF (#10227)
- HTML: "block",
- BODY: "block"
- };
-
-/**
- * Retrieve the actual display of a element
- * @param {String} name nodeName of the element
- * @param {Object} doc Document object
- */
-
-// Called only from within defaultDisplay
-function actualDisplay( name, doc ) {
- var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-
- display = jQuery.css( elem[ 0 ], "display" );
-
- // We don't have any data stored on the element,
- // so use "detach" method as fast way to get rid of the element
- elem.detach();
-
- return display;
-}
-
-/**
- * Try to determine the default display value of an element
- * @param {String} nodeName
- */
-function defaultDisplay( nodeName ) {
- var doc = document,
- display = elemdisplay[ nodeName ];
-
- if ( !display ) {
- display = actualDisplay( nodeName, doc );
-
- // If the simple way fails, read from inside an iframe
- if ( display === "none" || !display ) {
-
- // Use the already-created iframe if possible
- iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) )
- .appendTo( doc.documentElement );
-
- // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
- doc = iframe[ 0 ].contentDocument;
-
- // Support: IE
- doc.write();
- doc.close();
-
- display = actualDisplay( nodeName, doc );
- iframe.detach();
- }
-
- // Store the correct default display
- elemdisplay[ nodeName ] = display;
- }
-
- return display;
-}
-var rmargin = ( /^margin/ );
-
-var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
-
-var getStyles = function( elem ) {
-
- // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
- // IE throws on elements created in popups
- // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
- var view = elem.ownerDocument.defaultView;
-
- if ( !view || !view.opener ) {
- view = window;
- }
-
- return view.getComputedStyle( elem );
- };
-
-var swap = function( elem, options, callback, args ) {
- var ret, name,
- old = {};
-
- // Remember the old values, and insert the new ones
- for ( name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- ret = callback.apply( elem, args || [] );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
-
- return ret;
-};
-
-
-var documentElement = document.documentElement;
-
-
-
-( function() {
- var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
- container = document.createElement( "div" ),
- div = document.createElement( "div" );
-
- // Finish early in limited (non-browser) environments
- if ( !div.style ) {
- return;
- }
-
- // Support: IE9-11+
- // Style of cloned element affects source element cloned (#8908)
- div.style.backgroundClip = "content-box";
- div.cloneNode( true ).style.backgroundClip = "";
- support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
- container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
- "padding:0;margin-top:1px;position:absolute";
- container.appendChild( div );
-
- // Executing both pixelPosition & boxSizingReliable tests require only one layout
- // so they're executed at the same time to save the second computation.
- function computeStyleTests() {
- div.style.cssText =
-
- // Support: Firefox<29, Android 2.3
- // Vendor-prefix box-sizing
- "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
- "position:relative;display:block;" +
- "margin:auto;border:1px;padding:1px;" +
- "top:1%;width:50%";
- div.innerHTML = "";
- documentElement.appendChild( container );
-
- var divStyle = window.getComputedStyle( div );
- pixelPositionVal = divStyle.top !== "1%";
- reliableMarginLeftVal = divStyle.marginLeft === "2px";
- boxSizingReliableVal = divStyle.width === "4px";
-
- // Support: Android 4.0 - 4.3 only
- // Some styles come back with percentage values, even though they shouldn't
- div.style.marginRight = "50%";
- pixelMarginRightVal = divStyle.marginRight === "4px";
-
- documentElement.removeChild( container );
- }
-
- jQuery.extend( support, {
- pixelPosition: function() {
-
- // This test is executed only once but we still do memoizing
- // since we can use the boxSizingReliable pre-computing.
- // No need to check if the test was already performed, though.
- computeStyleTests();
- return pixelPositionVal;
- },
- boxSizingReliable: function() {
- if ( boxSizingReliableVal == null ) {
- computeStyleTests();
- }
- return boxSizingReliableVal;
- },
- pixelMarginRight: function() {
-
- // Support: Android 4.0-4.3
- // We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
- // since that compresses better and they're computed together anyway.
- if ( boxSizingReliableVal == null ) {
- computeStyleTests();
- }
- return pixelMarginRightVal;
- },
- reliableMarginLeft: function() {
-
- // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
- if ( boxSizingReliableVal == null ) {
- computeStyleTests();
- }
- return reliableMarginLeftVal;
- },
- reliableMarginRight: function() {
-
- // Support: Android 2.3
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. (#3333)
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // This support function is only executed once so no memoizing is needed.
- var ret,
- marginDiv = div.appendChild( document.createElement( "div" ) );
-
- // Reset CSS: box-sizing; display; margin; border; padding
- marginDiv.style.cssText = div.style.cssText =
-
- // Support: Android 2.3
- // Vendor-prefix box-sizing
- "-webkit-box-sizing:content-box;box-sizing:content-box;" +
- "display:block;margin:0;border:0;padding:0";
- marginDiv.style.marginRight = marginDiv.style.width = "0";
- div.style.width = "1px";
- documentElement.appendChild( container );
-
- ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );
-
- documentElement.removeChild( container );
- div.removeChild( marginDiv );
-
- return ret;
- }
- } );
-} )();
-
-
-function curCSS( elem, name, computed ) {
- var width, minWidth, maxWidth, ret,
- style = elem.style;
-
- computed = computed || getStyles( elem );
- ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
-
- // Support: Opera 12.1x only
- // Fall back to style even without computed
- // computed is undefined for elems on document fragments
- if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {
- ret = jQuery.style( elem, name );
- }
-
- // Support: IE9
- // getPropertyValue is only needed for .css('filter') (#12537)
- if ( computed ) {
-
- // A tribute to the "awesome hack by Dean Edwards"
- // Android Browser returns percentage for some values,
- // but width seems to be reliably pixels.
- // This is against the CSSOM draft spec:
- // http://dev.w3.org/csswg/cssom/#resolved-values
- if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
-
- // Remember the original values
- width = style.width;
- minWidth = style.minWidth;
- maxWidth = style.maxWidth;
-
- // Put in the new values to get a computed value out
- style.minWidth = style.maxWidth = style.width = ret;
- ret = computed.width;
-
- // Revert the changed values
- style.width = width;
- style.minWidth = minWidth;
- style.maxWidth = maxWidth;
- }
- }
-
- return ret !== undefined ?
-
- // Support: IE9-11+
- // IE returns zIndex value as an integer.
- ret + "" :
- ret;
-}
-
-
-function addGetHookIf( conditionFn, hookFn ) {
-
- // Define the hook, we'll check on the first run if it's really needed.
- return {
- get: function() {
- if ( conditionFn() ) {
-
- // Hook not needed (or it's not possible to use it due
- // to missing dependency), remove it.
- delete this.get;
- return;
- }
-
- // Hook needed; redefine it so that the support test is not executed again.
- return ( this.get = hookFn ).apply( this, arguments );
- }
- };
-}
-
-
-var
-
- // Swappable if display is none or starts with table
- // except "table", "table-cell", or "table-caption"
- // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
- rdisplayswap = /^(none|table(?!-c[ea]).+)/,
-
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssNormalTransform = {
- letterSpacing: "0",
- fontWeight: "400"
- },
-
- cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
- emptyStyle = document.createElement( "div" ).style;
-
-// Return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( name ) {
-
- // Shortcut for names that are not vendor prefixed
- if ( name in emptyStyle ) {
- return name;
- }
-
- // Check for vendor prefixed names
- var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
- i = cssPrefixes.length;
-
- while ( i-- ) {
- name = cssPrefixes[ i ] + capName;
- if ( name in emptyStyle ) {
- return name;
- }
- }
-}
-
-function setPositiveNumber( elem, value, subtract ) {
-
- // Any relative (+/-) values have already been
- // normalized at this point
- var matches = rcssNum.exec( value );
- return matches ?
-
- // Guard against undefined "subtract", e.g., when used as in cssHooks
- Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
- value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
- var i = extra === ( isBorderBox ? "border" : "content" ) ?
-
- // If we already have the right measurement, avoid augmentation
- 4 :
-
- // Otherwise initialize for horizontal or vertical properties
- name === "width" ? 1 : 0,
-
- val = 0;
-
- for ( ; i < 4; i += 2 ) {
-
- // Both box models exclude margin, so add it if we want it
- if ( extra === "margin" ) {
- val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
- }
-
- if ( isBorderBox ) {
-
- // border-box includes padding, so remove it if we want content
- if ( extra === "content" ) {
- val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
- }
-
- // At this point, extra isn't border nor margin, so remove border
- if ( extra !== "margin" ) {
- val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
- }
- } else {
-
- // At this point, extra isn't content, so add padding
- val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
- // At this point, extra isn't content nor padding, so add border
- if ( extra !== "padding" ) {
- val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
- }
- }
- }
-
- return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
- // Start with offset property, which is equivalent to the border-box value
- var valueIsBorderBox = true,
- val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- styles = getStyles( elem ),
- isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
- // Support: IE11 only
- // In IE 11 fullscreen elements inside of an iframe have
- // 100x too small dimensions (gh-1764).
- if ( document.msFullscreenElement && window.top !== window ) {
-
- // Support: IE11 only
- // Running getBoundingClientRect on a disconnected node
- // in IE throws an error.
- if ( elem.getClientRects().length ) {
- val = Math.round( elem.getBoundingClientRect()[ name ] * 100 );
- }
- }
-
- // Some non-html elements return undefined for offsetWidth, so check for null/undefined
- // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
- // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
- if ( val <= 0 || val == null ) {
-
- // Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name, styles );
- if ( val < 0 || val == null ) {
- val = elem.style[ name ];
- }
-
- // Computed unit is not pixels. Stop here and return.
- if ( rnumnonpx.test( val ) ) {
- return val;
- }
-
- // Check for style in case a browser which returns unreliable values
- // for getComputedStyle silently falls back to the reliable elem.style
- valueIsBorderBox = isBorderBox &&
- ( support.boxSizingReliable() || val === elem.style[ name ] );
-
- // Normalize "", auto, and prepare for extra
- val = parseFloat( val ) || 0;
- }
-
- // Use the active box-sizing model to add/subtract irrelevant styles
- return ( val +
- augmentWidthOrHeight(
- elem,
- name,
- extra || ( isBorderBox ? "border" : "content" ),
- valueIsBorderBox,
- styles
- )
- ) + "px";
-}
-
-function showHide( elements, show ) {
- var display, elem, hidden,
- values = [],
- index = 0,
- length = elements.length;
-
- for ( ; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
-
- values[ index ] = dataPriv.get( elem, "olddisplay" );
- display = elem.style.display;
- if ( show ) {
-
- // Reset the inline display of this element to learn if it is
- // being hidden by cascaded rules or not
- if ( !values[ index ] && display === "none" ) {
- elem.style.display = "";
- }
-
- // Set elements which have been overridden with display: none
- // in a stylesheet to whatever the default browser style is
- // for such an element
- if ( elem.style.display === "" && isHidden( elem ) ) {
- values[ index ] = dataPriv.access(
- elem,
- "olddisplay",
- defaultDisplay( elem.nodeName )
- );
- }
- } else {
- hidden = isHidden( elem );
-
- if ( display !== "none" || !hidden ) {
- dataPriv.set(
- elem,
- "olddisplay",
- hidden ? display : jQuery.css( elem, "display" )
- );
- }
- }
- }
-
- // Set the display of most of the elements in a second loop
- // to avoid the constant reflow
- for ( index = 0; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
- if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
- elem.style.display = show ? values[ index ] || "" : "none";
- }
- }
-
- return elements;
-}
-
-jQuery.extend( {
-
- // Add in style property hooks for overriding the default
- // behavior of getting and setting a style property
- cssHooks: {
- opacity: {
- get: function( elem, computed ) {
- if ( computed ) {
-
- // We should always get a number back from opacity
- var ret = curCSS( elem, "opacity" );
- return ret === "" ? "1" : ret;
- }
- }
- }
- },
-
- // Don't automatically add "px" to these possibly-unitless properties
- cssNumber: {
- "animationIterationCount": true,
- "columnCount": true,
- "fillOpacity": true,
- "flexGrow": true,
- "flexShrink": true,
- "fontWeight": true,
- "lineHeight": true,
- "opacity": true,
- "order": true,
- "orphans": true,
- "widows": true,
- "zIndex": true,
- "zoom": true
- },
-
- // Add in properties whose names you wish to fix before
- // setting or getting the value
- cssProps: {
- "float": "cssFloat"
- },
-
- // Get and set the style property on a DOM Node
- style: function( elem, name, value, extra ) {
-
- // Don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
- return;
- }
-
- // Make sure that we're working with the right name
- var ret, type, hooks,
- origName = jQuery.camelCase( name ),
- style = elem.style;
-
- name = jQuery.cssProps[ origName ] ||
- ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
-
- // Gets hook for the prefixed version, then unprefixed version
- hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
- // Check if we're setting a value
- if ( value !== undefined ) {
- type = typeof value;
-
- // Convert "+=" or "-=" to relative numbers (#7345)
- if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
- value = adjustCSS( elem, name, ret );
-
- // Fixes bug #9237
- type = "number";
- }
-
- // Make sure that null and NaN values aren't set (#7116)
- if ( value == null || value !== value ) {
- return;
- }
-
- // If a number was passed in, add the unit (except for certain CSS properties)
- if ( type === "number" ) {
- value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
- }
-
- // Support: IE9-11+
- // background-* props affect original clone's values
- if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
- style[ name ] = "inherit";
- }
-
- // If a hook was provided, use that value, otherwise just set the specified value
- if ( !hooks || !( "set" in hooks ) ||
- ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
-
- style[ name ] = value;
- }
-
- } else {
-
- // If a hook was provided get the non-computed value from there
- if ( hooks && "get" in hooks &&
- ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
-
- return ret;
- }
-
- // Otherwise just get the value from the style object
- return style[ name ];
- }
- },
-
- css: function( elem, name, extra, styles ) {
- var val, num, hooks,
- origName = jQuery.camelCase( name );
-
- // Make sure that we're working with the right name
- name = jQuery.cssProps[ origName ] ||
- ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
-
- // Try prefixed name followed by the unprefixed name
- hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
- // If a hook was provided get the computed value from there
- if ( hooks && "get" in hooks ) {
- val = hooks.get( elem, true, extra );
- }
-
- // Otherwise, if a way to get the computed value exists, use that
- if ( val === undefined ) {
- val = curCSS( elem, name, styles );
- }
-
- // Convert "normal" to computed value
- if ( val === "normal" && name in cssNormalTransform ) {
- val = cssNormalTransform[ name ];
- }
-
- // Make numeric if forced or a qualifier was provided and val looks numeric
- if ( extra === "" || extra ) {
- num = parseFloat( val );
- return extra === true || isFinite( num ) ? num || 0 : val;
- }
- return val;
- }
-} );
-
-jQuery.each( [ "height", "width" ], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- if ( computed ) {
-
- // Certain elements can have dimension info if we invisibly show them
- // but it must have a current display style that would benefit
- return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
- elem.offsetWidth === 0 ?
- swap( elem, cssShow, function() {
- return getWidthOrHeight( elem, name, extra );
- } ) :
- getWidthOrHeight( elem, name, extra );
- }
- },
-
- set: function( elem, value, extra ) {
- var matches,
- styles = extra && getStyles( elem ),
- subtract = extra && augmentWidthOrHeight(
- elem,
- name,
- extra,
- jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
- styles
- );
-
- // Convert to pixels if value adjustment is needed
- if ( subtract && ( matches = rcssNum.exec( value ) ) &&
- ( matches[ 3 ] || "px" ) !== "px" ) {
-
- elem.style[ name ] = value;
- value = jQuery.css( elem, name );
- }
-
- return setPositiveNumber( elem, value, subtract );
- }
- };
-} );
-
-jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
- function( elem, computed ) {
- if ( computed ) {
- return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
- elem.getBoundingClientRect().left -
- swap( elem, { marginLeft: 0 }, function() {
- return elem.getBoundingClientRect().left;
- } )
- ) + "px";
- }
- }
-);
-
-// Support: Android 2.3
-jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
- function( elem, computed ) {
- if ( computed ) {
- return swap( elem, { "display": "inline-block" },
- curCSS, [ elem, "marginRight" ] );
- }
- }
-);
-
-// These hooks are used by animate to expand properties
-jQuery.each( {
- margin: "",
- padding: "",
- border: "Width"
-}, function( prefix, suffix ) {
- jQuery.cssHooks[ prefix + suffix ] = {
- expand: function( value ) {
- var i = 0,
- expanded = {},
-
- // Assumes a single number if not a string
- parts = typeof value === "string" ? value.split( " " ) : [ value ];
-
- for ( ; i < 4; i++ ) {
- expanded[ prefix + cssExpand[ i ] + suffix ] =
- parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
- }
-
- return expanded;
- }
- };
-
- if ( !rmargin.test( prefix ) ) {
- jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
- }
-} );
-
-jQuery.fn.extend( {
- css: function( name, value ) {
- return access( this, function( elem, name, value ) {
- var styles, len,
- map = {},
- i = 0;
-
- if ( jQuery.isArray( name ) ) {
- styles = getStyles( elem );
- len = name.length;
-
- for ( ; i < len; i++ ) {
- map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
- }
-
- return map;
- }
-
- return value !== undefined ?
- jQuery.style( elem, name, value ) :
- jQuery.css( elem, name );
- }, name, value, arguments.length > 1 );
- },
- show: function() {
- return showHide( this, true );
- },
- hide: function() {
- return showHide( this );
- },
- toggle: function( state ) {
- if ( typeof state === "boolean" ) {
- return state ? this.show() : this.hide();
- }
-
- return this.each( function() {
- if ( isHidden( this ) ) {
- jQuery( this ).show();
- } else {
- jQuery( this ).hide();
- }
- } );
- }
-} );
-
-
-function Tween( elem, options, prop, end, easing ) {
- return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
- constructor: Tween,
- init: function( elem, options, prop, end, easing, unit ) {
- this.elem = elem;
- this.prop = prop;
- this.easing = easing || jQuery.easing._default;
- this.options = options;
- this.start = this.now = this.cur();
- this.end = end;
- this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
- },
- cur: function() {
- var hooks = Tween.propHooks[ this.prop ];
-
- return hooks && hooks.get ?
- hooks.get( this ) :
- Tween.propHooks._default.get( this );
- },
- run: function( percent ) {
- var eased,
- hooks = Tween.propHooks[ this.prop ];
-
- if ( this.options.duration ) {
- this.pos = eased = jQuery.easing[ this.easing ](
- percent, this.options.duration * percent, 0, 1, this.options.duration
- );
- } else {
- this.pos = eased = percent;
- }
- this.now = ( this.end - this.start ) * eased + this.start;
-
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- if ( hooks && hooks.set ) {
- hooks.set( this );
- } else {
- Tween.propHooks._default.set( this );
- }
- return this;
- }
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
- _default: {
- get: function( tween ) {
- var result;
-
- // Use a property on the element directly when it is not a DOM element,
- // or when there is no matching style property that exists.
- if ( tween.elem.nodeType !== 1 ||
- tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
- return tween.elem[ tween.prop ];
- }
-
- // Passing an empty string as a 3rd parameter to .css will automatically
- // attempt a parseFloat and fallback to a string if the parse fails.
- // Simple values such as "10px" are parsed to Float;
- // complex values such as "rotate(1rad)" are returned as-is.
- result = jQuery.css( tween.elem, tween.prop, "" );
-
- // Empty strings, null, undefined and "auto" are converted to 0.
- return !result || result === "auto" ? 0 : result;
- },
- set: function( tween ) {
-
- // Use step hook for back compat.
- // Use cssHook if its there.
- // Use .style if available and use plain properties where available.
- if ( jQuery.fx.step[ tween.prop ] ) {
- jQuery.fx.step[ tween.prop ]( tween );
- } else if ( tween.elem.nodeType === 1 &&
- ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
- jQuery.cssHooks[ tween.prop ] ) ) {
- jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
- } else {
- tween.elem[ tween.prop ] = tween.now;
- }
- }
- }
-};
-
-// Support: IE9
-// Panic based approach to setting things on disconnected nodes
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
- set: function( tween ) {
- if ( tween.elem.nodeType && tween.elem.parentNode ) {
- tween.elem[ tween.prop ] = tween.now;
- }
- }
-};
-
-jQuery.easing = {
- linear: function( p ) {
- return p;
- },
- swing: function( p ) {
- return 0.5 - Math.cos( p * Math.PI ) / 2;
- },
- _default: "swing"
-};
-
-jQuery.fx = Tween.prototype.init;
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-
-
-
-var
- fxNow, timerId,
- rfxtypes = /^(?:toggle|show|hide)$/,
- rrun = /queueHooks$/;
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
- window.setTimeout( function() {
- fxNow = undefined;
- } );
- return ( fxNow = jQuery.now() );
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
- var which,
- i = 0,
- attrs = { height: type };
-
- // If we include width, step value is 1 to do all cssExpand values,
- // otherwise step value is 2 to skip over Left and Right
- includeWidth = includeWidth ? 1 : 0;
- for ( ; i < 4 ; i += 2 - includeWidth ) {
- which = cssExpand[ i ];
- attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
- }
-
- if ( includeWidth ) {
- attrs.opacity = attrs.width = type;
- }
-
- return attrs;
-}
-
-function createTween( value, prop, animation ) {
- var tween,
- collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
- index = 0,
- length = collection.length;
- for ( ; index < length; index++ ) {
- if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
-
- // We're done with this property
- return tween;
- }
- }
-}
-
-function defaultPrefilter( elem, props, opts ) {
- /* jshint validthis: true */
- var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
- anim = this,
- orig = {},
- style = elem.style,
- hidden = elem.nodeType && isHidden( elem ),
- dataShow = dataPriv.get( elem, "fxshow" );
-
- // Handle queue: false promises
- if ( !opts.queue ) {
- hooks = jQuery._queueHooks( elem, "fx" );
- if ( hooks.unqueued == null ) {
- hooks.unqueued = 0;
- oldfire = hooks.empty.fire;
- hooks.empty.fire = function() {
- if ( !hooks.unqueued ) {
- oldfire();
- }
- };
- }
- hooks.unqueued++;
-
- anim.always( function() {
-
- // Ensure the complete handler is called before this completes
- anim.always( function() {
- hooks.unqueued--;
- if ( !jQuery.queue( elem, "fx" ).length ) {
- hooks.empty.fire();
- }
- } );
- } );
- }
-
- // Height/width overflow pass
- if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-
- // Make sure that nothing sneaks out
- // Record all 3 overflow attributes because IE9-10 do not
- // change the overflow attribute when overflowX and
- // overflowY are set to the same value
- opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
- // Set display property to inline-block for height/width
- // animations on inline elements that are having width/height animated
- display = jQuery.css( elem, "display" );
-
- // Test default display if display is currently "none"
- checkDisplay = display === "none" ?
- dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
-
- if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
- style.display = "inline-block";
- }
- }
-
- if ( opts.overflow ) {
- style.overflow = "hidden";
- anim.always( function() {
- style.overflow = opts.overflow[ 0 ];
- style.overflowX = opts.overflow[ 1 ];
- style.overflowY = opts.overflow[ 2 ];
- } );
- }
-
- // show/hide pass
- for ( prop in props ) {
- value = props[ prop ];
- if ( rfxtypes.exec( value ) ) {
- delete props[ prop ];
- toggle = toggle || value === "toggle";
- if ( value === ( hidden ? "hide" : "show" ) ) {
-
- // If there is dataShow left over from a stopped hide or show
- // and we are going to proceed with show, we should pretend to be hidden
- if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
- hidden = true;
- } else {
- continue;
- }
- }
- orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-
- // Any non-fx value stops us from restoring the original display value
- } else {
- display = undefined;
- }
- }
-
- if ( !jQuery.isEmptyObject( orig ) ) {
- if ( dataShow ) {
- if ( "hidden" in dataShow ) {
- hidden = dataShow.hidden;
- }
- } else {
- dataShow = dataPriv.access( elem, "fxshow", {} );
- }
-
- // Store state if its toggle - enables .stop().toggle() to "reverse"
- if ( toggle ) {
- dataShow.hidden = !hidden;
- }
- if ( hidden ) {
- jQuery( elem ).show();
- } else {
- anim.done( function() {
- jQuery( elem ).hide();
- } );
- }
- anim.done( function() {
- var prop;
-
- dataPriv.remove( elem, "fxshow" );
- for ( prop in orig ) {
- jQuery.style( elem, prop, orig[ prop ] );
- }
- } );
- for ( prop in orig ) {
- tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
- if ( !( prop in dataShow ) ) {
- dataShow[ prop ] = tween.start;
- if ( hidden ) {
- tween.end = tween.start;
- tween.start = prop === "width" || prop === "height" ? 1 : 0;
- }
- }
- }
-
- // If this is a noop like .hide().hide(), restore an overwritten display value
- } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) {
- style.display = display;
- }
-}
-
-function propFilter( props, specialEasing ) {
- var index, name, easing, value, hooks;
-
- // camelCase, specialEasing and expand cssHook pass
- for ( index in props ) {
- name = jQuery.camelCase( index );
- easing = specialEasing[ name ];
- value = props[ index ];
- if ( jQuery.isArray( value ) ) {
- easing = value[ 1 ];
- value = props[ index ] = value[ 0 ];
- }
-
- if ( index !== name ) {
- props[ name ] = value;
- delete props[ index ];
- }
-
- hooks = jQuery.cssHooks[ name ];
- if ( hooks && "expand" in hooks ) {
- value = hooks.expand( value );
- delete props[ name ];
-
- // Not quite $.extend, this won't overwrite existing keys.
- // Reusing 'index' because we have the correct "name"
- for ( index in value ) {
- if ( !( index in props ) ) {
- props[ index ] = value[ index ];
- specialEasing[ index ] = easing;
- }
- }
- } else {
- specialEasing[ name ] = easing;
- }
- }
-}
-
-function Animation( elem, properties, options ) {
- var result,
- stopped,
- index = 0,
- length = Animation.prefilters.length,
- deferred = jQuery.Deferred().always( function() {
-
- // Don't match elem in the :animated selector
- delete tick.elem;
- } ),
- tick = function() {
- if ( stopped ) {
- return false;
- }
- var currentTime = fxNow || createFxNow(),
- remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-
- // Support: Android 2.3
- // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
- temp = remaining / animation.duration || 0,
- percent = 1 - temp,
- index = 0,
- length = animation.tweens.length;
-
- for ( ; index < length ; index++ ) {
- animation.tweens[ index ].run( percent );
- }
-
- deferred.notifyWith( elem, [ animation, percent, remaining ] );
-
- if ( percent < 1 && length ) {
- return remaining;
- } else {
- deferred.resolveWith( elem, [ animation ] );
- return false;
- }
- },
- animation = deferred.promise( {
- elem: elem,
- props: jQuery.extend( {}, properties ),
- opts: jQuery.extend( true, {
- specialEasing: {},
- easing: jQuery.easing._default
- }, options ),
- originalProperties: properties,
- originalOptions: options,
- startTime: fxNow || createFxNow(),
- duration: options.duration,
- tweens: [],
- createTween: function( prop, end ) {
- var tween = jQuery.Tween( elem, animation.opts, prop, end,
- animation.opts.specialEasing[ prop ] || animation.opts.easing );
- animation.tweens.push( tween );
- return tween;
- },
- stop: function( gotoEnd ) {
- var index = 0,
-
- // If we are going to the end, we want to run all the tweens
- // otherwise we skip this part
- length = gotoEnd ? animation.tweens.length : 0;
- if ( stopped ) {
- return this;
- }
- stopped = true;
- for ( ; index < length ; index++ ) {
- animation.tweens[ index ].run( 1 );
- }
-
- // Resolve when we played the last frame; otherwise, reject
- if ( gotoEnd ) {
- deferred.notifyWith( elem, [ animation, 1, 0 ] );
- deferred.resolveWith( elem, [ animation, gotoEnd ] );
- } else {
- deferred.rejectWith( elem, [ animation, gotoEnd ] );
- }
- return this;
- }
- } ),
- props = animation.props;
-
- propFilter( props, animation.opts.specialEasing );
-
- for ( ; index < length ; index++ ) {
- result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
- if ( result ) {
- if ( jQuery.isFunction( result.stop ) ) {
- jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
- jQuery.proxy( result.stop, result );
- }
- return result;
- }
- }
-
- jQuery.map( props, createTween, animation );
-
- if ( jQuery.isFunction( animation.opts.start ) ) {
- animation.opts.start.call( elem, animation );
- }
-
- jQuery.fx.timer(
- jQuery.extend( tick, {
- elem: elem,
- anim: animation,
- queue: animation.opts.queue
- } )
- );
-
- // attach callbacks from options
- return animation.progress( animation.opts.progress )
- .done( animation.opts.done, animation.opts.complete )
- .fail( animation.opts.fail )
- .always( animation.opts.always );
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
- tweeners: {
- "*": [ function( prop, value ) {
- var tween = this.createTween( prop, value );
- adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
- return tween;
- } ]
- },
-
- tweener: function( props, callback ) {
- if ( jQuery.isFunction( props ) ) {
- callback = props;
- props = [ "*" ];
- } else {
- props = props.match( rnotwhite );
- }
-
- var prop,
- index = 0,
- length = props.length;
-
- for ( ; index < length ; index++ ) {
- prop = props[ index ];
- Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
- Animation.tweeners[ prop ].unshift( callback );
- }
- },
-
- prefilters: [ defaultPrefilter ],
-
- prefilter: function( callback, prepend ) {
- if ( prepend ) {
- Animation.prefilters.unshift( callback );
- } else {
- Animation.prefilters.push( callback );
- }
- }
-} );
-
-jQuery.speed = function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
- opt.duration : opt.duration in jQuery.fx.speeds ?
- jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
- // Normalize opt.queue - true/undefined/null -> "fx"
- if ( opt.queue == null || opt.queue === true ) {
- opt.queue = "fx";
- }
-
- // Queueing
- opt.old = opt.complete;
-
- opt.complete = function() {
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
-
- if ( opt.queue ) {
- jQuery.dequeue( this, opt.queue );
- }
- };
-
- return opt;
-};
-
-jQuery.fn.extend( {
- fadeTo: function( speed, to, easing, callback ) {
-
- // Show any hidden elements after setting opacity to 0
- return this.filter( isHidden ).css( "opacity", 0 ).show()
-
- // Animate to the value specified
- .end().animate( { opacity: to }, speed, easing, callback );
- },
- animate: function( prop, speed, easing, callback ) {
- var empty = jQuery.isEmptyObject( prop ),
- optall = jQuery.speed( speed, easing, callback ),
- doAnimation = function() {
-
- // Operate on a copy of prop so per-property easing won't be lost
- var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
- // Empty animations, or finishing resolves immediately
- if ( empty || dataPriv.get( this, "finish" ) ) {
- anim.stop( true );
- }
- };
- doAnimation.finish = doAnimation;
-
- return empty || optall.queue === false ?
- this.each( doAnimation ) :
- this.queue( optall.queue, doAnimation );
- },
- stop: function( type, clearQueue, gotoEnd ) {
- var stopQueue = function( hooks ) {
- var stop = hooks.stop;
- delete hooks.stop;
- stop( gotoEnd );
- };
-
- if ( typeof type !== "string" ) {
- gotoEnd = clearQueue;
- clearQueue = type;
- type = undefined;
- }
- if ( clearQueue && type !== false ) {
- this.queue( type || "fx", [] );
- }
-
- return this.each( function() {
- var dequeue = true,
- index = type != null && type + "queueHooks",
- timers = jQuery.timers,
- data = dataPriv.get( this );
-
- if ( index ) {
- if ( data[ index ] && data[ index ].stop ) {
- stopQueue( data[ index ] );
- }
- } else {
- for ( index in data ) {
- if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
- stopQueue( data[ index ] );
- }
- }
- }
-
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this &&
- ( type == null || timers[ index ].queue === type ) ) {
-
- timers[ index ].anim.stop( gotoEnd );
- dequeue = false;
- timers.splice( index, 1 );
- }
- }
-
- // Start the next in the queue if the last step wasn't forced.
- // Timers currently will call their complete callbacks, which
- // will dequeue but only if they were gotoEnd.
- if ( dequeue || !gotoEnd ) {
- jQuery.dequeue( this, type );
- }
- } );
- },
- finish: function( type ) {
- if ( type !== false ) {
- type = type || "fx";
- }
- return this.each( function() {
- var index,
- data = dataPriv.get( this ),
- queue = data[ type + "queue" ],
- hooks = data[ type + "queueHooks" ],
- timers = jQuery.timers,
- length = queue ? queue.length : 0;
-
- // Enable finishing flag on private data
- data.finish = true;
-
- // Empty the queue first
- jQuery.queue( this, type, [] );
-
- if ( hooks && hooks.stop ) {
- hooks.stop.call( this, true );
- }
-
- // Look for any active animations, and finish them
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
- timers[ index ].anim.stop( true );
- timers.splice( index, 1 );
- }
- }
-
- // Look for any animations in the old queue and finish them
- for ( index = 0; index < length; index++ ) {
- if ( queue[ index ] && queue[ index ].finish ) {
- queue[ index ].finish.call( this );
- }
- }
-
- // Turn off finishing flag
- delete data.finish;
- } );
- }
-} );
-
-jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
- var cssFn = jQuery.fn[ name ];
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return speed == null || typeof speed === "boolean" ?
- cssFn.apply( this, arguments ) :
- this.animate( genFx( name, true ), speed, easing, callback );
- };
-} );
-
-// Generate shortcuts for custom animations
-jQuery.each( {
- slideDown: genFx( "show" ),
- slideUp: genFx( "hide" ),
- slideToggle: genFx( "toggle" ),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" },
- fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return this.animate( props, speed, easing, callback );
- };
-} );
-
-jQuery.timers = [];
-jQuery.fx.tick = function() {
- var timer,
- i = 0,
- timers = jQuery.timers;
-
- fxNow = jQuery.now();
-
- for ( ; i < timers.length; i++ ) {
- timer = timers[ i ];
-
- // Checks the timer has not already been removed
- if ( !timer() && timers[ i ] === timer ) {
- timers.splice( i--, 1 );
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
- fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
- jQuery.timers.push( timer );
- if ( timer() ) {
- jQuery.fx.start();
- } else {
- jQuery.timers.pop();
- }
-};
-
-jQuery.fx.interval = 13;
-jQuery.fx.start = function() {
- if ( !timerId ) {
- timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
- }
-};
-
-jQuery.fx.stop = function() {
- window.clearInterval( timerId );
-
- timerId = null;
-};
-
-jQuery.fx.speeds = {
- slow: 600,
- fast: 200,
-
- // Default speed
- _default: 400
-};
-
-
-// Based off of the plugin by Clint Helfers, with permission.
-// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
-jQuery.fn.delay = function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = window.setTimeout( next, time );
- hooks.stop = function() {
- window.clearTimeout( timeout );
- };
- } );
-};
-
-
-( function() {
- var input = document.createElement( "input" ),
- select = document.createElement( "select" ),
- opt = select.appendChild( document.createElement( "option" ) );
-
- input.type = "checkbox";
-
- // Support: iOS<=5.1, Android<=4.2+
- // Default value for a checkbox should be "on"
- support.checkOn = input.value !== "";
-
- // Support: IE<=11+
- // Must access selectedIndex to make default options select
- support.optSelected = opt.selected;
-
- // Support: Android<=2.3
- // Options inside disabled selects are incorrectly marked as disabled
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Support: IE<=11+
- // An input loses its value after becoming a radio
- input = document.createElement( "input" );
- input.value = "t";
- input.type = "radio";
- support.radioValue = input.value === "t";
-} )();
-
-
-var boolHook,
- attrHandle = jQuery.expr.attrHandle;
-
-jQuery.fn.extend( {
- attr: function( name, value ) {
- return access( this, jQuery.attr, name, value, arguments.length > 1 );
- },
-
- removeAttr: function( name ) {
- return this.each( function() {
- jQuery.removeAttr( this, name );
- } );
- }
-} );
-
-jQuery.extend( {
- attr: function( elem, name, value ) {
- var ret, hooks,
- nType = elem.nodeType;
-
- // Don't get/set attributes on text, comment and attribute nodes
- if ( nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === "undefined" ) {
- return jQuery.prop( elem, name, value );
- }
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] ||
- ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
- }
-
- if ( value !== undefined ) {
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return;
- }
-
- if ( hooks && "set" in hooks &&
- ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
- return ret;
- }
-
- elem.setAttribute( name, value + "" );
- return value;
- }
-
- if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
- return ret;
- }
-
- ret = jQuery.find.attr( elem, name );
-
- // Non-existent attributes return null, we normalize to undefined
- return ret == null ? undefined : ret;
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- if ( !support.radioValue && value === "radio" &&
- jQuery.nodeName( elem, "input" ) ) {
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- }
- },
-
- removeAttr: function( elem, value ) {
- var name, propName,
- i = 0,
- attrNames = value && value.match( rnotwhite );
-
- if ( attrNames && elem.nodeType === 1 ) {
- while ( ( name = attrNames[ i++ ] ) ) {
- propName = jQuery.propFix[ name ] || name;
-
- // Boolean attributes get special treatment (#10870)
- if ( jQuery.expr.match.bool.test( name ) ) {
-
- // Set corresponding property to false
- elem[ propName ] = false;
- }
-
- elem.removeAttribute( name );
- }
- }
- }
-} );
-
-// Hooks for boolean attributes
-boolHook = {
- set: function( elem, value, name ) {
- if ( value === false ) {
-
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- elem.setAttribute( name, name );
- }
- return name;
- }
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
- var getter = attrHandle[ name ] || jQuery.find.attr;
-
- attrHandle[ name ] = function( elem, name, isXML ) {
- var ret, handle;
- if ( !isXML ) {
-
- // Avoid an infinite loop by temporarily removing this function from the getter
- handle = attrHandle[ name ];
- attrHandle[ name ] = ret;
- ret = getter( elem, name, isXML ) != null ?
- name.toLowerCase() :
- null;
- attrHandle[ name ] = handle;
- }
- return ret;
- };
-} );
-
-
-
-
-var rfocusable = /^(?:input|select|textarea|button)$/i,
- rclickable = /^(?:a|area)$/i;
-
-jQuery.fn.extend( {
- prop: function( name, value ) {
- return access( this, jQuery.prop, name, value, arguments.length > 1 );
- },
-
- removeProp: function( name ) {
- return this.each( function() {
- delete this[ jQuery.propFix[ name ] || name ];
- } );
- }
-} );
-
-jQuery.extend( {
- prop: function( elem, name, value ) {
- var ret, hooks,
- nType = elem.nodeType;
-
- // Don't get/set properties on text, comment and attribute nodes
- if ( nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks &&
- ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
- return ret;
- }
-
- return ( elem[ name ] = value );
- }
-
- if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
- return ret;
- }
-
- return elem[ name ];
- },
-
- propHooks: {
- tabIndex: {
- get: function( elem ) {
-
- // elem.tabIndex doesn't always return the
- // correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- // Use proper attribute retrieval(#12072)
- var tabindex = jQuery.find.attr( elem, "tabindex" );
-
- return tabindex ?
- parseInt( tabindex, 10 ) :
- rfocusable.test( elem.nodeName ) ||
- rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- -1;
- }
- }
- },
-
- propFix: {
- "for": "htmlFor",
- "class": "className"
- }
-} );
-
-if ( !support.optSelected ) {
- jQuery.propHooks.selected = {
- get: function( elem ) {
- var parent = elem.parentNode;
- if ( parent && parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- return null;
- }
- };
-}
-
-jQuery.each( [
- "tabIndex",
- "readOnly",
- "maxLength",
- "cellSpacing",
- "cellPadding",
- "rowSpan",
- "colSpan",
- "useMap",
- "frameBorder",
- "contentEditable"
-], function() {
- jQuery.propFix[ this.toLowerCase() ] = this;
-} );
-
-
-
-
-var rclass = /[\t\r\n\f]/g;
-
-function getClass( elem ) {
- return elem.getAttribute && elem.getAttribute( "class" ) || "";
-}
-
-jQuery.fn.extend( {
- addClass: function( value ) {
- var classes, elem, cur, curValue, clazz, j, finalValue,
- i = 0;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each( function( j ) {
- jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
- } );
- }
-
- if ( typeof value === "string" && value ) {
- classes = value.match( rnotwhite ) || [];
-
- while ( ( elem = this[ i++ ] ) ) {
- curValue = getClass( elem );
- cur = elem.nodeType === 1 &&
- ( " " + curValue + " " ).replace( rclass, " " );
-
- if ( cur ) {
- j = 0;
- while ( ( clazz = classes[ j++ ] ) ) {
- if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
- cur += clazz + " ";
- }
- }
-
- // Only assign if different to avoid unneeded rendering.
- finalValue = jQuery.trim( cur );
- if ( curValue !== finalValue ) {
- elem.setAttribute( "class", finalValue );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var classes, elem, cur, curValue, clazz, j, finalValue,
- i = 0;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each( function( j ) {
- jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
- } );
- }
-
- if ( !arguments.length ) {
- return this.attr( "class", "" );
- }
-
- if ( typeof value === "string" && value ) {
- classes = value.match( rnotwhite ) || [];
-
- while ( ( elem = this[ i++ ] ) ) {
- curValue = getClass( elem );
-
- // This expression is here for better compressibility (see addClass)
- cur = elem.nodeType === 1 &&
- ( " " + curValue + " " ).replace( rclass, " " );
-
- if ( cur ) {
- j = 0;
- while ( ( clazz = classes[ j++ ] ) ) {
-
- // Remove *all* instances
- while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
- cur = cur.replace( " " + clazz + " ", " " );
- }
- }
-
- // Only assign if different to avoid unneeded rendering.
- finalValue = jQuery.trim( cur );
- if ( curValue !== finalValue ) {
- elem.setAttribute( "class", finalValue );
- }
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value;
-
- if ( typeof stateVal === "boolean" && type === "string" ) {
- return stateVal ? this.addClass( value ) : this.removeClass( value );
- }
-
- if ( jQuery.isFunction( value ) ) {
- return this.each( function( i ) {
- jQuery( this ).toggleClass(
- value.call( this, i, getClass( this ), stateVal ),
- stateVal
- );
- } );
- }
-
- return this.each( function() {
- var className, i, self, classNames;
-
- if ( type === "string" ) {
-
- // Toggle individual class names
- i = 0;
- self = jQuery( this );
- classNames = value.match( rnotwhite ) || [];
-
- while ( ( className = classNames[ i++ ] ) ) {
-
- // Check each className given, space separated list
- if ( self.hasClass( className ) ) {
- self.removeClass( className );
- } else {
- self.addClass( className );
- }
- }
-
- // Toggle whole class name
- } else if ( value === undefined || type === "boolean" ) {
- className = getClass( this );
- if ( className ) {
-
- // Store className if set
- dataPriv.set( this, "__className__", className );
- }
-
- // If the element has a class name or if we're passed `false`,
- // then remove the whole classname (if there was one, the above saved it).
- // Otherwise bring back whatever was previously saved (if anything),
- // falling back to the empty string if nothing was stored.
- if ( this.setAttribute ) {
- this.setAttribute( "class",
- className || value === false ?
- "" :
- dataPriv.get( this, "__className__" ) || ""
- );
- }
- }
- } );
- },
-
- hasClass: function( selector ) {
- var className, elem,
- i = 0;
-
- className = " " + selector + " ";
- while ( ( elem = this[ i++ ] ) ) {
- if ( elem.nodeType === 1 &&
- ( " " + getClass( elem ) + " " ).replace( rclass, " " )
- .indexOf( className ) > -1
- ) {
- return true;
- }
- }
-
- return false;
- }
-} );
-
-
-
-
-var rreturn = /\r/g;
-
-jQuery.fn.extend( {
- val: function( value ) {
- var hooks, ret, isFunction,
- elem = this[ 0 ];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.type ] ||
- jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
- if ( hooks &&
- "get" in hooks &&
- ( ret = hooks.get( elem, "value" ) ) !== undefined
- ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
-
- // Handle most common string cases
- ret.replace( rreturn, "" ) :
-
- // Handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return;
- }
-
- isFunction = jQuery.isFunction( value );
-
- return this.each( function( i ) {
- var val;
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, jQuery( this ).val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
-
- } else if ( typeof val === "number" ) {
- val += "";
-
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map( val, function( value ) {
- return value == null ? "" : value + "";
- } );
- }
-
- hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- } );
- }
-} );
-
-jQuery.extend( {
- valHooks: {
- option: {
- get: function( elem ) {
-
- // Support: IE<11
- // option.value not trimmed (#14858)
- return jQuery.trim( elem.value );
- }
- },
- select: {
- get: function( elem ) {
- var value, option,
- options = elem.options,
- index = elem.selectedIndex,
- one = elem.type === "select-one" || index < 0,
- values = one ? null : [],
- max = one ? index + 1 : options.length,
- i = index < 0 ?
- max :
- one ? index : 0;
-
- // Loop through all the selected options
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // IE8-9 doesn't update selected after form reset (#2551)
- if ( ( option.selected || i === index ) &&
-
- // Don't return options that are disabled or in a disabled optgroup
- ( support.optDisabled ?
- !option.disabled : option.getAttribute( "disabled" ) === null ) &&
- ( !option.parentNode.disabled ||
- !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var optionSet, option,
- options = elem.options,
- values = jQuery.makeArray( value ),
- i = options.length;
-
- while ( i-- ) {
- option = options[ i ];
- if ( option.selected =
- jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
- ) {
- optionSet = true;
- }
- }
-
- // Force browsers to behave consistently when non-matching value is set
- if ( !optionSet ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- }
-} );
-
-// Radios and checkboxes getter/setter
-jQuery.each( [ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
- }
- }
- };
- if ( !support.checkOn ) {
- jQuery.valHooks[ this ].get = function( elem ) {
- return elem.getAttribute( "value" ) === null ? "on" : elem.value;
- };
- }
-} );
-
-
-
-
-// Return jQuery for attributes-only inclusion
-
-
-var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
-
-jQuery.extend( jQuery.event, {
-
- trigger: function( event, data, elem, onlyHandlers ) {
-
- var i, cur, tmp, bubbleType, ontype, handle, special,
- eventPath = [ elem || document ],
- type = hasOwn.call( event, "type" ) ? event.type : event,
- namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
-
- cur = tmp = elem = elem || document;
-
- // Don't do events on text and comment nodes
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
-
- if ( type.indexOf( "." ) > -1 ) {
-
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split( "." );
- type = namespaces.shift();
- namespaces.sort();
- }
- ontype = type.indexOf( ":" ) < 0 && "on" + type;
-
- // Caller can pass in a jQuery.Event object, Object, or just an event type string
- event = event[ jQuery.expando ] ?
- event :
- new jQuery.Event( type, typeof event === "object" && event );
-
- // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
- event.isTrigger = onlyHandlers ? 2 : 3;
- event.namespace = namespaces.join( "." );
- event.rnamespace = event.namespace ?
- new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
- null;
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
- }
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data == null ?
- [ event ] :
- jQuery.makeArray( data, [ event ] );
-
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
-
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
- bubbleType = special.delegateType || type;
- if ( !rfocusMorph.test( bubbleType + type ) ) {
- cur = cur.parentNode;
- }
- for ( ; cur; cur = cur.parentNode ) {
- eventPath.push( cur );
- tmp = cur;
- }
-
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( tmp === ( elem.ownerDocument || document ) ) {
- eventPath.push( tmp.defaultView || tmp.parentWindow || window );
- }
- }
-
- // Fire handlers on the event path
- i = 0;
- while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
-
- event.type = i > 1 ?
- bubbleType :
- special.bindType || type;
-
- // jQuery handler
- handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
- dataPriv.get( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
-
- // Native handler
- handle = ontype && cur[ ontype ];
- if ( handle && handle.apply && acceptData( cur ) ) {
- event.result = handle.apply( cur, data );
- if ( event.result === false ) {
- event.preventDefault();
- }
- }
- }
- event.type = type;
-
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
- if ( ( !special._default ||
- special._default.apply( eventPath.pop(), data ) === false ) &&
- acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Don't do default actions on window, that's where global variables be (#6170)
- if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
-
- // Don't re-trigger an onFOO event when we call its FOO() method
- tmp = elem[ ontype ];
-
- if ( tmp ) {
- elem[ ontype ] = null;
- }
-
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- elem[ type ]();
- jQuery.event.triggered = undefined;
-
- if ( tmp ) {
- elem[ ontype ] = tmp;
- }
- }
- }
- }
-
- return event.result;
- },
-
- // Piggyback on a donor event to simulate a different one
- simulate: function( type, elem, event ) {
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- {
- type: type,
- isSimulated: true
-
- // Previously, `originalEvent: {}` was set here, so stopPropagation call
- // would not be triggered on donor event, since in our own
- // jQuery.event.stopPropagation function we had a check for existence of
- // originalEvent.stopPropagation method, so, consequently it would be a noop.
- //
- // But now, this "simulate" function is used only for events
- // for which stopPropagation() is noop, so there is no need for that anymore.
- //
- // For the 1.x branch though, guard for "click" and "submit"
- // events is still used, but was moved to jQuery.event.stopPropagation function
- // because `originalEvent` should point to the original event for the constancy
- // with other events and for more focused logic
- }
- );
-
- jQuery.event.trigger( e, null, elem );
-
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
- }
- }
-
-} );
-
-jQuery.fn.extend( {
-
- trigger: function( type, data ) {
- return this.each( function() {
- jQuery.event.trigger( type, data, this );
- } );
- },
- triggerHandler: function( type, data ) {
- var elem = this[ 0 ];
- if ( elem ) {
- return jQuery.event.trigger( type, data, elem, true );
- }
- }
-} );
-
-
-jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu" ).split( " " ),
- function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-} );
-
-jQuery.fn.extend( {
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-} );
-
-
-
-
-support.focusin = "onfocusin" in window;
-
-
-// Support: Firefox
-// Firefox doesn't have focus(in | out) events
-// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
-//
-// Support: Chrome, Safari
-// focus(in | out) events fire after focus & blur events,
-// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
-// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
-if ( !support.focusin ) {
- jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler on the document while someone wants focusin/focusout
- var handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
- };
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- var doc = this.ownerDocument || this,
- attaches = dataPriv.access( doc, fix );
-
- if ( !attaches ) {
- doc.addEventListener( orig, handler, true );
- }
- dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
- },
- teardown: function() {
- var doc = this.ownerDocument || this,
- attaches = dataPriv.access( doc, fix ) - 1;
-
- if ( !attaches ) {
- doc.removeEventListener( orig, handler, true );
- dataPriv.remove( doc, fix );
-
- } else {
- dataPriv.access( doc, fix, attaches );
- }
- }
- };
- } );
-}
-var location = window.location;
-
-var nonce = jQuery.now();
-
-var rquery = ( /\?/ );
-
-
-
-// Support: Android 2.3
-// Workaround failure to string-cast null input
-jQuery.parseJSON = function( data ) {
- return JSON.parse( data + "" );
-};
-
-
-// Cross-browser xml parsing
-jQuery.parseXML = function( data ) {
- var xml;
- if ( !data || typeof data !== "string" ) {
- return null;
- }
-
- // Support: IE9
- try {
- xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
- } catch ( e ) {
- xml = undefined;
- }
-
- if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
- jQuery.error( "Invalid XML: " + data );
- }
- return xml;
-};
-
-
-var
- rhash = /#.*$/,
- rts = /([?&])_=[^&]*/,
- rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
-
- // #7653, #8125, #8152: local protocol detection
- rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
- rnoContent = /^(?:GET|HEAD)$/,
- rprotocol = /^\/\//,
-
- /* Prefilters
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
- * 2) These are called:
- * - BEFORE asking for a transport
- * - AFTER param serialization (s.data is a string if s.processData is true)
- * 3) key is the dataType
- * 4) the catchall symbol "*" can be used
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
- */
- prefilters = {},
-
- /* Transports bindings
- * 1) key is the dataType
- * 2) the catchall symbol "*" can be used
- * 3) selection will start with transport dataType and THEN go to "*" if needed
- */
- transports = {},
-
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
- allTypes = "*/".concat( "*" ),
-
- // Anchor tag for parsing the document origin
- originAnchor = document.createElement( "a" );
- originAnchor.href = location.href;
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
- // dataTypeExpression is optional and defaults to "*"
- return function( dataTypeExpression, func ) {
-
- if ( typeof dataTypeExpression !== "string" ) {
- func = dataTypeExpression;
- dataTypeExpression = "*";
- }
-
- var dataType,
- i = 0,
- dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
-
- if ( jQuery.isFunction( func ) ) {
-
- // For each dataType in the dataTypeExpression
- while ( ( dataType = dataTypes[ i++ ] ) ) {
-
- // Prepend if requested
- if ( dataType[ 0 ] === "+" ) {
- dataType = dataType.slice( 1 ) || "*";
- ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
-
- // Otherwise append
- } else {
- ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
- }
- }
- }
- };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
- var inspected = {},
- seekingTransport = ( structure === transports );
-
- function inspect( dataType ) {
- var selected;
- inspected[ dataType ] = true;
- jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
- var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
- if ( typeof dataTypeOrTransport === "string" &&
- !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-
- options.dataTypes.unshift( dataTypeOrTransport );
- inspect( dataTypeOrTransport );
- return false;
- } else if ( seekingTransport ) {
- return !( selected = dataTypeOrTransport );
- }
- } );
- return selected;
- }
-
- return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
- var key, deep,
- flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
- for ( key in src ) {
- if ( src[ key ] !== undefined ) {
- ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
- }
- }
- if ( deep ) {
- jQuery.extend( true, target, deep );
- }
-
- return target;
-}
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
- var ct, type, finalDataType, firstDataType,
- contents = s.contents,
- dataTypes = s.dataTypes;
-
- // Remove auto dataType and get content-type in the process
- while ( dataTypes[ 0 ] === "*" ) {
- dataTypes.shift();
- if ( ct === undefined ) {
- ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
- }
- }
-
- // Check if we're dealing with a known content-type
- if ( ct ) {
- for ( type in contents ) {
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
- dataTypes.unshift( type );
- break;
- }
- }
- }
-
- // Check to see if we have a response for the expected dataType
- if ( dataTypes[ 0 ] in responses ) {
- finalDataType = dataTypes[ 0 ];
- } else {
-
- // Try convertible dataTypes
- for ( type in responses ) {
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
- finalDataType = type;
- break;
- }
- if ( !firstDataType ) {
- firstDataType = type;
- }
- }
-
- // Or just use first one
- finalDataType = finalDataType || firstDataType;
- }
-
- // If we found a dataType
- // We add the dataType to the list if needed
- // and return the corresponding response
- if ( finalDataType ) {
- if ( finalDataType !== dataTypes[ 0 ] ) {
- dataTypes.unshift( finalDataType );
- }
- return responses[ finalDataType ];
- }
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
- var conv2, current, conv, tmp, prev,
- converters = {},
-
- // Work with a copy of dataTypes in case we need to modify it for conversion
- dataTypes = s.dataTypes.slice();
-
- // Create converters map with lowercased keys
- if ( dataTypes[ 1 ] ) {
- for ( conv in s.converters ) {
- converters[ conv.toLowerCase() ] = s.converters[ conv ];
- }
- }
-
- current = dataTypes.shift();
-
- // Convert to each sequential dataType
- while ( current ) {
-
- if ( s.responseFields[ current ] ) {
- jqXHR[ s.responseFields[ current ] ] = response;
- }
-
- // Apply the dataFilter if provided
- if ( !prev && isSuccess && s.dataFilter ) {
- response = s.dataFilter( response, s.dataType );
- }
-
- prev = current;
- current = dataTypes.shift();
-
- if ( current ) {
-
- // There's only work to do if current dataType is non-auto
- if ( current === "*" ) {
-
- current = prev;
-
- // Convert response if prev dataType is non-auto and differs from current
- } else if ( prev !== "*" && prev !== current ) {
-
- // Seek a direct converter
- conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
- // If none found, seek a pair
- if ( !conv ) {
- for ( conv2 in converters ) {
-
- // If conv2 outputs current
- tmp = conv2.split( " " );
- if ( tmp[ 1 ] === current ) {
-
- // If prev can be converted to accepted input
- conv = converters[ prev + " " + tmp[ 0 ] ] ||
- converters[ "* " + tmp[ 0 ] ];
- if ( conv ) {
-
- // Condense equivalence converters
- if ( conv === true ) {
- conv = converters[ conv2 ];
-
- // Otherwise, insert the intermediate dataType
- } else if ( converters[ conv2 ] !== true ) {
- current = tmp[ 0 ];
- dataTypes.unshift( tmp[ 1 ] );
- }
- break;
- }
- }
- }
- }
-
- // Apply converter (if not an equivalence)
- if ( conv !== true ) {
-
- // Unless errors are allowed to bubble, catch and return them
- if ( conv && s.throws ) {
- response = conv( response );
- } else {
- try {
- response = conv( response );
- } catch ( e ) {
- return {
- state: "parsererror",
- error: conv ? e : "No conversion from " + prev + " to " + current
- };
- }
- }
- }
- }
- }
- }
-
- return { state: "success", data: response };
-}
-
-jQuery.extend( {
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {},
-
- ajaxSettings: {
- url: location.href,
- type: "GET",
- isLocal: rlocalProtocol.test( location.protocol ),
- global: true,
- processData: true,
- async: true,
- contentType: "application/x-www-form-urlencoded; charset=UTF-8",
- /*
- timeout: 0,
- data: null,
- dataType: null,
- username: null,
- password: null,
- cache: null,
- throws: false,
- traditional: false,
- headers: {},
- */
-
- accepts: {
- "*": allTypes,
- text: "text/plain",
- html: "text/html",
- xml: "application/xml, text/xml",
- json: "application/json, text/javascript"
- },
-
- contents: {
- xml: /\bxml\b/,
- html: /\bhtml/,
- json: /\bjson\b/
- },
-
- responseFields: {
- xml: "responseXML",
- text: "responseText",
- json: "responseJSON"
- },
-
- // Data converters
- // Keys separate source (or catchall "*") and destination types with a single space
- converters: {
-
- // Convert anything to text
- "* text": String,
-
- // Text to html (true = no transformation)
- "text html": true,
-
- // Evaluate text as a json expression
- "text json": jQuery.parseJSON,
-
- // Parse text as xml
- "text xml": jQuery.parseXML
- },
-
- // For options that shouldn't be deep extended:
- // you can add your own custom options here if
- // and when you create one that shouldn't be
- // deep extended (see ajaxExtend)
- flatOptions: {
- url: true,
- context: true
- }
- },
-
- // Creates a full fledged settings object into target
- // with both ajaxSettings and settings fields.
- // If target is omitted, writes into ajaxSettings.
- ajaxSetup: function( target, settings ) {
- return settings ?
-
- // Building a settings object
- ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
- // Extending ajaxSettings
- ajaxExtend( jQuery.ajaxSettings, target );
- },
-
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
- ajaxTransport: addToPrefiltersOrTransports( transports ),
-
- // Main method
- ajax: function( url, options ) {
-
- // If url is an object, simulate pre-1.5 signature
- if ( typeof url === "object" ) {
- options = url;
- url = undefined;
- }
-
- // Force options to be an object
- options = options || {};
-
- var transport,
-
- // URL without anti-cache param
- cacheURL,
-
- // Response headers
- responseHeadersString,
- responseHeaders,
-
- // timeout handle
- timeoutTimer,
-
- // Url cleanup var
- urlAnchor,
-
- // To know if global events are to be dispatched
- fireGlobals,
-
- // Loop variable
- i,
-
- // Create the final options object
- s = jQuery.ajaxSetup( {}, options ),
-
- // Callbacks context
- callbackContext = s.context || s,
-
- // Context for global events is callbackContext if it is a DOM node or jQuery collection
- globalEventContext = s.context &&
- ( callbackContext.nodeType || callbackContext.jquery ) ?
- jQuery( callbackContext ) :
- jQuery.event,
-
- // Deferreds
- deferred = jQuery.Deferred(),
- completeDeferred = jQuery.Callbacks( "once memory" ),
-
- // Status-dependent callbacks
- statusCode = s.statusCode || {},
-
- // Headers (they are sent all at once)
- requestHeaders = {},
- requestHeadersNames = {},
-
- // The jqXHR state
- state = 0,
-
- // Default abort message
- strAbort = "canceled",
-
- // Fake xhr
- jqXHR = {
- readyState: 0,
-
- // Builds headers hashtable if needed
- getResponseHeader: function( key ) {
- var match;
- if ( state === 2 ) {
- if ( !responseHeaders ) {
- responseHeaders = {};
- while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
- responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
- }
- }
- match = responseHeaders[ key.toLowerCase() ];
- }
- return match == null ? null : match;
- },
-
- // Raw string
- getAllResponseHeaders: function() {
- return state === 2 ? responseHeadersString : null;
- },
-
- // Caches the header
- setRequestHeader: function( name, value ) {
- var lname = name.toLowerCase();
- if ( !state ) {
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
- requestHeaders[ name ] = value;
- }
- return this;
- },
-
- // Overrides response content-type header
- overrideMimeType: function( type ) {
- if ( !state ) {
- s.mimeType = type;
- }
- return this;
- },
-
- // Status-dependent callbacks
- statusCode: function( map ) {
- var code;
- if ( map ) {
- if ( state < 2 ) {
- for ( code in map ) {
-
- // Lazy-add the new callback in a way that preserves old ones
- statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
- }
- } else {
-
- // Execute the appropriate callbacks
- jqXHR.always( map[ jqXHR.status ] );
- }
- }
- return this;
- },
-
- // Cancel the request
- abort: function( statusText ) {
- var finalText = statusText || strAbort;
- if ( transport ) {
- transport.abort( finalText );
- }
- done( 0, finalText );
- return this;
- }
- };
-
- // Attach deferreds
- deferred.promise( jqXHR ).complete = completeDeferred.add;
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
-
- // Remove hash character (#7531: and string promotion)
- // Add protocol if not provided (prefilters might expect it)
- // Handle falsy url in the settings object (#10093: consistency with old signature)
- // We also use the url parameter if available
- s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" )
- .replace( rprotocol, location.protocol + "//" );
-
- // Alias method option to type as per ticket #12004
- s.type = options.method || options.type || s.method || s.type;
-
- // Extract dataTypes list
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
-
- // A cross-domain request is in order when the origin doesn't match the current origin.
- if ( s.crossDomain == null ) {
- urlAnchor = document.createElement( "a" );
-
- // Support: IE8-11+
- // IE throws exception if url is malformed, e.g. http://example.com:80x/
- try {
- urlAnchor.href = s.url;
-
- // Support: IE8-11+
- // Anchor's host property isn't correctly set when s.url is relative
- urlAnchor.href = urlAnchor.href;
- s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
- urlAnchor.protocol + "//" + urlAnchor.host;
- } catch ( e ) {
-
- // If there is an error parsing the URL, assume it is crossDomain,
- // it can be rejected by the transport if it is invalid
- s.crossDomain = true;
- }
- }
-
- // Convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Apply prefilters
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
- // If request was aborted inside a prefilter, stop there
- if ( state === 2 ) {
- return jqXHR;
- }
-
- // We can fire global events as of now if asked to
- // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
- fireGlobals = jQuery.event && s.global;
-
- // Watch for a new set of requests
- if ( fireGlobals && jQuery.active++ === 0 ) {
- jQuery.event.trigger( "ajaxStart" );
- }
-
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = !rnoContent.test( s.type );
-
- // Save the URL in case we're toying with the If-Modified-Since
- // and/or If-None-Match header later on
- cacheURL = s.url;
-
- // More options handling for requests with no content
- if ( !s.hasContent ) {
-
- // If data is available, append data to url
- if ( s.data ) {
- cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-
- // #9682: remove data so that it's not used in an eventual retry
- delete s.data;
- }
-
- // Add anti-cache in url if needed
- if ( s.cache === false ) {
- s.url = rts.test( cacheURL ) ?
-
- // If there is already a '_' parameter, set its value
- cacheURL.replace( rts, "$1_=" + nonce++ ) :
-
- // Otherwise add one to the end
- cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
- }
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- if ( jQuery.lastModified[ cacheURL ] ) {
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
- }
- if ( jQuery.etag[ cacheURL ] ) {
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
- }
- }
-
- // Set the correct header, if data is being sent
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
- }
-
- // Set the Accepts header for the server, depending on the dataType
- jqXHR.setRequestHeader(
- "Accept",
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
- s.accepts[ s.dataTypes[ 0 ] ] +
- ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
- s.accepts[ "*" ]
- );
-
- // Check for headers option
- for ( i in s.headers ) {
- jqXHR.setRequestHeader( i, s.headers[ i ] );
- }
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend &&
- ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-
- // Abort if not done already and return
- return jqXHR.abort();
- }
-
- // Aborting is no longer a cancellation
- strAbort = "abort";
-
- // Install callbacks on deferreds
- for ( i in { success: 1, error: 1, complete: 1 } ) {
- jqXHR[ i ]( s[ i ] );
- }
-
- // Get transport
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
- // If no transport, we auto-abort
- if ( !transport ) {
- done( -1, "No Transport" );
- } else {
- jqXHR.readyState = 1;
-
- // Send global event
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
- }
-
- // If request was aborted inside ajaxSend, stop there
- if ( state === 2 ) {
- return jqXHR;
- }
-
- // Timeout
- if ( s.async && s.timeout > 0 ) {
- timeoutTimer = window.setTimeout( function() {
- jqXHR.abort( "timeout" );
- }, s.timeout );
- }
-
- try {
- state = 1;
- transport.send( requestHeaders, done );
- } catch ( e ) {
-
- // Propagate exception as error if not done
- if ( state < 2 ) {
- done( -1, e );
-
- // Simply rethrow otherwise
- } else {
- throw e;
- }
- }
- }
-
- // Callback for when everything is done
- function done( status, nativeStatusText, responses, headers ) {
- var isSuccess, success, error, response, modified,
- statusText = nativeStatusText;
-
- // Called once
- if ( state === 2 ) {
- return;
- }
-
- // State is "done" now
- state = 2;
-
- // Clear timeout if it exists
- if ( timeoutTimer ) {
- window.clearTimeout( timeoutTimer );
- }
-
- // Dereference transport for early garbage collection
- // (no matter how long the jqXHR object will be used)
- transport = undefined;
-
- // Cache response headers
- responseHeadersString = headers || "";
-
- // Set readyState
- jqXHR.readyState = status > 0 ? 4 : 0;
-
- // Determine if successful
- isSuccess = status >= 200 && status < 300 || status === 304;
-
- // Get response data
- if ( responses ) {
- response = ajaxHandleResponses( s, jqXHR, responses );
- }
-
- // Convert no matter what (that way responseXXX fields are always set)
- response = ajaxConvert( s, response, jqXHR, isSuccess );
-
- // If successful, handle type chaining
- if ( isSuccess ) {
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- modified = jqXHR.getResponseHeader( "Last-Modified" );
- if ( modified ) {
- jQuery.lastModified[ cacheURL ] = modified;
- }
- modified = jqXHR.getResponseHeader( "etag" );
- if ( modified ) {
- jQuery.etag[ cacheURL ] = modified;
- }
- }
-
- // if no content
- if ( status === 204 || s.type === "HEAD" ) {
- statusText = "nocontent";
-
- // if not modified
- } else if ( status === 304 ) {
- statusText = "notmodified";
-
- // If we have data, let's convert it
- } else {
- statusText = response.state;
- success = response.data;
- error = response.error;
- isSuccess = !error;
- }
- } else {
-
- // Extract error from statusText and normalize for non-aborts
- error = statusText;
- if ( status || !statusText ) {
- statusText = "error";
- if ( status < 0 ) {
- status = 0;
- }
- }
- }
-
- // Set data for the fake xhr object
- jqXHR.status = status;
- jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
- // Success/Error
- if ( isSuccess ) {
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
- } else {
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
- }
-
- // Status-dependent callbacks
- jqXHR.statusCode( statusCode );
- statusCode = undefined;
-
- if ( fireGlobals ) {
- globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
- [ jqXHR, s, isSuccess ? success : error ] );
- }
-
- // Complete
- completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-
- // Handle the global AJAX counter
- if ( !( --jQuery.active ) ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
- }
-
- return jqXHR;
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get( url, data, callback, "json" );
- },
-
- getScript: function( url, callback ) {
- return jQuery.get( url, undefined, callback, "script" );
- }
-} );
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
- jQuery[ method ] = function( url, data, callback, type ) {
-
- // Shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
-
- // The url can be an options object (which then must have .url)
- return jQuery.ajax( jQuery.extend( {
- url: url,
- type: method,
- dataType: type,
- data: data,
- success: callback
- }, jQuery.isPlainObject( url ) && url ) );
- };
-} );
-
-
-jQuery._evalUrl = function( url ) {
- return jQuery.ajax( {
- url: url,
-
- // Make this explicit, since user can override this through ajaxSetup (#11264)
- type: "GET",
- dataType: "script",
- async: false,
- global: false,
- "throws": true
- } );
-};
-
-
-jQuery.fn.extend( {
- wrapAll: function( html ) {
- var wrap;
-
- if ( jQuery.isFunction( html ) ) {
- return this.each( function( i ) {
- jQuery( this ).wrapAll( html.call( this, i ) );
- } );
- }
-
- if ( this[ 0 ] ) {
-
- // The elements to wrap the target around
- wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
-
- if ( this[ 0 ].parentNode ) {
- wrap.insertBefore( this[ 0 ] );
- }
-
- wrap.map( function() {
- var elem = this;
-
- while ( elem.firstElementChild ) {
- elem = elem.firstElementChild;
- }
-
- return elem;
- } ).append( this );
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each( function( i ) {
- jQuery( this ).wrapInner( html.call( this, i ) );
- } );
- }
-
- return this.each( function() {
- var self = jQuery( this ),
- contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- } );
- },
-
- wrap: function( html ) {
- var isFunction = jQuery.isFunction( html );
-
- return this.each( function( i ) {
- jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
- } );
- },
-
- unwrap: function() {
- return this.parent().each( function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- } ).end();
- }
-} );
-
-
-jQuery.expr.filters.hidden = function( elem ) {
- return !jQuery.expr.filters.visible( elem );
-};
-jQuery.expr.filters.visible = function( elem ) {
-
- // Support: Opera <= 12.12
- // Opera reports offsetWidths and offsetHeights less than zero on some elements
- // Use OR instead of AND as the element is not visible if either is true
- // See tickets #10406 and #13132
- return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
-};
-
-
-
-
-var r20 = /%20/g,
- rbracket = /\[\]$/,
- rCRLF = /\r?\n/g,
- rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
- rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-function buildParams( prefix, obj, traditional, add ) {
- var name;
-
- if ( jQuery.isArray( obj ) ) {
-
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || rbracket.test( prefix ) ) {
-
- // Treat each array item as a scalar.
- add( prefix, v );
-
- } else {
-
- // Item is non-scalar (array or object), encode its numeric index.
- buildParams(
- prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
- v,
- traditional,
- add
- );
- }
- } );
-
- } else if ( !traditional && jQuery.type( obj ) === "object" ) {
-
- // Serialize object item.
- for ( name in obj ) {
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
- }
-
- } else {
-
- // Serialize scalar item.
- add( prefix, obj );
- }
-}
-
-// Serialize an array of form elements or a set of
-// key/values into a query string
-jQuery.param = function( a, traditional ) {
- var prefix,
- s = [],
- add = function( key, value ) {
-
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
- };
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- } );
-
- } else {
-
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( prefix in a ) {
- buildParams( prefix, a[ prefix ], traditional, add );
- }
- }
-
- // Return the resulting serialization
- return s.join( "&" ).replace( r20, "+" );
-};
-
-jQuery.fn.extend( {
- serialize: function() {
- return jQuery.param( this.serializeArray() );
- },
- serializeArray: function() {
- return this.map( function() {
-
- // Can add propHook for "elements" to filter or add form elements
- var elements = jQuery.prop( this, "elements" );
- return elements ? jQuery.makeArray( elements ) : this;
- } )
- .filter( function() {
- var type = this.type;
-
- // Use .is( ":disabled" ) so that fieldset[disabled] works
- return this.name && !jQuery( this ).is( ":disabled" ) &&
- rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
- ( this.checked || !rcheckableType.test( type ) );
- } )
- .map( function( i, elem ) {
- var val = jQuery( this ).val();
-
- return val == null ?
- null :
- jQuery.isArray( val ) ?
- jQuery.map( val, function( val ) {
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- } ) :
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- } ).get();
- }
-} );
-
-
-jQuery.ajaxSettings.xhr = function() {
- try {
- return new window.XMLHttpRequest();
- } catch ( e ) {}
-};
-
-var xhrSuccessStatus = {
-
- // File protocol always yields status code 0, assume 200
- 0: 200,
-
- // Support: IE9
- // #1450: sometimes IE returns 1223 when it should be 204
- 1223: 204
- },
- xhrSupported = jQuery.ajaxSettings.xhr();
-
-support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-support.ajax = xhrSupported = !!xhrSupported;
-
-jQuery.ajaxTransport( function( options ) {
- var callback, errorCallback;
-
- // Cross domain only allowed if supported through XMLHttpRequest
- if ( support.cors || xhrSupported && !options.crossDomain ) {
- return {
- send: function( headers, complete ) {
- var i,
- xhr = options.xhr();
-
- xhr.open(
- options.type,
- options.url,
- options.async,
- options.username,
- options.password
- );
-
- // Apply custom fields if provided
- if ( options.xhrFields ) {
- for ( i in options.xhrFields ) {
- xhr[ i ] = options.xhrFields[ i ];
- }
- }
-
- // Override mime type if needed
- if ( options.mimeType && xhr.overrideMimeType ) {
- xhr.overrideMimeType( options.mimeType );
- }
-
- // X-Requested-With header
- // For cross-domain requests, seeing as conditions for a preflight are
- // akin to a jigsaw puzzle, we simply never set it to be sure.
- // (it can always be set on a per-request basis or even using ajaxSetup)
- // For same-domain requests, won't change header if already provided.
- if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
- headers[ "X-Requested-With" ] = "XMLHttpRequest";
- }
-
- // Set headers
- for ( i in headers ) {
- xhr.setRequestHeader( i, headers[ i ] );
- }
-
- // Callback
- callback = function( type ) {
- return function() {
- if ( callback ) {
- callback = errorCallback = xhr.onload =
- xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
-
- if ( type === "abort" ) {
- xhr.abort();
- } else if ( type === "error" ) {
-
- // Support: IE9
- // On a manual native abort, IE9 throws
- // errors on any property access that is not readyState
- if ( typeof xhr.status !== "number" ) {
- complete( 0, "error" );
- } else {
- complete(
-
- // File: protocol always yields status 0; see #8605, #14207
- xhr.status,
- xhr.statusText
- );
- }
- } else {
- complete(
- xhrSuccessStatus[ xhr.status ] || xhr.status,
- xhr.statusText,
-
- // Support: IE9 only
- // IE9 has no XHR2 but throws on binary (trac-11426)
- // For XHR2 non-text, let the caller handle it (gh-2498)
- ( xhr.responseType || "text" ) !== "text" ||
- typeof xhr.responseText !== "string" ?
- { binary: xhr.response } :
- { text: xhr.responseText },
- xhr.getAllResponseHeaders()
- );
- }
- }
- };
- };
-
- // Listen to events
- xhr.onload = callback();
- errorCallback = xhr.onerror = callback( "error" );
-
- // Support: IE9
- // Use onreadystatechange to replace onabort
- // to handle uncaught aborts
- if ( xhr.onabort !== undefined ) {
- xhr.onabort = errorCallback;
- } else {
- xhr.onreadystatechange = function() {
-
- // Check readyState before timeout as it changes
- if ( xhr.readyState === 4 ) {
-
- // Allow onerror to be called first,
- // but that will not handle a native abort
- // Also, save errorCallback to a variable
- // as xhr.onerror cannot be accessed
- window.setTimeout( function() {
- if ( callback ) {
- errorCallback();
- }
- } );
- }
- };
- }
-
- // Create the abort callback
- callback = callback( "abort" );
-
- try {
-
- // Do send the request (this may raise an exception)
- xhr.send( options.hasContent && options.data || null );
- } catch ( e ) {
-
- // #14683: Only rethrow if this hasn't been notified as an error yet
- if ( callback ) {
- throw e;
- }
- }
- },
-
- abort: function() {
- if ( callback ) {
- callback();
- }
- }
- };
- }
-} );
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup( {
- accepts: {
- script: "text/javascript, application/javascript, " +
- "application/ecmascript, application/x-ecmascript"
- },
- contents: {
- script: /\b(?:java|ecma)script\b/
- },
- converters: {
- "text script": function( text ) {
- jQuery.globalEval( text );
- return text;
- }
- }
-} );
-
-// Handle cache's special case and crossDomain
-jQuery.ajaxPrefilter( "script", function( s ) {
- if ( s.cache === undefined ) {
- s.cache = false;
- }
- if ( s.crossDomain ) {
- s.type = "GET";
- }
-} );
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function( s ) {
-
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
- var script, callback;
- return {
- send: function( _, complete ) {
- script = jQuery( "<script>" ).prop( {
- charset: s.scriptCharset,
- src: s.url
- } ).on(
- "load error",
- callback = function( evt ) {
- script.remove();
- callback = null;
- if ( evt ) {
- complete( evt.type === "error" ? 404 : 200, evt.type );
- }
- }
- );
-
- // Use native DOM manipulation to avoid our domManip AJAX trickery
- document.head.appendChild( script[ 0 ] );
- },
- abort: function() {
- if ( callback ) {
- callback();
- }
- }
- };
- }
-} );
-
-
-
-
-var oldCallbacks = [],
- rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup( {
- jsonp: "callback",
- jsonpCallback: function() {
- var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
- this[ callback ] = true;
- return callback;
- }
-} );
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
- var callbackName, overwritten, responseContainer,
- jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
- "url" :
- typeof s.data === "string" &&
- ( s.contentType || "" )
- .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
- rjsonp.test( s.data ) && "data"
- );
-
- // Handle iff the expected data type is "jsonp" or we have a parameter to set
- if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
- // Get callback name, remembering preexisting value associated with it
- callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
- s.jsonpCallback() :
- s.jsonpCallback;
-
- // Insert callback into url or form data
- if ( jsonProp ) {
- s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
- } else if ( s.jsonp !== false ) {
- s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
- }
-
- // Use data converter to retrieve json after script execution
- s.converters[ "script json" ] = function() {
- if ( !responseContainer ) {
- jQuery.error( callbackName + " was not called" );
- }
- return responseContainer[ 0 ];
- };
-
- // Force json dataType
- s.dataTypes[ 0 ] = "json";
-
- // Install callback
- overwritten = window[ callbackName ];
- window[ callbackName ] = function() {
- responseContainer = arguments;
- };
-
- // Clean-up function (fires after converters)
- jqXHR.always( function() {
-
- // If previous value didn't exist - remove it
- if ( overwritten === undefined ) {
- jQuery( window ).removeProp( callbackName );
-
- // Otherwise restore preexisting value
- } else {
- window[ callbackName ] = overwritten;
- }
-
- // Save back as free
- if ( s[ callbackName ] ) {
-
- // Make sure that re-using the options doesn't screw things around
- s.jsonpCallback = originalSettings.jsonpCallback;
-
- // Save the callback name for future use
- oldCallbacks.push( callbackName );
- }
-
- // Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( overwritten ) ) {
- overwritten( responseContainer[ 0 ] );
- }
-
- responseContainer = overwritten = undefined;
- } );
-
- // Delegate to script
- return "script";
- }
-} );
-
-
-
-
-// Support: Safari 8+
-// In Safari 8 documents created via document.implementation.createHTMLDocument
-// collapse sibling forms: the second one becomes a child of the first one.
-// Because of that, this security measure has to be disabled in Safari 8.
-// https://bugs.webkit.org/show_bug.cgi?id=137337
-support.createHTMLDocument = ( function() {
- var body = document.implementation.createHTMLDocument( "" ).body;
- body.innerHTML = "<form></form><form></form>";
- return body.childNodes.length === 2;
-} )();
-
-
-// Argument "data" should be string of html
-// context (optional): If specified, the fragment will be created in this context,
-// defaults to document
-// keepScripts (optional): If true, will include scripts passed in the html string
-jQuery.parseHTML = function( data, context, keepScripts ) {
- if ( !data || typeof data !== "string" ) {
- return null;
- }
- if ( typeof context === "boolean" ) {
- keepScripts = context;
- context = false;
- }
-
- // Stop scripts or inline event handlers from being executed immediately
- // by using document.implementation
- context = context || ( support.createHTMLDocument ?
- document.implementation.createHTMLDocument( "" ) :
- document );
-
- var parsed = rsingleTag.exec( data ),
- scripts = !keepScripts && [];
-
- // Single tag
- if ( parsed ) {
- return [ context.createElement( parsed[ 1 ] ) ];
- }
-
- parsed = buildFragment( [ data ], context, scripts );
-
- if ( scripts && scripts.length ) {
- jQuery( scripts ).remove();
- }
-
- return jQuery.merge( [], parsed.childNodes );
-};
-
-
-// Keep a copy of the old load method
-var _load = jQuery.fn.load;
-
-/**
- * Load a url into a page
- */
-jQuery.fn.load = function( url, params, callback ) {
- if ( typeof url !== "string" && _load ) {
- return _load.apply( this, arguments );
- }
-
- var selector, type, response,
- self = this,
- off = url.indexOf( " " );
-
- if ( off > -1 ) {
- selector = jQuery.trim( url.slice( off ) );
- url = url.slice( 0, off );
- }
-
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
-
- // We assume that it's the callback
- callback = params;
- params = undefined;
-
- // Otherwise, build a param string
- } else if ( params && typeof params === "object" ) {
- type = "POST";
- }
-
- // If we have elements to modify, make the request
- if ( self.length > 0 ) {
- jQuery.ajax( {
- url: url,
-
- // If "type" variable is undefined, then "GET" method will be used.
- // Make value of this field explicit since
- // user can override it through ajaxSetup method
- type: type || "GET",
- dataType: "html",
- data: params
- } ).done( function( responseText ) {
-
- // Save response for use in complete callback
- response = arguments;
-
- self.html( selector ?
-
- // If a selector was specified, locate the right elements in a dummy div
- // Exclude scripts to avoid IE 'Permission Denied' errors
- jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
- // Otherwise use the full result
- responseText );
-
- // If the request succeeds, this function gets "data", "status", "jqXHR"
- // but they are ignored because response was set above.
- // If it fails, this function gets "jqXHR", "status", "error"
- } ).always( callback && function( jqXHR, status ) {
- self.each( function() {
- callback.apply( self, response || [ jqXHR.responseText, status, jqXHR ] );
- } );
- } );
- }
-
- return this;
-};
-
-
-
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [
- "ajaxStart",
- "ajaxStop",
- "ajaxComplete",
- "ajaxError",
- "ajaxSuccess",
- "ajaxSend"
-], function( i, type ) {
- jQuery.fn[ type ] = function( fn ) {
- return this.on( type, fn );
- };
-} );
-
-
-
-
-jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep( jQuery.timers, function( fn ) {
- return elem === fn.elem;
- } ).length;
-};
-
-
-
-
-/**
- * Gets a window from an element
- */
-function getWindow( elem ) {
- return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
-}
-
-jQuery.offset = {
- setOffset: function( elem, options, i ) {
- var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
- position = jQuery.css( elem, "position" ),
- curElem = jQuery( elem ),
- props = {};
-
- // Set position first, in-case top/left are set even on static elem
- if ( position === "static" ) {
- elem.style.position = "relative";
- }
-
- curOffset = curElem.offset();
- curCSSTop = jQuery.css( elem, "top" );
- curCSSLeft = jQuery.css( elem, "left" );
- calculatePosition = ( position === "absolute" || position === "fixed" ) &&
- ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
-
- // Need to be able to calculate position if either
- // top or left is auto and position is either absolute or fixed
- if ( calculatePosition ) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
-
- } else {
- curTop = parseFloat( curCSSTop ) || 0;
- curLeft = parseFloat( curCSSLeft ) || 0;
- }
-
- if ( jQuery.isFunction( options ) ) {
-
- // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
- options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
- }
-
- if ( options.top != null ) {
- props.top = ( options.top - curOffset.top ) + curTop;
- }
- if ( options.left != null ) {
- props.left = ( options.left - curOffset.left ) + curLeft;
- }
-
- if ( "using" in options ) {
- options.using.call( elem, props );
-
- } else {
- curElem.css( props );
- }
- }
-};
-
-jQuery.fn.extend( {
- offset: function( options ) {
- if ( arguments.length ) {
- return options === undefined ?
- this :
- this.each( function( i ) {
- jQuery.offset.setOffset( this, options, i );
- } );
- }
-
- var docElem, win,
- elem = this[ 0 ],
- box = { top: 0, left: 0 },
- doc = elem && elem.ownerDocument;
-
- if ( !doc ) {
- return;
- }
-
- docElem = doc.documentElement;
-
- // Make sure it's not a disconnected DOM node
- if ( !jQuery.contains( docElem, elem ) ) {
- return box;
- }
-
- box = elem.getBoundingClientRect();
- win = getWindow( doc );
- return {
- top: box.top + win.pageYOffset - docElem.clientTop,
- left: box.left + win.pageXOffset - docElem.clientLeft
- };
- },
-
- position: function() {
- if ( !this[ 0 ] ) {
- return;
- }
-
- var offsetParent, offset,
- elem = this[ 0 ],
- parentOffset = { top: 0, left: 0 };
-
- // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
- // because it is its only offset parent
- if ( jQuery.css( elem, "position" ) === "fixed" ) {
-
- // Assume getBoundingClientRect is there when computed position is fixed
- offset = elem.getBoundingClientRect();
-
- } else {
-
- // Get *real* offsetParent
- offsetParent = this.offsetParent();
-
- // Get correct offsets
- offset = this.offset();
- if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
- parentOffset = offsetParent.offset();
- }
-
- // Add offsetParent borders
- parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
- parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
- }
-
- // Subtract parent offsets and element margins
- return {
- top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
- left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
- };
- },
-
- // This method will return documentElement in the following cases:
- // 1) For the element inside the iframe without offsetParent, this method will return
- // documentElement of the parent window
- // 2) For the hidden or detached element
- // 3) For body or html element, i.e. in case of the html node - it will return itself
- //
- // but those exceptions were never presented as a real life use-cases
- // and might be considered as more preferable results.
- //
- // This logic, however, is not guaranteed and can change at any point in the future
- offsetParent: function() {
- return this.map( function() {
- var offsetParent = this.offsetParent;
-
- while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
- offsetParent = offsetParent.offsetParent;
- }
-
- return offsetParent || documentElement;
- } );
- }
-} );
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
- var top = "pageYOffset" === prop;
-
- jQuery.fn[ method ] = function( val ) {
- return access( this, function( elem, method, val ) {
- var win = getWindow( elem );
-
- if ( val === undefined ) {
- return win ? win[ prop ] : elem[ method ];
- }
-
- if ( win ) {
- win.scrollTo(
- !top ? val : win.pageXOffset,
- top ? val : win.pageYOffset
- );
-
- } else {
- elem[ method ] = val;
- }
- }, method, val, arguments.length );
- };
-} );
-
-// Support: Safari<7-8+, Chrome<37-44+
-// Add the top/left cssHooks using jQuery.fn.position
-// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
-// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
-// getComputedStyle returns percent when specified for top/left/bottom/right;
-// rather than make the css module depend on the offset module, just check for it here
-jQuery.each( [ "top", "left" ], function( i, prop ) {
- jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
- function( elem, computed ) {
- if ( computed ) {
- computed = curCSS( elem, prop );
-
- // If curCSS returns percentage, fallback to offset
- return rnumnonpx.test( computed ) ?
- jQuery( elem ).position()[ prop ] + "px" :
- computed;
- }
- }
- );
-} );
-
-
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
- jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
- function( defaultExtra, funcName ) {
-
- // Margin is only for outerHeight, outerWidth
- jQuery.fn[ funcName ] = function( margin, value ) {
- var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
- extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
- return access( this, function( elem, type, value ) {
- var doc;
-
- if ( jQuery.isWindow( elem ) ) {
-
- // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
- // isn't a whole lot we can do. See pull request at this URL for discussion:
- // https://github.com/jquery/jquery/pull/764
- return elem.document.documentElement[ "client" + name ];
- }
-
- // Get document width or height
- if ( elem.nodeType === 9 ) {
- doc = elem.documentElement;
-
- // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
- // whichever is greatest
- return Math.max(
- elem.body[ "scroll" + name ], doc[ "scroll" + name ],
- elem.body[ "offset" + name ], doc[ "offset" + name ],
- doc[ "client" + name ]
- );
- }
-
- return value === undefined ?
-
- // Get width or height on the element, requesting but not forcing parseFloat
- jQuery.css( elem, type, extra ) :
-
- // Set width or height on the element
- jQuery.style( elem, type, value, extra );
- }, type, chainable ? margin : undefined, chainable, null );
- };
- } );
-} );
-
-
-jQuery.fn.extend( {
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
-
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length === 1 ?
- this.off( selector, "**" ) :
- this.off( types, selector || "**", fn );
- },
- size: function() {
- return this.length;
- }
-} );
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-
-
-
-// Register as a named AMD module, since jQuery can be concatenated with other
-// files that may use define, but not via a proper concatenation script that
-// understands anonymous AMD modules. A named AMD is safest and most robust
-// way to register. Lowercase jquery is used because AMD module names are
-// derived from file names, and jQuery is normally delivered in a lowercase
-// file name. Do this after creating the global so that if an AMD module wants
-// to call noConflict to hide this version of jQuery, it will work.
-
-// Note that for maximum portability, libraries that are not jQuery should
-// declare themselves as anonymous modules, and avoid setting a global if an
-// AMD loader is present. jQuery is a special case. For more information, see
-// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
-
-if ( typeof define === "function" && define.amd ) {
- define( "jquery", [], function() {
- return jQuery;
- } );
-}
-
-
-
-var
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$;
-
-jQuery.noConflict = function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
-};
-
-// Expose jQuery and $ identifiers, even in AMD
-// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
-// and CommonJS for browser emulators (#13566)
-if ( !noGlobal ) {
- window.jQuery = window.$ = jQuery;
-}
-
-return jQuery;
-}));
diff --git a/pywrap/templates/base.html b/pywrap/templates/base.html
deleted file mode 100644
index fdb95e8..0000000
--- a/pywrap/templates/base.html
+++ /dev/null
@@ -1,347 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>{% block title %}Device {{ device }}{% endblock %}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
- <link rel="stylesheet" type="text/css" href="codebase/dhtmlx.css"/>
- <script type=text/javascript src="{{ url_for('static', filename='jquery-2.2.1.js') }}"></script>
- <script src="codebase/dhtmlx.js"></script>
- <script src="pcilib_tree.js"></script>
- <script>
- var propsTree
-
- function checkError(json)
- {
- if(json.error)
- alert('Error:\n' + json.error)
- }
-
- function createPropertyTree(branch, id)
- {
- function getPropertyItemsOnLevel(branch, id)
- {
- pathToProperties = "{{ url_for('get_property_list_json') }}"
- completePath = pathToProperties + '?branch=' + branch
-
- $.getJSON(completePath,
- function(json) {
- checkError(json)
- parsePropertyItems(json, branch, id)
- });
- }
-
- function parsePropertyItems(json, branch, id)
- {
- function updatePropertyValue(id, path)
- {
- pathToGetProperty = "{{ url_for('get_property_json') }}"
- completePath = pathToGetProperty + '?prop=' + path
-
- $.getJSON(completePath, function(json){
- checkError(json)
- propsTree.updateItem(id, 'value: ' + json.value);
- })
- }
-
- function writePropertyValue(id, path)
- {
- value = window.prompt("Enter new property value");
-
- if(value != null)
- {
- pathToGetProperty = "{{ url_for('set_property_json') }}"
- completePath = pathToGetProperty + '?prop=' + path +'&val=' + value
-
- $.getJSON(completePath,
- function(json) {
- checkError(json)
- updatePropertyValue(id, path)
- })
- }
- else
- updatePropertyValue(id, path)
- }
-
- function setCurrentValueField(id, path, mode)
- {
- var propValId = id + 'CurrVal'
- var func = 0
-
- if(mode)
- func = function(){writePropertyValue(propValId, path)}
- else
- func = function(){updatePropertyValue(propValId, path)}
-
- propsTree.insertNewItem(id, propValId,
- 'value: ',
- func);
-
- updatePropertyValue(propValId, path)
- }
-
- for(var i = 0; i < json.length; i++)
- {
- propsTree.insertNewItem(id, json[i].path, json[i].name, 0);
-
- if(json[i].flags.indexOf("childs") != -1)
- {
- getPropertyItemsOnLevel(json[i].path, json[i].path)
- }
- else
- {
- if(json[i].mode.indexOf("R") != -1)
- {
- var mode = (json[i].mode.indexOf("W") != -1)
- setCurrentValueField(json[i].path, json[i].path, mode)
- }
- }
-
- //show aviable info
- if(json[i].description)
- propsTree.insertNewItem(json[i].path, json[i].path + 'Desc',
- 'description:\n' + json[i].description, 0);
- if(json[i].type)
- propsTree.insertNewItem(json[i].path, json[i].path + 'Type',
- 'type: ' + json[i].type, 0);
- if(json[i].unit)
- propsTree.insertNewItem(json[i].path, json[i].path + 'Unit',
- 'unit: ' + json[i].unit, 0);
-
- if(json[i].mode)
- {
- var modeId = json[i].path + 'Mode'
- propsTree.insertNewItem(json[i].path, modeId,
- 'mode', 0);
-
- for(var j = 0; j < json[i].mode.length; j++)
- propsTree.insertNewItem(modeId, modeId + j,
- json[i].mode[j], 0);
- propsTree.closeItem(modeId)
- }
-
- if(json[i].path)
- propsTree.insertNewItem(json[i].path, json[i].path + 'Path',
- 'path: ' + json[i].path, 0);
-
- propsTree.closeItem(json[i].path);
- }
- }
-
- getPropertyItemsOnLevel(branch, id)
- }
-
- var regTree
- function createRegistersList()
- {
- function parseJsonRegisterList(json)
- {
- checkError(json)
-
- function compareRegistersByBank(a,b)
- {
- if (a.bank < b.bank)
- return -1;
- else if (a.bank > b.bank)
- return 1;
- else
- return 0;
- }
-
- if(json.lenght <= 0)
- return
-
- //sort registers by bank
- json.sort(compareRegistersByBank)
-
- //create bank dirs
- var curBankName = json[0].bank
- var created = 0
- for(var i = 0; i < json.length; i++)
- {
- //create new bank tab if it has not created already
- if(json[i].bank != curBankName)
- {
- curBankName = json[i].bank
- created = 0
- }
- if(!created)
- {
- regTree.insertNewItem(0, json[i].bank, json[i].bank, 0);
- created = 1
- }
-
- //insert register info to bank
- var itemId = json[i].bank + "_" + json[i].name
- regTree.insertNewItem(json[i].bank, itemId, json[i].name)
-
- function updateRegisterValue(id, bank, name)
- {
- pathToGetProperty = "{{ url_for('read_register_json') }}"
- completePath = pathToGetProperty + '?bank=' + bank +
- '&name=' + name
-
- $.getJSON(completePath, function(json){
- checkError(json)
- regTree.updateItem(id, 'value: ' + json.value);
- })
- }
-
-
- function writeRegisterValue(id, bank, name)
- {
- value = window.prompt("Enter new register value");
-
- if(value != null)
- {
- pathToGetProperty = "{{ url_for('write_register_json') }}"
- completePath = pathToGetProperty + '?bank=' + bank +
- '&name=' + name + '&val=' + value;
-
- $.getJSON(completePath,
- function(json) {
- checkError(json)
- updateRegisterValue(id, bank, name)
- })
- }
- else
- updateRegisterValue(id, bank, name)
- }
-
- function setCurrentValueField(id, bank, name, mode)
- {
- var regValId = id + 'CurrVal'
- var func = 0
-
- if(mode)
- func = function(){writeRegisterValue(regValId, bank, name)}
- else
- func = function(){updateRegisterValue(regValId, bank, name)}
-
- regTree.insertNewItem(id, regValId,
- 'value: ',
- func);
- updateRegisterValue(regValId, bank, name)
- }
-
- if(json[i].mode.indexOf("R") != -1)
- {
- var mode = (json[i].mode.indexOf("W") != -1)
- setCurrentValueField(itemId, json[i].bank, json[i].name, mode)
- }
-
- //show aviable info
- if(json[i].description)
- regTree.insertNewItem(itemId, itemId + 'Desc',
- 'description:\n' + json[i].description, 0);
- if(json[i].defvalue)
- regTree.insertNewItem(itemId, itemId + 'Defvalue',
- 'defvalue: ' + json[i].defvalue, 0);
-
- if(json[i].mode)
- {
- var modeId = itemId + 'Mode'
- regTree.insertNewItem(itemId, modeId,
- 'mode', 0);
-
- for(var j = 0; j < json[i].mode.length; j++)
- regTree.insertNewItem(modeId, modeId + j,
- json[i].mode[j], 0);
- regTree.closeItem(modeId)
- }
-
- if(json[i].range)
- {
- var rangeId = itemId + 'Range'
- regTree.insertNewItem(itemId, rangeId,
- 'range', 0);
- regTree.insertNewItem(rangeId, rangeId + 'Min',
- 'min: ' + json[i].range.min, 0);
- regTree.insertNewItem(rangeId, rangeId + 'Max',
- 'max: ' + json[i].range.max, 0);
- regTree.closeItem(rangeId)
- }
-
- if(json[i].values)
- {
- var valuesId = itemId + 'Values'
- regTree.insertNewItem(itemId, valuesId,
- 'values', 0);
-
- function addValueInfo(valuesId, value)
- {
- var valueId = valuesId + value.name
- regTree.insertNewItem(valuesId, valueId, value.name, 0);
-
- if(value.description)
- regTree.insertNewItem(valueId, valueId + 'Desc',
- 'description: ' + value.description, 0);
- if(value.value)
- regTree.insertNewItem(valueId, valueId + 'Value',
- 'value: ' + value.value, 0);
- if(value.min)
- regTree.insertNewItem(valueId, valueId + 'Min',
- 'min: ' + value.min, 0);
- if(value.max)
- regTree.insertNewItem(valueId, valueId + 'Max',
- 'max: ' + value.max, 0);
- }
-
- for(var j = 0; j < json[i].values.length; j++)
- {
- addValueInfo(valuesId, json[i].values[j])
- }
- regTree.closeItem(valuesId)
- }
-
- propsTree.closeItem(json[i].path);
-
- regTree.closeItem(itemId);
- }
- }
-
- //get registers json list
- getRegistersListPath = "{{ url_for('get_registers_list_json') }}"
- $.getJSON(getRegistersListPath, parseJsonRegisterList);
- }
-
- function doOnLoad()
- {
- propsTree = new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
- propsTree.setImagePath("codebase/imgs/dhxtree_skyblue/");
- //generating properties list
- createPropertyTree('', 0)
-
- regTree = new dhtmlXTreeObject("treeboxbox_tree2","100%","100%",0,0,0,0,'SELECT')
- regTree.setImagePath("codebase/imgs/dhxtree_skyblue/");
- createRegistersList()
- }
- </script>
-</head>
-<body onload="doOnLoad()">
- {% block info %}
- <h2>Device {{ device }} model={{ model }} control page </h2>
- {% endblock %}
-
- {% block content %}
- {% endblock %}
- <table>
- <tr>
- <td>
- <h3>Properties Tree</h3>
- </td>
- <td>
- <h3>Registers Tree</h3>
- </td>
- </tr>
- <tr>
- <td valign="top">
- <div id="treeboxbox_tree" style="background-color:#f5f5f5;border :1px solid Silver; overflow:auto;"></div>
- </td>
- <td valign="top">
- <div id="treeboxbox_tree2" style="background-color:#f5f5f5;border :1px solid Silver; overflow:auto;"></div>
- </td>
- </tr>
- </table>
-</body>
-</html>
diff --git a/pywrap/templates/property_info.html b/pywrap/templates/property_info.html
deleted file mode 100644
index 912d3d5..0000000
--- a/pywrap/templates/property_info.html
+++ /dev/null
@@ -1,91 +0,0 @@
-{% extends "base.html" %}
-{% block title %}Property list{% endblock %}
-{% block info %}
-<h1>List of properties in branch {{ branch }}</h1>
-{% endblock %}
-
-{% block content %}
-
- <script>
- function set_property()
- {
- var value = document.getElementById("set_val_box").value;
- window.location.href = "{{ url_for('set_property') }}?prop={{ branch }}&"+
- 'val='+value;
- };
- </script>
-
-<table border="1" style="width:100%">
- <tr>
- <th>Name</th>
- <th>Description</th>
- </tr>
- {% for property in properties %}
- <tr>
- {% if ('childs' in property.flags) or (properties|length != 1) %}
- <td><a href="{{ url_for('get_property_list', branch = property.path) }}">"{{ property.name }}"</td>
- {% if 'description' in property %}
- <script>
- function set_property()
- {
- var value = document.getElementById("set_val_box").value;
- window.location.href = "{{ url_for('set_property') }}?prop={{ branch }}&"+
- 'val='+value;
- };
- </script>
- <td>{{ property.description }}</td>
- {% else %}
- <td></td>
- {% endif %}
- {% else %}
- <td>{{ property.name }}"</td>
- <td>
- <table border="1" style="width:100%">
- {% if 'description' in property %}
- <tr>
- <th> Description </th>
- <td> {{ property.description }} </td>
- </tr>
- {% endif %}
- <tr>
- <th> Current value </th>
- <td> {{ value }} </td>
- </tr>
- {% if 'W' in property.mode %}
- <tr>
- <th> Set value</th>
- <td>
- <input type="text" name="set_val_box" id="set_val_box" value="" />
- <input type="button" value="set" onclick="set_property()">
- </td>
- </tr>
- {% endif %}
- <tr>
- <th>Mode</th>
- <td>
- <ul>
- {% for m in property.mode %}
- <li>{{ m }}</li>
- {% endfor %}
- </ul>
- </td>
- </tr>
- <tr>
- <th>Type</th>
- <td> {{ property.type }} </td>
- </tr>
- <tr>
- <th>Unit</th>
- <td> {{ property.unit }} </td>
- </tr>
- <tr>
- <th>Path</th>
- <td> {{ property.path }} </td>
- </tr>
- </table>
- </td>
- {% endif %}
- </tr>
- {% endfor %}
- </table>
-{% endblock %}
diff --git a/pywrap/templates/register_info.html b/pywrap/templates/register_info.html
deleted file mode 100644
index a7f11dc..0000000
--- a/pywrap/templates/register_info.html
+++ /dev/null
@@ -1,106 +0,0 @@
-{% extends "base.html" %}
-{% block title %}Register info{% endblock %}
-{% block info %}
-<h1>Register '{{ register.name }}' info</h1>
-{% endblock %}
-
-{% block content %}
- <script>
- function write_register()
- {
- var value = document.getElementById("set_val_box").value;
- window.location.href = "{{ url_for('write_register') }}?name={{ register.name }}&"+
- 'bank={{ register.bank }}&val='+value;
- };
- </script>
-
- <table border="1" style="width:100%">
- {% if 'description' in register %}
- <tr>
- <th> Description </th>
- <td> {{ register.description }} </td>
- </tr>
- {% endif %}
- <tr>
- <th> Current value </th>
- <td> {{ value }} </td>
- </tr>
- {% if 'W' in register.mode %}
- <tr>
- <th> Set value</th>
- <td>
- <input type="text" name="set_val_box" id="set_val_box" value="" />
- <input type="button" value="set" onclick="write_register()">
- </td>
- </tr>
- {% endif %}
- <tr>
- <th>Bank</th>
- <td>{{ register.bank }}</td>
- </tr>
- <tr>
- <th>Default value</th>
- <td>{{ register.defvalue }}</td>
- </tr>
- <tr>
- <th>Mode</th>
- <td>
- <ul>
- {% for m in register.mode %}
- <li>{{ m }}</li>
- {% endfor %}
- </ul>
- </td>
- </tr>
- {% if 'range' in register %}
- <tr>
- <th>
- Range
- </th>
- <td>
- <table>
- <tr>
- <th> min </th>
- <td> {{ register.range.min }} </td>
- </tr>
- <tr>
- <th> max </th>
- <td> {{ register.range.max }} </td>
- </tr>
- </table>
- </td>
- </tr>
- {% endif %}
- {% if 'values' in register %}
- {% for v in register['values'] %}
- <tr>
- {% if 'name' in v %}
- <th> {{v.name}} </th>
- {% endif %}
- <td>
- <table>
- {% if 'description' in v %}
- <tr>
- <th> description </th>
- <td> {{ v.description }} </td>
- </tr>
- {% endif %}
- <tr>
- <th> min </th>
- <td> {{ v.min }} </td>
- </tr>
- <tr>
- <th> max </th>
- <td> {{ v.max }} </td>
- </tr>
- <tr>
- <th> value </th>
- <td> {{ v.value }} </td>
- </tr>
- </table>
- </td>
- </tr>
- {% endfor %}
- {% endif %}
- </table>
-{% endblock %}
diff --git a/pywrap/templates/registers_list.html b/pywrap/templates/registers_list.html
deleted file mode 100644
index 199475b..0000000
--- a/pywrap/templates/registers_list.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "base.html" %}
-{% block title %}Registers list{% endblock %}
-{% block info %}
-<h1>List of aviable registers</h1>
-{% endblock %}
-
-{% block content %}
-<table border="1" style="width:100%">
- <tr>
- <th>Name</th>
- <th>Description</th>
- </tr>
-{% for register in registers %}
- <tr>
- <td><a href="{{ url_for('get_register_info', bank=register.bank, name=register.name) }}">{{ register.name }}</td>
- {% if 'description' in register %}
- <td>{{ register.description }}</td>
- {% else %}
- <td></td>
- {% endif %}
- </tr>
-{% endfor %}
-</table>
-{% endblock %}
-
-
diff --git a/pywrap/test_pcipywrap.py b/pywrap/test_pcipywrap.py
index 91780ec..809a81a 100644
--- a/pywrap/test_pcipywrap.py
+++ b/pywrap/test_pcipywrap.py
@@ -87,10 +87,10 @@ class test_pcipywrap():
print self.pcilib.get_property_list(self.branch)
print self.pcilib.get_register_info(self.register)
print self.pcilib.get_registers_list();
- print self.pcilib.read_register(self.register)
print self.pcilib.write_register(val, self.register)
- print self.pcilib.get_property(self.prop)
+ print self.pcilib.read_register(self.register)
print self.pcilib.set_property(val, self.prop)
+ print self.pcilib.get_property(self.prop)
except KeyboardInterrupt:
print 'testing done'
pass