diff options
376 files changed, 4847 insertions, 12713 deletions
@@ -1,4 +1,4 @@ -DHTMLX Connector for PHP +DHTMLX Connector for Yii2 ======================== dhtmlxConnector is an extension for the DHTMLX library, which maps client-side diff --git a/codebase/Connector.php b/codebase/Connector.php new file mode 100644 index 0000000..9c28872 --- /dev/null +++ b/codebase/Connector.php @@ -0,0 +1,645 @@ +<?php + +namespace DHTMLX\Connector; + +use DHTMLX\Connector\Tools\EventMaster; +use DHTMLX\Connector\Tools\AccessMaster; +use DHTMLX\Connector\Tools\LogMaster; +use DHTMLX\Connector\Output\RenderStrategy; +use DHTMLX\Connector\Output\OutputWriter; +use DHTMLX\Connector\DataStorage\DataConfig; +use DHTMLX\Connector\DataStorage\DataAction; +use DHTMLX\Connector\DataStorage\DataRequestConfig; +use DHTMLX\Connector\DataStorage\MySQLDBDataWrapper; +use DHTMLX\Connector\DataStorage\ArrayDBDataWrapper; +use DHTMLX\Connector\DataStorage\PHPYii2DBDataWrapper; +use DHTMLX\Connector\XSSFilter\ConnectorSecurity; +use DHTMLX\Connector\Event\SortInterface; +use DHTMLX\Connector\Event\FilterInterface; + +class Connector { + protected $config;//DataConfig instance + protected $request;//DataRequestConfig instance + protected $names;//!< hash of names for used classes + protected $encoding="utf-8";//!< assigned encoding (UTF-8 by default) + protected $editing=false;//!< flag of edit mode ( response for dataprocessor ) + + public static $filter_var="dhx_filter"; + public static $sort_var="dhx_sort"; + public static $kids_var="dhx_kids"; + + public $model=false; + + private $updating=false;//!< flag of update mode ( response for data-update ) + private $db; //!< db connection resource + protected $dload;//!< flag of dyn. loading mode + public $access; //!< AccessMaster instance + protected $data_separator = "\n"; + + public $sql; //DataWrapper instance + public $event; //EventMaster instance + public $limit=false; + + private $id_seed=0; //!< default value, used to generate auto-IDs + protected $live_update = false; // actions table name for autoupdating + protected $extra_output="";//!< extra info which need to be sent to client side + protected $options=array();//!< hash of OptionsConnector + protected $as_string = false; // render() returns string, don't send result in response + protected $simple = false; // render only data without any other info + protected $filters; + protected $sorts; + protected $mix; + protected $order = false; + + /*! constructor + + Here initilization of all Masters occurs, execution timer initialized + @param db + db connection resource + @param type + string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided + @param item_type + name of class, which will be used for item rendering, optional, DataItem will be used by default + @param data_type + name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. + */ + public function __construct($db,$type=false, $item_type=false, $data_type=false, $render_type = false){ + $this->exec_time=microtime(true); + $dsnamespace = "DHTMLX\\Connector\\DataStorage\\"; + if (!$type) $type=$dsnamespace."MySQLDBDataWrapper"; + + //die(var_dump(class_exists("DataConfig",true), new MySQLDBDataWrapper)); + if (class_exists($dsnamespace.$type."DBDataWrapper",true)) + $type.="DBDataWrapper"; + if (!$item_type) $item_type="DHTMLX\\Connector\\Data\\DataItem"; + if (!$data_type) $data_type="DHTMLX\\Connector\\Data\\DataProcessor"; + if (!$render_type) $render_type="DHTMLX\\Connector\\Output\\RenderStrategy"; + + $this->names=array( + "db_class"=>$type, + "item_class"=>$item_type, + "data_class"=>$data_type, + "render_class"=>$render_type + ); + $this->attributes = array(); + $this->filters = array(); + $this->sorts = array(); + $this->mix = array(); + + $this->config = new DataConfig(); + $this->request = new DataRequestConfig(); + $this->event = new EventMaster(); + $this->access = new AccessMaster(); + +// if (!class_exists($this->names["db_class"],false)) +// throw new \Exception("DB class not found: ".$this->names["db_class"]); + $dbClass = $dsnamespace.$this->names["db_class"]; + $this->sql = new $dbClass($db,$this->config); + $this->render = new $this->names["render_class"]($this); + + $this->db=$db;//saved for options connectors, if any + + EventMaster::trigger_static("connectorCreate",$this); + } + + /*! return db connection resource + nested class may neeed to access live connection object + @return + DB connection resource + */ + protected function get_connection(){ + return $this->db; + } + + public function get_config(){ + return new DataConfig($this->config); + } + + public function get_request(){ + return new DataRequestConfig($this->request); + } + + + protected $attributes; + public function add_top_attribute($name, $string){ + $this->attributes[$name] = $string; + } + + //model is a class, which will be used for all data operations + //we expect that it has next methods get, update, insert, delete + //if method was not defined - we will use default logic + public function useModel($model){ + $this->model = $model; + } + + + /*! config connector based on table + + @param table + name of table in DB + @param id + name of id field + @param fields + list of fields names + @param extra + list of extra fields, optional, such fields will not be included in data rendering, but will be accessible in all inner events + @param relation_id + name of field used to define relations for hierarchical data organization, optional + */ + public function render_table($table,$id="",$fields=false,$extra=false,$relation_id=false){ + $this->configure($table,$id,$fields,$extra,$relation_id); + return $this->render(); + } + public function configure($table,$id="",$fields=false,$extra=false,$relation_id=false){ + if ($fields === false){ + //auto-config + $info = $this->sql->fields_list($table); + $fields = implode(",",$info["fields"]); + if ($info["key"]) + $id = $info["key"]; + } + $this->config->init($id,$fields,$extra,$relation_id); + if (strpos(trim($table), " ")!==false) + $this->request->parse_sql($table); + else + $this->request->set_source($table); + } + + public function uuid(){ + return time()."x".$this->id_seed++; + } + + /*! config connector based on sql + + @param sql + sql query used as base of configuration + @param id + name of id field + @param fields + list of fields names + @param extra + list of extra fields, optional, such fields will not be included in data rendering, but will be accessible in all inner events + @param relation_id + name of field used to define relations for hierarchical data organization, optional + */ + public function render_sql($sql,$id,$fields,$extra=false,$relation_id=false){ + $this->config->init($id,$fields,$extra,$relation_id); + $this->request->parse_sql($sql); + return $this->render(); + } + + public function render_array($data, $id, $fields, $extra=false, $relation_id=false){ + $this->configure("-",$id,$fields,$extra,$relation_id); + $this->sql = new ArrayDBDataWrapper($data, $this->config); + return $this->render(); + } + + public function render_complex_sql($sql,$id,$fields,$extra=false,$relation_id=false){ + $this->config->init($id,$fields,$extra,$relation_id); + $this->request->parse_sql($sql, true); + return $this->render(); + } + + /*! render already configured connector + + @param config + configuration of data + @param request + configuraton of request + */ + public function render_connector($config,$request){ + $this->config->copy($config); + $this->request->copy($request); + return $this->render(); + } + + /*! render self + process commands, output requested data as XML + */ + public function render(){ + $this->event->trigger("onInit", $this); + EventMaster::trigger_static("connectorInit",$this); + + if (!$this->as_string) + $this->parse_request(); + $this->set_relation(); + + if ($this->live_update !== false && $this->updating!==false) { + $this->live_update->get_updates(); + } else { + if ($this->editing){ + //die($this->names["data_class"]); + $dp = new $this->names["data_class"]($this,$this->config,$this->request); + $dp->process($this->config,$this->request); + } else { + if (!$this->access->check("read")){ + LogMaster::log("Access control: read operation blocked"); + echo "Access denied"; + die(); + } + $wrap = new SortInterface($this->request); + $this->apply_sorts($wrap); + $this->event->trigger("beforeSort",$wrap); + $wrap->store(); + + $wrap = new FilterInterface($this->request); + $this->apply_filters($wrap); + $this->event->trigger("beforeFilter",$wrap); + $wrap->store(); + + if ($this->model && method_exists($this->model, "get")){ + $this->sql = new ArrayDBDataWrapper(); + $result = new ArrayQueryWrapper(call_user_func(array($this->model, "get"), $this->request)); + $out = $this->output_as_xml($result); + } else { + $out = $this->output_as_xml($this->get_resource()); + + if ($out !== null) return $out; + } + + } + } + $this->end_run(); + } + + + /*! empty call which used for tree-logic + * to prevent code duplicating + */ + protected function set_relation() {} + + /*! gets resource for rendering + */ + protected function get_resource() { + //die(var_dump($this->sql->select($this->request))); + return $this->sql->select($this->request); + } + + + /*! prevent SQL injection through column names + replace dangerous chars in field names + @param str + incoming field name + @return + safe field name + */ + protected function safe_field_name($str){ + return strtok($str, " \n\t;',"); + } + + /*! limit max count of records + connector will ignore any records after outputing max count + @param limit + max count of records + @return + none + */ + public function set_limit($limit){ + $this->limit = $limit; + } + + + public function limit($start, $count, $sort_field=false, $sort_dir=false){ + $this->request->set_limit($start, $count); + if ($sort_field) + $this->request->set_sort($sort_field, $sort_dir); + } + + protected function parse_request_mode(){ + //detect edit mode + if (isset($_GET["editing"])){ + $this->editing=true; + } else if (isset($_POST["ids"])){ + $this->editing=true; + LogMaster::log('While there is no edit mode mark, POST parameters similar to edit mode detected. \n Switching to edit mode ( to disable behavior remove POST[ids]'); + } else if (isset($_GET['dhx_version'])){ + $this->updating = true; + } + } + + /*! parse incoming request, detects commands and modes + */ + protected function parse_request(){ + //set default dyn. loading params, can be reset in child classes + if ($this->dload) + $this->request->set_limit(0,$this->dload); + else if ($this->limit) + $this->request->set_limit(0,$this->limit); + + if (isset($_GET["posStart"]) && isset($_GET["count"])) { + $this->request->set_limit($_GET["posStart"],$_GET["count"]); + } + + $this->parse_request_mode(); + + if ($this->live_update && ($this->updating || $this->editing)){ + $this->request->set_version($_GET["dhx_version"]); + $this->request->set_user($_GET["dhx_user"]); + } + + if (isset($_GET[Connector::$sort_var])) + foreach($_GET[Connector::$sort_var] as $k => $v){ + $k = $this->safe_field_name($k); + $this->request->set_sort($this->resolve_parameter($k),$v); + } + + if (isset($_GET[Connector::$filter_var])) + foreach($_GET[Connector::$filter_var] as $k => $v){ + $k = $this->safe_field_name($k); + if ($v !== "") + $this->request->set_filter($this->resolve_parameter($k),$v); + } + + $this->check_csrf(); + } + + protected function check_csrf(){ + $key = ConnectorSecurity::checkCSRF($this->editing); + if ($key !== "") + $this->add_top_attribute(ConnectorSecurity::$security_var, $key); + } + + /*! convert incoming request name to the actual DB name + @param name + incoming parameter name + @return + name of related DB field + */ + protected function resolve_parameter($name){ + return $name; + } + + + /*! replace xml unsafe characters + + @param string + string to be escaped + @return + escaped string + */ + protected function xmlentities($string) { + return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); + } + + public function getRecord($id){ + LogMaster::log("Retreiving data for record: ".$id); + $source = new DataRequestConfig($this->request); + $source->set_filter($this->config->id["name"],$id, "="); + + $res = $this->sql->select($source); + + $temp = $this->data_separator; + $this->data_separator=""; + $output = $this->render_set($res); + $this->data_separato=$temp; + + return $output; + } + + /*! render from DB resultset + @param res + DB resultset + process commands, output requested data as XML + */ + protected function render_set($res){ + return $this->render->render_set($res, $this->names["item_class"], $this->dload, $this->data_separator, $this->config, $this->mix); + } + + /*! output fetched data as XML + @param res + DB resultset + */ + protected function output_as_xml($res){ + $result = $this->render_set($res); + if ($this->simple) return $result; + + $start="<?xml version='1.0' encoding='".$this->encoding."' ?>".$this->xml_start(); + $end=$result.$this->xml_end(); + + if ($this->as_string) return $start.$end; + + $out = new OutputWriter($start, $end); + $this->event->trigger("beforeOutput", $this, $out); + $out->output("", true, $this->encoding); + } + + + /*! end processing + stop execution timer, kill the process + */ + protected function end_run(){ + $time=microtime(true)-$this->exec_time; + LogMaster::log("Done in {$time}s"); + flush(); + die(); + } + + /*! set xml encoding + + methods sets only attribute in XML, no real encoding conversion occurs + @param encoding + value which will be used as XML encoding + */ + public function set_encoding($encoding){ + $this->encoding=$encoding; + } + + /*! enable or disable dynamic loading mode + + @param count + count of rows loaded from server, actual only for grid-connector, can be skiped in other cases. + If value is a false or 0 - dyn. loading will be disabled + */ + public function dynamic_loading($count){ + $this->dload=$count; + } + + /*! enable or disable data reordering + + @param name + name of field, which will be used for order storing, optional + by default 'sortorder' field will be used + */ + public function enable_order($name = true){ + if ($name === true) + $name = "sortorder"; + + $this->sort($name); + $this->access->allow("order"); + $this->request->set_order($name); + $this->order = $name; + } + + /*! enable logging + + @param path + path to the log file. If set as false or empty strig - logging will be disabled + @param client_log + enable output of log data to the client side + */ + public function enable_log($path=true,$client_log=false){ + LogMaster::enable_log($path,$client_log); + } + + /*! provides infor about current processing mode + @return + true if processing dataprocessor command, false otherwise + */ + public function is_select_mode(){ + $this->parse_request_mode(); + return !$this->editing; + } + + public function is_first_call(){ + $this->parse_request_mode(); + return !($this->editing || $this->updating || $this->request->get_start() || isset($_GET['dhx_no_header'])); + + } + + /*! renders self as xml, starting part + */ + protected function xml_start(){ + $attributes = ""; + + if ($this->dload){ + //info for dyn. loadin + if ($pos=$this->request->get_start()) + $attributes .= " pos='".$pos."'"; + else + $attributes .= " total_count='".$this->sql->get_size($this->request)."'"; + } + foreach($this->attributes as $k=>$v) + $attributes .= " ".$k."='".$v."'"; + + return "<data".$attributes.">"; + } + /*! renders self as xml, ending part + */ + protected function xml_end(){ + $this->fill_collections(); + if (isset($this->extra_output)) + return $this->extra_output."</data>"; + else + return "</data>"; + } + + protected function fill_collections($list=""){ + foreach ($this->options as $k=>$v) { + $name = $k; + $this->extra_output.="<coll_options for='{$name}'>"; + if (!is_string($this->options[$name])) + $this->extra_output.=$this->options[$name]->render(); + else + $this->extra_output.=$this->options[$name]; + $this->extra_output.="</coll_options>"; + } + } + + /*! assign options collection to the column + + @param name + name of the column + @param options + array or connector object + */ + public function set_options($name,$options){ + if (is_array($options)){ + $str=""; + foreach($options as $k => $v) + $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />"; + $options=$str; + } + $this->options[$name]=$options; + } + + + public function insert($data) { + $action = new DataAction('inserted', false, $data); + $request = new DataRequestConfig(); + $request->set_source($this->request->get_source()); + + $this->config->limit_fields($data); + $this->sql->insert($action,$request); + $this->config->restore_fields($data); + + return $action->get_new_id(); + } + + public function delete($id) { + $action = new DataAction('deleted', $id, array()); + $request = new DataRequestConfig(); + $request->set_source($this->request->get_source()); + + $this->sql->delete($action,$request); + return $action->get_status(); + } + + public function update($data) { + $action = new DataAction('updated', $data[$this->config->id["name"]], $data); + $request = new DataRequestConfig(); + $request->set_source($this->request->get_source()); + + $this->config->limit_fields($data); + $this->sql->update($action,$request); + $this->config->restore_fields($data); + + return $action->get_status(); + } + + /*! sets actions_table for Optimistic concurrency control mode and start it + @param table_name + name of database table which will used for saving actions + @param url + url used for update notifications + */ + public function enable_live_update($table, $url=false){ + $this->live_update = new DataUpdate($this->sql, $this->config, $this->request, $table,$url); + $this->live_update->set_event($this->event,$this->names["item_class"]); + $this->event->attach("beforeOutput", Array($this->live_update, "version_output")); + $this->event->attach("beforeFiltering", Array($this->live_update, "get_updates")); + $this->event->attach("beforeProcessing", Array($this->live_update, "check_collision")); + $this->event->attach("afterProcessing", Array($this->live_update, "log_operations")); + } + + /*! render() returns result as string or send to response + */ + public function asString($as_string) { + $this->as_string = $as_string; + } + + public function simple_render() { + $this->simple = true; + return $this->render(); + } + + public function filter($name, $value = false, $operation = '=') { + $this->filters[] = array('name' => $name, 'value' => $value, 'operation' => $operation); + } + + public function clear_filter() { + $this->filters = array(); + $this->request->set_filters(array()); + } + + protected function apply_filters($wrap) { + for ($i = 0; $i < count($this->filters); $i++) { + $f = $this->filters[$i]; + $wrap->add($f['name'], $f['value'], $f['operation']); + } + } + + public function sort($name, $direction = false) { + $this->sorts[] = array('name' => $name, 'direction' => $direction); + } + + protected function apply_sorts($wrap) { + for ($i = 0; $i < count($this->sorts); $i++) { + $s = $this->sorts[$i]; + $wrap->add($s['name'], $s['direction']); + } + } + + public function mix($name, $value, $filter=false) { + $this->mix[] = Array('name'=>$name, 'value'=>$value, 'filter'=>$filter); + } +}
\ No newline at end of file diff --git a/codebase/convert.php b/codebase/ConvertService.php index f24922c..9fa3261 100644 --- a/codebase/convert.php +++ b/codebase/ConvertService.php @@ -1,4 +1,8 @@ <?php + +namespace DHTMLX\Connector; + +use DHTMLX\Connector\Tools\EventMaster; /* @author dhtmlx.com @license GPL, see license.txt @@ -8,9 +12,9 @@ class ConvertService{ private $type; private $name; private $inline; - + public function __construct($url){ - $this->url = $url; + $this->url = $url; $this->pdf(); EventMaster::attach_static("connectorInit",array($this, "handle")); } @@ -31,16 +35,16 @@ class ConvertService{ header('Content-Type: application/force-download'); header('Content-Type: application/octet-stream'); header('Content-Type: application/download'); - header('Content-Transfer-Encoding: binary'); - + header('Content-Transfer-Encoding: binary'); + header('Content-Length: '.$size); if ($inline) - header('Content-Disposition: inline; filename="'.$name.'";'); + header('Content-Disposition: inline; filename="'.$name.'";'); else header('Content-Disposition: attachment; filename="'.basename($name).'";'); - } + } public function convert($conn, $out){ - + $str_out = str_replace("<rows>","<rows profile='color'>", $out); $str_out = str_replace("<head>","<head><columns>", $str_out); $str_out = str_replace("</head>","</columns></head>", $str_out); @@ -55,15 +59,13 @@ class ConvertService{ curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); curl_setopt($handle, CURLOPT_POSTFIELDS, "grid_xml=".urlencode($str_out)); - - + + $out->reset(); $out->set_type("pdf"); $out->add(curl_exec($handle)); $this->as_file(strlen((string)$out), $this->name, $this->inline); - + curl_close($handle); } -} - -?>
\ No newline at end of file +}
\ No newline at end of file diff --git a/codebase/Data/DataAction.php b/codebase/Data/DataAction.php new file mode 100644 index 0000000..8e4b5dd --- /dev/null +++ b/codebase/Data/DataAction.php @@ -0,0 +1,276 @@ +<?php +namespace DHTMLX\Connector\Data; + +use DHTMLX\Connector\Tools\LogMaster; +/*! contain all info related to action and controls customizaton +**/ +class DataAction{ + private $status; //!< cuurent status of record + private $id;//!< id of record + private $data;//!< data hash of record + private $userdata;//!< hash of extra data , attached to record + private $nid;//!< new id value , after operation executed + private $output;//!< custom output to client side code + private $attrs;//!< hash of custtom attributes + private $ready;//!< flag of operation's execution + private $addf;//!< array of added fields + private $delf;//!< array of deleted fields + + + /*! constructor + + @param status + current operation status + @param id + record id + @param data + hash of data + */ + function __construct($status,$id,$data){ + $this->status=$status; + $this->id=$id; + $this->data=$data; + $this->nid=$id; + + $this->output=""; + $this->attrs=array(); + $this->ready=false; + + $this->addf=array(); + $this->delf=array(); + } + + + /*! add custom field and value to DB operation + + @param name + name of field which will be added to DB operation + @param value + value which will be used for related field in DB operation + */ + function add_field($name,$value){ + LogMaster::log("adding field: ".$name.", with value: ".$value); + $this->data[$name]=$value; + $this->addf[]=$name; + } + /*! remove field from DB operation + + @param name + name of field which will be removed from DB operation + */ + function remove_field($name){ + LogMaster::log("removing field: ".$name); + $this->delf[]=$name; + } + + /*! sync field configuration with external object + + @param slave + SQLMaster object + @todo + check , if all fields removed then cancel action + */ + function sync_config($slave){ + foreach ($this->addf as $k => $v) + $slave->add_field($v); + foreach ($this->delf as $k => $v) + $slave->remove_field($v); + } + /*! get value of some record's propery + + @param name + name of record's property ( name of db field or alias ) + @return + value of related property + */ + function get_value($name){ + //die(var_dump($this->data["c0"])); + if (!array_key_exists($name,$this->data)){ + LogMaster::log("Incorrect field name used: ".$name); + LogMaster::log("data",$this->data); + return ""; + } + return $this->data[$name]; + } + /*! set value of some record's propery + + @param name + name of record's property ( name of db field or alias ) + @param value + value of related property + */ + function set_value($name,$value){ + LogMaster::log("change value of: ".$name." as: ".$value); + $this->data[$name]=$value; + } + /*! get hash of data properties + + @return + hash of data properties + */ + function get_data(){ + return $this->data; + } + /*! get some extra info attached to record + deprecated, exists just for backward compatibility, you can use set_value instead of it + @param name + name of userdata property + @return + value of related userdata property + */ + function get_userdata_value($name){ + return $this->get_value($name); + } + /*! set some extra info attached to record + deprecated, exists just for backward compatibility, you can use get_value instead of it + @param name + name of userdata property + @param value + value of userdata property + */ + function set_userdata_value($name,$value){ + return $this->set_value($name,$value); + } + /*! get current status of record + + @return + string with status value + */ + function get_status(){ + return $this->status; + } + /*! assign new status to the record + + @param status + new status value + */ + function set_status($status){ + $this->status=$status; + } + /*! set id + @param id + id value + */ + function set_id($id) { + $this->id = $id; + LogMaster::log("Change id: ".$id); + } + /*! set id + @param id + id value + */ + function set_new_id($id) { + $this->nid = $id; + LogMaster::log("Change new id: ".$id); + } + /*! get id of current record + + @return + id of record + */ + function get_id(){ + return $this->id; + } + /*! sets custom response text + + can be accessed through defineAction on client side. Text wrapped in CDATA, so no extra escaping necessary + @param text + custom response text + */ + function set_response_text($text){ + $this->set_response_xml("<![CDATA[".$text."]]>"); + } + /*! sets custom response xml + + can be accessed through defineAction on client side + @param text + string with XML data + */ + function set_response_xml($text){ + $this->output=$text; + } + /*! sets custom response attributes + + can be accessed through defineAction on client side + @param name + name of custom attribute + @param value + value of custom attribute + */ + function set_response_attribute($name,$value){ + $this->attrs[$name]=$value; + } + /*! check if action finished + + @return + true if action finished, false otherwise + */ + function is_ready(){ + return $this->ready; + } + /*! return new id value + + equal to original ID normally, after insert operation - value assigned for new DB record + @return + new id value + */ + function get_new_id(){ + return $this->nid; + } + + /*! set result of operation as error + */ + function error(){ + $this->status="error"; + $this->ready=true; + } + /*! set result of operation as invalid + */ + function invalid(){ + $this->status="invalid"; + $this->ready=true; + } + /*! confirm successful opeation execution + @param id + new id value, optional + */ + function success($id=false){ + if ($id!==false) + $this->nid = $id; + $this->ready=true; + } + /*! convert DataAction to xml format compatible with client side dataProcessor + @return + DataAction operation report as XML string + */ + function to_xml(){ + $str="<action type='{$this->status}' sid='{$this->id}' tid='{$this->nid}' "; + foreach ($this->attrs as $k => $v) { + $str.=$k."='".$this->xmlentities($v)."' "; + } + $str.=">{$this->output}</action>"; + return $str; + } + + /*! replace xml unsafe characters + + @param string + string to be escaped + @return + escaped string + */ + public function xmlentities($string) { + return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); + } + + /*! convert self to string ( for logs ) + + @return + DataAction operation report as plain string + */ + function __toString(){ + return "action:{$this->status}; sid:{$this->id}; tid:{$this->nid};"; + } + + +}
\ No newline at end of file diff --git a/codebase/Data/DataItem.php b/codebase/Data/DataItem.php new file mode 100644 index 0000000..b980d9c --- /dev/null +++ b/codebase/Data/DataItem.php @@ -0,0 +1,128 @@ +<?php + +namespace DHTMLX\Connector\Data; +/*! base class for component item representation +**/ +class DataItem{ + protected $data; //!< hash of data + protected $config;//!< DataConfig instance + protected $index;//!< index of element + protected $skip;//!< flag , which set if element need to be skiped during rendering + protected $userdata; + + /*! constructor + + @param data + hash of data + @param config + DataConfig object + @param index + index of element + */ + function __construct($data,$config,$index){ + $this->config=$config; + $this->data=$data; + $this->index=$index; + $this->skip=false; + $this->userdata=false; + } + + //set userdata for the item + function set_userdata($name, $value){ + if ($this->userdata === false) + $this->userdata = array(); + + $this->userdata[$name]=$value; + } + /*! get named value + + @param name + name or alias of field + @return + value from field with provided name or alias + */ + public function get_value($name){ + return $this->data[$name]; + } + /*! set named value + + @param name + name or alias of field + @param value + value for field with provided name or alias + */ + public function set_value($name,$value){ + return $this->data[$name]=$value; + } + /*! get id of element + @return + id of element + */ + public function get_id(){ + $id = $this->config->id["name"]; + if (array_key_exists($id,$this->data)) + return $this->data[$id]; + return false; + } + /*! change id of element + + @param value + new id value + */ + public function set_id($value){ + $this->data[$this->config->id["name"]]=$value; + } + /*! get index of element + + @return + index of element + */ + public function get_index(){ + return $this->index; + } + /*! mark element for skiping ( such element will not be rendered ) + */ + public function skip(){ + $this->skip=true; + } + + /*! return self as XML string + */ + public function to_xml(){ + return $this->to_xml_start().$this->to_xml_end(); + } + + /*! replace xml unsafe characters + + @param string + string to be escaped + @return + escaped string + */ + public function xmlentities($string) { + return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); + } + + /*! return starting tag for self as XML string + */ + public function to_xml_start(){ + $str="<item"; + for ($i=0; $i < sizeof($this->config->data); $i++){ + $name=$this->config->data[$i]["name"]; + $db_name=$this->config->data[$i]["db_name"]; + $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'"; + } + //output custom data + if ($this->userdata !== false) + foreach ($this->userdata as $key => $value){ + $str.=" ".$key."='".$this->xmlentities($value)."'"; + } + + return $str.">"; + } + /*! return ending tag for XML string + */ + public function to_xml_end(){ + return "</item>"; + } +}
\ No newline at end of file diff --git a/codebase/Data/DataItemUpdate.php b/codebase/Data/DataItemUpdate.php new file mode 100644 index 0000000..ad97be2 --- /dev/null +++ b/codebase/Data/DataItemUpdate.php @@ -0,0 +1,105 @@ +<?php + +/* + @author dhtmlx.com + @license GPL, see license.txt +*/ + +/*! DataItemUpdate class for realization Optimistic concurrency control + Wrapper for DataItem object + It's used during outputing updates instead of DataItem object + Create wrapper for every data item with update information. +*/ + +namespace DHTMLX\Connector\Data; + +class DataItemUpdate extends DataItem { + + + /*! constructor + @param data + hash of data + @param config + DataConfig object + @param index + index of element + */ + public function __construct($data,$config,$index,$type){ + $this->config=$config; + $this->data=$data; + $this->index=$index; + $this->skip=false; + $this->child = new $type($data, $config, $index); + } + + /*! returns parent_id (for Tree and TreeGrid components) + */ + public function get_parent_id(){ + if (method_exists($this->child, 'get_parent_id')) { + return $this->child->get_parent_id(); + } else { + return ''; + } + } + + + /*! generate XML on the data hash base + */ + public function to_xml(){ + $str= "<update "; + $str .= 'status="'.$this->data['type'].'" '; + $str .= 'id="'.$this->data['dataId'].'" '; + $str .= 'parent="'.$this->get_parent_id().'"'; + $str .= '>'; + $str .= $this->child->to_xml(); + $str .= '</update>'; + return $str; + } + + /*! return starting tag for XML string + */ + public function to_xml_start(){ + $str="<update "; + $str .= 'status="'.$this->data['type'].'" '; + $str .= 'id="'.$this->data['dataId'].'" '; + $str .= 'parent="'.$this->get_parent_id().'"'; + $str .= '>'; + $str .= $this->child->to_xml_start(); + return $str; + } + + /*! return ending tag for XML string + */ + public function to_xml_end(){ + $str = $this->child->to_xml_end(); + $str .= '</update>'; + return $str; + } + + /*! returns false for outputing only current item without child items + */ + public function has_kids(){ + return false; + } + + /*! sets count of child items + @param value + count of child items + */ + public function set_kids($value){ + if (method_exists($this->child, 'set_kids')) { + $this->child->set_kids($value); + } + } + + /*! sets attribute for item + */ + public function set_attribute($name, $value){ + if (method_exists($this->child, 'set_attribute')) { + LogMaster::log("setting attribute: \nname = {$name}\nvalue = {$value}"); + $this->child->set_attribute($name, $value); + } else { + LogMaster::log("set_attribute method doesn't exists"); + } + } +}
\ No newline at end of file diff --git a/codebase/Data/DataProcessor.php b/codebase/Data/DataProcessor.php new file mode 100644 index 0000000..973753a --- /dev/null +++ b/codebase/Data/DataProcessor.php @@ -0,0 +1,253 @@ +<?php +/*! Base DataProcessor handling +**/ +namespace DHTMLX\Connector\Data; +use DHTMLX\Connector\Tools\LogMaster; +use DHTMLX\Connector\XSSFilter\ConnectorSecurity; +use DHTMLX\Connector\DataStorage\DataConfig; + +class DataProcessor{ + protected $connector;//!< Connector instance + protected $config;//!< DataConfig instance + protected $request;//!< DataRequestConfig instance + static public $action_param ="!nativeeditor_status"; + + /*! constructor + + @param connector + Connector object + @param config + DataConfig object + @param request + DataRequestConfig object + */ + function __construct($connector,$config,$request){ + $this->connector= $connector; + $this->config=$config; + $this->request=$request; + } + + /*! convert incoming data name to valid db name + redirect to Connector->name_data by default + @param data + data name from incoming request + @return + related db_name + */ + function name_data($data){ + return $data; + } + /*! retrieve data from incoming request and normalize it + + @param ids + array of extected IDs + @return + hash of data + */ + protected function get_post_values($ids){ + $data=array(); + for ($i=0; $i < sizeof($ids); $i++) + $data[$ids[$i]]=array(); + + foreach ($_POST as $key => $value) { + $details=explode("_",$key,2); + if (sizeof($details)==1) continue; + + $name=$this->name_data($details[1]); + $data[$details[0]][$name]=ConnectorSecurity::filter($value); + } + + return $data; + } + protected function get_ids(){ + if (!isset($_POST["ids"])) + throw new \Exception("Incorrect incoming data, ID of incoming records not recognized"); + return explode(",",$_POST["ids"]); + } + + protected function get_operation($rid){ + if (!isset($_POST[$rid."_".DataProcessor::$action_param])) + throw new \Exception("Status of record [{$rid}] not found in incoming request"); + return $_POST[$rid."_".DataProcessor::$action_param]; + } + /*! process incoming request ( save|update|delete ) + */ + function process(){ + LogMaster::log("DataProcessor object initialized",$_POST); + + $results=array(); + + $ids=$this->get_ids(); + $rows_data=$this->get_post_values($ids); + $failed=false; + + try{ + if ($this->connector->sql->is_global_transaction()) + $this->connector->sql->begin_transaction(); + + for ($i=0; $i < sizeof($ids); $i++) { + $rid = $ids[$i]; + LogMaster::log("Row data [{$rid}]",$rows_data[$rid]); + $status = $this->get_operation($rid); + + $action=new DataAction($status,$rid,$rows_data[$rid]); + + $results[]=$action; + $this->inner_process($action); + } + + } catch(\Exception $e){ + LogMaster::log($e); + $failed=true; + } + + if ($this->connector->sql->is_global_transaction()){ + if (!$failed) + for ($i=0; $i < sizeof($results); $i++) + if ($results[$i]->get_status()=="error" || $results[$i]->get_status()=="invalid"){ + $failed=true; + break; + } + if ($failed){ + for ($i=0; $i < sizeof($results); $i++) + $results[$i]->error(); + $this->connector->sql->rollback_transaction(); + } + else + $this->connector->sql->commit_transaction(); + } + + $this->output_as_xml($results); + } + + /*! converts status string to the inner mode name + + @param status + external status string + @return + inner mode name + */ + protected function status_to_mode($status){ + switch($status){ + case "updated": + return "update"; + break; + case "inserted": + return "insert"; + break; + case "deleted": + return "delete"; + break; + default: + return $status; + break; + } + } + /*! process data updated request received + + @param action + DataAction object + @return + DataAction object with details of processing + */ + protected function inner_process($action){ + + if ($this->connector->sql->is_record_transaction()) + $this->connector->sql->begin_transaction(); + + + + try{ + + $mode = $this->status_to_mode($action->get_status()); + if (!$this->connector->access->check($mode)){ + LogMaster::log("Access control: {$mode} operation blocked"); + $action->error(); + } else { + $check = $this->connector->event->trigger("beforeProcessing",$action); + + + if (!$action->is_ready()) + $this->check_exts($action,$mode); + if ($mode == "insert" && $action->get_status() != "error" && $action->get_status() != "invalid") + $this->connector->sql->new_record_order($action, $this->request); + + $check = $this->connector->event->trigger("afterProcessing",$action); + } + + } catch (\Exception $e){ + LogMaster::log($e); + $action->set_status("error"); + if ($action) + $this->connector->event->trigger("onDBError", $action, $e); + } + + if ($this->connector->sql->is_record_transaction()){ + if ($action->get_status()=="error" || $action->get_status()=="invalid") + $this->connector->sql->rollback_transaction(); + else + $this->connector->sql->commit_transaction(); + } + + return $action; + } + + /*! check if some event intercepts processing, send data to DataWrapper in other case + + @param action + DataAction object + @param mode + name of inner mode ( will be used to generate event names ) + */ + function check_exts($action,$mode){ + $old_config = new DataConfig($this->config); + + + $this->connector->event->trigger("before".$mode,$action); + if ($action->is_ready()) + LogMaster::log("Event code for ".$mode." processed"); + else { + //check if custom sql defined + $sql = $this->connector->sql->get_sql($mode,$action); + if ($sql){ + $this->connector->sql->query($sql); + } + else{ + $action->sync_config($this->config); + + + if ($this->connector->model && method_exists($this->connector->model, $mode)){ + call_user_func(array($this->connector->model, $mode), $action); + LogMaster::log("Model object process action: ".$mode); + } + if (!$action->is_ready()){ + + $method=array($this->connector->sql,$mode); + if (!is_callable($method)) + throw new \Exception("Unknown dataprocessing action: ".$mode); + call_user_func($method,$action,$this->request); + } + } + } + $this->connector->event->trigger("after".$mode,$action); + + $this->config->copy($old_config); + } + + /*! output xml response for dataprocessor + + @param results + array of DataAction objects + */ + function output_as_xml($results){ + LogMaster::log("Edit operation finished",$results); + ob_clean(); + header("Content-type:text/xml"); + echo "<?xml version='1.0' ?>"; + echo "<data>"; + for ($i=0; $i < sizeof($results); $i++) + echo $results[$i]->to_xml(); + echo "</data>"; + } + +}
\ No newline at end of file diff --git a/codebase/Data/DataUpdate.php b/codebase/Data/DataUpdate.php new file mode 100644 index 0000000..8fc1c46 --- /dev/null +++ b/codebase/Data/DataUpdate.php @@ -0,0 +1,163 @@ +<?php + +class DataUpdate{ + + protected $table; //!< table , where actions are stored + protected $url; //!< url for notification service, optional + protected $sql; //!< DB wrapper object + protected $config; //!< DBConfig object + protected $request; //!< DBRequestConfig object + protected $event; + protected $item_class; + protected $demu; + + //protected $config;//!< DataConfig instance + //protected $request;//!< DataRequestConfig instance + + /*! constructor + + @param connector + Connector object + @param config + DataConfig object + @param request + DataRequestConfig object + */ + function __construct($sql, $config, $request, $table, $url){ + $this->config= $config; + $this->request= $request; + $this->sql = $sql; + $this->table=$table; + $this->url=$url; + $this->demu = false; + } + + public function set_demultiplexor($path){ + $this->demu = $path; + } + + public function set_event($master, $name){ + $this->event = $master; + $this->item_class = $name; + } + + private function select_update($actions_table, $join_table, $id_field_name, $version, $user) { + $sql = "SELECT * FROM {$actions_table}"; + $sql .= " LEFT OUTER JOIN {$join_table} ON "; + $sql .= "{$actions_table}.DATAID = {$join_table}.{$id_field_name} "; + $sql .= "WHERE {$actions_table}.ID > '{$version}' AND {$actions_table}.USER <> '{$user}'"; + return $sql; + } + + private function get_update_max_version() { + $sql = "SELECT MAX(id) as VERSION FROM {$this->table}"; + $res = $this->sql->query($sql); + $data = $this->sql->get_next($res); + + if ($data == false || $data['VERSION'] == false) + return 1; + else + return $data['VERSION']; + } + + private function log_update_action($actions_table, $dataId, $status, $user) { + $sql = "INSERT INTO {$actions_table} (DATAID, TYPE, USER) VALUES ('{$dataId}', '{$status}', '{$user}')"; + $this->sql->query($sql); + if ($this->demu) + file_get_contents($this->demu); + } + + + + + /*! records operations in actions_table + @param action + DataAction object + */ + public function log_operations($action) { + $type = $this->sql->escape($action->get_status()); + $dataId = $this->sql->escape($action->get_new_id()); + $user = $this->sql->escape($this->request->get_user()); + if ($type!="error" && $type!="invalid" && $type !="collision") { + $this->log_update_action($this->table, $dataId, $type, $user); + } + } + + + /*! return action version in XMl format + */ + public function get_version() { + $version = $this->get_update_max_version(); + return "<userdata name='version'>".$version."</userdata>"; + } + + + /*! adds action version in output XML as userdata + */ + public function version_output($conn, $out) { + $out->add($this->get_version()); + } + + + /*! create update actions in XML-format and sends it to output + */ + public function get_updates() { + $sub_request = new DataRequestConfig($this->request); + $version = $this->request->get_version(); + $user = $this->request->get_user(); + + $sub_request->parse_sql($this->select_update($this->table, $this->request->get_source(), $this->config->id['db_name'], $version, $user)); + $sub_request->set_relation(false); + + $output = $this->render_set($this->sql->select($sub_request), $this->item_class); + + ob_clean(); + header("Content-type:text/xml"); + + echo $this->updates_start(); + echo $this->get_version(); + echo $output; + echo $this->updates_end(); + } + + + protected function render_set($res, $name){ + $output=""; + $index=0; + while ($data=$this->sql->get_next($res)){ + $data = new DataItemUpdate($data,$this->config,$index, $name); + $this->event->trigger("beforeRender",$data); + $output.=$data->to_xml(); + $index++; + } + return $output; + } + + /*! returns update start string + */ + protected function updates_start() { + $start = '<updates>'; + return $start; + } + + /*! returns update end string + */ + protected function updates_end() { + $start = '</updates>'; + return $start; + } + + /*! checks if action version given by client is deprecated + @param action + DataAction object + */ + public function check_collision($action) { + $version = $this->sql->escape($this->request->get_version()); + //$user = $this->sql->escape($this->request->get_user()); + $last_version = $this->get_update_max_version(); + if (($last_version > $version)&&($action->get_status() == 'update')) { + $action->error(); + $action->set_status('collision'); + } + } +}
\ No newline at end of file diff --git a/codebase/Data/GridDataProcessor.php b/codebase/Data/GridDataProcessor.php new file mode 100644 index 0000000..9b487eb --- /dev/null +++ b/codebase/Data/GridDataProcessor.php @@ -0,0 +1,23 @@ +<?php +namespace DHTMLX\Connector\Data; + +/*! DataProcessor class for Grid component +**/ +class GridDataProcessor extends DataProcessor{ + + /*! convert incoming data name to valid db name + converts c0..cN to valid field names + @param data + data name from incoming request + @return + related db_name + */ + function name_data($data){ + if ($data == "gr_id") return $this->config->id["name"]; + $parts=explode("c",$data); + if ($parts[0]=="" && ((string)intval($parts[1]))==$parts[1]) + if (sizeof($this->config->text)>intval($parts[1])) + return $this->config->text[intval($parts[1])]["name"]; + return $data; + } +}
\ No newline at end of file diff --git a/codebase/Data/TreeDataItem.php b/codebase/Data/TreeDataItem.php new file mode 100644 index 0000000..561d495 --- /dev/null +++ b/codebase/Data/TreeDataItem.php @@ -0,0 +1,157 @@ +<?php + +namespace DHTMLX\Connector\Data; + +class TreeDataItem extends DataItem +{ + private $im0;//!< image of closed folder + private $im1;//!< image of opened folder + private $im2;//!< image of leaf item + private $check;//!< checked state + private $kids = -1;//!< checked state + private $attrs;//!< collection of custom attributes + + function __construct($data, $config, $index) + { + parent::__construct($data, $config, $index); + + $this->im0 = false; + $this->im1 = false; + $this->im2 = false; + $this->check = false; + $this->attrs = array(); + } + + /*! get id of parent record + + @return + id of parent record + */ + function get_parent_id() + { + return $this->data[$this->config->relation_id["name"]]; + } + + /*! get state of items checkbox + + @return + state of item's checkbox as int value, false if state was not defined + */ + function get_check_state() + { + return $this->check; + } + + /*! set state of item's checkbox + + @param value + int value, 1 - checked, 0 - unchecked, -1 - third state + */ + function set_check_state($value) + { + $this->check = $value; + } + + /*! return count of child items + -1 if there is no info about childs + @return + count of child items + */ + function has_kids() + { + return $this->kids; + } + + /*! sets count of child items + @param value + count of child items + */ + function set_kids($value) + { + $this->kids = $value; + } + + /*! set custom attribute + + @param name + name of the attribute + @param value + new value of the attribute + */ + function set_attribute($name, $value) + { + switch ($name) { + case "id": + $this->set_id($value); + break; + case "text": + $this->data[$this->config->text[0]["name"]] = $value; + break; + case "checked": + $this->set_check_state($value); + break; + case "im0": + $this->im0 = $value; + break; + case "im1": + $this->im1 = $value; + break; + case "im2": + $this->im2 = $value; + break; + case "child": + $this->set_kids($value); + break; + default: + $this->attrs[$name] = $value; + } + } + + + /*! assign image for tree's item + + @param img_folder_closed + image for item, which represents folder in closed state + @param img_folder_open + image for item, which represents folder in opened state, optional + @param img_leaf + image for item, which represents leaf item, optional + */ + function set_image($img_folder_closed, $img_folder_open = false, $img_leaf = false) + { + $this->im0 = $img_folder_closed; + $this->im1 = $img_folder_open ? $img_folder_open : $img_folder_closed; + $this->im2 = $img_leaf ? $img_leaf : $img_folder_closed; + } + + /*! return self as XML string, starting part + */ + function to_xml_start() + { + if ($this->skip) return ""; + + $str1 = "<item id='" . $this->get_id() . "' text='" . $this->xmlentities($this->data[$this->config->text[0]["name"]]) . "' "; + if ($this->has_kids() == true) $str1 .= "child='" . $this->has_kids() . "' "; + if ($this->im0) $str1 .= "im0='" . $this->im0 . "' "; + if ($this->im1) $str1 .= "im1='" . $this->im1 . "' "; + if ($this->im2) $str1 .= "im2='" . $this->im2 . "' "; + if ($this->check) $str1 .= "checked='" . $this->check . "' "; + foreach ($this->attrs as $key => $value) + $str1 .= $key . "='" . $this->xmlentities($value) . "' "; + $str1 .= ">"; + if ($this->userdata !== false) + foreach ($this->userdata as $key => $value) + $str1 .= "<userdata name='" . $key . "'><![CDATA[" . $value . "]]></userdata>"; + + return $str1; + } + + /*! return self as XML string, ending part + */ + function to_xml_end() + { + if ($this->skip) return ""; + return "</item>"; + } + +}
\ No newline at end of file diff --git a/codebase/Data/TreeDataProcessor.php b/codebase/Data/TreeDataProcessor.php new file mode 100644 index 0000000..dca6a8f --- /dev/null +++ b/codebase/Data/TreeDataProcessor.php @@ -0,0 +1,25 @@ +<?php +namespace DHTMLX\Connector\Data; + +class TreeDataProcessor extends DataProcessor{ + + function __construct($connector,$config,$request){ + parent::__construct($connector,$config,$request); + $request->set_relation(false); + } + + /*! convert incoming data name to valid db name + converts c0..cN to valid field names + @param data + data name from incoming request + @return + related db_name + */ + function name_data($data){ + if ($data=="tr_pid") + return $this->config->relation_id["db_name"]; + if ($data=="tr_text") + return $this->config->text[0]["db_name"]; + return $data; + } +}
\ No newline at end of file diff --git a/codebase/DataStorage/ArrayDBDataWrapper.php b/codebase/DataStorage/ArrayDBDataWrapper.php new file mode 100644 index 0000000..a806161 --- /dev/null +++ b/codebase/DataStorage/ArrayDBDataWrapper.php @@ -0,0 +1,50 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; + +class ArrayDBDataWrapper extends DBDataWrapper +{ + public function get_next($res) + { + if ($res->index < sizeof($res->data)) + return $res->data[$res->index++]; + } + + public function select($sql) + { + if ($this->config->relation_id["db_name"] == "") { + if ($sql->get_relation() == "0" || $sql->get_relation() == "") { + return new ArrayQueryWrapper($this->connection); + } else { + return new ArrayQueryWrapper(array()); + } + } + + $relation_id = $this->config->relation_id["db_name"]; + + for ($i = 0; $i < count($this->connection); $i++) { + $item = $this->connection[$i]; + if (!isset($item[$relation_id])) continue; + if ($item[$relation_id] == $sql->get_relation()) + $result[] = $item; + + } + + return new ArrayQueryWrapper($result); + } + + public function query($sql) + { + throw new Exception("Not implemented"); + } + + public function escape($value) + { + throw new Exception("Not implemented"); + } + + public function get_new_id() + { + throw new Exception("Not implemented"); + } +}
\ No newline at end of file diff --git a/codebase/DataStorage/ArrayQueryWrapper.php b/codebase/DataStorage/ArrayQueryWrapper.php new file mode 100644 index 0000000..c922bd8 --- /dev/null +++ b/codebase/DataStorage/ArrayQueryWrapper.php @@ -0,0 +1,9 @@ +<?php +namespace DHTMLX\Connector\DataStorage; + +class ArrayQueryWrapper{ + public function __construct($data){ + $this->data = $data; + $this->index = 0; + } +}
\ No newline at end of file diff --git a/codebase/DataStorage/DBDataWrapper.php b/codebase/DataStorage/DBDataWrapper.php new file mode 100644 index 0000000..1311866 --- /dev/null +++ b/codebase/DataStorage/DBDataWrapper.php @@ -0,0 +1,456 @@ +<?php +/** + * Created by PhpStorm. + * User: user + * Date: 26.3.15 + * Time: 15.50 + */ + +namespace DHTMLX\Connector\DataStorage; + +abstract class DBDataWrapper extends DataWrapper +{ + private $transaction = false; //!< type of transaction + private $sequence = false;//!< sequence name + private $sqls = array();//!< predefined sql actions + + + /*! assign named sql query + @param name + name of sql query + @param data + sql query text + */ + public function attach($name, $data) + { + $name = strtolower($name); + $this->sqls[$name] = $data; + } + + /*! replace vars in sql string with actual values + + @param matches + array of field name matches + @return + value for the var name + */ + public function get_sql_callback($matches) + { + return $this->escape($this->temp->get_value($matches[1])); + } + + public function get_sql($name, $data) + { + $name = strtolower($name); + if (!array_key_exists($name, $this->sqls)) return ""; + + + $str = $this->sqls[$name]; + $this->temp = $data; //dirty + $str = preg_replace_callback('|\{([^}]+)\}|', array($this, "get_sql_callback"), $str); + unset ($this->temp); //dirty + return $str; + } + + public function new_record_order($action, $source) + { + $order = $source->get_order(); + if ($order) { + $table = $source->get_source(); + $id = $this->config->id["db_name"]; + $idvalue = $action->get_new_id(); + + $max = $this->queryOne("SELECT MAX($order) as dhx_maxvalue FROM $table"); + $dhx_maxvalue = $max["dhx_maxvalue"] + 1; + + $this->query("UPDATE $table SET $order = $dhx_maxvalue WHERE $id = $idvalue"); + } + } + + public function order($data, $source) + { + //id of moved item + $id1 = $this->escape($data->get_value("id")); + //id of target item + $target = $data->get_value("target"); + if (strpos($target, "next:") !== false) { + $dropnext = true; + $id2 = str_replace("next:", "", $target); + } else { + $id2 = $target; + } + $id2 = $this->escape($id2); + + + //for tree like components we need to limit out queries to the affected branch only + $relation_select = $relation_update = $relation_sql_out = $relation_sql = ""; + if ($this->config->relation_id["name"]) { + $relation = $data->get_value($this->config->relation_id["name"]); + if ($relation !== false && $relation !== "") { + $relation_sql = " " . $this->config->relation_id["db_name"] . " = '" . $this->escape($relation) . "' AND "; + $relation_select = $this->config->relation_id["db_name"] . " as dhx_parent, "; + $relation_update = " " . $this->config->relation_id["db_name"] . " = '" . $this->escape($relation) . "', "; + } + } + + + $name = $source->get_order(); + $table = $source->get_source(); + $idkey = $this->config->id["db_name"]; + + $source = $this->queryOne("select $relation_select $name as dhx_index from $table where $idkey = '$id1'"); + $source_index = $source["dhx_index"] ? $source["dhx_index"] : 0; + if ($relation_sql) + $relation_sql_out = " " . $this->config->relation_id["db_name"] . " = '" . $this->escape($source["dhx_parent"]) . "' AND "; + + $this->query("update $table set $name = $name - 1 where $relation_sql_out $name >= $source_index"); + + if ($id2 !== "") { + $target = $this->queryOne("select $name as dhx_index from $table where $idkey = '$id2'"); + $target_index = $target["dhx_index"]; + if (!$target_index) + $target_index = 0; + if ($dropnext) + $target_index += 1; + $this->query("update $table set $name = $name + 1 where $relation_sql $name >= $target_index"); + } else { + $target = $this->queryOne("select max($name) as dhx_index from $table"); + $target_index = ($target["dhx_index"] ? $target["dhx_index"] : 0) + 1; + } + + $this->query("update $table set $relation_update $name = $target_index where $idkey = '$id1'"); + } + + public function insert($data, $source) + { + $sql = $this->insert_query($data, $source); + $this->query($sql); + $data->success($this->get_new_id()); + } + + public function delete($data, $source) + { + $sql = $this->delete_query($data, $source); + $this->query($sql); + $data->success(); + } + + public function update($data, $source) + { + $sql = $this->update_query($data, $source); + $this->query($sql); + $data->success(); + } + + public function select($source) + { + $select = $source->get_fieldset(); + if (!$select) { + $select = $this->config->db_names_list($this); + $select = implode(",", $select); + } + + $where = $this->build_where($source->get_filters(), $source->get_relation()); + $sort = $this->build_order($source->get_sort_by()); + + return $this->query($this->select_query($select, $source->get_source(), $where, $sort, $source->get_start(), $source->get_count())); + } + + public function queryOne($sql) + { + $res = $this->query($sql); + if ($res) + return $this->get_next($res); + return false; + } + + public function get_size($source) + { + $count = new DataRequestConfig($source); + + $count->set_fieldset("COUNT(*) as DHX_COUNT "); + $count->set_sort(null); + $count->set_limit(0, 0); + + $res = $this->select($count); + $data = $this->get_next($res); + if (array_key_exists("DHX_COUNT", $data)) return $data["DHX_COUNT"]; + else return $data["dhx_count"]; //postgresql + } + + public function get_variants($name, $source) + { + $count = new DataRequestConfig($source); + $count->set_fieldset("DISTINCT " . $this->escape_name($name) . " as value"); + $sort = new SortInterface($source); + $count->set_sort(null); + for ($i = 0; $i < count($sort->rules); $i++) { + if ($sort->rules[$i]['name'] == $name) + $count->set_sort($sort->rules[$i]['name'], $sort->rules[$i]['direction']); + } + $count->set_limit(0, 0); + return $this->select($count); + } + + public function sequence($sec) + { + $this->sequence = $sec; + } + + /*! create an sql string for filtering rules + + @param rules + set of filtering rules + @param relation + name of relation id field + @return + sql string with filtering rules + */ + protected function build_where($rules,$relation=false){ + $sql=array(); + for ($i=0; $i < sizeof($rules); $i++) + if (is_string($rules[$i])) + array_push($sql,"(".$rules[$i].")"); + else + if ($rules[$i]["value"]!=""){ + if (!$rules[$i]["operation"]) + array_push($sql,$this->escape_name($rules[$i]["name"])." LIKE '%".$this->escape($rules[$i]["value"])."%'"); + else + array_push($sql,$this->escape_name($rules[$i]["name"])." ".$rules[$i]["operation"]." '".$this->escape($rules[$i]["value"])."'"); + } + + if ($relation !== false && $relation !== ""){ + $relsql = $this->escape_name($this->config->relation_id["db_name"])." = '".$this->escape($relation)."'"; + if ($relation == "0") + $relsql = "( ".$relsql." OR ".$this->escape_name($this->config->relation_id["db_name"])." IS NULL )"; + + array_push($sql,$relsql); + } + return implode(" AND ",$sql); + } + /*! convert sorting rules to sql string + + @param by + set of sorting rules + @return + sql string for set of sorting rules + */ + protected function build_order($by){ + if (!sizeof($by)) return ""; + $out = array(); + for ($i=0; $i < sizeof($by); $i++) + if (is_string($by[$i])) + $out[] = $by[$i]; + else if ($by[$i]["name"]) + $out[]=$this->escape_name($by[$i]["name"])." ".$by[$i]["direction"]; + return implode(",",$out); + } + + /*! generates sql code for select operation + + @param select + list of fields in select + @param from + table name + @param where + list of filtering rules + @param sort + list of sorting rules + @param start + start index of fetching + @param count + count of records to fetch + @return + sql string for select operation + */ + protected function select_query($select,$from,$where,$sort,$start,$count){ + if (!$from) + return $select; + + $sql="SELECT ".$select." FROM ".$from; + if ($where) $sql.=" WHERE ".$where; + if ($sort) $sql.=" ORDER BY ".$sort; + if ($start || $count) $sql.=" LIMIT ".$start.",".$count; + return $sql; + } + /*! generates update sql + + @param data + DataAction object + @param request + DataRequestConfig object + @return + sql string, which updates record with provided data + */ + protected function update_query($data,$request){ + $sql="UPDATE ".$request->get_source()." SET "; + $temp=array(); + for ($i=0; $i < sizeof($this->config->text); $i++) { + $step=$this->config->text[$i]; + + if ($data->get_value($step["name"])===Null) + $step_value ="Null"; + else + $step_value = "'".$this->escape($data->get_value($step["name"]))."'"; + $temp[$i]= $this->escape_name($step["db_name"])."=". $step_value; + } + if ($relation = $this->config->relation_id["db_name"]){ + $temp[]= $this->escape_name($relation)."='".$this->escape($data->get_value($relation))."'"; + } + $sql.=implode(",",$temp)." WHERE ".$this->escape_name($this->config->id["db_name"])."='".$this->escape($data->get_id())."'"; + + //if we have limited set - set constraints + $where=$this->build_where($request->get_filters()); + if ($where) $sql.=" AND (".$where.")"; + + return $sql; + } + + /*! generates delete sql + + @param data + DataAction object + @param request + DataRequestConfig object + @return + sql string, which delete record + */ + protected function delete_query($data,$request){ + $sql="DELETE FROM ".$request->get_source(); + $sql.=" WHERE ".$this->escape_name($this->config->id["db_name"])."='".$this->escape($data->get_id())."'"; + + //if we have limited set - set constraints + $where=$this->build_where($request->get_filters()); + if ($where) $sql.=" AND (".$where.")"; + + return $sql; + } + + /*! generates insert sql + + @param data + DataAction object + @param request + DataRequestConfig object + @return + sql string, which inserts new record with provided data + */ + protected function insert_query($data,$request){ + $temp_n=array(); + $temp_v=array(); + foreach($this->config->text as $k => $v){ + $temp_n[$k]=$this->escape_name($v["db_name"]); + if ($data->get_value($v["name"])===Null) + $temp_v[$k]="Null"; + else + $temp_v[$k]="'".$this->escape($data->get_value($v["name"]))."'"; + } + if ($relation = $this->config->relation_id["db_name"]){ + $temp_n[]=$this->escape_name($relation); + $temp_v[]="'".$this->escape($data->get_value($relation))."'"; + } + if ($this->sequence){ + $temp_n[]=$this->escape_name($this->config->id["db_name"]); + $temp_v[]=$this->sequence; + } + + $sql="INSERT INTO ".$request->get_source()."(".implode(",",$temp_n).") VALUES (".implode(",",$temp_v).")"; + + return $sql; + } + + /*! sets the transaction mode, used by dataprocessor + + @param mode + mode name + */ + public function set_transaction_mode($mode){ + if ($mode!="none" && $mode!="global" && $mode!="record") + throw new Exception("Unknown transaction mode"); + $this->transaction=$mode; + } + /*! returns true if global transaction mode was specified + @return + true if global transaction mode was specified + */ + public function is_global_transaction(){ + return $this->transaction == "global"; + } + /*! returns true if record transaction mode was specified + @return + true if record transaction mode was specified + */ + public function is_record_transaction(){ + return $this->transaction == "record"; + } + + + public function begin_transaction(){ + $this->query("BEGIN"); + } + public function commit_transaction(){ + $this->query("COMMIT"); + } + public function rollback_transaction(){ + $this->query("ROLLBACK"); + } + + /*! exec sql string + + @param sql + sql string + @return + sql result set + */ + abstract public function query($sql); + /*! returns next record from result set + + @param res + sql result set + @return + hash of data + */ + abstract public function get_next($res); + /*! returns new id value, for newly inserted row + @return + new id value, for newly inserted row + */ + abstract public function get_new_id(); + /*! escape data to prevent sql injections + @param data + unescaped data + @return + escaped data + */ + abstract public function escape($data); + + /*! escape field name to prevent sql reserved words conflict + @param data + unescaped data + @return + escaped data + */ + public function escape_name($data){ + return $data; + } + + /*! get list of tables in the database + + @return + array of table names + */ + public function tables_list() { + throw new Exception("Not implemented"); + } + + /*! returns list of fields for the table in question + + @param table + name of table in question + @return + array of field names + */ + public function fields_list($table) { + throw new Exception("Not implemented"); + } +}
\ No newline at end of file diff --git a/codebase/DataStorage/DataConfig.php b/codebase/DataStorage/DataConfig.php new file mode 100644 index 0000000..c10fd2d --- /dev/null +++ b/codebase/DataStorage/DataConfig.php @@ -0,0 +1,227 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; +/*! manager of data configuration +**/ +class DataConfig{ + public $id;////!< name of ID field + public $relation_id;//!< name or relation ID field + public $text;//!< array of text fields + public $data;//!< array of all known fields , fields which exists only in this collection will not be included in dataprocessor's operations + + + /*! converts self to the string, for logging purposes + **/ + public function __toString(){ + $str="ID:{$this->id['db_name']}(ID:{$this->id['name']})\n"; + $str.="Relation ID:{$this->relation_id['db_name']}({$this->relation_id['name']})\n"; + $str.="Data:"; + for ($i=0; $i<sizeof($this->text); $i++) + $str.="{$this->text[$i]['db_name']}({$this->text[$i]['name']}),"; + + $str.="\nExtra:"; + for ($i=0; $i<sizeof($this->data); $i++) + $str.="{$this->data[$i]['db_name']}({$this->data[$i]['name']}),"; + + return $str; + } + + /*! removes un-used fields from configuration + @param name + name of field , which need to be preserved + */ + public function minimize($name){ + for ($i=0; $i < sizeof($this->text); $i++){ + if ($this->text[$i]["db_name"]==$name || $this->text[$i]["name"]==$name){ + $this->text[$i]["name"]="value"; + $this->data=array($this->text[$i]); + $this->text=array($this->text[$i]); + return; + } + } + throw new Exception("Incorrect dataset minimization, master field not found."); + } + + public function limit_fields($data){ + if (isset($this->full_field_list)) + $this->restore_fields(); + $this->full_field_list = $this->text; + $this->text = array(); + + for ($i=0; $i < sizeof($this->full_field_list); $i++) { + if (array_key_exists($this->full_field_list[$i]["name"],$data)) + $this->text[] = $this->full_field_list[$i]; + } + } + + public function restore_fields(){ + if (isset($this->full_field_list)) + $this->text = $this->full_field_list; + } + + /*! initialize inner state by parsing configuration parameters + + @param id + name of id field + @param fields + name of data field(s) + @param extra + name of extra field(s) + @param relation + name of relation field + + */ + public function init($id,$fields,$extra,$relation){ + $this->id = $this->parse($id,false); + $this->text = $this->parse($fields,true); + $this->data = array_merge($this->text,$this->parse($extra,true)); + $this->relation_id = $this->parse($relation,false); + } + + /*! parse configuration string + + @param key + key string from configuration + @param mode + multi names flag + @return + parsed field name object + */ + private function parse($key,$mode){ + if ($mode){ + if (!$key) return array(); + $key=explode(",",$key); + for ($i=0; $i < sizeof($key); $i++) + $key[$i]=$this->parse($key[$i],false); + return $key; + } + $key=explode("(",$key); + $data=array("db_name"=>trim($key[0]), "name"=>trim($key[0])); + if (sizeof($key)>1) + $data["name"]=substr(trim($key[1]),0,-1); + return $data; + } + + /*! constructor + init public collectons + @param proto + DataConfig object used as prototype for new one, optional + */ + public function __construct($proto=false){ + if ($proto!==false) + $this->copy($proto); + else { + $this->text=array(); + $this->data=array(); + $this->id=array("name"=>"dhx_auto_id", "db_name"=>"dhx_auto_id"); + $this->relation_id=array("name"=>"", "db_name"=>""); + } + } + + /*! copy properties from source object + + @param proto + source object + */ + public function copy($proto){ + $this->id = $proto->id; + $this->relation_id = $proto->relation_id; + $this->text = $proto->text; + $this->data = $proto->data; + } + + /*! returns list of data fields (db_names) + @return + list of data fields ( ready to be used in SQL query ) + */ + public function db_names_list($db){ + $out=array(); + if ($this->id["db_name"]) + array_push($out,$db->escape_name($this->id["db_name"])); + if ($this->relation_id["db_name"]) + array_push($out,$db->escape_name($this->relation_id["db_name"])); + + for ($i=0; $i < sizeof($this->data); $i++){ + if ($this->data[$i]["db_name"]!=$this->data[$i]["name"]) + $out[]=$db->escape_name($this->data[$i]["db_name"])." as ".$this->data[$i]["name"]; + else + $out[]=$db->escape_name($this->data[$i]["db_name"]); + } + + return $out; + } + + /*! add field to dataset config ($text collection) + + added field will be used in all auto-generated queries + @param name + name of field + @param aliase + aliase of field, optional + */ + public function add_field($name,$aliase=false){ + if ($aliase===false) $aliase=$name; + + //adding to list of data-active fields + if ($this->id["db_name"]==$name || $this->relation_id["db_name"] == $name){ + LogMaster::log("Field name already used as ID, be sure that it is really necessary."); + } + if ($this->is_field($name,$this->text)!=-1) + throw new Exception('Data field already registered: '.$name); + array_push($this->text,array("db_name"=>$name,"name"=>$aliase)); + + //adding to list of all fields as well + if ($this->is_field($name,$this->data)==-1) + array_push($this->data,array("db_name"=>$name,"name"=>$aliase)); + + } + + /*! remove field from dataset config ($text collection) + + removed field will be excluded from all auto-generated queries + @param name + name of field, or aliase of field + */ + public function remove_field($name){ + $ind = $this->is_field($name); + if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name); + array_splice($this->text,$ind,1); + //we not deleting field from $data collection, so it will not be included in data operation, but its data still available + } + + /*! remove field from dataset config ($text and $data collections) + + removed field will be excluded from all auto-generated queries + @param name + name of field, or aliase of field + */ + public function remove_field_full($name){ + $ind = $this->is_field($name); + if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name); + array_splice($this->text,$ind,1); + + $ind = $this->is_field($name, $this->data); + if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name); + array_splice($this->data,$ind,1); + } + + /*! check if field is a part of dataset + + @param name + name of field + @param collection + collection, against which check will be done, $text collection by default + @return + returns true if field already a part of dataset, otherwise returns true + */ + public function is_field($name,$collection = false){ + if (!$collection) + $collection=$this->text; + + for ($i=0; $i<sizeof($collection); $i++) + if ($collection[$i]["name"] == $name || $collection[$i]["db_name"] == $name) return $i; + return -1; + } + + +}
\ No newline at end of file diff --git a/codebase/DataStorage/DataRequestConfig.php b/codebase/DataStorage/DataRequestConfig.php new file mode 100644 index 0000000..bb2c750 --- /dev/null +++ b/codebase/DataStorage/DataRequestConfig.php @@ -0,0 +1,284 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; + +/*! manager of data request +**/ +class DataRequestConfig{ + private $filters; //!< array of filtering rules + private $relation=false; //!< ID or other element used for linking hierarchy + private $sort_by; //!< sorting field + private $start; //!< start of requested data + private $count; //!< length of requested data + + private $order = false; + private $user; + private $version; + + //for render_sql + private $source; //!< souce table or another source destination + private $fieldset; //!< set of data, which need to be retrieved from source + + /*! constructor + + @param proto + DataRequestConfig object, optional, if provided then new request object will copy all properties from provided one + */ + public function __construct($proto=false){ + if ($proto) + $this->copy($proto); + else{ + $start=0; + $this->filters=array(); + $this->sort_by=array(); + } + } + + /*! copy parameters of source object into self + + @param proto + source object + */ + public function copy($proto){ + $this->filters =$proto->get_filters(); + $this->sort_by =$proto->get_sort_by(); + $this->count =$proto->get_count(); + $this->start =$proto->get_start(); + $this->source =$proto->get_source(); + $this->fieldset =$proto->get_fieldset(); + $this->relation =$proto->get_relation(); + $this->user = $proto->user; + $this->version = $proto->version; + } + + /*! convert self to string ( for logs ) + @return + self as plain string, + */ + public function __toString(){ + $str="Source:{$this->source}\nFieldset:{$this->fieldset}\nWhere:"; + for ($i=0; $i < sizeof($this->filters); $i++) + $str.=$this->filters[$i]["name"]." ".$this->filters[$i]["operation"]." ".$this->filters[$i]["value"].";"; + $str.="\nStart:{$this->start}\nCount:{$this->count}\n"; + for ($i=0; $i < sizeof($this->sort_by); $i++) + $str.=$this->sort_by[$i]["name"]."=".$this->sort_by[$i]["direction"].";"; + $str.="\nRelation:{$this->relation}"; + return $str; + } + + /*! returns set of filtering rules + @return + set of filtering rules + */ + public function get_filters(){ + return $this->filters; + } + public function &get_filters_ref(){ + return $this->filters; + } + public function set_filters($data){ + $this->filters=$data; + } + + + public function get_order(){ + return $this->order; + } + public function set_order($order){ + $this->order = $order; + } + public function get_user(){ + return $this->user; + } + public function set_user($user){ + $this->user = $user; + } + public function get_version(){ + return $this->version; + } + public function set_version($version){ + $this->version = $version; + } + + /*! returns list of used fields + @return + list of used fields + */ + public function get_fieldset(){ + return $this->fieldset; + } + /*! returns name of source table + @return + name of source table + */ + public function get_source(){ + return $this->source; + } + /*! returns set of sorting rules + @return + set of sorting rules + */ + public function get_sort_by(){ + return $this->sort_by; + } + public function &get_sort_by_ref(){ + return $this->sort_by; + } + public function set_sort_by($data){ + $this->sort_by=$data; + } + + /*! returns start index + @return + start index + */ + public function get_start(){ + return $this->start; + } + /*! returns count of requested records + @return + count of requested records + */ + public function get_count(){ + return $this->count; + } + /*! returns name of relation id + @return + relation id name + */ + public function get_relation(){ + return $this->relation; + } + + /*! sets sorting rule + + @param field + name of column + @param order + direction of sorting + */ + public function set_sort($field,$order=false){ + if (!$field && !$order) + $this->sort_by=array(); + else{ + if ($order===false) + $this->sort_by[] = $field; + else { + $order=strtolower($order)=="asc"?"ASC":"DESC"; + $this->sort_by[]=array("name"=>$field,"direction" => $order); + } + } + } + /*! sets filtering rule + + @param field + name of column + @param value + value for filtering + @param operation + operation for filtering, optional , LIKE by default + */ + public function set_filter($field,$value=false,$operation=false){ + if ($value === false) + array_push($this->filters,$field); + else + array_push($this->filters,array("name"=>$field,"value"=>$value,"operation"=>$operation)); + } + + /*! sets list of used fields + + @param value + list of used fields + */ + public function set_fieldset($value){ + $this->fieldset=$value; + } + /*! sets name of source table + + @param value + name of source table + */ + public function set_source($value){ + if (is_string($value)) + $value = trim($value); + $this->source = $value; + if (!$this->source) throw new Exception("Source of data can't be empty"); + } + /*! sets data limits + + @param start + start index + @param count + requested count of data + */ + public function set_limit($start,$count){ + $this->start=$start; + $this->count=$count; + } + /*! sets name of relation id + + @param value + name of relation id field + */ + public function set_relation($value){ + $this->relation=$value; + } + /*! parse incoming sql, to fill other properties + + @param sql + incoming sql string + */ + public function parse_sql($sql, $as_is = false){ + if ($as_is){ + $this->fieldset = $sql; + return; + } + + $sql= preg_replace("/[ \n\t]+limit[\n\t ,0-9]*$/i","",$sql); + + $data = preg_split("/[ \n\t]+\\_from\\_/i",$sql,2); + if (count($data)!=2) + $data = preg_split("/[ \n\t]+from/i",$sql,2); + $this->fieldset = preg_replace("/^[\s]*select/i","",$data[0],1); + + //Ignore next type of calls + //direct call to stored procedure without FROM + if ((count($data) == 1) || + //UNION select + preg_match("#[ \n\r\t]union[ \n\t\r]#i", $sql)){ + $this->fieldset = $sql; + return; + } + + $table_data = preg_split("/[ \n\t]+where/i",$data[1],2); + /* + if sql code contains group_by we will place all sql query in the FROM + it will not allow to use any filtering against the query + still it is better than just generate incorrect sql commands for any group by query + */ + if (sizeof($table_data)>1 && !preg_match("#.*group by.*#i",$table_data[1])){ //where construction exists + $this->set_source($table_data[0]); + $where_data = preg_split("/[ \n\t]+order[ ]+by/i",$table_data[1],2); + $this->filters[]=$where_data[0]; + if (sizeof($where_data)==1) return; //end of line detected + $data=$where_data[1]; + } else { + $table_data = preg_split("/[ \n\t]+order[ ]+by/i",$data[1],2); + $this->set_source($table_data[0]); + if (sizeof($table_data)==1) return; //end of line detected + $data=$table_data[1]; + } + + if (trim($data)){ //order by construction exists + $s_data = preg_split("/\\,/",trim($data)); + for ($i=0; $i < count($s_data); $i++) { + $data=preg_split("/[ ]+/",trim($s_data[$i]),2); + if (sizeof($data)>1) + $this->set_sort($data[0],$data[1]); + else + $this->set_sort($data[0]); + } + + } + } +}
\ No newline at end of file diff --git a/codebase/DataStorage/DataWrapper.php b/codebase/DataStorage/DataWrapper.php new file mode 100644 index 0000000..19158cc --- /dev/null +++ b/codebase/DataStorage/DataWrapper.php @@ -0,0 +1,100 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; +/*! Base abstraction class, used for data operations + Class abstract access to data, it is a base class to all DB wrappers +**/ +abstract class DataWrapper{ + protected $connection; + protected $config;//!< DataConfig instance + /*! constructor + @param connection + DB connection + @param config + DataConfig instance + */ + public function __construct($connection = false,$config = false){ + $this->config=$config; + $this->connection=$connection; + } + + /*! insert record in storage + + @param data + DataAction object + @param source + DataRequestConfig object + */ + abstract function insert($data,$source); + + /*! delete record from storage + + @param data + DataAction object + @param source + DataRequestConfig object + */ + abstract function delete($data,$source); + + /*! update record in storage + + @param data + DataAction object + @param source + DataRequestConfig object + */ + abstract function update($data,$source); + + /*! select record from storage + + @param source + DataRequestConfig object + */ + abstract function select($source); + + /*! get size of storage + + @param source + DataRequestConfig object + */ + abstract function get_size($source); + + /*! get all variations of field in storage + + @param name + name of field + @param source + DataRequestConfig object + */ + abstract function get_variants($name,$source); + + /*! checks if there is a custom sql string for specified db operation + + @param name + name of DB operation + @param data + hash of data + @return + sql string + */ + public function get_sql($name,$data){ + return ""; //custom sql not supported by default + } + + /*! begins DB transaction + */ + public function begin_transaction(){ + throw new Exception("Data wrapper not supports transactions."); + } + /*! commits DB transaction + */ + public function commit_transaction(){ + throw new Exception("Data wrapper not supports transactions."); + } + /*! rollbacks DB transaction + */ + public function rollback_transaction(){ + throw new Exception("Data wrapper not supports transactions."); + } +} + diff --git a/codebase/DataStorage/MsSQLDBDataWrapper.php b/codebase/DataStorage/MsSQLDBDataWrapper.php new file mode 100644 index 0000000..1d245b2 --- /dev/null +++ b/codebase/DataStorage/MsSQLDBDataWrapper.php @@ -0,0 +1,78 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; + +use DHTMLX\Connector\Tools\LogMaster; + +class MsSQLDBDataWrapper extends DBDataWrapper +{ + private $last_id = ""; //!< ID of previously inserted record + private $insert_operation = false; //!< flag of insert operation + private $start_from = false; //!< index of start position + + public function query($sql) + { + LogMaster::log($sql); + $res = mssql_query($sql, $this->connection); + if ($this->insert_operation) { + $last = mssql_fetch_assoc($res); + $this->last_id = $last["dhx_id"]; + mssql_free_result($res); + } + if ($this->start_from) + mssql_data_seek($res, $this->start_from); + return $res; + } + + public function get_next($res) + { + return mssql_fetch_assoc($res); + } + + public function get_new_id() + { + /* + MSSQL doesn't support identity or auto-increment fields + Insert SQL returns new ID value, which stored in last_id field + */ + return $this->last_id; + } + + protected function insert_query($data, $request) + { + $sql = parent::insert_query($data, $request); + $this->insert_operation = true; + return $sql . ";SELECT @@IDENTITY AS dhx_id"; + } + + protected function select_query($select, $from, $where, $sort, $start, $count) + { + if (!$from) + return $select; + + $sql = "SELECT "; + if ($count) + $sql .= " TOP " . ($count + $start); + $sql .= " " . $select . " FROM " . $from; + if ($where) $sql .= " WHERE " . $where; + if ($sort) $sql .= " ORDER BY " . $sort; + if ($start && $count) + $this->start_from = $start; + else + $this->start_from = false; + return $sql; + } + + public function escape($data) + { + /* + there is no special escaping method for mssql - use common logic + */ + return str_replace("'", "''", $data); + } + + public function begin_transaction() + { + $this->query("BEGIN TRAN"); + } +}
\ No newline at end of file diff --git a/codebase/DataStorage/MySQLDBDataWrapper.php b/codebase/DataStorage/MySQLDBDataWrapper.php new file mode 100644 index 0000000..3f13492 --- /dev/null +++ b/codebase/DataStorage/MySQLDBDataWrapper.php @@ -0,0 +1,69 @@ +<?php +namespace DHTMLX\Connector\DataStorage; + + +/*! Implementation of DataWrapper for MySQL +**/ +class MySQLDBDataWrapper extends DBDataWrapper{ + protected $last_result; + public function query($sql){ + LogMaster::log($sql); + $res=mysql_query($sql,$this->connection); + if ($res===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); + $this->last_result = $res; + return $res; + } + + public function get_next($res){ + if (!$res) + $res = $this->last_result; + + return mysql_fetch_assoc($res); + } + + public function get_new_id(){ + return mysql_insert_id($this->connection); + } + + public function escape($data){ + return mysql_real_escape_string($data, $this->connection); + } + + public function tables_list() { + $result = mysql_query("SHOW TABLES"); + if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); + + $tables = array(); + while ($table = mysql_fetch_array($result)) { + $tables[] = $table[0]; + } + return $tables; + } + + public function fields_list($table) { + $result = mysql_query("SHOW COLUMNS FROM `".$table."`"); + if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); + + $fields = array(); + $id = ""; + while ($field = mysql_fetch_assoc($result)) { + if ($field['Key'] == "PRI") + $id = $field["Field"]; + else + $fields[] = $field["Field"]; + } + return array("fields" => $fields, "key" => $id ); + } + + /*! escape field name to prevent sql reserved words conflict + @param data + unescaped data + @return + escaped data + */ + public function escape_name($data){ + if ((strpos($data,"`")!==false || is_int($data)) || (strpos($data,".")!==false)) + return $data; + return '`'.$data.'`'; + } +}
\ No newline at end of file diff --git a/codebase/db_pdo.php b/codebase/DataStorage/PDODBDataWrapper.php index 1417462..5a08e57 100644 --- a/codebase/db_pdo.php +++ b/codebase/DataStorage/PDODBDataWrapper.php @@ -1,32 +1,30 @@ <?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); + +namespace DHTMLX\Connector\DataStorage; + /*! Implementation of DataWrapper for PDO if you plan to use it for Oracle - use Oracle connection type instead **/ class PDODBDataWrapper extends DBDataWrapper{ private $last_result;//!< store result or last operation - + public function query($sql){ LogMaster::log($sql); - + $res=$this->connection->query($sql); if ($res===false) { $message = $this->connection->errorInfo(); throw new Exception("PDO - sql execution failed\n".$message[2]); } - + return new PDOResultSet($res); } protected function select_query($select,$from,$where,$sort,$start,$count){ if (!$from) return $select; - + $sql="SELECT ".$select." FROM ".$from; if ($where) $sql.=" WHERE ".$where; if ($sort) $sql.=" ORDER BY ".$sort; @@ -38,7 +36,7 @@ class PDODBDataWrapper extends DBDataWrapper{ } return $sql; } - + public function tables_list() { $result = $this->query("SHOW TABLES"); if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); @@ -55,46 +53,30 @@ class PDODBDataWrapper extends DBDataWrapper{ if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); $fields = array(); - $id = ""; + $id = ""; while ($field = $result->next()) { if ($field['Key'] == "PRI") $id = $field["Field"]; - else - $fields[] = $field["Field"]; + else + $fields[] = $field["Field"]; } return array("fields" => $fields, "key" => $id ); } - + public function get_next($res){ $data = $res->next(); return $data; } - + public function get_new_id(){ return $this->connection->lastInsertId(); } - + public function escape($str){ $res=$this->connection->quote($str); if ($res===false) //not supported by pdo driver - return str_replace("'","''",$str); + return str_replace("'","''",$str); return substr($res,1,-1); } - -} -class PDOResultSet{ - private $res; - public function __construct($res){ - $this->res = $res; - } - public function next(){ - $data = $this->res->fetch(PDO::FETCH_ASSOC); - if (!$data){ - $this->res->closeCursor(); - return null; - } - return $data; - } -} -?>
\ No newline at end of file +}
\ No newline at end of file diff --git a/codebase/DataStorage/PDOResultSet.php b/codebase/DataStorage/PDOResultSet.php new file mode 100644 index 0000000..536f75c --- /dev/null +++ b/codebase/DataStorage/PDOResultSet.php @@ -0,0 +1,18 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; + +class PDOResultSet{ + private $res; + public function __construct($res){ + $this->res = $res; + } + public function next(){ + $data = $this->res->fetch(PDO::FETCH_ASSOC); + if (!$data){ + $this->res->closeCursor(); + return null; + } + return $data; + } +}
\ No newline at end of file diff --git a/codebase/db_phpyii.php b/codebase/DataStorage/PHPYii2DBDataWrapper.php index 616d7f3..95af1b7 100644 --- a/codebase/db_phpyii.php +++ b/codebase/DataStorage/PHPYii2DBDataWrapper.php @@ -1,28 +1,25 @@ <?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ +namespace DHTMLX\Connector\DataStorage; -require_once("db_common.php"); +class PHPYii2DBDataWrapper extends ArrayDBDataWrapper { -class PHPYiiDBDataWrapper extends ArrayDBDataWrapper{ public function select($sql){ if (is_array($this->connection)) //result of findAll $res = $this->connection; else - $res = $this->connection->findAll(); + $res = $this->connection->find()->all(); $temp = array(); if (sizeof($res)){ foreach ($res as $obj) $temp[]=$obj->getAttributes(); } + //die(var_dump($temp)); return new ArrayQueryWrapper($temp); } protected function getErrorMessage(){ - $errors = $this->connection->invalidFields(); + $errors = $this->connection->getErrors(); $text = array(); foreach ($errors as $key => $value){ $text[] = $key." - ".$value[0]; @@ -32,11 +29,11 @@ class PHPYiiDBDataWrapper extends ArrayDBDataWrapper{ public function insert($data,$source){ $name = get_class($this->connection); $obj = new $name(); - + //die(var_dump($data)); $this->fill_model_and_save($obj, $data); } public function delete($data,$source){ - $obj = $this->connection->findByPk($data->get_id()); + $obj = $this->connection->findOne($data->get_id()); if ($obj->delete()){ $data->success(); $data->set_new_id($obj->getPrimaryKey()); @@ -46,18 +43,22 @@ class PHPYiiDBDataWrapper extends ArrayDBDataWrapper{ } } public function update($data,$source){ - $obj = $this->connection->findByPk($data->get_id()); + //$obj = get_class($this->connection); + //$obj->setAttribute($obj->getPrimaryKey); + + $obj = $this->connection->findOne($data->get_id()); +; $this->fill_model_and_save($obj, $data); - } + } protected function fill_model_and_save($obj, $data){ - $values = $data->get_data(); //map data to model object for ($i=0; $i < sizeof($this->config->text); $i++){ $step=$this->config->text[$i]; - $obj->setAttribute($step["name"], $data->get_value($step["name"])); + $obj->setAttribute($step["name"], $data->get_value("c".$i)); //TODO make array with corresponding names } + if ($relation = $this->config->relation_id["db_name"]) $obj->setAttribute($relation, $data->get_value($relation)); @@ -86,6 +87,5 @@ class PHPYiiDBDataWrapper extends ArrayDBDataWrapper{ public function get_new_id(){ throw new Exception("Not implemented"); } -} -?>
\ No newline at end of file +}
\ No newline at end of file diff --git a/codebase/DataStorage/PostgreDBDataWrapper.php b/codebase/DataStorage/PostgreDBDataWrapper.php new file mode 100644 index 0000000..56eaa48 --- /dev/null +++ b/codebase/DataStorage/PostgreDBDataWrapper.php @@ -0,0 +1,70 @@ +<?php + +namespace DHTMLX\Connector\DataStorage; + +use DHTMLX\Connector\Tools\LogMaster; + +class PostgreDBDataWrapper extends DBDataWrapper{ + public function query($sql){ + LogMaster::log($sql); + + $res=pg_query($this->connection,$sql); + if ($res===false) throw new \Exception("Postgre - sql execution failed\n".pg_last_error($this->connection)); + + return $res; + } + + protected function select_query($select,$from,$where,$sort,$start,$count){ + if (!$from) + return $select; + + $sql="SELECT ".$select." FROM ".$from; + if ($where) $sql.=" WHERE ".$where; + if ($sort) $sql.=" ORDER BY ".$sort; + if ($start || $count) + $sql.=" OFFSET ".$start." LIMIT ".$count; + return $sql; + } + + public function get_next($res){ + return pg_fetch_assoc($res); + } + + public function get_new_id(){ + $res = pg_query( $this->connection, "SELECT LASTVAL() AS seq"); + $data = pg_fetch_assoc($res); + pg_free_result($res); + return $data['seq']; + } + + public function escape($data){ + //need to use oci_bind_by_name + return pg_escape_string($this->connection,$data); + } + + public function tables_list() { + $sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"; + $res = pg_query($this->connection, $sql); + $tables = array(); + while ($table = pg_fetch_assoc($res)) { + $tables[] = $table['table_name']; + } + return $tables; + } + + public function fields_list($table) { + $sql = "SELECT * FROM information_schema.constraint_column_usage"; + $result = pg_query($this->connection, $sql); + $field = pg_fetch_assoc($result); + $id = $field['column_name']; + + $sql = "SELECT * FROM information_schema.columns WHERE table_name ='".$table."';"; + $result = pg_query($this->connection, $sql); + $fields = array(); + $id = ""; + while ($field = pg_fetch_assoc($result)) { + $fields[] = $field["column_name"]; + } + return array('fields' => $fields, 'key' => $id ); + } +}
\ No newline at end of file diff --git a/codebase/DistinctOptionsConnector.php b/codebase/DistinctOptionsConnector.php new file mode 100644 index 0000000..273ec6b --- /dev/null +++ b/codebase/DistinctOptionsConnector.php @@ -0,0 +1,18 @@ +<?php +namespace DHTMLX\Connector; + +class DistinctOptionsConnector extends OptionsConnector{ + /*! render self + process commands, return data as XML, not output data to stdout, ignore parameters in incoming request + @return + data as XML string + */ + public function render(){ + if (!$this->init_flag){ + $this->init_flag=true; + return ""; + } + $res = $this->sql->get_variants($this->config->text[0]["db_name"],$this->request); + return $this->render_set($res); + } +}
\ No newline at end of file diff --git a/codebase/Event/EventInterface.php b/codebase/Event/EventInterface.php new file mode 100644 index 0000000..645d89b --- /dev/null +++ b/codebase/Event/EventInterface.php @@ -0,0 +1,37 @@ +<?php +namespace DHTMLX\Connector\Event; + +class EventInterface{ + protected $request; ////!< DataRequestConfig instance + public $rules=array(); //!< array of sorting rules + + /*! constructor + creates a new interface based on existing request + @param request + DataRequestConfig object + */ + public function __construct($request){ + $this->request = $request; + } + + /*! remove all elements from collection + */ + public function clear(){ + array_splice($rules,0); + } + /*! get index by name + + @param name + name of field + @return + index of named field + */ + public function index($name){ + $len = sizeof($this->rules); + for ($i=0; $i < $len; $i++) { + if ($this->rules[$i]["name"]==$name) + return $i; + } + return false; + } +} diff --git a/codebase/Event/FilterInterface.php b/codebase/Event/FilterInterface.php new file mode 100644 index 0000000..e37489d --- /dev/null +++ b/codebase/Event/FilterInterface.php @@ -0,0 +1,32 @@ +<?php + +namespace DHTMLX\Connector\Event; + +/*! Wrapper for collection of filtering rules +**/ +class FilterInterface extends EventInterface{ + /*! constructor + creates a new interface based on existing request + @param request + DataRequestConfig object + */ + public function __construct($request){ + $this->request = $request; + $this->rules = &$request->get_filters_ref(); + } + /*! add new filatering rule + + @param name + name of field + @param value + value to filter by + @param rule + filtering rule + */ + public function add($name,$value,$rule){ + $this->request->set_filter($name,$value,$rule); + } + public function store(){ + $this->request->set_filters($this->rules); + } +}
\ No newline at end of file diff --git a/codebase/Event/SortInterface.php b/codebase/Event/SortInterface.php new file mode 100644 index 0000000..5e6aef4 --- /dev/null +++ b/codebase/Event/SortInterface.php @@ -0,0 +1,31 @@ +<?php + +namespace DHTMLX\Connector\Event; + +class SortInterface extends EventInterface{ + /*! constructor + creates a new interface based on existing request + @param request + DataRequestConfig object + */ + public function __construct($request){ + parent::__construct($request); + $this->rules = &$request->get_sort_by_ref(); + } + /*! add new sorting rule + + @param name + name of field + @param dir + direction of sorting + */ + public function add($name,$dir){ + if ($dir === false) + $this->request->set_sort($name); + else + $this->request->set_sort($name,$dir); + } + public function store(){ + $this->request->set_sort_by($this->rules); + } +}
\ No newline at end of file diff --git a/codebase/GridConfiguration.php b/codebase/GridConfiguration.php new file mode 100644 index 0000000..d67a0b6 --- /dev/null +++ b/codebase/GridConfiguration.php @@ -0,0 +1,445 @@ +<?php +namespace DHTMLX\Connector; + +class GridConfiguration +{ + + /*! attaching header functionality + */ + protected $headerDelimiter = ','; + protected $headerNames = false; + protected $headerAttaches = array(); + protected $footerAttaches = array(); + protected $headerWidthsUnits = 'px'; + + protected $headerIds = false; + protected $headerWidths = false; + protected $headerTypes = false; + protected $headerAlign = false; + protected $headerVAlign = false; + protected $headerSorts = false; + protected $headerColors = false; + protected $headerHidden = false; + protected $headerFormat = false; + + protected $convert_mode = false; + + function __construct($headers = false) + { + if ($headers === false || $headers === true) + $this->headerNames = $headers; + else + $this->setHeader($headers); + } + + /*! brief convert list of parameters to an array + @param param + list of values or array of values + @return array of parameters + */ + private function parse_param_array($param, $check = false, $default = "") + { + if (gettype($param) == 'string') + $param = explode($this->headerDelimiter, $param); + + if ($check) { + for ($i = 0; $i < sizeof($param); $i++) { + if (!array_key_exists($param[$i], $check)) + $param[$i] = $default; + } + } + return $param; + } + + /*! sets delimiter for string arguments in attach header functions (default is ,) + @param headerDelimiter + string delimiter + */ + public function setHeaderDelimiter($headerDelimiter) + { + $this->headerDelimiter = $headerDelimiter; + } + + /*! sets header + @param names + array of names or string of names, delimited by headerDelimiter (default is ,) + */ + public function setHeader($names) + { + if ($names instanceof DataConfig) { + $out = array(); + for ($i = 0; $i < sizeof($names->text); $i++) + $out[] = $names->text[$i]["name"]; + $names = $out; + } + + $this->headerNames = $this->parse_param_array($names); + } + + /*! sets init columns width in pixels + @param wp + array of widths or string of widths, delimited by headerDelimiter (default is ,) + */ + public function setInitWidths($wp) + { + $this->headerWidths = $this->parse_param_array($wp); + $this->headerWidthsUnits = 'px'; + } + + /*! sets init columns width in persents + @param wp + array of widths or string of widths, delimited by headerDelimiter (default is ,) + */ + public function setInitWidthsP($wp) + { + $this->setInitWidths($wp); + $this->headerWidthsUnits = '%'; + } + + /*! sets columns align + @param alStr + array of aligns or string of aligns, delimited by headerDelimiter (default is ,) + */ + public function setColAlign($alStr) + { + $this->headerAlign = $this->parse_param_array($alStr, + array("right" => 1, "left" => 1, "center" => 1, "justify" => 1), + "left"); + } + + /*! sets columns vertical align + @param alStr + array of vertical aligns or string of vertical aligns, delimited by headerDelimiter (default is ,) + */ + public function setColVAlign($alStr) + { + $this->headerVAlign = $this->parse_param_array($alStr, + array("baseline" => 1, "sub" => 1, "super" => 1, "top" => 1, "text-top" => 1, "middle" => 1, "bottom" => 1, "text-bottom" => 1), + "top"); + } + + /*! sets column types + @param typeStr + array of types or string of types, delimited by headerDelimiter (default is ,) + */ + public function setColTypes($typeStr) + { + $this->headerTypes = $this->parse_param_array($typeStr); + } + + /*! sets columns sorting + @param sortStr + array if sortings or string of sortings, delimited by headerDelimiter (default is ,) + */ + public function setColSorting($sortStr) + { + $this->headerSorts = $this->parse_param_array($sortStr); + } + + /*! sets columns colors + @param colorStr + array of colors or string of colors, delimited by headerDelimiter (default is ,) + if (color should not be applied it's value should be null) + */ + public function setColColor($colorStr) + { + $this->headerColors = $this->parse_param_array($colorStr); + } + + /*! sets hidden columns + @param hidStr + array of bool values or string of bool values, delimited by headerDelimiter (default is ,) + */ + public function setColHidden($hidStr) + { + $this->headerHidden = $this->parse_param_array($hidStr); + } + + /*! sets columns id + @param idsStr + array of ids or string of ids, delimited by headerDelimiter (default is ,) + */ + public function setColIds($idsStr) + { + $this->headerIds = $this->parse_param_array($idsStr); + } + + /*! sets number/date format + @param formatArr + array of mask formats for number/dates , delimited by headerDelimiter (default is ,) + */ + public function setColFormat($formatArr) + { + $this->headerFormat = $this->parse_param_array($formatArr); + } + + /*! attaches header + @param values + array of header names or string of header names, delimited by headerDelimiter (default is ,) + @param styles + array of header styles or string of header styles, delimited by headerDelimiter (default is ,) + */ + public function attachHeader($values, $styles = null, $footer = false) + { + $header = array(); + $header['values'] = $this->parse_param_array($values); + if ($styles != null) { + $header['styles'] = $this->parse_param_array($styles); + } else { + $header['styles'] = null; + } + if ($footer) + $this->footerAttaches[] = $header; + else + $this->headerAttaches[] = $header; + } + + /*! attaches footer + @param values + array of footer names or string of footer names, delimited by headerDelimiter (default is ,) + @param styles + array of footer styles or string of footer styles, delimited by headerDelimiter (default is ,) + */ + public function attachFooter($values, $styles = null) + { + $this->attachHeader($values, $styles, true); + } + + private function auto_fill($mode) + { + $headerWidths = array(); + $headerTypes = array(); + $headerSorts = array(); + $headerAttaches = array(); + + for ($i = 0; $i < sizeof($this->headerNames); $i++) { + $headerWidths[] = 100; + $headerTypes[] = "ro"; + $headerSorts[] = "connector"; + $headerAttaches[] = "#connector_text_filter"; + } + if ($this->headerWidths == false) + $this->setInitWidths($headerWidths); + if ($this->headerTypes == false) + $this->setColTypes($headerTypes); + + if ($mode) { + if ($this->headerSorts == false) + $this->setColSorting($headerSorts); + $this->attachHeader($headerAttaches); + } + } + + public function defineOptions($conn) + { + if (!$conn->is_first_call()) return; //render head only for first call + + $config = $conn->get_config(); + $full_header = ($this->headerNames === true); + + if (gettype($this->headerNames) == 'boolean') //auto-config + $this->setHeader($config); + $this->auto_fill($full_header); + + if (isset($_GET["dhx_colls"])) return; + + $fillList = array(); + for ($i = 0; $i < count($this->headerNames); $i++) + if ($this->headerTypes[$i] == "co" || $this->headerTypes[$i] == "coro") + $fillList[$i] = true; + + for ($i = 0; $i < count($this->headerAttaches); $i++) { + for ($j = 0; $j < count($this->headerAttaches[$i]['values']); $j++) { + if ($this->headerAttaches[$i]['values'][$j] == "#connector_select_filter" + || $this->headerAttaches[$i]['values'][$j] == "#select_filter" + ) { + $fillList[$j] = true;; + } + } + } + + $temp = array(); + foreach ($fillList as $k => $v) + $temp[] = $k; + if (count($temp)) + $_GET["dhx_colls"] = implode(",", $temp); + } + + + /*! gets header as array + */ + private function getHeaderArray() + { + $head = Array(); + $head[0] = $this->headerNames; + $head = $this->getAttaches($head, $this->headerAttaches); + return $head; + } + + + /*! get footer as array + */ + private function getFooterArray() + { + $foot = Array(); + $foot = $this->getAttaches($foot, $this->footerAttaches); + return $foot; + } + + + /*! gets array of data with attaches + */ + private function getAttaches($to, $from) + { + for ($i = 0; $i < count($from); $i++) { + $line = $from[$i]['values']; + $to[] = $line; + } + return $to; + } + + + /*! calculates rowspan array according #cspan markers + */ + private function processCspan($data) + { + $rspan = Array(); + for ($i = 0; $i < count($data); $i++) { + $last = 0; + $rspan[$i] = Array(); + for ($j = 0; $j < count($data[$i]); $j++) { + $rspan[$i][$j] = 0; + if ($data[$i][$j] === '#cspan') { + $rspan[$i][$last]++; + } else { + $last = $j; + } + } + } + return $rspan; + } + + + /*! calculates colspan array according #rspan markers + */ + private function processRspan($data) + { + $last = Array(); + $cspan = Array(); + for ($i = 0; $i < count($data); $i++) { + $cspan[$i] = Array(); + for ($j = 0; $j < count($data[$i]); $j++) { + $cspan[$i][$j] = 0; + if (!isset($last[$j])) $last[$j] = 0; + if ($data[$i][$j] === '#rspan') { + $cspan[$last[$j]][$j]++; + } else { + $last[$j] = $i; + } + } + } + return $cspan; + } + + + /*! sets mode of output format: usual mode or convert mode. + * @param mode + * true - convert mode, false - otherwise + */ + public function set_convert_mode($mode) + { + $this->convert_mode = $mode; + } + + + /*! adds header configuration in output XML + */ + public function attachHeaderToXML($conn, $out) + { + if (!$conn->is_first_call()) return; //render head only for first call + + $head = $this->getHeaderArray(); + $foot = $this->getFooterArray(); + $rspan = $this->processRspan($head); + $cspan = $this->processCspan($head); + + $str = '<head>'; + + if ($this->convert_mode) $str .= "<columns>"; + + for ($i = 0; $i < count($this->headerNames); $i++) { + $str .= '<column'; + $str .= ' type="' . $this->headerTypes[$i] . '"'; + $str .= ' width="' . $this->headerWidths[$i] . '"'; + $str .= $this->headerIds ? ' id="' . $this->headerIds[$i] . '"' : ''; + $str .= $this->headerAlign[$i] ? ' align="' . $this->headerAlign[$i] . '"' : ''; + $str .= $this->headerVAlign[$i] ? ' valign="' . $this->headerVAlign[$i] . '"' : ''; + $str .= $this->headerSorts[$i] ? ' sort="' . $this->headerSorts[$i] . '"' : ''; + $str .= $this->headerColors[$i] ? ' color="' . $this->headerColors[$i] . '"' : ''; + $str .= $this->headerHidden[$i] ? ' hidden="' . $this->headerHidden[$i] . '"' : ''; + $str .= $this->headerFormat[$i] ? ' format="' . $this->headerFormat[$i] . '"' : ''; + $str .= $cspan[0][$i] ? ' colspan="' . ($cspan[0][$i] + 1) . '"' : ''; + $str .= $rspan[0][$i] ? ' rowspan="' . ($rspan[0][$i] + 1) . '"' : ''; + $str .= '>' . $this->headerNames[$i] . '</column>'; + } + + if (!$this->convert_mode) { + $str .= '<settings><colwidth>' . $this->headerWidthsUnits . '</colwidth></settings>'; + if ((count($this->headerAttaches) > 0) || (count($this->footerAttaches) > 0)) { + $str .= '<afterInit>'; + } + for ($i = 0; $i < count($this->headerAttaches); $i++) { + $str .= '<call command="attachHeader">'; + $str .= '<param>' . implode(",", $this->headerAttaches[$i]['values']) . '</param>'; + if ($this->headerAttaches[$i]['styles'] != null) { + $str .= '<param>' . implode(",", $this->headerAttaches[$i]['styles']) . '</param>'; + } + $str .= '</call>'; + } + for ($i = 0; $i < count($this->footerAttaches); $i++) { + $str .= '<call command="attachFooter">'; + $str .= '<param>' . implode(",", $this->footerAttaches[$i]['values']) . '</param>'; + if ($this->footerAttaches[$i]['styles'] != null) { + $str .= '<param>' . implode(",", $this->footerAttaches[$i]['styles']) . '</param>'; + } + $str .= '</call>'; + } + if ((count($this->headerAttaches) > 0) || (count($this->footerAttaches) > 0)) { + $str .= '</afterInit>'; + } + } else { + $str .= "</columns>"; + for ($i = 1; $i < count($head); $i++) { + $str .= "<columns>"; + for ($j = 0; $j < count($head[$i]); $j++) { + $str .= '<column'; + $str .= $cspan[$i][$j] ? ' colspan="' . ($cspan[$i][$j] + 1) . '"' : ''; + $str .= $rspan[$i][$j] ? ' rowspan="' . ($rspan[$i][$j] + 1) . '"' : ''; + $str .= '>' . $head[$i][$j] . '</column>'; + } + $str .= "</columns>\n"; + } + } + $str .= '</head>'; + + + if ($this->convert_mode && count($foot) > 0) { + $rspan = $this->processRspan($foot); + $cspan = $this->processCspan($foot); + $str .= "<foot>"; + for ($i = 0; $i < count($foot); $i++) { + $str .= "<columns>"; + for ($j = 0; $j < count($foot[$i]); $j++) { + $str .= '<column'; + $str .= $cspan[$i][$j] ? ' colspan="' . ($cspan[$i][$j] + 1) . '"' : ''; + $str .= $rspan[$i][$j] ? ' rowspan="' . ($rspan[$i][$j] + 1) . '"' : ''; + $str .= '>' . $foot[$i][$j] . '</column>'; + } + $str .= "</columns>\n"; + } + $str .= "</foot>"; + } + + $out->add($str); + } +}
\ No newline at end of file diff --git a/codebase/GridConnector.php b/codebase/GridConnector.php new file mode 100644 index 0000000..1a0e216 --- /dev/null +++ b/codebase/GridConnector.php @@ -0,0 +1,125 @@ +<?php + +namespace DHTMLX\Connector; +/*! Connector for the dhtmlxgrid +**/ +class GridConnector extends Connector{ + + /*! constructor + + Here initilization of all Masters occurs, execution timer initialized + @param res + db connection resource + @param type + string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided + @param item_type + name of class, which will be used for item rendering, optional, DataItem will be used by default + @param data_type + name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. + */ + public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ + if (!$item_type) $item_type="DHTMLX\\Connector\\GridDataItem"; + if (!$data_type) $data_type="DHTMLX\\Connector\\Data\\DataProcessor"; + if (!$render_type) $render_type="DHTMLX\\Connector\\Output\\RenderStrategy"; + parent::__construct($res,$type,$item_type,$data_type,$render_type); + } + + + protected function parse_request(){ + parent::parse_request(); + + if (isset($_GET["dhx_colls"])) + $this->fill_collections($_GET["dhx_colls"]); + } + protected function resolve_parameter($name){ + if (intval($name).""==$name) + return $this->config->text[intval($name)]["db_name"]; + return $name; + } + + /*! replace xml unsafe characters + + @param string + string to be escaped + @return + escaped string + */ + protected function xmlentities($string) { + return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); + } + + /*! assign options collection to the column + + @param name + name of the column + @param options + array or connector object + */ + public function set_options($name,$options){ + if (is_array($options)){ + $str=""; + foreach($options as $k => $v) + $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />"; + $options=$str; + } + $this->options[$name]=$options; + } + /*! generates xml description for options collections + + @param list + comma separated list of column names, for which options need to be generated + */ + protected function fill_collections($list=""){ + $names=explode(",",$list); + for ($i=0; $i < sizeof($names); $i++) { + $name = $this->resolve_parameter($names[$i]); + if (!array_key_exists($name,$this->options)){ + $this->options[$name] = new DistinctOptionsConnector($this->get_connection(),$this->names["db_class"]); + $c = new DataConfig($this->config); + $r = new DataRequestConfig($this->request); + $c->minimize($name); + + $this->options[$name]->render_connector($c,$r); + } + + $this->extra_output.="<coll_options for='{$names[$i]}'>"; + if (!is_string($this->options[$name])) + $this->extra_output.=$this->options[$name]->render(); + else + $this->extra_output.=$this->options[$name]; + $this->extra_output.="</coll_options>"; + } + } + + /*! renders self as xml, starting part + */ + protected function xml_start(){ + $attributes = ""; + foreach($this->attributes as $k=>$v) + $attributes .= " ".$k."='".$v."'"; + + if ($this->dload){ + if ($pos=$this->request->get_start()) + return "<rows pos='".$pos."'".$attributes.">"; + else + return "<rows total_count='".$this->sql->get_size($this->request)."'".$attributes.">"; + } + else + return "<rows".$attributes.">"; + } + + + /*! renders self as xml, ending part + */ + protected function xml_end(){ + return $this->extra_output."</rows>"; + } + + public function set_config($config = false){ + if (gettype($config) == 'boolean') + $config = new GridConfiguration($config); + + $this->event->attach("beforeOutput", Array($config, "attachHeaderToXML")); + $this->event->attach("onInit", Array($config, "defineOptions")); + } +}
\ No newline at end of file diff --git a/codebase/GridDataItem.php b/codebase/GridDataItem.php new file mode 100644 index 0000000..a405f8b --- /dev/null +++ b/codebase/GridDataItem.php @@ -0,0 +1,120 @@ +<?php + +namespace DHTMLX\Connector; + +use DHTMLX\Connector\Data\DataItem; +/*! DataItem class for Grid component +**/ + +class GridDataItem extends DataItem{ + protected $row_attrs;//!< hash of row attributes + protected $cell_attrs;//!< hash of cell attributes + + function __construct($data,$name,$index=0){ + parent::__construct($data,$name,$index); + + $this->row_attrs=array(); + $this->cell_attrs=array(); + } + /*! set color of row + + @param color + color of row + */ + function set_row_color($color){ + $this->row_attrs["bgColor"]=$color; + } + /*! set style of row + + @param color + color of row + */ + function set_row_style($color){ + $this->row_attrs["style"]=$color; + } + /*! assign custom style to the cell + + @param name + name of column + @param value + css style string + */ + function set_cell_style($name,$value){ + $this->set_cell_attribute($name,"style",$value); + } + /*! assign custom class to specific cell + + @param name + name of column + @param value + css class name + */ + function set_cell_class($name,$value){ + $this->set_cell_attribute($name,"class",$value); + } + /*! set custom cell attribute + + @param name + name of column + @param attr + name of attribute + @param value + value of attribute + */ + function set_cell_attribute($name,$attr,$value){ + if (!array_key_exists($name, $this->cell_attrs)) $this->cell_attrs[$name]=array(); + $this->cell_attrs[$name][$attr]=$value; + } + + /*! set custom row attribute + + @param attr + name of attribute + @param value + value of attribute + */ + function set_row_attribute($attr,$value){ + $this->row_attrs[$attr]=$value; + } + + /*! return self as XML string, starting part + */ + public function to_xml_start(){ + if ($this->skip) return ""; + + $str="<row id='".$this->xmlentities($this->get_id())."'"; + foreach ($this->row_attrs as $k=>$v) + $str.=" ".$k."='".$v."'"; + $str.=">"; + for ($i=0; $i < sizeof($this->config->text); $i++){ + $str.="<cell"; + $name=$this->config->text[$i]["name"]; + $xmlcontent = false; + if (isset($this->cell_attrs[$name])){ + $cattrs=$this->cell_attrs[$name]; + foreach ($cattrs as $k => $v){ + $str.=" ".$k."='".$this->xmlentities($v)."'"; + if ($k == "xmlcontent") + $xmlcontent = true; + } + } + $value = isset($this->data[$name]) ? $this->data[$name] : ''; + if (!$xmlcontent) + $str.="><![CDATA[".$value."]]></cell>"; + else + $str.=">".$value."</cell>"; + } + if ($this->userdata !== false) + foreach ($this->userdata as $key => $value) + $str.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>"; + + return $str; + } + /*! return self as XML string, ending part + */ + public function to_xml_end(){ + if ($this->skip) return ""; + + return "</row>"; + } +}
\ No newline at end of file diff --git a/codebase/MixedConnector.php b/codebase/MixedConnector.php new file mode 100644 index 0000000..898bfa9 --- /dev/null +++ b/codebase/MixedConnector.php @@ -0,0 +1,24 @@ +<?php +namespace DHTMLX\Connector; + +use DHTMLX\Connector\Connector; + +class MixedConnector extends Connector { + + protected $connectors = array(); + + public function add($name, $conn) { + $this->connectors[$name] = $conn; + } + + public function render() { + $result = "{"; + $parts = array(); + foreach($this->connectors as $name => $conn) { + $conn->asString(true); + $parts[] = "\"".$name."\":".($conn->render())."\n"; + } + $result .= implode(",\n", $parts)."}"; + echo $result; + } +}
\ No newline at end of file diff --git a/codebase/OptionsConnector.php b/codebase/OptionsConnector.php new file mode 100644 index 0000000..4c0ab16 --- /dev/null +++ b/codebase/OptionsConnector.php @@ -0,0 +1,27 @@ +<?php + +namespace DHTMLX\Connector; + +/*! wrapper around options collection, used for comboboxes and filters +**/ +class OptionsConnector extends Connector{ + protected $init_flag=false;//!< used to prevent rendering while initialization + public function __construct($res,$type=false,$item_type=false,$data_type=false){ + if (!$item_type) $item_type="DataItem"; + if (!$data_type) $data_type=""; //has not sense, options not editable + parent::__construct($res,$type,$item_type,$data_type); + } + /*! render self + process commands, return data as XML, not output data to stdout, ignore parameters in incoming request + @return + data as XML string + */ + public function render(){ + if (!$this->init_flag){ + $this->init_flag=true; + return ""; + } + $res = $this->sql->select($this->request); + return $this->render_set($res); + } +}
\ No newline at end of file diff --git a/codebase/Output/JSONRenderStrategy.php b/codebase/Output/JSONRenderStrategy.php new file mode 100644 index 0000000..ea196e0 --- /dev/null +++ b/codebase/Output/JSONRenderStrategy.php @@ -0,0 +1,30 @@ +<?php +class JSONRenderStrategy extends RenderStrategy { + + /*! render from DB resultset + @param res + DB resultset + process commands, output requested data as json + */ + public function render_set($res, $name, $dload, $sep, $config, $mix){ + $output=array(); + $index=0; + $conn = $this->conn; + $this->mix($config, $mix); + $conn->event->trigger("beforeRenderSet",$conn,$res,$config); + while ($data=$conn->sql->get_next($res)){ + $data = $this->complex_mix($mix, $data); + $data = new $name($data,$config,$index); + if ($data->get_id()===false) + $data->set_id($conn->uuid()); + $conn->event->trigger("beforeRender",$data); + $item = $data->to_xml(); + if ($item !== false) + $output[]=$item; + $index++; + } + $this->unmix($config, $mix); + return $output; + } + +} diff --git a/codebase/Output/JSONTreeRenderStrategy.php b/codebase/Output/JSONTreeRenderStrategy.php new file mode 100644 index 0000000..04a8672 --- /dev/null +++ b/codebase/Output/JSONTreeRenderStrategy.php @@ -0,0 +1,39 @@ +<?php +namespace DHTMLX\Connector\Output; + +class JSONTreeRenderStrategy extends TreeRenderStrategy { + + public function render_set($res, $name, $dload, $sep, $config,$mix){ + $output=array(); + $index=0; + $conn = $this->conn; + $config_copy = new DataConfig($config); + $this->mix($config, $mix); + while ($data=$conn->sql->get_next($res)){ + $data = $this->complex_mix($mix, $data); + $data = new $name($data,$config,$index); + $conn->event->trigger("beforeRender",$data); + //there is no info about child elements, + //if we are using dyn. loading - assume that it has, + //in normal mode just exec sub-render routine + if ($data->has_kids()===-1 && $dload) + $data->set_kids(true); + $record = $data->to_xml_start(); + if ($data->has_kids()===-1 || ( $data->has_kids()==true && !$dload)){ + $sub_request = new DataRequestConfig($conn->get_request()); + //$sub_request->set_fieldset(implode(",",$config_copy->db_names_list($conn->sql))); + $sub_request->set_relation($data->get_id()); + //$sub_request->set_filters(array()); + $temp = $this->render_set($conn->sql->select($sub_request), $name, $dload, $sep, $config_copy, $mix); + if (sizeof($temp)) + $record["data"] = $temp; + } + if ($record !== false) + $output[] = $record; + $index++; + } + $this->unmix($config, $mix); + return $output; + } + +}
\ No newline at end of file diff --git a/codebase/Output/OutputWriter.php b/codebase/Output/OutputWriter.php new file mode 100644 index 0000000..96bb49a --- /dev/null +++ b/codebase/Output/OutputWriter.php @@ -0,0 +1,40 @@ +<?php + +namespace DHTMLX\Connector\Output; + +class OutputWriter{ + private $start; + private $end; + private $type; + + public function __construct($start, $end = ""){ + $this->start = $start; + $this->end = $end; + $this->type = "xml"; + } + public function add($add){ + $this->start.=$add; + } + public function reset(){ + $this->start=""; + $this->end=""; + } + public function set_type($add){ + $this->type=$add; + } + public function output($name="", $inline=true, $encoding=""){ + ob_clean(); + + if ($this->type == "xml"){ + $header = "Content-type: text/xml"; + if ("" != $encoding) + $header.="; charset=".$encoding; + header($header); + } + + echo $this->__toString(); + } + public function __toString(){ + return $this->start.$this->end; + } +}
\ No newline at end of file diff --git a/codebase/Output/RenderStrategy.php b/codebase/Output/RenderStrategy.php new file mode 100644 index 0000000..9431d0d --- /dev/null +++ b/codebase/Output/RenderStrategy.php @@ -0,0 +1,115 @@ +<?php +namespace DHTMLX\Connector\Output; + +use DHTMLX\Connector\Data\DataItem; +use DHTMLX\Connector\GridDataItem; +class RenderStrategy { + + protected $conn = null; + + public function __construct($conn) { + $this->conn = $conn; + } + + /*! adds mix fields into DataConfig + * @param config + * DataConfig object + * @param mix + * mix structure + */ + protected function mix($config, $mix) { + for ($i = 0; $i < count($mix); $i++) { + if ($config->is_field($mix[$i]['name'])===-1) { + $config->add_field($mix[$i]['name']); + } + } + } + + /*! remove mix fields from DataConfig + * @param config + * DataConfig object + * @param mix + * mix structure + */ + protected function unmix($config, $mix) { + for ($i = 0; $i < count($mix); $i++) { + if ($config->is_field($mix[$i]['name'])!==-1) { + $config->remove_field_full($mix[$i]['name']); + } + } + } + + /*! adds mix fields in item + * simple mix adds only strings specified by user + * @param mix + * mix structure + * @param data + * array of selected data + */ + protected function simple_mix($mix, $data) { + // get mix details + for ($i = 0; $i < count($mix); $i++) + $data[$mix[$i]["name"]] = is_object($mix[$i]["value"]) ? "" : $mix[$i]["value"]; + return $data; + } + + /*! adds mix fields in item + * complex mix adds strings specified by user and results of subrequests + * @param mix + * mix structure + * @param data + * array of selected data + */ + protected function complex_mix($mix, $data) { + // get mix details + for ($i = 0; $i < count($mix); $i++) { + $mixname = $mix[$i]["name"]; + if ($mix[$i]['filter'] !== false) { + $subconn = $mix[$i]["value"]; + $filter = $mix[$i]["filter"]; + + // setting relationships + $subconn->clear_filter(); + foreach ($filter as $k => $v) + if (isset($data[$v])) + $subconn->filter($k, $data[$v], "="); + else + throw new Exception('There was no such data field registered as: '.$k); + + $subconn->asString(true); + $data[$mixname]=$subconn->simple_render(); + if (is_array($data[$mixname]) && count($data[$mixname]) == 1) + $data[$mixname] = $data[$mixname][0]; + } else { + $data[$mixname] = $mix[$i]["value"]; + } + } + return $data; + } + + /*! render from DB resultset + @param res + DB resultset + process commands, output requested data as XML + */ + public function render_set($res, $name, $dload, $sep, $config, $mix){ + $output=""; + $index=0; + $conn = $this->conn; + $this->mix($config, $mix); + $conn->event->trigger("beforeRenderSet",$conn,$res,$config); + while ($data=$conn->sql->get_next($res)){ + $data = $this->simple_mix($mix, $data); + + $data = new $name($data,$config,$index); + if ($data->get_id()===false) + $data->set_id($conn->uuid()); + $conn->event->trigger("beforeRender",$data); + $output.=$data->to_xml().$sep; + $index++; + } + $this->unmix($config, $mix); + return $output; + } + +}
\ No newline at end of file diff --git a/codebase/Output/TreeRenderStrategy.php b/codebase/Output/TreeRenderStrategy.php new file mode 100644 index 0000000..d66e58e --- /dev/null +++ b/codebase/Output/TreeRenderStrategy.php @@ -0,0 +1,64 @@ +<?php +namespace DHTMLX\Connector\Output; + +use DHTMLX\Connector\DataStorage\DataConfig; + +class TreeRenderStrategy extends RenderStrategy { + + protected $id_swap = array(); + + public function __construct($conn) { + parent::__construct($conn); + $conn->event->attach("afterInsert",array($this,"parent_id_correction_a")); + $conn->event->attach("beforeProcessing",array($this,"parent_id_correction_b")); + } + + public function render_set($res, $name, $dload, $sep, $config, $mix){ + $output=""; + $index=0; + $conn = $this->conn; + $config_copy = new DataConfig($config); + $this->mix($config, $mix); + while ($data=$conn->sql->get_next($res)){ + $data = $this->simple_mix($mix, $data); + $data = new $name($data,$config,$index); + $conn->event->trigger("beforeRender",$data); + //there is no info about child elements, + //if we are using dyn. loading - assume that it has, + //in normal mode juse exec sub-render routine + if ($data->has_kids()===-1 && $dload) + $data->set_kids(true); + $output.=$data->to_xml_start(); + if ($data->has_kids()===-1 || ( $data->has_kids()==true && !$dload)){ + $sub_request = new DataRequestConfig($conn->get_request()); + //$sub_request->set_fieldset(implode(",",$config_copy->db_names_list($conn->sql))); + $sub_request->set_relation($data->get_id()); + $output.=$this->render_set($conn->sql->select($sub_request), $name, $dload, $sep, $config_copy, $mix); + } + $output.=$data->to_xml_end(); + $index++; + } + $this->unmix($config, $mix); + return $output; + } + + /*! store info about ID changes during insert operation + @param dataAction + data action object during insert operation + */ + public function parent_id_correction_a($dataAction){ + $this->id_swap[$dataAction->get_id()]=$dataAction->get_new_id(); + } + + /*! update ID if it was affected by previous operation + @param dataAction + data action object, before any processing operation + */ + public function parent_id_correction_b($dataAction){ + $relation = $this->conn->get_config()->relation_id["db_name"]; + $value = $dataAction->get_value($relation); + + if (array_key_exists($value,$this->id_swap)) + $dataAction->set_value($relation,$this->id_swap[$value]); + } +}
\ No newline at end of file diff --git a/codebase/Tools/AccessMaster.php b/codebase/Tools/AccessMaster.php new file mode 100644 index 0000000..6c84e20 --- /dev/null +++ b/codebase/Tools/AccessMaster.php @@ -0,0 +1,57 @@ +<?php +namespace DHTMLX\Connector\Tools; +/*! Class which handles access rules. +**/ +class AccessMaster{ + private $rules,$local; + /*! constructor + + Set next access right to "allowed" by default : read, insert, update, delete + Basically - all common data operations allowed by default + */ + function __construct(){ + $this->rules=array("read" => true, "insert" => true, "update" => true, "delete" => true); + $this->local=true; + } + /*! change access rule to "allow" + @param name + name of access right + */ + public function allow($name){ + $this->rules[$name]=true; + } + /*! change access rule to "deny" + + @param name + name of access right + */ + public function deny($name){ + $this->rules[$name]=false; + } + + /*! change all access rules to "deny" + */ + public function deny_all(){ + $this->rules=array(); + } + + /*! check access rule + + @param name + name of access right + @return + true if access rule allowed, false otherwise + */ + public function check($name){ + if ($this->local){ + /*! + todo + add referrer check, to prevent access from remote points + */ + } + if (!isset($this->rules[$name]) || !$this->rules[$name]){ + return false; + } + return true; + } +}
\ No newline at end of file diff --git a/codebase/Tools/EventMaster.php b/codebase/Tools/EventMaster.php new file mode 100644 index 0000000..ec849d8 --- /dev/null +++ b/codebase/Tools/EventMaster.php @@ -0,0 +1,107 @@ +<?php + +namespace DHTMLX\Connector\Tools; +/*! Class which allows to assign|fire events. +*/ +class EventMaster{ + private $events;//!< hash of event handlers + private $master; + private static $eventsStatic=array(); + + /*! constructor + */ + function __construct(){ + $this->events=array(); + $this->master = false; + } + /*! Method check if event with such name already exists. + @param name + name of event, case non-sensitive + @return + true if event with such name registered, false otherwise + */ + public function exist($name){ + $name=strtolower($name); + return (isset($this->events[$name]) && sizeof($this->events[$name])); + } + /*! Attach custom code to event. + + Only on event handler can be attached in the same time. If new event handler attached - old will be detached. + + @param name + name of event, case non-sensitive + @param method + function which will be attached. You can use array(class, method) if you want to attach the method of the class. + */ + public function attach($name,$method=false){ + //use class for event handling + if ($method === false){ + $this->master = $name; + return; + } + //use separate functions + $name=strtolower($name); + if (!array_key_exists($name,$this->events)) + $this->events[$name]=array(); + $this->events[$name][]=$method; + } + + public static function attach_static($name, $method){ + $name=strtolower($name); + if (!array_key_exists($name,EventMaster::$eventsStatic)) + EventMaster::$eventsStatic[$name]=array(); + EventMaster::$eventsStatic[$name][]=$method; + } + + public static function trigger_static($name, $method){ + $arg_list = func_get_args(); + $name=strtolower(array_shift($arg_list)); + + if (isset(EventMaster::$eventsStatic[$name])) + foreach(EventMaster::$eventsStatic[$name] as $method){ + if (is_array($method) && !method_exists($method[0],$method[1])) + throw new Exception("Incorrect method assigned to event: ".$method[0].":".$method[1]); + if (!is_array($method) && !function_exists($method)) + throw new Exception("Incorrect function assigned to event: ".$method); + call_user_func_array($method, $arg_list); + } + return true; + } + + /*! Detach code from event + @param name + name of event, case non-sensitive + */ + public function detach($name){ + $name=strtolower($name); + unset($this->events[$name]); + } + /*! Trigger event. + @param name + name of event, case non-sensitive + @param data + value which will be provided as argument for event function, + you can provide multiple data arguments, method accepts variable number of parameters + @return + true if event handler was not assigned , result of event hangler otherwise + */ + public function trigger($name,$data){ + $arg_list = func_get_args(); + $name=strtolower(array_shift($arg_list)); + + if (isset($this->events[$name])) + foreach($this->events[$name] as $method){ + if (is_array($method) && !method_exists($method[0],$method[1])) + throw new Exception("Incorrect method assigned to event: ".$method[0].":".$method[1]); + if (!is_array($method) && !function_exists($method)) + throw new Exception("Incorrect function assigned to event: ".$method); + call_user_func_array($method, $arg_list); + } + + if ($this->master !== false) + if (method_exists($this->master, $name)) + call_user_func_array(array($this->master, $name), $arg_list); + + return true; + } +}
\ No newline at end of file diff --git a/codebase/Tools/LogMaster.php b/codebase/Tools/LogMaster.php new file mode 100644 index 0000000..c9459cc --- /dev/null +++ b/codebase/Tools/LogMaster.php @@ -0,0 +1,101 @@ +<?php + +namespace DHTMLX\Connector\Tools; +/*! Controls error and debug logging. + Class designed to be used as static object. +**/ +class LogMaster{ + private static $_log=false;//!< logging mode flag + private static $_output=false;//!< output error infor to client flag + private static $session="";//!< all messages generated for current request + + /*! convert array to string representation ( it is a bit more readable than var_dump ) + + @param data + data object + @param pref + prefix string, used for formating, optional + @return + string with array description + */ + private static function log_details($data,$pref=""){ + if (is_array($data)){ + $str=array(""); + foreach($data as $k=>$v) + array_push($str,$pref.$k." => ".LogMaster::log_details($v,$pref."\t")); + return implode("\n",$str); + } + return $data; + } + /*! put record in log + + @param str + string with log info, optional + @param data + data object, which will be added to log, optional + */ + public static function log($str="",$data=""){ + if (LogMaster::$_log){ + $message = $str.LogMaster::log_details($data)."\n\n"; + LogMaster::$session.=$message; + error_log($message,3,LogMaster::$_log); + } + } + + /*! get logs for current request + @return + string, which contains all log messages generated for current request + */ + public static function get_session_log(){ + return LogMaster::$session; + } + + /*! error handler, put normal php errors in log file + + @param errn + error number + @param errstr + error description + @param file + error file + @param line + error line + @param context + error cntext + */ + public static function error_log($errn,$errstr,$file,$line,$context){ + LogMaster::log($errstr." at ".$file." line ".$line); + } + + /*! exception handler, used as default reaction on any error - show execution log and stop processing + + @param exception + instance of Exception + */ + public static function exception_log($exception){ + LogMaster::log("!!!Uncaught Exception\nCode: " . $exception->getCode() . "\nMessage: " . $exception->getMessage()); + if (LogMaster::$_output){ + echo "<pre><xmp>\n"; + echo LogMaster::get_session_log(); + echo "\n</xmp></pre>"; + } + die(); + } + + /*! enable logging + + @param name + path to the log file, if boolean false provided as value - logging will be disabled + @param output + flag of client side output, if enabled - session log will be sent to client side in case of an error. + */ + public static function enable_log($name,$output=false){ + LogMaster::$_log=$name; + LogMaster::$_output=$output; + if ($name){ + set_error_handler(array("LogMaster","error_log"),E_ALL); + set_exception_handler(array("LogMaster","exception_log")); + LogMaster::log("\n\n====================================\nLog started, ".date("d/m/Y h:i:s")."\n===================================="); + } + } +}
\ No newline at end of file diff --git a/codebase/TreeConnector.php b/codebase/TreeConnector.php new file mode 100644 index 0000000..b01e399 --- /dev/null +++ b/codebase/TreeConnector.php @@ -0,0 +1,63 @@ +<?php + +namespace DHTMLX\Connector; + +class TreeConnector extends Connector +{ + protected $parent_name = 'id'; + public $rootId = "0"; + + /*! constructor + + Here initilization of all Masters occurs, execution timer initialized + @param res + db connection resource + @param type + string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided + @param item_type + name of class, which will be used for item rendering, optional, DataItem will be used by default + @param data_type + name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. + * @param render_type + * name of class which will provides data rendering + */ + public function __construct($res, $type = false, $item_type = false, $data_type = false, $render_type = false) + { + if (!$item_type) $item_type = "TreeDataItem"; + if (!$data_type) $data_type = "TreeDataProcessor"; + if (!$render_type) $render_type = "TreeRenderStrategy"; + parent::__construct($res, $type, $item_type, $data_type, $render_type); + } + + //parse GET scoope, all operations with incoming request must be done here + public function parse_request() + { + parent::parse_request(); + + if (isset($_GET[$this->parent_name])) + $this->request->set_relation($_GET[$this->parent_name]); + else + $this->request->set_relation($this->rootId); + + $this->request->set_limit(0, 0); //netralize default reaction on dyn. loading mode + } + + /*! renders self as xml, starting part + */ + public function xml_start() + { + $attributes = ""; + foreach ($this->attributes as $k => $v) + $attributes .= " " . $k . "='" . $v . "'"; + + return "<tree id='" . $this->request->get_relation() . "'" . $attributes . ">"; + } + + /*! renders self as xml, ending part + */ + public function xml_end() + { + $this->fill_collections(); + return $this->extra_output . "</tree>"; + } +} diff --git a/codebase/XSSFilter/ConnectorSecurity.php b/codebase/XSSFilter/ConnectorSecurity.php new file mode 100644 index 0000000..195e962 --- /dev/null +++ b/codebase/XSSFilter/ConnectorSecurity.php @@ -0,0 +1,67 @@ +<?php +namespace DHTMLX\Connector\XSSFilter; + + +use DHTMLX\Connector\Tools\LogMaster; + +define("DHX_SECURITY_SAFETEXT", 1); +define("DHX_SECURITY_SAFEHTML", 2); +define("DHX_SECURITY_TRUSTED", 3); + +class ConnectorSecurity{ + static public $xss = DHX_SECURITY_SAFETEXT; + static public $security_key = false; + static public $security_var = "dhx_security"; + + static private $filterClass = null; + static function filter($value, $mode = false){ + if ($mode === false) + $mode = ConnectorSecurity::$xss; + + if ($mode == DHX_SECURITY_TRUSTED) + return $value; + if ($mode == DHX_SECURITY_SAFETEXT) + return filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); + if ($mode == DHX_SECURITY_SAFEHTML){ + if (ConnectorSecurity::$filterClass == null) + ConnectorSecurity::$filterClass = new dhxExternalInputClean(); + return ConnectorSecurity::$filterClass->basic($value); + } + throw new Error("Invalid security mode:"+$mode); + } + + static function CSRF_detected(){ + LogMaster::log("[SECURITY] Possible CSRF attack detected", array( + "referer" => $_SERVER["HTTP_REFERER"], + "remote" => $_SERVER["REMOTE_ADDR"] + )); + LogMaster::log("Request data", $_POST); + die(); + } + static function checkCSRF($edit){ + if (ConnectorSecurity::$security_key){ + if (!isset($_SESSION)) + @session_start(); + + if ($edit=== true){ + if (!isset($_POST[ConnectorSecurity::$security_var])) + return ConnectorSecurity::CSRF_detected(); + $master_key = $_SESSION[ConnectorSecurity::$security_var]; + $update_key = $_POST[ConnectorSecurity::$security_var]; + if ($master_key != $update_key) + return ConnectorSecurity::CSRF_detected(); + + return ""; + } + //data loading + if (!array_key_exists(ConnectorSecurity::$security_var,$_SESSION)){ + $_SESSION[ConnectorSecurity::$security_var] = md5(uniqid()); + } + + return $_SESSION[ConnectorSecurity::$security_var]; + } + + return ""; + } + +}
\ No newline at end of file diff --git a/codebase/XSSFilter/dhxExternalInputClean.php b/codebase/XSSFilter/dhxExternalInputClean.php new file mode 100644 index 0000000..4f3b526 --- /dev/null +++ b/codebase/XSSFilter/dhxExternalInputClean.php @@ -0,0 +1,120 @@ +<?php +namespace DHTMLX\Connector\XSSFilter; +//original name was lx_externalinput_clean +//renamed to prevent possible conflicts +class dhxExternalInputClean { + // this basic clean should clean html code from + // lot of possible malicious code for Cross Site Scripting + // use it whereever you get external input + + // you can also set $filterOut to some use html cleaning, but I don't know of any code, which could + // exploit that. But if you want to be sure, set it to eg. array("Tidy","Dom"); + static function basic($string, $filterIn = array("Tidy","Dom","Striptags"), $filterOut = "none") { + $string = self::tidyUp($string, $filterIn); + $string = str_replace(array("&", "<", ">"), array("&amp;", "&lt;", "&gt;"), $string); + + // fix &entitiy\n; + $string = preg_replace('#(&\#*\w+)[\x00-\x20]+;#u', "$1;", $string); + $string = preg_replace('#(&\#x*)([0-9A-F]+);*#iu', "$1$2;", $string); + + $string = html_entity_decode($string, ENT_COMPAT, "UTF-8"); + + // remove any attribute starting with "on" or xmlns + $string = preg_replace('#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>#iUu', "$1>", $string); + + // remove javascript: and vbscript: protocol + $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iUu', '$1=$2nojavascript...', $string); + $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iUu', '$1=$2novbscript...', $string); + $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*-moz-binding[\x00-\x20]*:#Uu', '$1=$2nomozbinding...', $string); + $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*data[\x00-\x20]*:#Uu', '$1=$2nodata...', $string); + + //remove any style attributes, IE allows too much stupid things in them, eg. + //<span style="width: expression(alert('Ping!'));"></span> + // and in general you really don't want style declarations in your UGC + + $string = preg_replace('#(<[^>]+[\x00-\x20\"\'\/])style[^>]*>#iUu', "$1>", $string); + + //remove namespaced elements (we do not need them...) + $string = preg_replace('#</*\w+:\w[^>]*>#i', "", $string); + + //remove really unwanted tags + do { + $oldstring = $string; + $string = preg_replace('#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i', "", $string); + } while ($oldstring != $string); + + return self::tidyUp($string, $filterOut); + } + + static function tidyUp($string, $filters) { + if (is_array($filters)) { + foreach ($filters as $filter) { + $return = self::tidyUpWithFilter($string, $filter); + if ($return !== false) { + return $return; + } + } + } else { + $return = self::tidyUpWithFilter($string, $filters); + } + // if no filter matched, use the Striptags filter to be sure. + if ($return === false) { + return self::tidyUpModuleStriptags($string); + } else { + return $return; + } + } + + static private function tidyUpWithFilter($string, $filter) { + if (is_callable(array("self", "tidyUpModule" . $filter))) { + return call_user_func(array("self", "tidyUpModule" . $filter), $string); + } + return false; + } + + static private function tidyUpModuleStriptags($string) { + + return strip_tags($string); + } + + static private function tidyUpModuleNone($string) { + return $string; + } + + static private function tidyUpModuleDom($string) { + $dom = new domdocument(); + @$dom->loadHTML("<html><body>" . $string . "</body></html>"); + $string = ''; + foreach ($dom->documentElement->firstChild->childNodes as $child) { + $string .= $dom->saveXML($child); + } + return $string; + } + + static private function tidyUpModuleTidy($string) { + if (class_exists("tidy")) { + $tidy = new tidy(); + $tidyOptions = array("output-xhtml" => true, + "show-body-only" => true, + "clean" => true, + "wrap" => "350", + "indent" => true, + "indent-spaces" => 1, + "ascii-chars" => false, + "wrap-attributes" => false, + "alt-text" => "", + "doctype" => "loose", + "numeric-entities" => true, + "drop-proprietary-attributes" => true, + "enclose-text" => false, + "enclose-block-text" => false + + ); + $tidy->parseString($string, $tidyOptions, "utf8"); + $tidy->cleanRepair(); + return (string) $tidy; + } else { + return false; + } + } +}
\ No newline at end of file diff --git a/codebase/base_connector.php b/codebase/base_connector.php deleted file mode 100644 index 26f1f8b..0000000 --- a/codebase/base_connector.php +++ /dev/null @@ -1,948 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("tools.php"); -require_once("db_common.php"); -require_once("dataprocessor.php"); -require_once("strategy.php"); -require_once("update.php"); - -//enable buffering to catch and ignore any custom output before XML generation -//because of this command, it strongly recommended to include connector's file before any other libs -//in such case it will handle any extra output from not well formed code of other libs -ini_set("output_buffering","On"); -ob_start(); - -class OutputWriter{ - private $start; - private $end; - private $type; - - public function __construct($start, $end = ""){ - $this->start = $start; - $this->end = $end; - $this->type = "xml"; - } - public function add($add){ - $this->start.=$add; - } - public function reset(){ - $this->start=""; - $this->end=""; - } - public function set_type($add){ - $this->type=$add; - } - public function output($name="", $inline=true, $encoding=""){ - ob_clean(); - - if ($this->type == "xml"){ - $header = "Content-type: text/xml"; - if ("" != $encoding) - $header.="; charset=".$encoding; - header($header); - } - - echo $this->__toString(); - } - public function __toString(){ - return $this->start.$this->end; - } -} - -/*! EventInterface - Base class , for iterable collections, which are used in event -**/ -class EventInterface{ - protected $request; ////!< DataRequestConfig instance - public $rules=array(); //!< array of sorting rules - - /*! constructor - creates a new interface based on existing request - @param request - DataRequestConfig object - */ - public function __construct($request){ - $this->request = $request; - } - - /*! remove all elements from collection - */ - public function clear(){ - array_splice($rules,0); - } - /*! get index by name - - @param name - name of field - @return - index of named field - */ - public function index($name){ - $len = sizeof($this->rules); - for ($i=0; $i < $len; $i++) { - if ($this->rules[$i]["name"]==$name) - return $i; - } - return false; - } -} -/*! Wrapper for collection of sorting rules -**/ -class SortInterface extends EventInterface{ - /*! constructor - creates a new interface based on existing request - @param request - DataRequestConfig object - */ - public function __construct($request){ - parent::__construct($request); - $this->rules = &$request->get_sort_by_ref(); - } - /*! add new sorting rule - - @param name - name of field - @param dir - direction of sorting - */ - public function add($name,$dir){ - if ($dir === false) - $this->request->set_sort($name); - else - $this->request->set_sort($name,$dir); - } - public function store(){ - $this->request->set_sort_by($this->rules); - } -} -/*! Wrapper for collection of filtering rules -**/ -class FilterInterface extends EventInterface{ - /*! constructor - creates a new interface based on existing request - @param request - DataRequestConfig object - */ - public function __construct($request){ - $this->request = $request; - $this->rules = &$request->get_filters_ref(); - } - /*! add new filatering rule - - @param name - name of field - @param value - value to filter by - @param rule - filtering rule - */ - public function add($name,$value,$rule){ - $this->request->set_filter($name,$value,$rule); - } - public function store(){ - $this->request->set_filters($this->rules); - } -} - -/*! base class for component item representation -**/ -class DataItem{ - protected $data; //!< hash of data - protected $config;//!< DataConfig instance - protected $index;//!< index of element - protected $skip;//!< flag , which set if element need to be skiped during rendering - protected $userdata; - - /*! constructor - - @param data - hash of data - @param config - DataConfig object - @param index - index of element - */ - function __construct($data,$config,$index){ - $this->config=$config; - $this->data=$data; - $this->index=$index; - $this->skip=false; - $this->userdata=false; - } - - //set userdata for the item - function set_userdata($name, $value){ - if ($this->userdata === false) - $this->userdata = array(); - - $this->userdata[$name]=$value; - } - /*! get named value - - @param name - name or alias of field - @return - value from field with provided name or alias - */ - public function get_value($name){ - return $this->data[$name]; - } - /*! set named value - - @param name - name or alias of field - @param value - value for field with provided name or alias - */ - public function set_value($name,$value){ - return $this->data[$name]=$value; - } - /*! get id of element - @return - id of element - */ - public function get_id(){ - $id = $this->config->id["name"]; - if (array_key_exists($id,$this->data)) - return $this->data[$id]; - return false; - } - /*! change id of element - - @param value - new id value - */ - public function set_id($value){ - $this->data[$this->config->id["name"]]=$value; - } - /*! get index of element - - @return - index of element - */ - public function get_index(){ - return $this->index; - } - /*! mark element for skiping ( such element will not be rendered ) - */ - public function skip(){ - $this->skip=true; - } - - /*! return self as XML string - */ - public function to_xml(){ - return $this->to_xml_start().$this->to_xml_end(); - } - - /*! replace xml unsafe characters - - @param string - string to be escaped - @return - escaped string - */ - public function xmlentities($string) { - return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); - } - - /*! return starting tag for self as XML string - */ - public function to_xml_start(){ - $str="<item"; - for ($i=0; $i < sizeof($this->config->data); $i++){ - $name=$this->config->data[$i]["name"]; - $db_name=$this->config->data[$i]["db_name"]; - $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'"; - } - //output custom data - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value){ - $str.=" ".$key."='".$this->xmlentities($value)."'"; - } - - return $str.">"; - } - /*! return ending tag for XML string - */ - public function to_xml_end(){ - return "</item>"; - } -} - - - - - -/*! Base connector class - This class used as a base for all component specific connectors. - Can be used on its own to provide raw data. -**/ -class Connector { - protected $config;//DataConfig instance - protected $request;//DataRequestConfig instance - protected $names;//!< hash of names for used classes - protected $encoding="utf-8";//!< assigned encoding (UTF-8 by default) - protected $editing=false;//!< flag of edit mode ( response for dataprocessor ) - - public static $filter_var="dhx_filter"; - public static $sort_var="dhx_sort"; - public static $kids_var="dhx_kids"; - - public $model=false; - - private $updating=false;//!< flag of update mode ( response for data-update ) - private $db; //!< db connection resource - protected $dload;//!< flag of dyn. loading mode - public $access; //!< AccessMaster instance - protected $data_separator = "\n"; - - public $sql; //DataWrapper instance - public $event; //EventMaster instance - public $limit=false; - - private $id_seed=0; //!< default value, used to generate auto-IDs - protected $live_update = false; // actions table name for autoupdating - protected $extra_output="";//!< extra info which need to be sent to client side - protected $options=array();//!< hash of OptionsConnector - protected $as_string = false; // render() returns string, don't send result in response - protected $simple = false; // render only data without any other info - protected $filters; - protected $sorts; - protected $mix; - protected $order = false; - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param db - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($db,$type=false, $item_type=false, $data_type=false, $render_type = false){ - $this->exec_time=microtime(true); - - if (!$type) $type="MySQL"; - if (class_exists($type."DBDataWrapper",false)) $type.="DBDataWrapper"; - if (!$item_type) $item_type="DataItem"; - if (!$data_type) $data_type="DataProcessor"; - if (!$render_type) $render_type="RenderStrategy"; - - $this->names=array( - "db_class"=>$type, - "item_class"=>$item_type, - "data_class"=>$data_type, - "render_class"=>$render_type - ); - $this->attributes = array(); - $this->filters = array(); - $this->sorts = array(); - $this->mix = array(); - - $this->config = new DataConfig(); - $this->request = new DataRequestConfig(); - $this->event = new EventMaster(); - $this->access = new AccessMaster(); - - if (!class_exists($this->names["db_class"],false)) - throw new Exception("DB class not found: ".$this->names["db_class"]); - $this->sql = new $this->names["db_class"]($db,$this->config); - $this->render = new $this->names["render_class"]($this); - - $this->db=$db;//saved for options connectors, if any - - EventMaster::trigger_static("connectorCreate",$this); - } - - /*! return db connection resource - nested class may neeed to access live connection object - @return - DB connection resource - */ - protected function get_connection(){ - return $this->db; - } - - public function get_config(){ - return new DataConfig($this->config); - } - - public function get_request(){ - return new DataRequestConfig($this->request); - } - - - protected $attributes; - public function add_top_attribute($name, $string){ - $this->attributes[$name] = $string; - } - - //model is a class, which will be used for all data operations - //we expect that it has next methods get, update, insert, delete - //if method was not defined - we will use default logic - public function useModel($model){ - $this->model = $model; - } - - - /*! config connector based on table - - @param table - name of table in DB - @param id - name of id field - @param fields - list of fields names - @param extra - list of extra fields, optional, such fields will not be included in data rendering, but will be accessible in all inner events - @param relation_id - name of field used to define relations for hierarchical data organization, optional - */ - public function render_table($table,$id="",$fields=false,$extra=false,$relation_id=false){ - $this->configure($table,$id,$fields,$extra,$relation_id); - return $this->render(); - } - public function configure($table,$id="",$fields=false,$extra=false,$relation_id=false){ - if ($fields === false){ - //auto-config - $info = $this->sql->fields_list($table); - $fields = implode(",",$info["fields"]); - if ($info["key"]) - $id = $info["key"]; - } - $this->config->init($id,$fields,$extra,$relation_id); - if (strpos(trim($table), " ")!==false) - $this->request->parse_sql($table); - else - $this->request->set_source($table); - } - - public function uuid(){ - return time()."x".$this->id_seed++; - } - - /*! config connector based on sql - - @param sql - sql query used as base of configuration - @param id - name of id field - @param fields - list of fields names - @param extra - list of extra fields, optional, such fields will not be included in data rendering, but will be accessible in all inner events - @param relation_id - name of field used to define relations for hierarchical data organization, optional - */ - public function render_sql($sql,$id,$fields,$extra=false,$relation_id=false){ - $this->config->init($id,$fields,$extra,$relation_id); - $this->request->parse_sql($sql); - return $this->render(); - } - - public function render_array($data, $id, $fields, $extra=false, $relation_id=false){ - $this->configure("-",$id,$fields,$extra,$relation_id); - $this->sql = new ArrayDBDataWrapper($data, $this->config); - return $this->render(); - } - - public function render_complex_sql($sql,$id,$fields,$extra=false,$relation_id=false){ - $this->config->init($id,$fields,$extra,$relation_id); - $this->request->parse_sql($sql, true); - return $this->render(); - } - - /*! render already configured connector - - @param config - configuration of data - @param request - configuraton of request - */ - public function render_connector($config,$request){ - $this->config->copy($config); - $this->request->copy($request); - return $this->render(); - } - - /*! render self - process commands, output requested data as XML - */ - public function render(){ - $this->event->trigger("onInit", $this); - EventMaster::trigger_static("connectorInit",$this); - - if (!$this->as_string) - $this->parse_request(); - $this->set_relation(); - - if ($this->live_update !== false && $this->updating!==false) { - $this->live_update->get_updates(); - } else { - if ($this->editing){ - $dp = new $this->names["data_class"]($this,$this->config,$this->request); - $dp->process($this->config,$this->request); - } else { - if (!$this->access->check("read")){ - LogMaster::log("Access control: read operation blocked"); - echo "Access denied"; - die(); - } - $wrap = new SortInterface($this->request); - $this->apply_sorts($wrap); - $this->event->trigger("beforeSort",$wrap); - $wrap->store(); - - $wrap = new FilterInterface($this->request); - $this->apply_filters($wrap); - $this->event->trigger("beforeFilter",$wrap); - $wrap->store(); - - if ($this->model && method_exists($this->model, "get")){ - $this->sql = new ArrayDBDataWrapper(); - $result = new ArrayQueryWrapper(call_user_func(array($this->model, "get"), $this->request)); - $out = $this->output_as_xml($result); - } else { - $out = $this->output_as_xml($this->get_resource()); - - if ($out !== null) return $out; - } - - } - } - $this->end_run(); - } - - - /*! empty call which used for tree-logic - * to prevent code duplicating - */ - protected function set_relation() {} - - /*! gets resource for rendering - */ - protected function get_resource() { - return $this->sql->select($this->request); - } - - - /*! prevent SQL injection through column names - replace dangerous chars in field names - @param str - incoming field name - @return - safe field name - */ - protected function safe_field_name($str){ - return strtok($str, " \n\t;',"); - } - - /*! limit max count of records - connector will ignore any records after outputing max count - @param limit - max count of records - @return - none - */ - public function set_limit($limit){ - $this->limit = $limit; - } - - - public function limit($start, $count, $sort_field=false, $sort_dir=false){ - $this->request->set_limit($start, $count); - if ($sort_field) - $this->request->set_sort($sort_field, $sort_dir); - } - - protected function parse_request_mode(){ - //detect edit mode - if (isset($_GET["editing"])){ - $this->editing=true; - } else if (isset($_POST["ids"])){ - $this->editing=true; - LogMaster::log('While there is no edit mode mark, POST parameters similar to edit mode detected. \n Switching to edit mode ( to disable behavior remove POST[ids]'); - } else if (isset($_GET['dhx_version'])){ - $this->updating = true; - } - } - - /*! parse incoming request, detects commands and modes - */ - protected function parse_request(){ - //set default dyn. loading params, can be reset in child classes - if ($this->dload) - $this->request->set_limit(0,$this->dload); - else if ($this->limit) - $this->request->set_limit(0,$this->limit); - - if (isset($_GET["posStart"]) && isset($_GET["count"])) { - $this->request->set_limit($_GET["posStart"],$_GET["count"]); - } - - $this->parse_request_mode(); - - if ($this->live_update && ($this->updating || $this->editing)){ - $this->request->set_version($_GET["dhx_version"]); - $this->request->set_user($_GET["dhx_user"]); - } - - if (isset($_GET[Connector::$sort_var])) - foreach($_GET[Connector::$sort_var] as $k => $v){ - $k = $this->safe_field_name($k); - $this->request->set_sort($this->resolve_parameter($k),$v); - } - - if (isset($_GET[Connector::$filter_var])) - foreach($_GET[Connector::$filter_var] as $k => $v){ - $k = $this->safe_field_name($k); - if ($v !== "") - $this->request->set_filter($this->resolve_parameter($k),$v); - } - - $this->check_csrf(); - } - - protected function check_csrf(){ - $key = ConnectorSecurity::checkCSRF($this->editing); - if ($key !== "") - $this->add_top_attribute(ConnectorSecurity::$security_var, $key); - } - - /*! convert incoming request name to the actual DB name - @param name - incoming parameter name - @return - name of related DB field - */ - protected function resolve_parameter($name){ - return $name; - } - - - /*! replace xml unsafe characters - - @param string - string to be escaped - @return - escaped string - */ - protected function xmlentities($string) { - return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); - } - - public function getRecord($id){ - LogMaster::log("Retreiving data for record: ".$id); - $source = new DataRequestConfig($this->request); - $source->set_filter($this->config->id["name"],$id, "="); - - $res = $this->sql->select($source); - - $temp = $this->data_separator; - $this->data_separator=""; - $output = $this->render_set($res); - $this->data_separato=$temp; - - return $output; - } - - /*! render from DB resultset - @param res - DB resultset - process commands, output requested data as XML - */ - protected function render_set($res){ - return $this->render->render_set($res, $this->names["item_class"], $this->dload, $this->data_separator, $this->config, $this->mix); - } - - /*! output fetched data as XML - @param res - DB resultset - */ - protected function output_as_xml($res){ - $result = $this->render_set($res); - if ($this->simple) return $result; - - $start="<?xml version='1.0' encoding='".$this->encoding."' ?>".$this->xml_start(); - $end=$result.$this->xml_end(); - - if ($this->as_string) return $start.$end; - - $out = new OutputWriter($start, $end); - $this->event->trigger("beforeOutput", $this, $out); - $out->output("", true, $this->encoding); - } - - - /*! end processing - stop execution timer, kill the process - */ - protected function end_run(){ - $time=microtime(true)-$this->exec_time; - LogMaster::log("Done in {$time}s"); - flush(); - die(); - } - - /*! set xml encoding - - methods sets only attribute in XML, no real encoding conversion occurs - @param encoding - value which will be used as XML encoding - */ - public function set_encoding($encoding){ - $this->encoding=$encoding; - } - - /*! enable or disable dynamic loading mode - - @param count - count of rows loaded from server, actual only for grid-connector, can be skiped in other cases. - If value is a false or 0 - dyn. loading will be disabled - */ - public function dynamic_loading($count){ - $this->dload=$count; - } - - /*! enable or disable data reordering - - @param name - name of field, which will be used for order storing, optional - by default 'sortorder' field will be used - */ - public function enable_order($name = true){ - if ($name === true) - $name = "sortorder"; - - $this->sort($name); - $this->access->allow("order"); - $this->request->set_order($name); - $this->order = $name; - } - - /*! enable logging - - @param path - path to the log file. If set as false or empty strig - logging will be disabled - @param client_log - enable output of log data to the client side - */ - public function enable_log($path=true,$client_log=false){ - LogMaster::enable_log($path,$client_log); - } - - /*! provides infor about current processing mode - @return - true if processing dataprocessor command, false otherwise - */ - public function is_select_mode(){ - $this->parse_request_mode(); - return !$this->editing; - } - - public function is_first_call(){ - $this->parse_request_mode(); - return !($this->editing || $this->updating || $this->request->get_start() || isset($_GET['dhx_no_header'])); - - } - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - $attributes = ""; - - if ($this->dload){ - //info for dyn. loadin - if ($pos=$this->request->get_start()) - $attributes .= " pos='".$pos."'"; - else - $attributes .= " total_count='".$this->sql->get_size($this->request)."'"; - } - foreach($this->attributes as $k=>$v) - $attributes .= " ".$k."='".$v."'"; - - return "<data".$attributes.">"; - } - /*! renders self as xml, ending part - */ - protected function xml_end(){ - $this->fill_collections(); - if (isset($this->extra_output)) - return $this->extra_output."</data>"; - else - return "</data>"; - } - - protected function fill_collections($list=""){ - foreach ($this->options as $k=>$v) { - $name = $k; - $this->extra_output.="<coll_options for='{$name}'>"; - if (!is_string($this->options[$name])) - $this->extra_output.=$this->options[$name]->render(); - else - $this->extra_output.=$this->options[$name]; - $this->extra_output.="</coll_options>"; - } - } - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=""; - foreach($options as $k => $v) - $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />"; - $options=$str; - } - $this->options[$name]=$options; - } - - - public function insert($data) { - $action = new DataAction('inserted', false, $data); - $request = new DataRequestConfig(); - $request->set_source($this->request->get_source()); - - $this->config->limit_fields($data); - $this->sql->insert($action,$request); - $this->config->restore_fields($data); - - return $action->get_new_id(); - } - - public function delete($id) { - $action = new DataAction('deleted', $id, array()); - $request = new DataRequestConfig(); - $request->set_source($this->request->get_source()); - - $this->sql->delete($action,$request); - return $action->get_status(); -} - - public function update($data) { - $action = new DataAction('updated', $data[$this->config->id["name"]], $data); - $request = new DataRequestConfig(); - $request->set_source($this->request->get_source()); - - $this->config->limit_fields($data); - $this->sql->update($action,$request); - $this->config->restore_fields($data); - - return $action->get_status(); - } - - /*! sets actions_table for Optimistic concurrency control mode and start it - @param table_name - name of database table which will used for saving actions - @param url - url used for update notifications - */ - public function enable_live_update($table, $url=false){ - $this->live_update = new DataUpdate($this->sql, $this->config, $this->request, $table,$url); - $this->live_update->set_event($this->event,$this->names["item_class"]); - $this->event->attach("beforeOutput", Array($this->live_update, "version_output")); - $this->event->attach("beforeFiltering", Array($this->live_update, "get_updates")); - $this->event->attach("beforeProcessing", Array($this->live_update, "check_collision")); - $this->event->attach("afterProcessing", Array($this->live_update, "log_operations")); - } - - /*! render() returns result as string or send to response - */ - public function asString($as_string) { - $this->as_string = $as_string; - } - - public function simple_render() { - $this->simple = true; - return $this->render(); - } - - public function filter($name, $value = false, $operation = '=') { - $this->filters[] = array('name' => $name, 'value' => $value, 'operation' => $operation); - } - - public function clear_filter() { - $this->filters = array(); - $this->request->set_filters(array()); - } - - protected function apply_filters($wrap) { - for ($i = 0; $i < count($this->filters); $i++) { - $f = $this->filters[$i]; - $wrap->add($f['name'], $f['value'], $f['operation']); - } - } - - public function sort($name, $direction = false) { - $this->sorts[] = array('name' => $name, 'direction' => $direction); - } - - protected function apply_sorts($wrap) { - for ($i = 0; $i < count($this->sorts); $i++) { - $s = $this->sorts[$i]; - $wrap->add($s['name'], $s['direction']); - } - } - - public function mix($name, $value, $filter=false) { - $this->mix[] = Array('name'=>$name, 'value'=>$value, 'filter'=>$filter); - } -} - - -/*! wrapper around options collection, used for comboboxes and filters -**/ -class OptionsConnector extends Connector{ - protected $init_flag=false;//!< used to prevent rendering while initialization - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="DataItem"; - if (!$data_type) $data_type=""; //has not sense, options not editable - parent::__construct($res,$type,$item_type,$data_type); - } - /*! render self - process commands, return data as XML, not output data to stdout, ignore parameters in incoming request - @return - data as XML string - */ - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - $res = $this->sql->select($this->request); - return $this->render_set($res); - } -} - - - -class DistinctOptionsConnector extends OptionsConnector{ - /*! render self - process commands, return data as XML, not output data to stdout, ignore parameters in incoming request - @return - data as XML string - */ - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - $res = $this->sql->get_variants($this->config->text[0]["db_name"],$this->request); - return $this->render_set($res); - } -} - -?>
\ No newline at end of file diff --git a/codebase/chart_connector.php b/codebase/chart_connector.php deleted file mode 100644 index 247d1e6..0000000 --- a/codebase/chart_connector.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ - - require_once("dataview_connector.php"); - - -/*! Connector class for DataView -**/ -class ChartConnector extends DataViewConnector{ - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - parent::__construct($res,$type,$item_type,$data_type); - } -} - -?>
\ No newline at end of file diff --git a/codebase/combo_connector.php b/codebase/combo_connector.php deleted file mode 100644 index 8fb5416..0000000 --- a/codebase/combo_connector.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ - -require_once("base_connector.php"); -/*! DataItem class for Combo component -**/ -class ComboDataItem extends DataItem{ - private $selected;//!< flag of selected option - - function __construct($data,$config,$index){ - parent::__construct($data,$config,$index); - - $this->selected=false; - } - /*! mark option as selected - */ - function select(){ - $this->selected=true; - } - /*! return self as XML string, starting part - */ - function to_xml_start(){ - if ($this->skip) return ""; - - return "<option ".($this->selected?"selected='true'":"")."value='".$this->xmlentities($this->get_id())."'><![CDATA[".$this->data[$this->config->text[0]["name"]]."]]>"; - } - /*! return self as XML string, ending part - */ - function to_xml_end(){ - if ($this->skip) return ""; - return "</option>"; - } -} - -/*! Connector for the dhtmlxCombo -**/ -class ComboConnector extends Connector{ - private $filter; //!< filtering mask from incoming request - private $position; //!< position from incoming request - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="ComboDataItem"; - parent::__construct($res,$type,$item_type,$data_type); - } - - //parse GET scoope, all operations with incoming request must be done here - function parse_request(){ - parent::parse_request(); - - if (isset($_GET["pos"])){ - if (!$this->dload) //not critical, so just write a log message - LogMaster::log("Dyn loading request received, but server side was not configured to process dyn. loading. "); - else - $this->request->set_limit($_GET["pos"],$this->dload); - } - - if (isset($_GET["mask"])) - $this->request->set_filter($this->config->text[0]["db_name"],$_GET["mask"]."%","LIKE"); - - LogMaster::log($this->request); - } - - - /*! renders self as xml, starting part - */ - public function xml_start(){ - if ($this->request->get_start()) - return "<complete add='true'>"; - else - return "<complete>"; - } - - /*! renders self as xml, ending part - */ - public function xml_end(){ - return "</complete>"; - } -} -?>
\ No newline at end of file diff --git a/codebase/connector.js b/codebase/connector.js deleted file mode 100644 index 0ee9648..0000000 --- a/codebase/connector.js +++ /dev/null @@ -1,155 +0,0 @@ -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -if (window.dhtmlXGridObject && !dhtmlXGridObject.prototype._init_point_connector){ - dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point; - dhtmlXGridObject.prototype._init_point=function(){ - //make separate config array for each grid - this._con_f_used = [].concat(this._con_f_used); - dhtmlXGridObject.prototype._con_f_used=[]; - - var clear_url=function(url){ - url=url.replace(/(\?|\&)connector[^\f]*/g,""); - return url+(url.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length > 0 ? "&dhx_no_header=1":""); - }; - var combine_urls=function(url){ - return clear_url.call(this,url)+(this._connector_sorting||"")+(this._connector_filter||""); - }; - var sorting_url=function(url,ind,dir){ - this._connector_sorting="&dhx_sort["+ind+"]="+dir; - return combine_urls.call(this,url); - }; - var filtering_url=function(url,inds,vals){ - var chunks = []; - for (var i=0; i<inds.length; i++) - chunks[i]="dhx_filter["+inds[i]+"]="+encodeURIComponent(vals[i]); - this._connector_filter="&"+chunks.join("&"); - return combine_urls.call(this,url); - }; - this.attachEvent("onCollectValues",function(ind){ - if (this._con_f_used[ind]){ - if (typeof(this._con_f_used[ind]) == "object") - return this._con_f_used[ind]; - else - return false; - } - return true; - }); - this.attachEvent("onDynXLS",function(){ - this.xmlFileUrl=combine_urls.call(this,this.xmlFileUrl); - return true; - }); - this.attachEvent("onBeforeSorting",function(ind,type,dir){ - if (type=="connector"){ - var self=this; - this.clearAndLoad(sorting_url.call(this,this.xmlFileUrl,ind,dir),function(){ - self.setSortImgState(true,ind,dir); - }); - return false; - } - return true; - }); - this.attachEvent("onFilterStart",function(a,b){ - var ss = this.getSortingState(); - if (this._con_f_used.length){ - var self=this; - this.clearAndLoad(filtering_url.call(this,this.xmlFileUrl,a,b)); - if (ss.length) - self.setSortImgState(true,ss[0],ss[1]); - return false; - } - return true; - }); - this.attachEvent("onXLE",function(a,b,c,xml){ - if (!xml) return; - }); - - if (this._init_point_connector) this._init_point_connector(); - }; - dhtmlXGridObject.prototype._con_f_used=[]; - dhtmlXGridObject.prototype._in_header_connector_text_filter=function(t,i){ - if (!this._con_f_used[i]) - this._con_f_used[i]=1; - return this._in_header_text_filter(t,i); - }; - dhtmlXGridObject.prototype._in_header_connector_select_filter=function(t,i){ - if (!this._con_f_used[i]) - this._con_f_used[i]=2; - return this._in_header_select_filter(t,i); - }; - dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load; - dhtmlXGridObject.prototype.load=function(url, call, type){ - if (!this._colls_loaded && this.cellType){ - var ar=[]; - for (var i=0; i < this.cellType.length; i++) - if (this.cellType[i].indexOf("co")==0 || this.cellType[i].indexOf("clist")==0 || this._con_f_used[i]==2) ar.push(i); - if (ar.length) - arguments[0]+=(arguments[0].indexOf("?")!=-1?"&":"?")+"connector=true&dhx_colls="+ar.join(","); - } - return this.load_connector.apply(this,arguments); - }; - dhtmlXGridObject.prototype._parseHead_connector=dhtmlXGridObject.prototype._parseHead; - dhtmlXGridObject.prototype._parseHead=function(url, call, type){ - this._parseHead_connector.apply(this,arguments); - if (!this._colls_loaded){ - var cols = this.xmlLoader.doXPath("./coll_options", arguments[0]); - for (var i=0; i < cols.length; i++){ - var f = cols[i].getAttribute("for"); - var v = []; - var combo=null; - if (this.cellType[f] == "combo") - combo = this.getColumnCombo(f); - else if (this.cellType[f].indexOf("co")==0) - combo=this.getCombo(f); - - var os = this.xmlLoader.doXPath("./item",cols[i]); - var opts = []; - for (var j=0; j<os.length; j++){ - var val=os[j].getAttribute("value"); - - if (combo){ - var lab=os[j].getAttribute("label")||val; - - if (combo.addOption) - opts.push([val, lab]); - else - combo.put(val,lab); - - v[v.length]=lab; - } else - v[v.length]=val; - } - if (opts.length){ - if (combo) - combo.addOption(opts); - } else if (v.length && !combo) - if (this.registerCList) - this.registerCList(f*1, v); - - - if (this._con_f_used[f*1]) - this._con_f_used[f*1]=v; - } - this._colls_loaded=true; - } - }; - - - - -} - -if (window.dataProcessor && !dataProcessor.prototype.init_original){ - dataProcessor.prototype.init_original=dataProcessor.prototype.init; - dataProcessor.prototype.init=function(obj){ - this.init_original(obj); - obj._dataprocessor=this; - - this.setTransactionMode("POST",true); - this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true"; - }; -} -dhtmlxError.catchError("LoadXML",function(a,b,c){ - alert(c[0].responseText); -}); diff --git a/codebase/crosslink_connector.php b/codebase/crosslink_connector.php deleted file mode 100644 index 7d5c74c..0000000 --- a/codebase/crosslink_connector.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("data_connector.php"); - -class DelayedConnector extends Connector{ - protected $init_flag=false;//!< used to prevent rendering while initialization - private $data_mode=false;//!< flag to separate xml and data request modes - private $data_result=false;//<! store results of query - - public function dataMode($name){ - $this->data_mode = $name; - $this->data_result=array(); - } - public function getDataResult(){ - return $this->data_result; - } - - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - return parent::render(); - } - - protected function output_as_xml($res){ - if ($this->data_mode){ - while ($data=$this->sql->get_next($res)){ - $this->data_result[]=$data[$this->data_mode]; - } - } - else - return parent::output_as_xml($res); - } - protected function end_run(){ - if (!$this->data_mode) - parent::end_run(); - } -} - -class CrossOptionsConnector extends Connector{ - public $options, $link; - private $master_name, $link_name, $master_value; - - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - $this->options = new OptionsConnector($res,$type,$item_type,$data_type); - $this->link = new DelayedConnector($res,$type,$item_type,$data_type); - - EventMaster::attach_static("connectorInit",array($this, "handle")); - } - public function handle($conn){ - if ($conn instanceof DelayedConnector) return; - if ($conn instanceof OptionsConnector) return; - - $this->master_name = $this->link->get_config()->id["db_name"]; - $this->link_name = $this->options->get_config()->id["db_name"]; - - $this->link->event->attach("beforeFilter",array($this, "get_only_related")); - - if (isset($_GET["dhx_crosslink_".$this->link_name])){ - $this->get_links($_GET["dhx_crosslink_".$this->link_name]); - die(); - } - - if (!$this->dload){ - $conn->event->attach("beforeRender", array($this, "getOptions")); - $conn->event->attach("beforeRenderSet", array($this, "prepareConfig")); - } - - - $conn->event->attach("afterProcessing", array($this, "afterProcessing")); - } - public function prepareConfig($conn, $res, $config){ - $config->add_field($this->link_name); - } - public function getOptions($data){ - $this->link->dataMode($this->link_name); - - $this->get_links($data->get_value($this->master_name)); - - $data->set_value($this->link_name, implode(",",$this->link->getDataResult())); - } - public function get_links($id){ - $this->master_value = $id; - $this->link->render(); - } - public function get_only_related($filters){ - $index = $filters->index($this->master_name); - if ($index!==false){ - $filters->rules[$index]["value"]=$this->master_value; - } else - $filters->add($this->master_name, $this->master_value, "="); - } - public function afterProcessing($action){ - $status = $action->get_status(); - - $master_key = $action->get_id();//value($this->master_name); - $link_key = $action->get_value($this->link_name); - $link_key = explode(',', $link_key); - - if ($status == "inserted") - $master_key = $action->get_new_id(); - - switch ($status){ - case "deleted": - $this->link->delete($master_key); - break; - case "updated": - //cross link options not loaded yet, so we can skip update - if (!array_key_exists($this->link_name, $action->get_data())) - break; - //else, delete old options and continue in insert section to add new values - $this->link->delete($master_key); - case "inserted": - for ($i=0; $i < sizeof($link_key); $i++) - if ($link_key[$i]!="") - $this->link->insert(array( - $this->link_name => $link_key[$i], - $this->master_name => $master_key - )); - break; - } - } -} - - -class JSONCrossOptionsConnector extends CrossOptionsConnector{ - public $options, $link; - private $master_name, $link_name, $master_value; - - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - $this->options = new JSONOptionsConnector($res,$type,$item_type,$data_type); - $this->link = new DelayedConnector($res,$type,$item_type,$data_type); - - EventMaster::attach_static("connectorInit",array($this, "handle")); - } -} -?>
\ No newline at end of file diff --git a/codebase/data_connector.php b/codebase/data_connector.php deleted file mode 100644 index 165cc0f..0000000 --- a/codebase/data_connector.php +++ /dev/null @@ -1,528 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); - -class CommonDataProcessor extends DataProcessor{ - protected function get_post_values($ids){ - if (isset($_GET['action'])){ - $data = array(); - if (isset($_POST["id"])){ - $dataset = array(); - foreach($_POST as $key=>$value) - $dataset[$key] = ConnectorSecurity::filter($value); - - $data[$_POST["id"]] = $dataset; - } - else - $data["dummy_id"] = $_POST; - return $data; - } - return parent::get_post_values($ids); - } - - protected function get_ids(){ - if (isset($_GET['action'])){ - if (isset($_POST["id"])) - return array($_POST['id']); - else - return array("dummy_id"); - } - return parent::get_ids(); - } - - protected function get_operation($rid){ - if (isset($_GET['action'])) - return $_GET['action']; - return parent::get_operation($rid); - } - - public function output_as_xml($results){ - if (isset($_GET['action'])){ - LogMaster::log("Edit operation finished",$results); - ob_clean(); - $type = $results[0]->get_status(); - if ($type == "error" || $type == "invalid"){ - echo "false"; - } else if ($type=="insert"){ - echo "true\n".$results[0]->get_new_id(); - } else - echo "true"; - } else - return parent::output_as_xml($results); - } -}; - -/*! DataItem class for DataView component -**/ -class CommonDataItem extends DataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - return $this->to_xml_start().$this->to_xml_end(); - } - - function to_xml_start(){ - $str="<item id='".$this->get_id()."' "; - for ($i=0; $i < sizeof($this->config->text); $i++){ - $name=$this->config->text[$i]["name"]; - $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'"; - } - - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $str.=" ".$key."='".$this->xmlentities($value)."'"; - - return $str.">"; - } -} - - -/*! Connector class for DataView -**/ -class DataConnector extends Connector{ - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="CommonDataItem"; - if (!$data_type) $data_type="CommonDataProcessor"; - - $this->sections = array(); - - if (!$render_type) $render_type="RenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - - } - - protected $sections; - public function add_section($name, $string){ - $this->sections[$name] = $string; - } - - protected function parse_request_mode(){ - if (isset($_GET['action']) && $_GET["action"] != "get") - $this->editing = true; - else - parent::parse_request_mode(); - } - - //parse GET scoope, all operations with incoming request must be done here - protected function parse_request(){ - if (isset($_GET['action'])){ - $action = $_GET['action']; - //simple request mode - if ($action == "get"){ - //data request - if (isset($_GET['id'])){ - //single entity data request - $this->request->set_filter($this->config->id["name"],$_GET['id'],"="); - } else { - //loading collection of items - } - } else { - //data saving - $this->editing = true; - } - parent::check_csrf(); - } else { - if (isset($_GET['editing']) && isset($_POST['ids'])) - $this->editing = true; - parent::parse_request(); - } - - if (isset($_GET["start"]) && isset($_GET["count"])) - $this->request->set_limit($_GET["start"],$_GET["count"]); - - } - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - $start = "<data"; - foreach($this->attributes as $k=>$v) - $start .= " ".$k."='".$v."'"; - $start.= ">"; - - foreach($this->sections as $k=>$v) - $start .= "<".$k.">".$v."</".$k.">\n"; - return $start; - } -}; - -class JSONDataConnector extends DataConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="JSONCommonDataItem"; - if (!$data_type) $data_type="CommonDataProcessor"; - if (!$render_type) $render_type="JSONRenderStrategy"; - $this->data_separator = ",\n"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=array(); - foreach($options as $k => $v) - $str[]='{"id":"'.$this->xmlentities($k).'", "value":"'.$this->xmlentities($v).'"}'; - $options=implode(",",$str); - } - $this->options[$name]=$options; - } - - /*! generates xml description for options collections - - @param list - comma separated list of column names, for which options need to be generated - */ - protected function fill_collections($list=""){ - $options = array(); - foreach ($this->options as $k=>$v) { - $name = $k; - $option="\"{$name}\":["; - if (!is_string($this->options[$name])) - $option.=substr(json_encode($this->options[$name]->render()),1,-1); - else - $option.=$this->options[$name]; - $option.="]"; - $options[] = $option; - } - $this->extra_output .= implode($this->data_separator, $options); - } - - protected function resolve_parameter($name){ - if (intval($name).""==$name) - return $this->config->text[intval($name)]["db_name"]; - return $name; - } - - protected function output_as_xml($res){ - $json = $this->render_set($res); - if ($this->simple) return $json; - $result = json_encode($json); - - $this->fill_collections(); - $is_sections = sizeof($this->sections) && $this->is_first_call(); - if ($this->dload || $is_sections || sizeof($this->attributes) || !empty($this->extra_data)){ - - $attributes = ""; - foreach($this->attributes as $k=>$v) - $attributes .= ", \"".$k."\":\"".$v."\""; - - $extra = ""; - if (!empty($this->extra_output)) - $extra .= ', "collections": {'.$this->extra_output.'}'; - - $sections = ""; - if ($is_sections){ - //extra sections - foreach($this->sections as $k=>$v) - $sections .= ", \"".$k."\":".$v; - } - - $dyn = ""; - if ($this->dload){ - //info for dyn. loadin - if ($pos=$this->request->get_start()) - $dyn .= ", \"pos\":".$pos; - else - $dyn .= ", \"pos\":0, \"total_count\":".$this->sql->get_size($this->request); - } - if ($attributes || $sections || $this->extra_output || $dyn) { - $result = "{ \"data\":".$result.$attributes.$extra.$sections.$dyn."}"; - } - } - - // return as string - if ($this->as_string) return $result; - - // output direct to response - $out = new OutputWriter($result, ""); - $out->set_type("json"); - $this->event->trigger("beforeOutput", $this, $out); - $out->output("", true, $this->encoding); - return null; - } -} - -class JSONCommonDataItem extends DataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return false; - - $data = array( - 'id' => $this->get_id() - ); - for ($i=0; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - $data[$extra]=$this->data[$extra]; - if (is_null($data[$extra])) - $data[$extra] = ""; - } - - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value){ - if ($value === null) - $data[$key]=""; - $data[$key]=$value; - } - - return $data; - } -} - - -/*! wrapper around options collection, used for comboboxes and filters -**/ -class JSONOptionsConnector extends JSONDataConnector{ - protected $init_flag=false;//!< used to prevent rendering while initialization - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="JSONCommonDataItem"; - if (!$data_type) $data_type=""; //has not sense, options not editable - parent::__construct($res,$type,$item_type,$data_type); - } - /*! render self - process commands, return data as XML, not output data to stdout, ignore parameters in incoming request - @return - data as XML string - */ - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - $res = $this->sql->select($this->request); - return $this->render_set($res); - } -} - - -class JSONDistinctOptionsConnector extends JSONOptionsConnector{ - /*! render self - process commands, return data as XML, not output data to stdout, ignore parameters in incoming request - @return - data as XML string - */ - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - $res = $this->sql->get_variants($this->config->text[0]["db_name"],$this->request); - return $this->render_set($res); - } -} - - - -class TreeCommonDataItem extends CommonDataItem{ - protected $kids=-1; - - function to_xml_start(){ - $str="<item id='".$this->get_id()."' "; - for ($i=0; $i < sizeof($this->config->text); $i++){ - $name=$this->config->text[$i]["name"]; - $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'"; - } - - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $str.=" ".$key."='".$this->xmlentities($value)."'"; - - if ($this->kids === true) - $str .=" ".Connector::$kids_var."='1'"; - - return $str.">"; - } - - function has_kids(){ - return $this->kids; - } - - function set_kids($value){ - $this->kids=$value; - } -} - - -class TreeDataConnector extends DataConnector{ - protected $parent_name = 'parent'; - public $rootId = "0"; - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - * @param render_type - * name of class which will provides data rendering - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="TreeCommonDataItem"; - if (!$data_type) $data_type="CommonDataProcessor"; - if (!$render_type) $render_type="TreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - //parse GET scoope, all operations with incoming request must be done here - protected function parse_request(){ - parent::parse_request(); - - if (isset($_GET[$this->parent_name])) - $this->request->set_relation($_GET[$this->parent_name]); - else - $this->request->set_relation($this->rootId); - - $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode - } - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - $attributes = " "; - if (!$this->rootId || $this->rootId != $this->request->get_relation()) - $attributes = " parent='".$this->request->get_relation()."' "; - - foreach($this->attributes as $k=>$v) - $attributes .= " ".$k."='".$v."'"; - - return "<data".$attributes.">"; - } -} - - -class JSONTreeDataConnector extends TreeDataConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="JSONTreeCommonDataItem"; - if (!$data_type) $data_type="CommonDataProcessor"; - if (!$render_type) $render_type="JSONTreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - protected function output_as_xml($res){ - $result = $this->render_set($res); - if ($this->simple) return $result; - - $data = array(); - if (!$this->rootId || $this->rootId != $this->request->get_relation()) - $data["parent"] = $this->request->get_relation(); - - $data["data"] = $result; - - $this->fill_collections(); - if (!empty($this->options)) - $data["collections"] = $this->options; - - - foreach($this->attributes as $k=>$v) - $data[$k] = $v; - - $data = json_encode($data); - - // return as string - if ($this->as_string) return $data; - - // output direct to response - $out = new OutputWriter($data, ""); - $out->set_type("json"); - $this->event->trigger("beforeOutput", $this, $out); - $out->output("", true, $this->encoding); - } - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=array(); - foreach($options as $k => $v) - $str[]=Array("id"=>$this->xmlentities($k), "value"=>$this->xmlentities($v));//'{"id":"'.$this->xmlentities($k).'", "value":"'.$this->xmlentities($v).'"}'; - $options=$str; - } - $this->options[$name]=$options; - } - - /*! generates xml description for options collections - - @param list - comma separated list of column names, for which options need to be generated - */ - protected function fill_collections($list=""){ - $options = array(); - foreach ($this->options as $k=>$v) { - $name = $k; - if (!is_array($this->options[$name])) - $option=$this->options[$name]->render(); - else - $option=$this->options[$name]; - $options[$name] = $option; - } - $this->options = $options; - $this->extra_output .= "'collections':".json_encode($options); - } - -} - - -class JSONTreeCommonDataItem extends TreeCommonDataItem{ - /*! return self as XML string - */ - function to_xml_start(){ - if ($this->skip) return false; - - $data = array( "id" => $this->get_id() ); - for ($i=0; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - if (isset($this->data[$extra])) - $data[$extra]=$this->data[$extra]; - } - - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $data[$key]=$value; - - if ($this->kids === true) - $data[Connector::$kids_var] = 1; - - return $data; - } - - function to_xml_end(){ - return ""; - } -} - - -?> diff --git a/codebase/dataprocessor.php b/codebase/dataprocessor.php deleted file mode 100644 index 89a4460..0000000 --- a/codebase/dataprocessor.php +++ /dev/null @@ -1,521 +0,0 @@ -<?php
-/*
- @author dhtmlx.com
- @license GPL, see license.txt
-*/
-/*! Base DataProcessor handling
-**/
-
-require_once("xss_filter.php");
-
-class DataProcessor{
- protected $connector;//!< Connector instance
- protected $config;//!< DataConfig instance
- protected $request;//!< DataRequestConfig instance
- static public $action_param ="!nativeeditor_status";
-
- /*! constructor
-
- @param connector
- Connector object
- @param config
- DataConfig object
- @param request
- DataRequestConfig object
- */
- function __construct($connector,$config,$request){
- $this->connector= $connector;
- $this->config=$config;
- $this->request=$request;
- }
-
- /*! convert incoming data name to valid db name
- redirect to Connector->name_data by default
- @param data
- data name from incoming request
- @return
- related db_name
- */
- function name_data($data){
- return $data;
- }
- /*! retrieve data from incoming request and normalize it
-
- @param ids
- array of extected IDs
- @return
- hash of data
- */
- protected function get_post_values($ids){
- $data=array();
- for ($i=0; $i < sizeof($ids); $i++)
- $data[$ids[$i]]=array();
-
- foreach ($_POST as $key => $value) {
- $details=explode("_",$key,2);
- if (sizeof($details)==1) continue;
-
- $name=$this->name_data($details[1]);
- $data[$details[0]][$name]=ConnectorSecurity::filter($value);
- }
-
- return $data;
- }
- protected function get_ids(){
- if (!isset($_POST["ids"]))
- throw new Exception("Incorrect incoming data, ID of incoming records not recognized");
- return explode(",",$_POST["ids"]);
- }
-
- protected function get_operation($rid){
- if (!isset($_POST[$rid."_".DataProcessor::$action_param]))
- throw new Exception("Status of record [{$rid}] not found in incoming request");
- return $_POST[$rid."_".DataProcessor::$action_param];
- }
- /*! process incoming request ( save|update|delete )
- */
- function process(){
- LogMaster::log("DataProcessor object initialized",$_POST);
-
- $results=array();
-
- $ids=$this->get_ids();
- $rows_data=$this->get_post_values($ids);
- $failed=false;
-
- try{
- if ($this->connector->sql->is_global_transaction())
- $this->connector->sql->begin_transaction();
-
- for ($i=0; $i < sizeof($ids); $i++) {
- $rid = $ids[$i];
- LogMaster::log("Row data [{$rid}]",$rows_data[$rid]);
- $status = $this->get_operation($rid);
-
- $action=new DataAction($status,$rid,$rows_data[$rid]);
- $results[]=$action;
- $this->inner_process($action);
- }
-
- } catch(Exception $e){
- LogMaster::log($e);
- $failed=true;
- }
-
- if ($this->connector->sql->is_global_transaction()){
- if (!$failed)
- for ($i=0; $i < sizeof($results); $i++)
- if ($results[$i]->get_status()=="error" || $results[$i]->get_status()=="invalid"){
- $failed=true;
- break;
- }
- if ($failed){
- for ($i=0; $i < sizeof($results); $i++)
- $results[$i]->error();
- $this->connector->sql->rollback_transaction();
- }
- else
- $this->connector->sql->commit_transaction();
- }
-
- $this->output_as_xml($results);
- }
-
- /*! converts status string to the inner mode name
-
- @param status
- external status string
- @return
- inner mode name
- */
- protected function status_to_mode($status){
- switch($status){
- case "updated":
- return "update";
- break;
- case "inserted":
- return "insert";
- break;
- case "deleted":
- return "delete";
- break;
- default:
- return $status;
- break;
- }
- }
- /*! process data updated request received
-
- @param action
- DataAction object
- @return
- DataAction object with details of processing
- */
- protected function inner_process($action){
-
- if ($this->connector->sql->is_record_transaction())
- $this->connector->sql->begin_transaction();
-
- try{
-
- $mode = $this->status_to_mode($action->get_status());
- if (!$this->connector->access->check($mode)){
- LogMaster::log("Access control: {$mode} operation blocked");
- $action->error();
- } else {
- $check = $this->connector->event->trigger("beforeProcessing",$action);
- if (!$action->is_ready())
- $this->check_exts($action,$mode);
- if ($mode == "insert" && $action->get_status() != "error" && $action->get_status() != "invalid")
- $this->connector->sql->new_record_order($action, $this->request);
-
- $check = $this->connector->event->trigger("afterProcessing",$action);
- }
-
- } catch (Exception $e){
- LogMaster::log($e);
- $action->set_status("error");
- if ($action)
- $this->connector->event->trigger("onDBError", $action, $e);
- }
-
- if ($this->connector->sql->is_record_transaction()){
- if ($action->get_status()=="error" || $action->get_status()=="invalid")
- $this->connector->sql->rollback_transaction();
- else
- $this->connector->sql->commit_transaction();
- }
-
- return $action;
- }
-
- /*! check if some event intercepts processing, send data to DataWrapper in other case
-
- @param action
- DataAction object
- @param mode
- name of inner mode ( will be used to generate event names )
- */
- function check_exts($action,$mode){
- $old_config = new DataConfig($this->config);
-
- $this->connector->event->trigger("before".$mode,$action);
- if ($action->is_ready())
- LogMaster::log("Event code for ".$mode." processed");
- else {
- //check if custom sql defined
- $sql = $this->connector->sql->get_sql($mode,$action);
- if ($sql){
- $this->connector->sql->query($sql);
- }
- else{
- $action->sync_config($this->config);
- if ($this->connector->model && method_exists($this->connector->model, $mode)){
- call_user_func(array($this->connector->model, $mode), $action);
- LogMaster::log("Model object process action: ".$mode);
- }
- if (!$action->is_ready()){
- $method=array($this->connector->sql,$mode);
- if (!is_callable($method))
- throw new Exception("Unknown dataprocessing action: ".$mode);
- call_user_func($method,$action,$this->request);
- }
- }
- }
- $this->connector->event->trigger("after".$mode,$action);
-
- $this->config->copy($old_config);
- }
-
- /*! output xml response for dataprocessor
-
- @param results
- array of DataAction objects
- */
- function output_as_xml($results){
- LogMaster::log("Edit operation finished",$results);
- ob_clean();
- header("Content-type:text/xml");
- echo "<?xml version='1.0' ?>";
- echo "<data>";
- for ($i=0; $i < sizeof($results); $i++)
- echo $results[$i]->to_xml();
- echo "</data>";
- }
-
-}
-
-/*! contain all info related to action and controls customizaton
-**/
-class DataAction{
- private $status; //!< cuurent status of record
- private $id;//!< id of record
- private $data;//!< data hash of record
- private $userdata;//!< hash of extra data , attached to record
- private $nid;//!< new id value , after operation executed
- private $output;//!< custom output to client side code
- private $attrs;//!< hash of custtom attributes
- private $ready;//!< flag of operation's execution
- private $addf;//!< array of added fields
- private $delf;//!< array of deleted fields
-
-
- /*! constructor
-
- @param status
- current operation status
- @param id
- record id
- @param data
- hash of data
- */
- function __construct($status,$id,$data){
- $this->status=$status;
- $this->id=$id;
- $this->data=$data;
- $this->nid=$id;
-
- $this->output="";
- $this->attrs=array();
- $this->ready=false;
-
- $this->addf=array();
- $this->delf=array();
- }
-
-
- /*! add custom field and value to DB operation
-
- @param name
- name of field which will be added to DB operation
- @param value
- value which will be used for related field in DB operation
- */
- function add_field($name,$value){
- LogMaster::log("adding field: ".$name.", with value: ".$value);
- $this->data[$name]=$value;
- $this->addf[]=$name;
- }
- /*! remove field from DB operation
-
- @param name
- name of field which will be removed from DB operation
- */
- function remove_field($name){
- LogMaster::log("removing field: ".$name);
- $this->delf[]=$name;
- }
-
- /*! sync field configuration with external object
-
- @param slave
- SQLMaster object
- @todo
- check , if all fields removed then cancel action
- */
- function sync_config($slave){
- foreach ($this->addf as $k => $v)
- $slave->add_field($v);
- foreach ($this->delf as $k => $v)
- $slave->remove_field($v);
- }
- /*! get value of some record's propery
-
- @param name
- name of record's property ( name of db field or alias )
- @return
- value of related property
- */
- function get_value($name){
- if (!array_key_exists($name,$this->data)){
- LogMaster::log("Incorrect field name used: ".$name);
- LogMaster::log("data",$this->data);
- return "";
- }
- return $this->data[$name];
- }
- /*! set value of some record's propery
-
- @param name
- name of record's property ( name of db field or alias )
- @param value
- value of related property
- */
- function set_value($name,$value){
- LogMaster::log("change value of: ".$name." as: ".$value);
- $this->data[$name]=$value;
- }
- /*! get hash of data properties
-
- @return
- hash of data properties
- */
- function get_data(){
- return $this->data;
- }
- /*! get some extra info attached to record
- deprecated, exists just for backward compatibility, you can use set_value instead of it
- @param name
- name of userdata property
- @return
- value of related userdata property
- */
- function get_userdata_value($name){
- return $this->get_value($name);
- }
- /*! set some extra info attached to record
- deprecated, exists just for backward compatibility, you can use get_value instead of it
- @param name
- name of userdata property
- @param value
- value of userdata property
- */
- function set_userdata_value($name,$value){
- return $this->set_value($name,$value);
- }
- /*! get current status of record
-
- @return
- string with status value
- */
- function get_status(){
- return $this->status;
- }
- /*! assign new status to the record
-
- @param status
- new status value
- */
- function set_status($status){
- $this->status=$status;
- }
- /*! set id
- @param id
- id value
- */
- function set_id($id) {
- $this->id = $id;
- LogMaster::log("Change id: ".$id);
- }
- /*! set id
- @param id
- id value
- */
- function set_new_id($id) {
- $this->nid = $id;
- LogMaster::log("Change new id: ".$id);
- }
- /*! get id of current record
-
- @return
- id of record
- */
- function get_id(){
- return $this->id;
- }
- /*! sets custom response text
-
- can be accessed through defineAction on client side. Text wrapped in CDATA, so no extra escaping necessary
- @param text
- custom response text
- */
- function set_response_text($text){
- $this->set_response_xml("<![CDATA[".$text."]]>");
- }
- /*! sets custom response xml
-
- can be accessed through defineAction on client side
- @param text
- string with XML data
- */
- function set_response_xml($text){
- $this->output=$text;
- }
- /*! sets custom response attributes
-
- can be accessed through defineAction on client side
- @param name
- name of custom attribute
- @param value
- value of custom attribute
- */
- function set_response_attribute($name,$value){
- $this->attrs[$name]=$value;
- }
- /*! check if action finished
-
- @return
- true if action finished, false otherwise
- */
- function is_ready(){
- return $this->ready;
- }
- /*! return new id value
-
- equal to original ID normally, after insert operation - value assigned for new DB record
- @return
- new id value
- */
- function get_new_id(){
- return $this->nid;
- }
-
- /*! set result of operation as error
- */
- function error(){
- $this->status="error";
- $this->ready=true;
- }
- /*! set result of operation as invalid
- */
- function invalid(){
- $this->status="invalid";
- $this->ready=true;
- }
- /*! confirm successful opeation execution
- @param id
- new id value, optional
- */
- function success($id=false){
- if ($id!==false)
- $this->nid = $id;
- $this->ready=true;
- }
- /*! convert DataAction to xml format compatible with client side dataProcessor
- @return
- DataAction operation report as XML string
- */
- function to_xml(){
- $str="<action type='{$this->status}' sid='{$this->id}' tid='{$this->nid}' ";
- foreach ($this->attrs as $k => $v) {
- $str.=$k."='".$this->xmlentities($v)."' ";
- }
- $str.=">{$this->output}</action>";
- return $str;
- }
-
- /*! replace xml unsafe characters
-
- @param string
- string to be escaped
- @return
- escaped string
- */
- public function xmlentities($string) {
- return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string);
- }
-
- /*! convert self to string ( for logs )
-
- @return
- DataAction operation report as plain string
- */
- function __toString(){
- return "action:{$this->status}; sid:{$this->id}; tid:{$this->nid};";
- }
-
-
-}
-
-
-?>
\ No newline at end of file diff --git a/codebase/dataview_connector.php b/codebase/dataview_connector.php deleted file mode 100644 index fe2c9fd..0000000 --- a/codebase/dataview_connector.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); - -/*! DataItem class for DataView component -**/ -class DataViewDataItem extends DataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - - $str="<item id='".$this->get_id()."' >"; - for ($i=0; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - $str.="<".$extra."><![CDATA[".$this->data[$extra]."]]></".$extra.">"; - } - return $str."</item>"; - } -} - - -/*! Connector class for DataView -**/ -class DataViewConnector extends Connector{ - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="DataViewDataItem"; - if (!$data_type) $data_type="DataProcessor"; - parent::__construct($res,$type,$item_type,$data_type); - } - - //parse GET scoope, all operations with incoming request must be done here - function parse_request(){ - parent::parse_request(); - - if (isset($_GET["posStart"]) && isset($_GET["count"])) - $this->request->set_limit($_GET["posStart"],$_GET["count"]); - } - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - $attributes = ""; - foreach($this->attributes as $k=>$v) - $attributes .= " ".$k."='".$v."'"; - - if ($this->dload){ - if ($pos=$this->request->get_start()) - return "<data pos='".$pos."'".$attributes.">"; - else - return "<data total_count='".$this->sql->get_size($this->request)."'".$attributes.">"; - } - else - return "<data".$attributes.">"; - } -} -?>
\ No newline at end of file diff --git a/codebase/db_adodb.php b/codebase/db_adodb.php deleted file mode 100644 index 5250c21..0000000 --- a/codebase/db_adodb.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! Implementation of DataWrapper for PostgreSQL -**/ -class AdoDBDataWrapper extends DBDataWrapper{ - protected $last_result; - public function query($sql){ - LogMaster::log($sql); - if (is_array($sql)) { - $res = $this->connection->SelectLimit($sql['sql'], $sql['numrows'], $sql['offset']); - } else { - $res = $this->connection->Execute($sql); - } - - if ($res===false) throw new Exception("ADODB operation failed\n".$this->connection->ErrorMsg()); - $this->last_result = $res; - return $res; - } - - public function get_next($res){ - if (!$res) - $res = $this->last_result; - - if ($res->EOF) - return false; - - $row = $res->GetRowAssoc(false); - $res->MoveNext(); - return $row; - } - - protected function get_new_id(){ - return $this->connection->Insert_ID(); - } - - public function escape($data){ - return $this->connection->addq($data); - } - - /*! escape field name to prevent sql reserved words conflict - @param data - unescaped data - @return - escaped data - */ - public function escape_name($data){ - if ((strpos($data,"`")!==false || is_int($data)) || (strpos($data,".")!==false)) - return $data; - return '`'.$data.'`'; - } - - - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - - if ($start || $count) { - $sql=array("sql"=>$sql,'numrows'=>$count, 'offset'=>$start); - } - return $sql; - } - -} -?>
\ No newline at end of file diff --git a/codebase/db_common.php b/codebase/db_common.php deleted file mode 100644 index f6391d2..0000000 --- a/codebase/db_common.php +++ /dev/null @@ -1,1157 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("tools.php"); - -/*! manager of data request -**/ -class DataRequestConfig{ - private $filters; //!< array of filtering rules - private $relation=false; //!< ID or other element used for linking hierarchy - private $sort_by; //!< sorting field - private $start; //!< start of requested data - private $count; //!< length of requested data - - private $order = false; - private $user; - private $version; - - //for render_sql - private $source; //!< souce table or another source destination - private $fieldset; //!< set of data, which need to be retrieved from source - - /*! constructor - - @param proto - DataRequestConfig object, optional, if provided then new request object will copy all properties from provided one - */ - public function __construct($proto=false){ - if ($proto) - $this->copy($proto); - else{ - $start=0; - $this->filters=array(); - $this->sort_by=array(); - } - } - - /*! copy parameters of source object into self - - @param proto - source object - */ - public function copy($proto){ - $this->filters =$proto->get_filters(); - $this->sort_by =$proto->get_sort_by(); - $this->count =$proto->get_count(); - $this->start =$proto->get_start(); - $this->source =$proto->get_source(); - $this->fieldset =$proto->get_fieldset(); - $this->relation =$proto->get_relation(); - $this->user = $proto->user; - $this->version = $proto->version; - } - - /*! convert self to string ( for logs ) - @return - self as plain string, - */ - public function __toString(){ - $str="Source:{$this->source}\nFieldset:{$this->fieldset}\nWhere:"; - for ($i=0; $i < sizeof($this->filters); $i++) - $str.=$this->filters[$i]["name"]." ".$this->filters[$i]["operation"]." ".$this->filters[$i]["value"].";"; - $str.="\nStart:{$this->start}\nCount:{$this->count}\n"; - for ($i=0; $i < sizeof($this->sort_by); $i++) - $str.=$this->sort_by[$i]["name"]."=".$this->sort_by[$i]["direction"].";"; - $str.="\nRelation:{$this->relation}"; - return $str; - } - - /*! returns set of filtering rules - @return - set of filtering rules - */ - public function get_filters(){ - return $this->filters; - } - public function &get_filters_ref(){ - return $this->filters; - } - public function set_filters($data){ - $this->filters=$data; - } - - - public function get_order(){ - return $this->order; - } - public function set_order($order){ - $this->order = $order; - } - public function get_user(){ - return $this->user; - } - public function set_user($user){ - $this->user = $user; - } - public function get_version(){ - return $this->version; - } - public function set_version($version){ - $this->version = $version; - } - - /*! returns list of used fields - @return - list of used fields - */ - public function get_fieldset(){ - return $this->fieldset; - } - /*! returns name of source table - @return - name of source table - */ - public function get_source(){ - return $this->source; - } - /*! returns set of sorting rules - @return - set of sorting rules - */ - public function get_sort_by(){ - return $this->sort_by; - } - public function &get_sort_by_ref(){ - return $this->sort_by; - } - public function set_sort_by($data){ - $this->sort_by=$data; - } - - /*! returns start index - @return - start index - */ - public function get_start(){ - return $this->start; - } - /*! returns count of requested records - @return - count of requested records - */ - public function get_count(){ - return $this->count; - } - /*! returns name of relation id - @return - relation id name - */ - public function get_relation(){ - return $this->relation; - } - - /*! sets sorting rule - - @param field - name of column - @param order - direction of sorting - */ - public function set_sort($field,$order=false){ - if (!$field && !$order) - $this->sort_by=array(); - else{ - if ($order===false) - $this->sort_by[] = $field; - else { - $order=strtolower($order)=="asc"?"ASC":"DESC"; - $this->sort_by[]=array("name"=>$field,"direction" => $order); - } - } - } - /*! sets filtering rule - - @param field - name of column - @param value - value for filtering - @param operation - operation for filtering, optional , LIKE by default - */ - public function set_filter($field,$value=false,$operation=false){ - if ($value === false) - array_push($this->filters,$field); - else - array_push($this->filters,array("name"=>$field,"value"=>$value,"operation"=>$operation)); - } - - /*! sets list of used fields - - @param value - list of used fields - */ - public function set_fieldset($value){ - $this->fieldset=$value; - } - /*! sets name of source table - - @param value - name of source table - */ - public function set_source($value){ - if (is_string($value)) - $value = trim($value); - $this->source = $value; - if (!$this->source) throw new Exception("Source of data can't be empty"); - } - /*! sets data limits - - @param start - start index - @param count - requested count of data - */ - public function set_limit($start,$count){ - $this->start=$start; - $this->count=$count; - } - /*! sets name of relation id - - @param value - name of relation id field - */ - public function set_relation($value){ - $this->relation=$value; - } - /*! parse incoming sql, to fill other properties - - @param sql - incoming sql string - */ - public function parse_sql($sql, $as_is = false){ - if ($as_is){ - $this->fieldset = $sql; - return; - } - - $sql= preg_replace("/[ \n\t]+limit[\n\t ,0-9]*$/i","",$sql); - - $data = preg_split("/[ \n\t]+\\_from\\_/i",$sql,2); - if (count($data)!=2) - $data = preg_split("/[ \n\t]+from/i",$sql,2); - $this->fieldset = preg_replace("/^[\s]*select/i","",$data[0],1); - - //Ignore next type of calls - //direct call to stored procedure without FROM - if ((count($data) == 1) || - //UNION select - preg_match("#[ \n\r\t]union[ \n\t\r]#i", $sql)){ - $this->fieldset = $sql; - return; - } - - $table_data = preg_split("/[ \n\t]+where/i",$data[1],2); - /* - if sql code contains group_by we will place all sql query in the FROM - it will not allow to use any filtering against the query - still it is better than just generate incorrect sql commands for any group by query - */ - if (sizeof($table_data)>1 && !preg_match("#.*group by.*#i",$table_data[1])){ //where construction exists - $this->set_source($table_data[0]); - $where_data = preg_split("/[ \n\t]+order[ ]+by/i",$table_data[1],2); - $this->filters[]=$where_data[0]; - if (sizeof($where_data)==1) return; //end of line detected - $data=$where_data[1]; - } else { - $table_data = preg_split("/[ \n\t]+order[ ]+by/i",$data[1],2); - $this->set_source($table_data[0]); - if (sizeof($table_data)==1) return; //end of line detected - $data=$table_data[1]; - } - - if (trim($data)){ //order by construction exists - $s_data = preg_split("/\\,/",trim($data)); - for ($i=0; $i < count($s_data); $i++) { - $data=preg_split("/[ ]+/",trim($s_data[$i]),2); - if (sizeof($data)>1) - $this->set_sort($data[0],$data[1]); - else - $this->set_sort($data[0]); - } - - } - } -} - -/*! manager of data configuration -**/ -class DataConfig{ - public $id;////!< name of ID field - public $relation_id;//!< name or relation ID field - public $text;//!< array of text fields - public $data;//!< array of all known fields , fields which exists only in this collection will not be included in dataprocessor's operations - - - /*! converts self to the string, for logging purposes - **/ - public function __toString(){ - $str="ID:{$this->id['db_name']}(ID:{$this->id['name']})\n"; - $str.="Relation ID:{$this->relation_id['db_name']}({$this->relation_id['name']})\n"; - $str.="Data:"; - for ($i=0; $i<sizeof($this->text); $i++) - $str.="{$this->text[$i]['db_name']}({$this->text[$i]['name']}),"; - - $str.="\nExtra:"; - for ($i=0; $i<sizeof($this->data); $i++) - $str.="{$this->data[$i]['db_name']}({$this->data[$i]['name']}),"; - - return $str; - } - - /*! removes un-used fields from configuration - @param name - name of field , which need to be preserved - */ - public function minimize($name){ - for ($i=0; $i < sizeof($this->text); $i++){ - if ($this->text[$i]["db_name"]==$name || $this->text[$i]["name"]==$name){ - $this->text[$i]["name"]="value"; - $this->data=array($this->text[$i]); - $this->text=array($this->text[$i]); - return; - } - } - throw new Exception("Incorrect dataset minimization, master field not found."); - } - - public function limit_fields($data){ - if (isset($this->full_field_list)) - $this->restore_fields(); - $this->full_field_list = $this->text; - $this->text = array(); - - for ($i=0; $i < sizeof($this->full_field_list); $i++) { - if (array_key_exists($this->full_field_list[$i]["name"],$data)) - $this->text[] = $this->full_field_list[$i]; - } - } - - public function restore_fields(){ - if (isset($this->full_field_list)) - $this->text = $this->full_field_list; - } - - /*! initialize inner state by parsing configuration parameters - - @param id - name of id field - @param fields - name of data field(s) - @param extra - name of extra field(s) - @param relation - name of relation field - - */ - public function init($id,$fields,$extra,$relation){ - $this->id = $this->parse($id,false); - $this->text = $this->parse($fields,true); - $this->data = array_merge($this->text,$this->parse($extra,true)); - $this->relation_id = $this->parse($relation,false); - } - - /*! parse configuration string - - @param key - key string from configuration - @param mode - multi names flag - @return - parsed field name object - */ - private function parse($key,$mode){ - if ($mode){ - if (!$key) return array(); - $key=explode(",",$key); - for ($i=0; $i < sizeof($key); $i++) - $key[$i]=$this->parse($key[$i],false); - return $key; - } - $key=explode("(",$key); - $data=array("db_name"=>trim($key[0]), "name"=>trim($key[0])); - if (sizeof($key)>1) - $data["name"]=substr(trim($key[1]),0,-1); - return $data; - } - - /*! constructor - init public collectons - @param proto - DataConfig object used as prototype for new one, optional - */ - public function __construct($proto=false){ - if ($proto!==false) - $this->copy($proto); - else { - $this->text=array(); - $this->data=array(); - $this->id=array("name"=>"dhx_auto_id", "db_name"=>"dhx_auto_id"); - $this->relation_id=array("name"=>"", "db_name"=>""); - } - } - - /*! copy properties from source object - - @param proto - source object - */ - public function copy($proto){ - $this->id = $proto->id; - $this->relation_id = $proto->relation_id; - $this->text = $proto->text; - $this->data = $proto->data; - } - - /*! returns list of data fields (db_names) - @return - list of data fields ( ready to be used in SQL query ) - */ - public function db_names_list($db){ - $out=array(); - if ($this->id["db_name"]) - array_push($out,$db->escape_name($this->id["db_name"])); - if ($this->relation_id["db_name"]) - array_push($out,$db->escape_name($this->relation_id["db_name"])); - - for ($i=0; $i < sizeof($this->data); $i++){ - if ($this->data[$i]["db_name"]!=$this->data[$i]["name"]) - $out[]=$db->escape_name($this->data[$i]["db_name"])." as ".$this->data[$i]["name"]; - else - $out[]=$db->escape_name($this->data[$i]["db_name"]); - } - - return $out; - } - - /*! add field to dataset config ($text collection) - - added field will be used in all auto-generated queries - @param name - name of field - @param aliase - aliase of field, optional - */ - public function add_field($name,$aliase=false){ - if ($aliase===false) $aliase=$name; - - //adding to list of data-active fields - if ($this->id["db_name"]==$name || $this->relation_id["db_name"] == $name){ - LogMaster::log("Field name already used as ID, be sure that it is really necessary."); - } - if ($this->is_field($name,$this->text)!=-1) - throw new Exception('Data field already registered: '.$name); - array_push($this->text,array("db_name"=>$name,"name"=>$aliase)); - - //adding to list of all fields as well - if ($this->is_field($name,$this->data)==-1) - array_push($this->data,array("db_name"=>$name,"name"=>$aliase)); - - } - - /*! remove field from dataset config ($text collection) - - removed field will be excluded from all auto-generated queries - @param name - name of field, or aliase of field - */ - public function remove_field($name){ - $ind = $this->is_field($name); - if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name); - array_splice($this->text,$ind,1); - //we not deleting field from $data collection, so it will not be included in data operation, but its data still available - } - - /*! remove field from dataset config ($text and $data collections) - - removed field will be excluded from all auto-generated queries - @param name - name of field, or aliase of field - */ - public function remove_field_full($name){ - $ind = $this->is_field($name); - if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name); - array_splice($this->text,$ind,1); - - $ind = $this->is_field($name, $this->data); - if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name); - array_splice($this->data,$ind,1); - } - - /*! check if field is a part of dataset - - @param name - name of field - @param collection - collection, against which check will be done, $text collection by default - @return - returns true if field already a part of dataset, otherwise returns true - */ - public function is_field($name,$collection = false){ - if (!$collection) - $collection=$this->text; - - for ($i=0; $i<sizeof($collection); $i++) - if ($collection[$i]["name"] == $name || $collection[$i]["db_name"] == $name) return $i; - return -1; - } - - -} - -/*! Base abstraction class, used for data operations - Class abstract access to data, it is a base class to all DB wrappers -**/ -abstract class DataWrapper{ - protected $connection; - protected $config;//!< DataConfig instance - /*! constructor - @param connection - DB connection - @param config - DataConfig instance - */ - public function __construct($connection = false,$config = false){ - $this->config=$config; - $this->connection=$connection; - } - - /*! insert record in storage - - @param data - DataAction object - @param source - DataRequestConfig object - */ - abstract function insert($data,$source); - - /*! delete record from storage - - @param data - DataAction object - @param source - DataRequestConfig object - */ - abstract function delete($data,$source); - - /*! update record in storage - - @param data - DataAction object - @param source - DataRequestConfig object - */ - abstract function update($data,$source); - - /*! select record from storage - - @param source - DataRequestConfig object - */ - abstract function select($source); - - /*! get size of storage - - @param source - DataRequestConfig object - */ - abstract function get_size($source); - - /*! get all variations of field in storage - - @param name - name of field - @param source - DataRequestConfig object - */ - abstract function get_variants($name,$source); - - /*! checks if there is a custom sql string for specified db operation - - @param name - name of DB operation - @param data - hash of data - @return - sql string - */ - public function get_sql($name,$data){ - return ""; //custom sql not supported by default - } - - /*! begins DB transaction - */ - public function begin_transaction(){ - throw new Exception("Data wrapper not supports transactions."); - } - /*! commits DB transaction - */ - public function commit_transaction(){ - throw new Exception("Data wrapper not supports transactions."); - } - /*! rollbacks DB transaction - */ - public function rollback_transaction(){ - throw new Exception("Data wrapper not supports transactions."); - } -} - -/*! Common database abstraction class - Class provides base set of methods to access and change data in DB, class used as a base for DB-specific wrappers -**/ -abstract class DBDataWrapper extends DataWrapper{ - private $transaction = false; //!< type of transaction - private $sequence=false;//!< sequence name - private $sqls = array();//!< predefined sql actions - - - /*! assign named sql query - @param name - name of sql query - @param data - sql query text - */ - public function attach($name,$data){ - $name=strtolower($name); - $this->sqls[$name]=$data; - } - /*! replace vars in sql string with actual values - - @param matches - array of field name matches - @return - value for the var name - */ - public function get_sql_callback($matches){ - return $this->escape($this->temp->get_value($matches[1])); - } - public function get_sql($name,$data){ - $name=strtolower($name); - if (!array_key_exists($name,$this->sqls)) return ""; - - - $str = $this->sqls[$name]; - $this->temp = $data; //dirty - $str = preg_replace_callback('|\{([^}]+)\}|',array($this,"get_sql_callback"),$str); - unset ($this->temp); //dirty - return $str; - } - - public function new_record_order($action, $source){ - $order = $source->get_order(); - if ($order){ - $table = $source->get_source(); - $id = $this->config->id["db_name"]; - $idvalue = $action->get_new_id(); - - $max = $this->queryOne("SELECT MAX($order) as dhx_maxvalue FROM $table"); - $dhx_maxvalue = $max["dhx_maxvalue"] + 1; - - $this->query("UPDATE $table SET $order = $dhx_maxvalue WHERE $id = $idvalue"); - } - } - - public function order($data, $source){ - //id of moved item - $id1 = $this->escape($data->get_value("id")); - //id of target item - $target = $data->get_value("target"); - if (strpos($target, "next:") !== false){ - $dropnext = true; - $id2 = str_replace("next:", "", $target); - } else { - $id2 = $target; - } - $id2 = $this->escape($id2); - - - //for tree like components we need to limit out queries to the affected branch only - $relation_select = $relation_update = $relation_sql_out = $relation_sql = ""; - if ($this->config->relation_id["name"]){ - $relation = $data->get_value($this->config->relation_id["name"]); - if ($relation !== false && $relation !== ""){ - $relation_sql = " ".$this->config->relation_id["db_name"]." = '".$this->escape($relation)."' AND "; - $relation_select = $this->config->relation_id["db_name"]." as dhx_parent, "; - $relation_update = " ".$this->config->relation_id["db_name"]." = '".$this->escape($relation)."', "; - } - } - - - $name = $source->get_order(); - $table = $source->get_source(); - $idkey = $this->config->id["db_name"]; - - $source = $this->queryOne("select $relation_select $name as dhx_index from $table where $idkey = '$id1'"); - $source_index = $source["dhx_index"] ? $source["dhx_index"] : 0; - if ($relation_sql) - $relation_sql_out = " ".$this->config->relation_id["db_name"]." = '".$this->escape($source["dhx_parent"])."' AND "; - - $this->query("update $table set $name = $name - 1 where $relation_sql_out $name >= $source_index"); - - if ($id2 !== ""){ - $target = $this->queryOne("select $name as dhx_index from $table where $idkey = '$id2'"); - $target_index = $target["dhx_index"]; - if (!$target_index) - $target_index = 0; - if ($dropnext) - $target_index += 1; - $this->query("update $table set $name = $name + 1 where $relation_sql $name >= $target_index"); - } else { - $target = $this->queryOne("select max($name) as dhx_index from $table"); - $target_index = ($target["dhx_index"] ? $target["dhx_index"] : 0)+1; - } - - $this->query("update $table set $relation_update $name = $target_index where $idkey = '$id1'"); - } - - public function insert($data,$source){ - $sql=$this->insert_query($data,$source); - $this->query($sql); - $data->success($this->get_new_id()); - } - public function delete($data,$source){ - $sql=$this->delete_query($data,$source); - $this->query($sql); - $data->success(); - } - public function update($data,$source){ - $sql=$this->update_query($data,$source); - $this->query($sql); - $data->success(); - } - public function select($source){ - $select=$source->get_fieldset(); - if (!$select){ - $select=$this->config->db_names_list($this); - $select = implode(",",$select); - } - - $where=$this->build_where($source->get_filters(),$source->get_relation()); - $sort=$this->build_order($source->get_sort_by()); - - return $this->query($this->select_query($select,$source->get_source(),$where,$sort,$source->get_start(),$source->get_count())); - } - public function queryOne($sql){ - $res = $this->query($sql); - if ($res) - return $this->get_next($res); - return false; - } - public function get_size($source){ - $count = new DataRequestConfig($source); - - $count->set_fieldset("COUNT(*) as DHX_COUNT "); - $count->set_sort(null); - $count->set_limit(0,0); - - $res=$this->select($count); - $data=$this->get_next($res); - if (array_key_exists("DHX_COUNT",$data)) return $data["DHX_COUNT"]; - else return $data["dhx_count"]; //postgresql - } - public function get_variants($name,$source){ - $count = new DataRequestConfig($source); - $count->set_fieldset("DISTINCT ".$this->escape_name($name)." as value"); - $sort = new SortInterface($source); - $count->set_sort(null); - for ($i = 0; $i < count($sort->rules); $i++) { - if ($sort->rules[$i]['name'] == $name) - $count->set_sort($sort->rules[$i]['name'], $sort->rules[$i]['direction']); - } - $count->set_limit(0,0); - return $this->select($count); - } - - public function sequence($sec){ - $this->sequence=$sec; - } - - - /*! create an sql string for filtering rules - - @param rules - set of filtering rules - @param relation - name of relation id field - @return - sql string with filtering rules - */ - protected function build_where($rules,$relation=false){ - $sql=array(); - for ($i=0; $i < sizeof($rules); $i++) - if (is_string($rules[$i])) - array_push($sql,"(".$rules[$i].")"); - else { - $filtervalue = $rules[$i]["value"]; - $filteroperation = $rules[$i]["operation"]; - if ($filtervalue!=""){ - if (!$filteroperation) - array_push($sql,$this->escape_name($rules[$i]["name"])." LIKE '%".$this->escape($filtervalue)."%'"); - else { - if ($filteroperation != "IN") - $filtervalue = "'".$this->escape($filtervalue)."'"; - - array_push($sql,$this->escape_name($rules[$i]["name"])." ".$filteroperation." ".$filtervalue); - } - } - } - - if ($relation !== false && $relation !== ""){ - $relsql = $this->escape_name($this->config->relation_id["db_name"])." = '".$this->escape($relation)."'"; - if ($relation == "0") - $relsql = "( ".$relsql." OR ".$this->escape_name($this->config->relation_id["db_name"])." IS NULL )"; - - array_push($sql,$relsql); - } - return implode(" AND ",$sql); - } - /*! convert sorting rules to sql string - - @param by - set of sorting rules - @return - sql string for set of sorting rules - */ - protected function build_order($by){ - if (!sizeof($by)) return ""; - $out = array(); - for ($i=0; $i < sizeof($by); $i++) - if (is_string($by[$i])) - $out[] = $by[$i]; - else if ($by[$i]["name"]) - $out[]=$this->escape_name($by[$i]["name"])." ".$by[$i]["direction"]; - return implode(",",$out); - } - - /*! generates sql code for select operation - - @param select - list of fields in select - @param from - table name - @param where - list of filtering rules - @param sort - list of sorting rules - @param start - start index of fetching - @param count - count of records to fetch - @return - sql string for select operation - */ - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - if ($start || $count) $sql.=" LIMIT ".$start.",".$count; - return $sql; - } - /*! generates update sql - - @param data - DataAction object - @param request - DataRequestConfig object - @return - sql string, which updates record with provided data - */ - protected function update_query($data,$request){ - $sql="UPDATE ".$request->get_source()." SET "; - $temp=array(); - for ($i=0; $i < sizeof($this->config->text); $i++) { - $step=$this->config->text[$i]; - - if ($data->get_value($step["name"])===Null) - $step_value ="Null"; - else - $step_value = "'".$this->escape($data->get_value($step["name"]))."'"; - $temp[$i]= $this->escape_name($step["db_name"])."=". $step_value; - } - if ($relation = $this->config->relation_id["db_name"]){ - $temp[]= $this->escape_name($relation)."='".$this->escape($data->get_value($relation))."'"; - } - $sql.=implode(",",$temp)." WHERE ".$this->escape_name($this->config->id["db_name"])."='".$this->escape($data->get_id())."'"; - - //if we have limited set - set constraints - $where=$this->build_where($request->get_filters()); - if ($where) $sql.=" AND (".$where.")"; - - return $sql; - } - - /*! generates delete sql - - @param data - DataAction object - @param request - DataRequestConfig object - @return - sql string, which delete record - */ - protected function delete_query($data,$request){ - $sql="DELETE FROM ".$request->get_source(); - $sql.=" WHERE ".$this->escape_name($this->config->id["db_name"])."='".$this->escape($data->get_id())."'"; - - //if we have limited set - set constraints - $where=$this->build_where($request->get_filters()); - if ($where) $sql.=" AND (".$where.")"; - - return $sql; - } - - /*! generates insert sql - - @param data - DataAction object - @param request - DataRequestConfig object - @return - sql string, which inserts new record with provided data - */ - protected function insert_query($data,$request){ - $temp_n=array(); - $temp_v=array(); - foreach($this->config->text as $k => $v){ - $temp_n[$k]=$this->escape_name($v["db_name"]); - if ($data->get_value($v["name"])===Null) - $temp_v[$k]="Null"; - else - $temp_v[$k]="'".$this->escape($data->get_value($v["name"]))."'"; - } - if ($relation = $this->config->relation_id["db_name"]){ - $temp_n[]=$this->escape_name($relation); - $temp_v[]="'".$this->escape($data->get_value($relation))."'"; - } - if ($this->sequence){ - $temp_n[]=$this->escape_name($this->config->id["db_name"]); - $temp_v[]=$this->sequence; - } - - $sql="INSERT INTO ".$request->get_source()."(".implode(",",$temp_n).") VALUES (".implode(",",$temp_v).")"; - - return $sql; - } - - /*! sets the transaction mode, used by dataprocessor - - @param mode - mode name - */ - public function set_transaction_mode($mode){ - if ($mode!="none" && $mode!="global" && $mode!="record") - throw new Exception("Unknown transaction mode"); - $this->transaction=$mode; - } - /*! returns true if global transaction mode was specified - @return - true if global transaction mode was specified - */ - public function is_global_transaction(){ - return $this->transaction == "global"; - } - /*! returns true if record transaction mode was specified - @return - true if record transaction mode was specified - */ - public function is_record_transaction(){ - return $this->transaction == "record"; - } - - - public function begin_transaction(){ - $this->query("BEGIN"); - } - public function commit_transaction(){ - $this->query("COMMIT"); - } - public function rollback_transaction(){ - $this->query("ROLLBACK"); - } - - /*! exec sql string - - @param sql - sql string - @return - sql result set - */ - abstract public function query($sql); - /*! returns next record from result set - - @param res - sql result set - @return - hash of data - */ - abstract public function get_next($res); - /*! returns new id value, for newly inserted row - @return - new id value, for newly inserted row - */ - abstract public function get_new_id(); - /*! escape data to prevent sql injections - @param data - unescaped data - @return - escaped data - */ - abstract public function escape($data); - - /*! escape field name to prevent sql reserved words conflict - @param data - unescaped data - @return - escaped data - */ - public function escape_name($data){ - return $data; - } - - /*! get list of tables in the database - - @return - array of table names - */ - public function tables_list() { - throw new Exception("Not implemented"); - } - - /*! returns list of fields for the table in question - - @param table - name of table in question - @return - array of field names - */ - public function fields_list($table) { - throw new Exception("Not implemented"); - } - -} - -class ArrayDBDataWrapper extends DBDataWrapper{ - public function get_next($res){ - if ($res->index < sizeof($res->data)) - return $res->data[$res->index++]; - } - public function select($sql){ - if ($this->config->relation_id["db_name"] == "") { - if ($sql->get_relation() == "0" || $sql->get_relation() == "") { - return new ArrayQueryWrapper($this->connection); - } else { - return new ArrayQueryWrapper(array()); - } - } - - $relation_id = $this->config->relation_id["db_name"]; - $result = array(); - - for ($i = 0; $i < count($this->connection); $i++) { - $item = $this->connection[$i]; - if (!isset($item[$relation_id])) continue; - if ($item[$relation_id] == $sql->get_relation()) - $result[] = $item; - - } - - return new ArrayQueryWrapper($result); - } - public function query($sql){ - throw new Exception("Not implemented"); - } - public function escape($value){ - throw new Exception("Not implemented"); - } - public function get_new_id(){ - throw new Exception("Not implemented"); - } -} - -class ArrayQueryWrapper{ - public function __construct($data){ - $this->data = $data; - $this->index = 0; - } -} -/*! Implementation of DataWrapper for MySQL -**/ -class MySQLDBDataWrapper extends DBDataWrapper{ - protected $last_result; - public function query($sql){ - LogMaster::log($sql); - $res=mysql_query($sql,$this->connection); - if ($res===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); - $this->last_result = $res; - return $res; - } - - public function get_next($res){ - if (!$res) - $res = $this->last_result; - - return mysql_fetch_assoc($res); - } - - public function get_new_id(){ - return mysql_insert_id($this->connection); - } - - public function escape($data){ - return mysql_real_escape_string($data, $this->connection); - } - - public function tables_list() { - $result = mysql_query("SHOW TABLES"); - if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); - - $tables = array(); - while ($table = mysql_fetch_array($result)) { - $tables[] = $table[0]; - } - return $tables; - } - - public function fields_list($table) { - $result = mysql_query("SHOW COLUMNS FROM `".$table."`"); - if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection)); - - $fields = array(); - $id = ""; - while ($field = mysql_fetch_assoc($result)) { - if ($field['Key'] == "PRI") - $id = $field["Field"]; - else - $fields[] = $field["Field"]; - } - return array("fields" => $fields, "key" => $id ); - } - - /*! escape field name to prevent sql reserved words conflict - @param data - unescaped data - @return - escaped data - */ - public function escape_name($data){ - if ((strpos($data,"`")!==false || is_int($data)) || (strpos($data,".")!==false)) - return $data; - return '`'.$data.'`'; - } -} -?>
\ No newline at end of file diff --git a/codebase/db_excel.php b/codebase/db_excel.php deleted file mode 100644 index 6c0e347..0000000 --- a/codebase/db_excel.php +++ /dev/null @@ -1,190 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once('db_common.php'); - -if (!defined('DHX_IGNORE_EMPTY_ROWS')) { - define('DHX_IGNORE_EMPTY_ROWS', true); -} - -class ExcelDBDataWrapper extends DBDataWrapper { - - public $emptyLimit = 10; - public function excel_data($points){ - $path = $this->connection; - $excel = PHPExcel_IOFactory::createReaderForFile($path); - $excel = $excel->load($path); - $result = array(); - $excelWS = $excel->getActiveSheet(); - - for ($i=0; $i < sizeof($points); $i++) { - $c = array(); - preg_match("/^([a-zA-Z]+)(\d+)/", $points[$i], $c); - if (count($c) > 0) { - $col = PHPExcel_Cell::columnIndexFromString($c[1]) - 1; - $cell = $excelWS->getCellByColumnAndRow($col, (int)$c[2]); - $result[] = $cell->getValue(); - } - } - - return $result; - } - public function select($source) { - $path = $this->connection; - $excel = PHPExcel_IOFactory::createReaderForFile($path); - $excel->setReadDataOnly(false); - $excel = $excel->load($path); - $excRes = new ExcelResult(); - $excelWS = $excel->getActiveSheet(); - $addFields = true; - - $coords = array(); - if ($source->get_source() == '*') { - $coords['start_row'] = 0; - $coords['end_row'] = false; - } else { - $c = array(); - preg_match("/^([a-zA-Z]+)(\d+)/", $source->get_source(), $c); - if (count($c) > 0) { - $coords['start_row'] = (int) $c[2]; - } else { - $coords['start_row'] = 0; - } - $c = array(); - preg_match("/:(.+)(\d+)$/U", $source->get_source(), $c); - if (count($c) > 0) { - $coords['end_row'] = (int) $c[2]; - } else { - $coords['end_row'] = false; - } - } - - $i = $coords['start_row']; - $end = 0; - while ((($coords['end_row'] == false)&&($end < $this->emptyLimit))||(($coords['end_row'] !== false)&&($i < $coords['end_row']))) { - $r = Array(); - $emptyNum = 0; - for ($j = 0; $j < count($this->config->text); $j++) { - $col = PHPExcel_Cell::columnIndexFromString($this->config->text[$j]['name']) - 1; - $cell = $excelWS->getCellByColumnAndRow($col, $i); - if (PHPExcel_Shared_Date::isDateTime($cell)) { - $r[PHPExcel_Cell::stringFromColumnIndex($col)] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()); - } else if ($cell->getDataType() == 'f') { - $r[PHPExcel_Cell::stringFromColumnIndex($col)] = $cell->getCalculatedValue(); - } else { - $r[PHPExcel_Cell::stringFromColumnIndex($col)] = $cell->getValue(); - } - if ($r[PHPExcel_Cell::stringFromColumnIndex($col)] == '') { - $emptyNum++; - } - } - if ($emptyNum < count($this->config->text)) { - $r['id'] = $i; - $excRes->addRecord($r); - $end = 0; - } else { - if (DHX_IGNORE_EMPTY_ROWS == false) { - $r['id'] = $i; - $excRes->addRecord($r); - } - $end++; - } - $i++; - } - return $excRes; - } - - public function query($sql) { - } - - public function get_new_id() { - } - - public function escape($data) { - } - - public function get_next($res) { - return $res->next(); - } - -} - - -class ExcelResult { - private $rows; - private $currentRecord = 0; - - - // add record to output list - public function addRecord($file) { - $this->rows[] = $file; - } - - - // return next record - public function next() { - if ($this->currentRecord < count($this->rows)) { - $row = $this->rows[$this->currentRecord]; - $this->currentRecord++; - return $row; - } else { - return false; - } - } - - - // sorts records under $sort array - public function sort($sort, $data) { - if (count($this->files) == 0) { - return $this; - } - // defines fields list if it's need - for ($i = 0; $i < count($sort); $i++) { - $fieldname = $sort[$i]['name']; - if (!isset($this->files[0][$fieldname])) { - if (isset($data[$fieldname])) { - $fieldname = $data[$fieldname]['db_name']; - $sort[$i]['name'] = $fieldname; - } else { - $fieldname = false; - } - } - } - - // for every sorting field will sort - for ($i = 0; $i < count($sort); $i++) { - // if field, setted in sort parameter doesn't exist, continue - if ($sort[$i]['name'] == false) { - continue; - } - // sorting by current field - $flag = true; - while ($flag == true) { - $flag = false; - // checks if previous sorting fields are equal - for ($j = 0; $j < count($this->files) - 1; $j++) { - $equal = true; - for ($k = 0; $k < $i; $k++) { - if ($this->files[$j][$sort[$k]['name']] != $this->files[$j + 1][$sort[$k]['name']]) { - $equal = false; - } - } - // compares two records in list under current sorting field and sorting direction - if (((($this->files[$j][$sort[$i]['name']] > $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'ASC'))||(($this->files[$j][$sort[$i]['name']] < $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'DESC')))&&($equal == true)) { - $c = $this->files[$j]; - $this->files[$j] = $this->files[$j+1]; - $this->files[$j+1] = $c; - $flag = true; - } - } - } - } - return $this; - } - -} - - -?>
\ No newline at end of file diff --git a/codebase/db_filesystem.php b/codebase/db_filesystem.php deleted file mode 100644 index b3d16d2..0000000 --- a/codebase/db_filesystem.php +++ /dev/null @@ -1,345 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once('db_common.php'); -require_once('tree_connector.php'); - -/* -Most execution time is a standart functions for workin with FileSystem: is_dir(), dir(), readdir(), stat() -*/ - -class FileSystemDBDataWrapper extends DBDataWrapper { - - - // returns list of files and directories - public function select($source) { - $relation = $this->getFileName($source->get_relation()); - // for tree checks relation id and forms absolute path - if ($relation == '0') { - $relation = ''; - } else { - $path = $source->get_source(); - } - $path = $source->get_source(); - $path = $this->getFileName($path); - $path = realpath($path); - if ($path == false) { - return new FileSystemResult(); - } - - if (strpos(realpath($path.'/'.$relation), $path) !== 0) { - return new FileSystemResult(); - } - // gets files and directories list - $res = $this->getFilesList($path, $relation); - // sorts list - $res = $res->sort($source->get_sort_by(), $this->config->data); - return $res; - } - - - // gets files and directory list - private function getFilesList($path, $relation) { - $fileSystemTypes = FileSystemTypes::getInstance(); - LogMaster::log("Query filesystem: ".$path); - $dir = opendir($path.'/'.$relation); - $result = new FileSystemResult(); - // forms fields list - for ($i = 0; $i < count($this->config->data); $i++) { - $fields[] = $this->config->data[$i]['db_name']; - } - // for every file and directory of folder - while ($file = readdir($dir)) { - // . and .. should not be in output list - if (($file == '.')||($file == '..')) { - continue; - } - $newFile = array(); - // parse file name as Array('name', 'ext', 'is_dir') - $fileNameExt = $this->parseFileName($path.'/'.$relation, $file); - // checks if file should be in output array - if (!$fileSystemTypes->checkFile($file, $fileNameExt)) { - continue; - } - // takes file stat if it's need - if ((in_array('size', $fields))||(in_array('date', $fields))) { - $fileInfo = stat($path.'/'.$file); - } - - // for every field forms list of fields - for ($i = 0; $i < count($fields); $i++) { - $field = $fields[$i]; - switch ($field) { - case 'filename': - $newFile['filename'] = $file; - break; - case 'full_filename': - $newFile['full_filename'] = $path."/".$file; - break; - case 'size': - $newFile['size'] = $fileInfo['size']; - break; - case 'extention': - $newFile['extention'] = $fileNameExt['ext']; - break; - case 'name': - $newFile['name'] = $fileNameExt['name']; - break; - case 'date': - $newFile['date'] = date("Y-m-d H:i:s", $fileInfo['ctime']); - break; - } - $newFile['relation_id'] = $relation.'/'.$file; - $newFile['safe_name'] = $this->setFileName($relation.'/'.$file); - $newFile['is_folder'] = $fileNameExt['is_dir']; - } - // add file in output list - $result->addFile($newFile); - } - return $result; - } - - - // replaces '.' and '_' in id - private function setFileName($filename) { - $filename = str_replace(".", "{-dot-}", $filename); - $filename = str_replace("_", "{-nizh-}", $filename); - return $filename; - } - - - // replaces '{-dot-}' and '{-nizh-}' in id - private function getFileName($filename) { - $filename = str_replace("{-dot-}", ".", $filename); - $filename = str_replace("{-nizh-}", "_", $filename); - return $filename; - } - - - // parses file name and checks if is directory - private function parseFileName($path, $file) { - $result = Array(); - if (is_dir($path.'/'.$file)) { - $result['name'] = $file; - $result['ext'] = 'dir'; - $result['is_dir'] = 1; - } else { - $pos = strrpos($file, '.'); - $result['name'] = substr($file, 0, $pos); - $result['ext'] = substr($file, $pos + 1); - $result['is_dir'] = 0; - } - return $result; - } - - public function query($sql) { - } - - public function get_new_id() { - } - - public function escape($data) { - } - - public function get_next($res) { - return $res->next(); - } - -} - - -class FileSystemResult { - private $files; - private $currentRecord = 0; - - - // add record to output list - public function addFile($file) { - $this->files[] = $file; - } - - - // return next record - public function next() { - if ($this->currentRecord < count($this->files)) { - $file = $this->files[$this->currentRecord]; - $this->currentRecord++; - return $file; - } else { - return false; - } - } - - - // sorts records under $sort array - public function sort($sort, $data) { - if (count($this->files) == 0) { - return $this; - } - // defines fields list if it's need - for ($i = 0; $i < count($sort); $i++) { - $fieldname = $sort[$i]['name']; - if (!isset($this->files[0][$fieldname])) { - if (isset($data[$fieldname])) { - $fieldname = $data[$fieldname]['db_name']; - $sort[$i]['name'] = $fieldname; - } else { - $fieldname = false; - } - } - } - - // for every sorting field will sort - for ($i = 0; $i < count($sort); $i++) { - // if field, setted in sort parameter doesn't exist, continue - if ($sort[$i]['name'] == false) { - continue; - } - // sorting by current field - $flag = true; - while ($flag == true) { - $flag = false; - // checks if previous sorting fields are equal - for ($j = 0; $j < count($this->files) - 1; $j++) { - $equal = true; - for ($k = 0; $k < $i; $k++) { - if ($this->files[$j][$sort[$k]['name']] != $this->files[$j + 1][$sort[$k]['name']]) { - $equal = false; - } - } - // compares two records in list under current sorting field and sorting direction - if (((($this->files[$j][$sort[$i]['name']] > $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'ASC'))||(($this->files[$j][$sort[$i]['name']] < $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'DESC')))&&($equal == true)) { - $c = $this->files[$j]; - $this->files[$j] = $this->files[$j+1]; - $this->files[$j+1] = $c; - $flag = true; - } - } - } - } - return $this; - } - -} - - -// singleton class for setting file types filter -class FileSystemTypes { - - static private $instance = NULL; - private $extentions = Array(); - private $extentions_not = Array(); - private $all = true; - private $patterns = Array(); - // predefined types - private $types = Array( - 'image' => Array('jpg', 'jpeg', 'gif', 'png', 'tiff', 'bmp', 'psd', 'dir'), - 'document' => Array('txt', 'doc', 'docx', 'xls', 'xlsx', 'rtf', 'dir'), - 'web' => Array('php', 'html', 'htm', 'js', 'css', 'dir'), - 'audio' => Array('mp3', 'wav', 'ogg', 'dir'), - 'video' => Array('avi', 'mpg', 'mpeg', 'mp4', 'dir'), - 'only_dir' => Array('dir') - ); - - - static function getInstance() { - if (self::$instance == NULL) { - self::$instance = new FileSystemTypes(); - } - return self::$instance; - } - - // sets array of extentions - public function setExtentions($ext) { - $this->all = false; - $this->extentions = $ext; - } - - // adds one extention in array - public function addExtention($ext) { - $this->all = false; - $this->extentions[] = $ext; - } - - - // adds one extention which will not ouputed in array - public function addExtentionNot($ext) { - $this->extentions_not[] = $ext; - } - - - // returns array of extentions - public function getExtentions() { - return $this->extentions; - } - - // adds regexp pattern - public function addPattern($pattern) { - $this->all = false; - $this->patterns[] = $pattern; - } - - // clear extentions array - public function clearExtentions() { - $this->all = true; - $this->extentions = Array(); - } - - // clear regexp patterns array - public function clearPatterns() { - $this->all = true; - $this->patterns = Array(); - } - - // clear all filters - public function clearAll() { - $this->clearExtentions(); - $this->clearPatterns(); - } - - // sets predefined type - public function setType($type, $clear = false) { - $this->all = false; - if ($type == 'all') { - $this->all = true; - return true; - } - if (isset($this->types[$type])) { - if ($clear) { - $this->clearExtentions(); - } - for ($i = 0; $i < count($this->types[$type]); $i++) { - $this->extentions[] = $this->types[$type][$i]; - } - return true; - } else { - return false; - } - } - - - // check file under setted filter - public function checkFile($filename, $fileNameExt) { - if (in_array($fileNameExt['ext'], $this->extentions_not)) { - return false; - } - if ($this->all) { - return true; - } - - if ((count($this->extentions) > 0)&&(!in_array($fileNameExt['ext'], $this->extentions))) { - return false; - } - - for ($i = 0; $i < count($this->patterns); $i++) { - if (!preg_match($this->patterns[$i], $filename)) { - return false; - } - } - return true; - } -} - -?>
\ No newline at end of file diff --git a/codebase/db_mssql.php b/codebase/db_mssql.php deleted file mode 100644 index 0acab93..0000000 --- a/codebase/db_mssql.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! MSSQL implementation of DataWrapper -**/ -class MsSQLDBDataWrapper extends DBDataWrapper{ - private $last_id=""; //!< ID of previously inserted record - private $insert_operation=false; //!< flag of insert operation - private $start_from=false; //!< index of start position - - public function query($sql){ - LogMaster::log($sql); - $res = mssql_query($sql,$this->connection); - if ($this->insert_operation){ - $last = mssql_fetch_assoc($res); - $this->last_id = $last["dhx_id"]; - mssql_free_result($res); - } - if ($this->start_from) - mssql_data_seek($res,$this->start_from); - return $res; - } - - public function get_next($res){ - return mssql_fetch_assoc($res); - } - - public function get_new_id(){ - /* - MSSQL doesn't support identity or auto-increment fields - Insert SQL returns new ID value, which stored in last_id field - */ - return $this->last_id; - } - - protected function insert_query($data,$request){ - $sql = parent::insert_query($data,$request); - $this->insert_operation=true; - return $sql.";SELECT @@IDENTITY AS dhx_id"; - } - - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT " ; - if ($count) - $sql.=" TOP ".($count+$start); - $sql.=" ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - if ($start && $count) - $this->start_from=$start; - else - $this->start_from=false; - return $sql; - } - - public function escape($data){ - /* - there is no special escaping method for mssql - use common logic - */ - return str_replace("'","''",$data); - } - - public function begin_transaction(){ - $this->query("BEGIN TRAN"); - } -} -?>
\ No newline at end of file diff --git a/codebase/db_mysqli.php b/codebase/db_mysqli.php deleted file mode 100644 index 6740a3b..0000000 --- a/codebase/db_mysqli.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); - -class MySQLiDBDataWrapper extends MySQLDBDataWrapper{ - - public function query($sql){ - LogMaster::log($sql); - $res = $this->connection->query($sql); - if ($res===false) throw new Exception("MySQL operation failed\n".$this->connection->error); - return $res; - } - - public function get_next($res){ - return $res->fetch_assoc(); - } - - public function get_new_id(){ - return $this->connection->insert_id; - } - - public function escape($data){ - return $this->connection->real_escape_string($data); - } - - public function tables_list() { - $result = $this->connection->query("SHOW TABLES"); - if ($result===false) throw new Exception("MySQL operation failed\n".$this->connection->error); - - $tables = array(); - while ($table = $result->fetch_array()) { - $tables[] = $table[0]; - } - return $tables; - } - - public function fields_list($table) { - $result = $this->connection->query("SHOW COLUMNS FROM `".$table."`"); - if ($result===false) throw new Exception("MySQL operation failed\n".$this->connection->error); - $fields = array(); - while ($field = $result->fetch_array()) { - if ($field['Key'] == "PRI") { - $fields[$field[0]] = 1; - } else { - $fields[$field[0]] = 0; - } - } - return $fields; - } - -} - -?>
\ No newline at end of file diff --git a/codebase/db_oracle.php b/codebase/db_oracle.php deleted file mode 100644 index 703d3a4..0000000 --- a/codebase/db_oracle.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! Implementation of DataWrapper for Oracle -**/ -class OracleDBDataWrapper extends DBDataWrapper{ - private $last_id=""; //id of previously inserted record - private $insert_operation=false; //flag of insert operation - - public function query($sql){ - LogMaster::log($sql); - $stm = oci_parse($this->connection,$sql); - if ($stm===false) throw new Exception("Oracle - sql parsing failed\n".oci_error($this->connection)); - - $out = array(0=>null); - if($this->insert_operation){ - oci_bind_by_name($stm,":outID",$out[0],999); - $this->insert_operation=false; - } - - - $mode = ($this->is_record_transaction() || $this->is_global_transaction())?OCI_DEFAULT:OCI_COMMIT_ON_SUCCESS; - $res = @oci_execute($stm,$mode); - if ($res===false) throw new Exception(oci_error($this->connection)); - - $this->last_id=$out[0]; - - return $stm; - } - - public function get_next($res){ - $data = oci_fetch_assoc($res); - if ($data){ - foreach ($data as $k => $v) - $data[strtolower($k)] = $v; - } - return $data; - } - - public function get_new_id(){ - /* - Oracle doesn't support identity or auto-increment fields - Insert SQL returns new ID value, which stored in last_id field - */ - return $this->last_id; - } - - protected function insert_query($data,$request){ - $sql = parent::insert_query($data,$request); - $this->insert_operation=true; - return $sql." returning ".$this->config->id["db_name"]." into :outID"; - } - - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - if ($start || $count) - $sql="SELECT * FROM ( select /*+ FIRST_ROWS(".$count.")*/dhx_table.*, ROWNUM rnum FROM (".$sql.") dhx_table where ROWNUM <= ".($count+$start)." ) where rnum >".$start; - return $sql; - } - - public function escape($data){ - /* - as far as I can see the only way to escape data is by using oci_bind_by_name - while it is neat solution in common case, it conflicts with existing SQL building logic - fallback to simple escaping - */ - return str_replace("'","''",$data); - } - - public function begin_transaction(){ - //auto-start of transaction - } - public function commit_transaction(){ - oci_commit($this->connection); - } - public function rollback_transaction(){ - oci_rollback($this->connection); - } -} -?>
\ No newline at end of file diff --git a/codebase/db_phpcake.php b/codebase/db_phpcake.php deleted file mode 100644 index 4df0289..0000000 --- a/codebase/db_phpcake.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); - -//DataProcessor::$action_param ="dhx_editor_status"; - -/*! Implementation of DataWrapper for PDO - -if you plan to use it for Oracle - use Oracle connection type instead -**/ -class PHPCakeDBDataWrapper extends ArrayDBDataWrapper{ - public function select($sql){ - $source = $sql->get_source(); - if (is_array($source)) //result of find - $res = $source; - else - $res = $this->connection->find("all"); - - $temp = array(); - if (sizeof($res)){ - $name = get_class($this->connection); - for ($i=sizeof($res)-1; $i>=0; $i--) - $temp[]=&$res[$i][$name]; - } - return new ArrayQueryWrapper($temp); - } - - protected function getErrorMessage(){ - $errors = $this->connection->invalidFields(); - $text = array(); - foreach ($errors as $key => $value){ - $text[] = $key." - ".$value[0]; - } - return implode("\n", $text); - } - - public function insert($data,$source){ - $name = get_class($this->connection); - $save = array(); - $temp_data = $data->get_data(); - unset($temp_data[$this->config->id['db_name']]); - unset($temp_data["!nativeeditor_status"]); - $save[$name] = $temp_data; - - if ($this->connection->save($save)){ - $data->success($this->connection->getLastInsertID()); - } else { - $data->set_response_attribute("details", $this->getErrorMessage()); - $data->invalid(); - } - } - public function delete($data,$source){ - $id = $data->get_id(); - $this->connection->delete($id); - $data->success(); - } - public function update($data,$source){ - $name = get_class($this->connection); - $save = array(); - $save[$name] = &$data->get_data(); - - if ($this->connection->save($save)){ - $data->success(); - } else { - $data->set_response_attribute("details", $this->getErrorMessage()); - $data->invalid(); - } - } - - - public function escape($str){ - throw new Exception("Not implemented"); - } - public function query($str){ - throw new Exception("Not implemented"); - } - public function get_new_id(){ - throw new Exception("Not implemented"); - } -} - -?>
\ No newline at end of file diff --git a/codebase/db_phpci.php b/codebase/db_phpci.php deleted file mode 100644 index 9d10d99..0000000 --- a/codebase/db_phpci.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php
-/*
- @author dhtmlx.com
- @license GPL, see license.txt
-*/
-require_once("db_common.php");
-
-/*! Implementation of DataWrapper for PDO
-
-if you plan to use it for Oracle - use Oracle connection type instead
-**/
-class PHPCIDBDataWrapper extends DBDataWrapper{
- private $last_result;//!< store result or last operation
-
- public function query($sql){
- LogMaster::log($sql);
-
- $res=$this->connection->query($sql);
- if ($res===false) {
- throw new Exception("CI - sql execution failed");
- }
-
- if (is_object($res))
- return new PHPCIResultSet($res);
- return new ArrayQueryWrapper(array());
- }
-
- public function get_next($res){
- $data = $res->next();
- return $data;
- }
-
- public function get_new_id(){
- return $this->connection->insert_id();
- }
-
- public function escape($str){
- return $this->connection->escape_str($str);
- }
-
- public function escape_name($data){
- return $this->connection->protect_identifiers($data);
- }
-}
-
-class PHPCIResultSet{
- private $res;
- private $start;
- private $count;
-
- public function __construct($res){
- $this->res = $res;
- $this->start = $res->current_row;
- $this->count = $res->num_rows;
- }
- public function next(){
- if ($this->start != $this->count){
- return $this->res->row($this->start++,'array');
- } else {
- $this->res->free_result();
- return null;
- }
- }
-}
-?>
\ No newline at end of file diff --git a/codebase/db_postgre.php b/codebase/db_postgre.php deleted file mode 100644 index a7d1598..0000000 --- a/codebase/db_postgre.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! Implementation of DataWrapper for PostgreSQL -**/ -class PostgreDBDataWrapper extends DBDataWrapper{ - public function query($sql){ - LogMaster::log($sql); - - $res=pg_query($this->connection,$sql); - if ($res===false) throw new Exception("Postgre - sql execution failed\n".pg_last_error($this->connection)); - - return $res; - } - - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - if ($start || $count) - $sql.=" OFFSET ".$start." LIMIT ".$count; - return $sql; - } - - public function get_next($res){ - return pg_fetch_assoc($res); - } - - public function get_new_id(){ - $res = pg_query( $this->connection, "SELECT LASTVAL() AS seq"); - $data = pg_fetch_assoc($res); - pg_free_result($res); - return $data['seq']; - } - - public function escape($data){ - //need to use oci_bind_by_name - return pg_escape_string($this->connection,$data); - } - - public function tables_list() { - $sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"; - $res = pg_query($this->connection, $sql); - $tables = array(); - while ($table = pg_fetch_assoc($res)) { - $tables[] = $table['table_name']; - } - return $tables; - } - - public function fields_list($table) { - $sql = "SELECT * FROM information_schema.constraint_column_usage"; - $result = pg_query($this->connection, $sql); - $field = pg_fetch_assoc($result); - $id = $field['column_name']; - - $sql = "SELECT * FROM information_schema.columns WHERE table_name ='".$table."';"; - $result = pg_query($this->connection, $sql); - $fields = array(); - $id = ""; - while ($field = pg_fetch_assoc($result)) { - $fields[] = $field["column_name"]; - } - return array('fields' => $fields, 'key' => $id ); - } -} -?>
\ No newline at end of file diff --git a/codebase/db_sasql.php b/codebase/db_sasql.php deleted file mode 100644 index 025f5ef..0000000 --- a/codebase/db_sasql.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -require_once("db_common.php"); -/*! SaSQL implementation of DataWrapper -**/ -class SaSQLDBDataWrapper extends DBDataWrapper{ - private $last_id=""; //!< ID of previously inserted record - - public function query($sql){ - LogMaster::log($sql); - $res=sasql_query($this->connection, $sql); - if ($res===false) throw new Exception("SaSQL operation failed\n".sasql_error($this->connection)); - $this->last_result = $res; - return $res; - } - - public function get_next($res){ - if (!$res) - $res = $this->last_result; - - return sasql_fetch_assoc($res); - } - - public function get_new_id(){ - return sasql_insert_id($this->connection); - } - - protected function insert_query($data,$request){ - $sql = parent::insert_query($data,$request); - $this->insert_operation=true; - return $sql; - } - - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT " ; - if ($count) - $sql.=" TOP ".($count+$start); - $sql.=" ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - return $sql; - } - - public function escape($data){ - return sasql_escape_string($this->connection, $data); - } - - public function begin_transaction(){ - $this->query("BEGIN TRAN"); - } -} -?>
\ No newline at end of file diff --git a/codebase/db_sqlite.php b/codebase/db_sqlite.php deleted file mode 100644 index 04df7e5..0000000 --- a/codebase/db_sqlite.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! SQLite implementation of DataWrapper -**/ -class SQLiteDBDataWrapper extends DBDataWrapper{ - - public function query($sql){ - LogMaster::log($sql); - - $res = sqlite_query($this->connection,$sql); - if ($res === false) - throw new Exception("SQLLite - sql execution failed\n".sqlite_error_string(sqlite_last_error($this->connection))); - - return $res; - } - - public function get_next($res){ - $data = sqlite_fetch_array($res, SQLITE_ASSOC); - return $data; - } - - public function get_new_id(){ - return sqlite_last_insert_rowid($this->connection); - } - - public function escape($data){ - return sqlite_escape_string($data); - } -} -?>
\ No newline at end of file diff --git a/codebase/db_sqlite3.php b/codebase/db_sqlite3.php deleted file mode 100644 index 349490b..0000000 --- a/codebase/db_sqlite3.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! SQLite implementation of DataWrapper -**/ -class SQLite3DBDataWrapper extends DBDataWrapper{ - - public function query($sql){ - LogMaster::log($sql); - - $res = $this->connection->query($sql); - if ($res === false) - throw new Exception("SQLLite - sql execution failed\n".$this->connection->lastErrorMsg()); - - return $res; - } - - public function get_next($res){ - return $res->fetchArray(); - } - - public function get_new_id(){ - return $this->connection->lastInsertRowID(); - } - - public function escape($data){ - return $this->connection->escapeString($data); - } -} -?>
\ No newline at end of file diff --git a/codebase/db_sqlsrv.php b/codebase/db_sqlsrv.php deleted file mode 100644 index 1b27020..0000000 --- a/codebase/db_sqlsrv.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php -/* -This software is allowed to use under GPL or you need to obtain Commercial or Enterise License -to use it in non-GPL project. Please contact sales@dhtmlx.com for details -*/ -?><?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("db_common.php"); -/*! MSSQL implementation of DataWrapper -**/ -class SQLSrvDBDataWrapper extends DBDataWrapper{ - private $last_id=""; //!< ID of previously inserted record - private $insert_operation=false; //!< flag of insert operation - private $start_from=false; //!< index of start position - - public function query($sql){ - LogMaster::log($sql); - if ($this->start_from) - $res = sqlsrv_query($this->connection,$sql, array(), array("Scrollable" => SQLSRV_CURSOR_STATIC)); - else - $res = sqlsrv_query($this->connection,$sql); - - if ($res === false){ - $errors = sqlsrv_errors(); - $message = Array(); - foreach($errors as $error) - $message[]=$error["SQLSTATE"].$error["code"].$error["message"]; - throw new Exception("SQLSrv operation failed\n".implode("\n\n", $message)); - } - - if ($this->insert_operation){ - sqlsrv_next_result($res); - $last = sqlsrv_fetch_array($res); - $this->last_id = $last["dhx_id"]; - sqlsrv_free_stmt($res); - } - if ($this->start_from) - $data = sqlsrv_fetch($res, SQLSRV_SCROLL_ABSOLUTE, $this->start_from-1); - return $res; - } - - public function get_next($res){ - $data = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC); - if ($data) - foreach ($data as $key => $value) - if (is_a($value, "DateTime")) - $data[$key] = $value->format("Y-m-d H:i"); - return $data; - } - - public function get_new_id(){ - /* - MSSQL doesn't support identity or auto-increment fields - Insert SQL returns new ID value, which stored in last_id field - */ - return $this->last_id; - } - - protected function insert_query($data,$request){ - $sql = parent::insert_query($data,$request); - $this->insert_operation=true; - return $sql.";SELECT SCOPE_IDENTITY() as dhx_id"; - } - - protected function select_query($select,$from,$where,$sort,$start,$count){ - if (!$from) - return $select; - - $sql="SELECT " ; - if ($count) - $sql.=" TOP ".($count+$start); - $sql.=" ".$select." FROM ".$from; - if ($where) $sql.=" WHERE ".$where; - if ($sort) $sql.=" ORDER BY ".$sort; - if ($start && $count) - $this->start_from=$start; - else - $this->start_from=false; - return $sql; - } - - public function escape($data){ - /* - there is no special escaping method for mssql - use common logic - */ - return str_replace("'","''",$data); - } - - public function begin_transaction(){ - sqlsrv_begin_transaction($this->connection); - } - public function commit_transaction(){ - sqlsrv_commit($this->connection); - } - public function rollback_transaction(){ - sqlsrv_rollback($this->connection); - } -} -?>
\ No newline at end of file diff --git a/codebase/filesystem_item.php b/codebase/filesystem_item.php deleted file mode 100644 index 046ad98..0000000 --- a/codebase/filesystem_item.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ - -class FileTreeDataItem extends TreeDataItem { - - function has_kids(){ - if ($this->data['is_folder'] == '1') { - return true; - } else { - return false; - } - } - -} - -?>
\ No newline at end of file diff --git a/codebase/form_connector.php b/codebase/form_connector.php deleted file mode 100644 index 5eeea38..0000000 --- a/codebase/form_connector.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); - -/*! DataItem class for dhxForm component -**/ -class FormDataItem extends DataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - $str=""; - for ($i = 0; $i < count($this->config->data); $i++) { - $str .= "<".$this->config->data[$i]['name']."><![CDATA[".$this->data[$this->config->data[$i]['name']]."]]></".$this->config->data[$i]['name'].">"; - } - return $str; - } -} - - -/*! Connector class for dhtmlxForm -**/ -class FormConnector extends Connector{ - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="FormDataItem"; - if (!$data_type) $data_type="FormDataProcessor"; - parent::__construct($res,$type,$item_type,$data_type); - } - - //parse GET scoope, all operations with incoming request must be done here - function parse_request(){ - parent::parse_request(); - if (isset($_GET["id"])) - $this->request->set_filter($this->config->id["name"],$_GET["id"],"="); - else if (!$_POST["ids"]) - throw new Exception("ID parameter is missed"); - } - -} - -/*! DataProcessor class for dhxForm component -**/ -class FormDataProcessor extends DataProcessor{ - -} -?>
\ No newline at end of file diff --git a/codebase/gantt_connector.php b/codebase/gantt_connector.php deleted file mode 100644 index 3577835..0000000 --- a/codebase/gantt_connector.php +++ /dev/null @@ -1,364 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); -require_once("data_connector.php"); - -/*! DataItem class for Gantt component -**/ -class GanttDataItem extends DataItem{ - - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - - $str="<task id='".$this->get_id()."' >"; - $str.="<start_date><![CDATA[".$this->data[$this->config->text[0]["name"]]."]]></start_date>"; - $str.="<".$this->config->text[1]["name"]."><![CDATA[".$this->data[$this->config->text[1]["name"]]."]]></".$this->config->text[1]["name"].">"; - $str.="<text><![CDATA[".$this->data[$this->config->text[2]["name"]]."]]></text>"; - for ($i=3; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - $str.="<".$extra."><![CDATA[".$this->data[$extra]."]]></".$extra.">"; - } - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $str.="<".$key."><![CDATA[".$value."]]></".$key.">"; - - return $str."</task>"; - } -} - - -/*! Connector class for dhtmlxGantt -**/ -class GanttConnector extends Connector{ - - protected $extra_output="";//!< extra info which need to be sent to client side - protected $options=array();//!< hash of OptionsConnector - protected $links_mode = false; - - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=""; - foreach($options as $k => $v) - $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />"; - $options=$str; - } - $this->options[$name]=$options; - } - - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - * @param render_type - name of class which will be used for rendering. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="GanttDataItem"; - if (!$data_type) $data_type="GanttDataProcessor"; - if (!$render_type) $render_type="RenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - - $this->event->attach("afterDelete", array($this, "delete_related_links")); - $this->event->attach("afterOrder", array($this, "order_set_parent")); - } - - //parse GET scoope, all operations with incoming request must be done here - function parse_request(){ - parent::parse_request(); - - if (isset($_GET["gantt_mode"]) && $_GET["gantt_mode"] == "links") - $this->links_mode = true; - - if (count($this->config->text)){ - if (isset($_GET["to"])) - $this->request->set_filter($this->config->text[0]["name"],$_GET["to"],"<"); - if (isset($_GET["from"])) - $this->request->set_filter($this->config->text[1]["name"],$_GET["from"],">"); - } - } - - function order_set_parent($action){ - $value = $action->get_id(); - $parent = $action->get_value("parent"); - - $table = $this->request->get_source(); - $id = $this->config->id["db_name"]; - - $this->sql->query("UPDATE $table SET parent = $parent WHERE $id = $value"); - } - - function delete_related_links($action){ - if (isset($this->options["links"])){ - $links = $this->options["links"]; - $value = $this->sql->escape($action->get_new_id()); - $table = $links->get_request()->get_source(); - - $this->sql->query("DELETE FROM $table WHERE source = '$value'"); - $this->sql->query("DELETE FROM $table WHERE target = '$value'"); - } - } - - public function render_links($table,$id="",$fields=false,$extra=false,$relation_id=false) { - $links = new GanttLinksConnector($this->get_connection(),$this->names["db_class"]); - $links->render_table($table,$id,$fields,$extra); - $this->set_options("links", $links); - } -} - -/*! DataProcessor class for Gantt component -**/ -class GanttDataProcessor extends DataProcessor{ - function name_data($data){ - if ($data=="start_date") - return $this->config->text[0]["name"]; - if ($data=="id") - return $this->config->id["name"]; - if ($data=="duration" && $this->config->text[1]["name"] == "duration") - return $this->config->text[1]["name"]; - if ($data=="end_date" && $this->config->text[1]["name"] == "end_date") - return $this->config->text[1]["name"]; - if ($data=="text") - return $this->config->text[2]["name"]; - - return $data; - } -} - - -class JSONGanttDataItem extends GanttDataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - - $obj = array(); - $obj['id'] = $this->get_id(); - $obj['start_date'] = $this->data[$this->config->text[0]["name"]]; - $obj[$this->config->text[1]["name"]] = $this->data[$this->config->text[1]["name"]]; - $obj['text'] = $this->data[$this->config->text[2]["name"]]; - for ($i=3; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - $obj[$extra]=$this->data[$extra]; - } - - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $obj[$key]=$value; - - return $obj; - } -} - - -class JSONGanttConnector extends GanttConnector { - - protected $data_separator = ","; - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="JSONGanttDataItem"; - if (!$data_type) $data_type="GanttDataProcessor"; - if (!$render_type) $render_type="JSONRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - protected function xml_start() { - return '{ "data":'; - } - - protected function xml_end() { - $this->fill_collections(); - $end = (!empty($this->extra_output)) ? ', "collections": {'.$this->extra_output.'}' : ''; - foreach ($this->attributes as $k => $v) - $end.=", \"".$k."\":\"".$v."\""; - $end .= '}'; - return $end; - } - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=array(); - foreach($options as $k => $v) - $str[]='{"id":"'.$this->xmlentities($k).'", "value":"'.$this->xmlentities($v).'"}'; - $options=implode(",",$str); - } - $this->options[$name]=$options; - } - - - /*! generates xml description for options collections - - @param list - comma separated list of column names, for which options need to be generated - */ - protected function fill_collections($list=""){ - $options = array(); - foreach ($this->options as $k=>$v) { - $name = $k; - $option="\"{$name}\":["; - if (!is_string($this->options[$name])){ - $data = json_encode($this->options[$name]->render()); - $option.=substr($data,1,-1); - } else - $option.=$this->options[$name]; - $option.="]"; - $options[] = $option; - } - $this->extra_output .= implode($this->data_separator, $options); - } - - - /*! output fetched data as XML - @param res - DB resultset - */ - protected function output_as_xml($res){ - $result = $this->render_set($res); - if ($this->simple) return $result; - - $data=$this->xml_start().json_encode($result).$this->xml_end(); - - if ($this->as_string) return $data; - - $out = new OutputWriter($data, ""); - $out->set_type("json"); - $this->event->trigger("beforeOutput", $this, $out); - $out->output("", true, $this->encoding); - } - - public function render_links($table,$id="",$fields=false,$extra=false,$relation_id=false) { - $links = new JSONGanttLinksConnector($this->get_connection(),$this->names["db_class"]); - $links->render_table($table,$id,$fields,$extra); - $this->set_options("links", $links); - } - - - /*! render self - process commands, output requested data as XML - */ - public function render(){ - $this->event->trigger("onInit", $this); - EventMaster::trigger_static("connectorInit",$this); - - if (!$this->as_string) - $this->parse_request(); - $this->set_relation(); - - if ($this->live_update !== false && $this->updating!==false) { - $this->live_update->get_updates(); - } else { - if ($this->editing){ - if ($this->links_mode && isset($this->options["links"])) { - $this->options["links"]->save(); - } else { - $dp = new $this->names["data_class"]($this,$this->config,$this->request); - $dp->process($this->config,$this->request); - } - } else { - if (!$this->access->check("read")){ - LogMaster::log("Access control: read operation blocked"); - echo "Access denied"; - die(); - } - $wrap = new SortInterface($this->request); - $this->apply_sorts($wrap); - $this->event->trigger("beforeSort",$wrap); - $wrap->store(); - - $wrap = new FilterInterface($this->request); - $this->apply_filters($wrap); - $this->event->trigger("beforeFilter",$wrap); - $wrap->store(); - - if ($this->model && method_exists($this->model, "get")){ - $this->sql = new ArrayDBDataWrapper(); - $result = new ArrayQueryWrapper(call_user_func(array($this->model, "get"), $this->request)); - $out = $this->output_as_xml($result); - } else { - $out = $this->output_as_xml($this->get_resource()); - - if ($out !== null) return $out; - } - - } - } - $this->end_run(); - } -} - - -class GanttLinksConnector extends OptionsConnector { - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - - $res = $this->sql->select($this->request); - return $this->render_set($res); - } - - public function save() { - $dp = new $this->names["data_class"]($this,$this->config,$this->request); - $dp->process($this->config,$this->request); - } -} - - -class JSONGanttLinksConnector extends JSONOptionsConnector { - public function render(){ - if (!$this->init_flag){ - $this->init_flag=true; - return ""; - } - - $res = $this->sql->select($this->request); - return $this->render_set($res); - } - - public function save() { - $dp = new $this->names["data_class"]($this,$this->config,$this->request); - $dp->process($this->config,$this->request); - } -} - -?>
\ No newline at end of file diff --git a/codebase/grid_config.php b/codebase/grid_config.php deleted file mode 100644 index 24297b2..0000000 --- a/codebase/grid_config.php +++ /dev/null @@ -1,423 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ - -class GridConfiguration{ - - /*! attaching header functionality - */ - protected $headerDelimiter = ','; - protected $headerNames = false; - protected $headerAttaches = array(); - protected $footerAttaches = array(); - protected $headerWidthsUnits = 'px'; - - protected $headerIds = false; - protected $headerWidths = false; - protected $headerTypes = false; - protected $headerAlign = false; - protected $headerVAlign = false; - protected $headerSorts = false; - protected $headerColors = false; - protected $headerHidden = false; - protected $headerFormat = false; - - protected $convert_mode = false; - - function __construct($headers = false){ - if ($headers === false || $headers === true ) - $this->headerNames = $headers; - else - $this->setHeader($headers); - } - - /*! brief convert list of parameters to an array - @param param - list of values or array of values - @return array of parameters - */ - private function parse_param_array($param, $check=false, $default = ""){ - if (gettype($param) == 'string') - $param = explode($this->headerDelimiter, $param); - - if ($check){ - for ($i=0; $i < sizeof($param); $i++) { - if (!array_key_exists($param[$i],$check)) - $param[$i] = $default; - } - } - return $param; - } - - /*! sets delimiter for string arguments in attach header functions (default is ,) - @param headerDelimiter - string delimiter - */ - public function setHeaderDelimiter($headerDelimiter) { - $this->headerDelimiter = $headerDelimiter; - } - - /*! sets header - @param names - array of names or string of names, delimited by headerDelimiter (default is ,) - */ - public function setHeader($names) { - if ($names instanceof DataConfig){ - $out = array(); - for ($i=0; $i < sizeof($names->text); $i++) - $out[]=$names->text[$i]["name"]; - $names = $out; - } - - $this->headerNames = $this->parse_param_array($names); - } - - /*! sets init columns width in pixels - @param wp - array of widths or string of widths, delimited by headerDelimiter (default is ,) - */ - public function setInitWidths($wp) { - $this->headerWidths = $this->parse_param_array($wp); - $this->headerWidthsUnits = 'px'; - } - - /*! sets init columns width in persents - @param wp - array of widths or string of widths, delimited by headerDelimiter (default is ,) - */ - public function setInitWidthsP($wp) { - $this->setInitWidths($wp); - $this->headerWidthsUnits = '%'; - } - - /*! sets columns align - @param alStr - array of aligns or string of aligns, delimited by headerDelimiter (default is ,) - */ - public function setColAlign($alStr) { - $this->headerAlign = $this->parse_param_array($alStr, - array("right"=>1, "left"=>1, "center"=>1, "justify"=>1), - "left"); - } - - /*! sets columns vertical align - @param alStr - array of vertical aligns or string of vertical aligns, delimited by headerDelimiter (default is ,) - */ - public function setColVAlign($alStr) { - $this->headerVAlign = $this->parse_param_array($alStr, - array("baseline"=>1, "sub"=>1, "super"=>1, "top"=>1, "text-top"=>1, "middle"=>1, "bottom"=>1, "text-bottom"=>1), - "top"); - } - - /*! sets column types - @param typeStr - array of types or string of types, delimited by headerDelimiter (default is ,) - */ - public function setColTypes($typeStr) { - $this->headerTypes = $this->parse_param_array($typeStr); - } - - /*! sets columns sorting - @param sortStr - array if sortings or string of sortings, delimited by headerDelimiter (default is ,) - */ - public function setColSorting($sortStr) { - $this->headerSorts = $this->parse_param_array($sortStr); - } - - /*! sets columns colors - @param colorStr - array of colors or string of colors, delimited by headerDelimiter (default is ,) - if (color should not be applied it's value should be null) - */ - public function setColColor($colorStr) { - $this->headerColors = $this->parse_param_array($colorStr); - } - - /*! sets hidden columns - @param hidStr - array of bool values or string of bool values, delimited by headerDelimiter (default is ,) - */ - public function setColHidden($hidStr) { - $this->headerHidden = $this->parse_param_array($hidStr); - } - - /*! sets columns id - @param idsStr - array of ids or string of ids, delimited by headerDelimiter (default is ,) - */ - public function setColIds($idsStr) { - $this->headerIds = $this->parse_param_array($idsStr); - } - - /*! sets number/date format - @param formatArr - array of mask formats for number/dates , delimited by headerDelimiter (default is ,) - */ - public function setColFormat($formatArr) { - $this->headerFormat = $this->parse_param_array($formatArr); - } - - /*! attaches header - @param values - array of header names or string of header names, delimited by headerDelimiter (default is ,) - @param styles - array of header styles or string of header styles, delimited by headerDelimiter (default is ,) - */ - public function attachHeader($values, $styles = null, $footer = false) { - $header = array(); - $header['values'] = $this->parse_param_array($values); - if ($styles != null) { - $header['styles'] = $this->parse_param_array($styles); - } else { - $header['styles'] = null; - } - if ($footer) - $this->footerAttaches[] = $header; - else - $this->headerAttaches[] = $header; - } - - /*! attaches footer - @param values - array of footer names or string of footer names, delimited by headerDelimiter (default is ,) - @param styles - array of footer styles or string of footer styles, delimited by headerDelimiter (default is ,) - */ - public function attachFooter($values, $styles = null) { - $this->attachHeader($values, $styles, true); - } - - private function auto_fill($mode){ - $headerWidths = array(); - $headerTypes = array(); - $headerSorts = array(); - $headerAttaches = array(); - - for ($i=0; $i < sizeof($this->headerNames); $i++) { - $headerWidths[] = 100; - $headerTypes[] = "ro"; - $headerSorts[] = "connector"; - $headerAttaches[] = "#connector_text_filter"; - } - if ($this->headerWidths == false) - $this->setInitWidths($headerWidths); - if ($this->headerTypes == false) - $this->setColTypes($headerTypes); - - if ($mode){ - if ($this->headerSorts == false) - $this->setColSorting($headerSorts); - $this->attachHeader($headerAttaches); - } - } - - public function defineOptions($conn){ - if (!$conn->is_first_call()) return; //render head only for first call - - $config = $conn->get_config(); - $full_header = ($this->headerNames === true); - - if (gettype($this->headerNames) == 'boolean') //auto-config - $this->setHeader($config); - $this->auto_fill($full_header); - - if (isset($_GET["dhx_colls"])) return; - - $fillList = array(); - for ($i = 0; $i < count($this->headerNames); $i++) - if ($this->headerTypes[$i] == "co" || $this->headerTypes[$i] == "coro") - $fillList[$i] = true; - - for ($i = 0; $i < count($this->headerAttaches); $i++) { - for ($j = 0; $j < count($this->headerAttaches[$i]['values']); $j++) { - if ($this->headerAttaches[$i]['values'][$j] == "#connector_select_filter" - || $this->headerAttaches[$i]['values'][$j] == "#select_filter") { - $fillList[$j] = true;; - } - } - } - - $temp = array(); - foreach($fillList as $k => $v) - $temp[] = $k; - if (count($temp)) - $_GET["dhx_colls"] = implode(",",$temp); - } - - - /*! gets header as array - */ - private function getHeaderArray() { - $head = Array(); - $head[0] = $this->headerNames; - $head = $this->getAttaches($head, $this->headerAttaches); - return $head; - } - - - /*! get footer as array - */ - private function getFooterArray() { - $foot = Array(); - $foot = $this->getAttaches($foot, $this->footerAttaches); - return $foot; - } - - - /*! gets array of data with attaches - */ - private function getAttaches($to, $from) { - for ($i = 0; $i < count($from); $i++) { - $line = $from[$i]['values']; - $to[] = $line; - } - return $to; - } - - - /*! calculates rowspan array according #cspan markers - */ - private function processCspan($data) { - $rspan = Array(); - for ($i = 0; $i < count($data); $i++) { - $last = 0; - $rspan[$i] = Array(); - for ($j = 0; $j < count($data[$i]); $j++) { - $rspan[$i][$j] = 0; - if ($data[$i][$j] === '#cspan') { - $rspan[$i][$last]++; - } else { - $last = $j; - } - } - } - return $rspan; - } - - - /*! calculates colspan array according #rspan markers - */ - private function processRspan($data) { - $last = Array(); - $cspan = Array(); - for ($i = 0; $i < count($data); $i++) { - $cspan[$i] = Array(); - for ($j = 0; $j < count($data[$i]); $j++) { - $cspan[$i][$j] = 0; - if (!isset($last[$j])) $last[$j] = 0; - if ($data[$i][$j] === '#rspan') { - $cspan[$last[$j]][$j]++; - } else { - $last[$j] = $i; - } - } - } - return $cspan; - } - - - /*! sets mode of output format: usual mode or convert mode. - * @param mode - * true - convert mode, false - otherwise - */ - public function set_convert_mode($mode) { - $this->convert_mode = $mode; - } - - - /*! adds header configuration in output XML - */ - public function attachHeaderToXML($conn, $out) { - if (!$conn->is_first_call()) return; //render head only for first call - - $head = $this->getHeaderArray(); - $foot = $this->getFooterArray(); - $rspan = $this->processRspan($head); - $cspan = $this->processCspan($head); - - $str = '<head>'; - - if ($this->convert_mode) $str .= "<columns>"; - - for ($i = 0; $i < count($this->headerNames); $i++) { - $str .= '<column'; - $str .= ' type="'. $this->headerTypes[$i].'"'; - $str .= ' width="'.$this->headerWidths[$i].'"'; - $str .= $this->headerIds ? ' id="'.$this->headerIds[$i].'"' : ''; - $str .= $this->headerAlign[$i] ? ' align="'.$this->headerAlign[$i].'"' : ''; - $str .= $this->headerVAlign[$i] ? ' valign="'.$this->headerVAlign[$i].'"' : ''; - $str .= $this->headerSorts[$i] ? ' sort="'.$this->headerSorts[$i].'"' : ''; - $str .= $this->headerColors[$i] ? ' color="'.$this->headerColors[$i].'"' : ''; - $str .= $this->headerHidden[$i] ? ' hidden="'.$this->headerHidden[$i].'"' : ''; - $str .= $this->headerFormat[$i] ? ' format="'.$this->headerFormat[$i].'"' : ''; - $str .= $cspan[0][$i] ? ' colspan="'.($cspan[0][$i] + 1).'"' : ''; - $str .= $rspan[0][$i] ? ' rowspan="'.($rspan[0][$i] + 1).'"' : ''; - $str .= '>'.$this->headerNames[$i].'</column>'; - } - - if (!$this->convert_mode) { - $str .= '<settings><colwidth>'.$this->headerWidthsUnits.'</colwidth></settings>'; - if ((count($this->headerAttaches) > 0)||(count($this->footerAttaches) > 0)) { - $str .= '<afterInit>'; - } - for ($i = 0; $i < count($this->headerAttaches); $i++) { - $str .= '<call command="attachHeader">'; - $str .= '<param>'.implode(",",$this->headerAttaches[$i]['values']).'</param>'; - if ($this->headerAttaches[$i]['styles'] != null) { - $str .= '<param>'.implode(",",$this->headerAttaches[$i]['styles']).'</param>'; - } - $str .= '</call>'; - } - for ($i = 0; $i < count($this->footerAttaches); $i++) { - $str .= '<call command="attachFooter">'; - $str .= '<param>'.implode(",",$this->footerAttaches[$i]['values']).'</param>'; - if ($this->footerAttaches[$i]['styles'] != null) { - $str .= '<param>'.implode(",",$this->footerAttaches[$i]['styles']).'</param>'; - } - $str .= '</call>'; - } - if ((count($this->headerAttaches) > 0)||(count($this->footerAttaches) > 0)) { - $str .= '</afterInit>'; - } - } else { - $str .= "</columns>"; - for ($i = 1; $i < count($head); $i++) { - $str .= "<columns>"; - for ($j = 0; $j < count($head[$i]); $j++) { - $str .= '<column'; - $str .= $cspan[$i][$j] ? ' colspan="'.($cspan[$i][$j] + 1).'"' : ''; - $str .= $rspan[$i][$j] ? ' rowspan="'.($rspan[$i][$j] + 1).'"' : ''; - $str .= '>'.$head[$i][$j].'</column>'; - } - $str .= "</columns>\n"; - } - } - $str .= '</head>'; - - - if ($this->convert_mode && count($foot) > 0) { - $rspan = $this->processRspan($foot); - $cspan = $this->processCspan($foot); - $str .= "<foot>"; - for ($i = 0; $i < count($foot); $i++) { - $str .= "<columns>"; - for ($j = 0; $j < count($foot[$i]); $j++) { - $str .= '<column'; - $str .= $cspan[$i][$j] ? ' colspan="'.($cspan[$i][$j] + 1).'"' : ''; - $str .= $rspan[$i][$j] ? ' rowspan="'.($rspan[$i][$j] + 1).'"' : ''; - $str .= '>'.$foot[$i][$j].'</column>'; - } - $str .= "</columns>\n"; - } - $str .= "</foot>"; - } - - $out->add($str); - } -} - -?>
\ No newline at end of file diff --git a/codebase/grid_connector.php b/codebase/grid_connector.php deleted file mode 100644 index d9be16a..0000000 --- a/codebase/grid_connector.php +++ /dev/null @@ -1,269 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); -require_once("grid_config.php"); - -//require_once("grid_dataprocessor.php"); - -/*! DataItem class for Grid component -**/ - -class GridDataItem extends DataItem{ - protected $row_attrs;//!< hash of row attributes - protected $cell_attrs;//!< hash of cell attributes - - function __construct($data,$name,$index=0){ - parent::__construct($data,$name,$index); - - $this->row_attrs=array(); - $this->cell_attrs=array(); - } - /*! set color of row - - @param color - color of row - */ - function set_row_color($color){ - $this->row_attrs["bgColor"]=$color; - } - /*! set style of row - - @param color - color of row - */ - function set_row_style($color){ - $this->row_attrs["style"]=$color; - } - /*! assign custom style to the cell - - @param name - name of column - @param value - css style string - */ - function set_cell_style($name,$value){ - $this->set_cell_attribute($name,"style",$value); - } - /*! assign custom class to specific cell - - @param name - name of column - @param value - css class name - */ - function set_cell_class($name,$value){ - $this->set_cell_attribute($name,"class",$value); - } - /*! set custom cell attribute - - @param name - name of column - @param attr - name of attribute - @param value - value of attribute - */ - function set_cell_attribute($name,$attr,$value){ - if (!array_key_exists($name, $this->cell_attrs)) $this->cell_attrs[$name]=array(); - $this->cell_attrs[$name][$attr]=$value; - } - - /*! set custom row attribute - - @param attr - name of attribute - @param value - value of attribute - */ - function set_row_attribute($attr,$value){ - $this->row_attrs[$attr]=$value; - } - - /*! return self as XML string, starting part - */ - public function to_xml_start(){ - if ($this->skip) return ""; - - $str="<row id='".$this->xmlentities($this->get_id())."'"; - foreach ($this->row_attrs as $k=>$v) - $str.=" ".$k."='".$v."'"; - $str.=">"; - for ($i=0; $i < sizeof($this->config->text); $i++){ - $str.="<cell"; - $name=$this->config->text[$i]["name"]; - $xmlcontent = false; - if (isset($this->cell_attrs[$name])){ - $cattrs=$this->cell_attrs[$name]; - foreach ($cattrs as $k => $v){ - $str.=" ".$k."='".$this->xmlentities($v)."'"; - if ($k == "xmlcontent") - $xmlcontent = true; - } - } - $value = isset($this->data[$name]) ? $this->data[$name] : ''; - if (!$xmlcontent) - $str.="><![CDATA[".$value."]]></cell>"; - else - $str.=">".$value."</cell>"; - } - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $str.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>"; - - return $str; - } - /*! return self as XML string, ending part - */ - public function to_xml_end(){ - if ($this->skip) return ""; - - return "</row>"; - } -} -/*! Connector for the dhtmlxgrid -**/ -class GridConnector extends Connector{ - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="GridDataItem"; - if (!$data_type) $data_type="GridDataProcessor"; - if (!$render_type) $render_type="RenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - - protected function parse_request(){ - parent::parse_request(); - - if (isset($_GET["dhx_colls"])) - $this->fill_collections($_GET["dhx_colls"]); - } - protected function resolve_parameter($name){ - if (intval($name).""==$name) - return $this->config->text[intval($name)]["db_name"]; - return $name; - } - - /*! replace xml unsafe characters - - @param string - string to be escaped - @return - escaped string - */ - protected function xmlentities($string) { - return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&' , '"', ''' , '<' , '>', ''' ), $string); - } - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=""; - foreach($options as $k => $v) - $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />"; - $options=$str; - } - $this->options[$name]=$options; - } - /*! generates xml description for options collections - - @param list - comma separated list of column names, for which options need to be generated - */ - protected function fill_collections($list=""){ - $names=explode(",",$list); - for ($i=0; $i < sizeof($names); $i++) { - $name = $this->resolve_parameter($names[$i]); - if (!array_key_exists($name,$this->options)){ - $this->options[$name] = new DistinctOptionsConnector($this->get_connection(),$this->names["db_class"]); - $c = new DataConfig($this->config); - $r = new DataRequestConfig($this->request); - $c->minimize($name); - - $this->options[$name]->render_connector($c,$r); - } - - $this->extra_output.="<coll_options for='{$names[$i]}'>"; - if (!is_string($this->options[$name])) - $this->extra_output.=$this->options[$name]->render(); - else - $this->extra_output.=$this->options[$name]; - $this->extra_output.="</coll_options>"; - } - } - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - $attributes = ""; - foreach($this->attributes as $k=>$v) - $attributes .= " ".$k."='".$v."'"; - - if ($this->dload){ - if ($pos=$this->request->get_start()) - return "<rows pos='".$pos."'".$attributes.">"; - else - return "<rows total_count='".$this->sql->get_size($this->request)."'".$attributes.">"; - } - else - return "<rows".$attributes.">"; - } - - - /*! renders self as xml, ending part - */ - protected function xml_end(){ - return $this->extra_output."</rows>"; - } - - public function set_config($config = false){ - if (gettype($config) == 'boolean') - $config = new GridConfiguration($config); - - $this->event->attach("beforeOutput", Array($config, "attachHeaderToXML")); - $this->event->attach("onInit", Array($config, "defineOptions")); - } -} - -/*! DataProcessor class for Grid component -**/ -class GridDataProcessor extends DataProcessor{ - - /*! convert incoming data name to valid db name - converts c0..cN to valid field names - @param data - data name from incoming request - @return - related db_name - */ - function name_data($data){ - if ($data == "gr_id") return $this->config->id["name"]; - $parts=explode("c",$data); - if ($parts[0]=="" && ((string)intval($parts[1]))==$parts[1]) - if (sizeof($this->config->text)>intval($parts[1])) - return $this->config->text[intval($parts[1])]["name"]; - return $data; - } -} -?>
\ No newline at end of file diff --git a/codebase/keygrid_connector.php b/codebase/keygrid_connector.php deleted file mode 100644 index 3942ac2..0000000 --- a/codebase/keygrid_connector.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("grid_connector.php"); -class KeyGridConnector extends GridConnector{ - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="GridDataItem"; - if (!$data_type) $data_type="KeyGridDataProcessor"; - parent::__construct($res,$type,$item_type,$data_type); - - $this->event->attach("beforeProcessing",array($this,"before_check_key")); - $this->event->attach("afterProcessing",array($this,"after_check_key")); - } - - public function before_check_key($action){ - if ($action->get_value($this->config->id["name"])=="") - $action->error(); - } - public function after_check_key($action){ - if ($action->get_status()=="inserted" || $action->get_status()=="updated"){ - $action->success($action->get_value($this->config->id["name"])); - $action->set_status("inserted"); - } - } -}; - -class KeyGridDataProcessor extends DataProcessor{ - - /*! convert incoming data name to valid db name - converts c0..cN to valid field names - @param data - data name from incoming request - @return - related db_name - */ - function name_data($data){ - if ($data == "gr_id") return "__dummy__id__"; //ignore ID - $parts=explode("c",$data); - if ($parts[0]=="" && intval($parts[1])==$parts[1]) - return $this->config->text[intval($parts[1])]["name"]; - return $data; - } -} - - -?>
\ No newline at end of file diff --git a/codebase/mixed_connector.php b/codebase/mixed_connector.php deleted file mode 100644 index 461d6ec..0000000 --- a/codebase/mixed_connector.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); - -class MixedConnector extends Connector { - - protected $connectors = array(); - - public function add($name, $conn) { - $this->connectors[$name] = $conn; - } - - public function render() { - $result = "{"; - $parts = array(); - foreach($this->connectors as $name => $conn) { - $conn->asString(true); - $parts[] = "\"".$name."\":".($conn->render())."\n"; - } - $result .= implode(",\n", $parts)."}"; - echo $result; - } -} - -?>
\ No newline at end of file diff --git a/codebase/options_connector.php b/codebase/options_connector.php deleted file mode 100644 index dc72eb2..0000000 --- a/codebase/options_connector.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); - -/*! DataItem class for dhxForm:options -**/ -class OptionsDataItem extends DataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - $str =""; - - $str .= "<item value=\"".$this->xmlentities($this->data[$this->config->data[0]['db_name']])."\" label=\"".$this->xmlentities($this->data[$this->config->data[1]['db_name']])."\" />"; - return $str; - } -} - -/*! Connector class for dhtmlxForm:options -**/ -class SelectOptionsConnector extends Connector{ - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false){ - if (!$item_type) $item_type="OptionsDataItem"; - parent::__construct($res,$type,$item_type,$data_type); - } - -} - -?>
\ No newline at end of file diff --git a/codebase/scheduler_connector.php b/codebase/scheduler_connector.php deleted file mode 100644 index ee0cd20..0000000 --- a/codebase/scheduler_connector.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("base_connector.php"); -require_once("data_connector.php"); - -/*! DataItem class for Scheduler component -**/ -class SchedulerDataItem extends DataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - - $str="<event id='".$this->get_id()."' >"; - $str.="<start_date><![CDATA[".$this->data[$this->config->text[0]["name"]]."]]></start_date>"; - $str.="<end_date><![CDATA[".$this->data[$this->config->text[1]["name"]]."]]></end_date>"; - $str.="<text><![CDATA[".$this->data[$this->config->text[2]["name"]]."]]></text>"; - for ($i=3; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - $str.="<".$extra."><![CDATA[".$this->data[$extra]."]]></".$extra.">"; - } - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $str.="<".$key."><![CDATA[".$value."]]></".$key.">"; - - return $str."</event>"; - } -} - - -/*! Connector class for dhtmlxScheduler -**/ -class SchedulerConnector extends Connector{ - - protected $extra_output="";//!< extra info which need to be sent to client side - protected $options=array();//!< hash of OptionsConnector - - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=""; - foreach($options as $k => $v) - $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />"; - $options=$str; - } - $this->options[$name]=$options; - } - - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - * @param render_type - name of class which will be used for rendering. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="SchedulerDataItem"; - if (!$data_type) $data_type="SchedulerDataProcessor"; - if (!$render_type) $render_type="RenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - //parse GET scoope, all operations with incoming request must be done here - function parse_request(){ - parent::parse_request(); - if (count($this->config->text)){ - if (isset($_GET["to"])) - $this->request->set_filter($this->config->text[0]["name"],$_GET["to"],"<"); - if (isset($_GET["from"])) - $this->request->set_filter($this->config->text[1]["name"],$_GET["from"],">"); - } - } -} - -/*! DataProcessor class for Scheduler component -**/ -class SchedulerDataProcessor extends DataProcessor{ - function name_data($data){ - if ($data=="start_date") - return $this->config->text[0]["db_name"]; - if ($data=="id") - return $this->config->id["db_name"]; - if ($data=="end_date") - return $this->config->text[1]["db_name"]; - if ($data=="text") - return $this->config->text[2]["db_name"]; - - return $data; - } -} - - -class JSONSchedulerDataItem extends SchedulerDataItem{ - /*! return self as XML string - */ - function to_xml(){ - if ($this->skip) return ""; - - $obj = array(); - $obj['id'] = $this->get_id(); - $obj['start_date'] = $this->data[$this->config->text[0]["name"]]; - $obj['end_date'] = $this->data[$this->config->text[1]["name"]]; - $obj['text'] = $this->data[$this->config->text[2]["name"]]; - for ($i=3; $i<sizeof($this->config->text); $i++){ - $extra = $this->config->text[$i]["name"]; - $obj[$extra]=$this->data[$extra]; - } - - if ($this->userdata !== false) - foreach ($this->userdata as $key => $value) - $obj[$key]=$value; - - return $obj; - } -} - - -class JSONSchedulerConnector extends SchedulerConnector { - - protected $data_separator = ","; - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="JSONSchedulerDataItem"; - if (!$data_type) $data_type="SchedulerDataProcessor"; - if (!$render_type) $render_type="JSONRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - protected function xml_start() { - return '{ "data":'; - } - - protected function xml_end() { - $this->fill_collections(); - $end = (!empty($this->extra_output)) ? ', "collections": {'.$this->extra_output.'}' : ''; - foreach ($this->attributes as $k => $v) - $end.=", \"".$k."\":\"".$v."\""; - $end .= '}'; - return $end; - } - - /*! assign options collection to the column - - @param name - name of the column - @param options - array or connector object - */ - public function set_options($name,$options){ - if (is_array($options)){ - $str=array(); - foreach($options as $k => $v) - $str[]='{"id":"'.$this->xmlentities($k).'", "value":"'.$this->xmlentities($v).'"}'; - $options=implode(",",$str); - } - $this->options[$name]=$options; - } - - - /*! generates xml description for options collections - - @param list - comma separated list of column names, for which options need to be generated - */ - protected function fill_collections($list=""){ - $options = array(); - foreach ($this->options as $k=>$v) { - $name = $k; - $option="\"{$name}\":["; - if (!is_string($this->options[$name])){ - $data = json_encode($this->options[$name]->render()); - $option.=substr($data,1,-1); - } else - $option.=$this->options[$name]; - $option.="]"; - $options[] = $option; - } - $this->extra_output .= implode($this->data_separator, $options); - } - - - /*! output fetched data as XML - @param res - DB resultset - */ - protected function output_as_xml($res){ - $result = $this->render_set($res); - if ($this->simple) return $result; - - $data=$this->xml_start().json_encode($result).$this->xml_end(); - - if ($this->as_string) return $data; - - $out = new OutputWriter($data, ""); - $out->set_type("json"); - $this->event->trigger("beforeOutput", $this, $out); - $out->output("", true, $this->encoding); - } -} -?>
\ No newline at end of file diff --git a/codebase/strategy.php b/codebase/strategy.php deleted file mode 100644 index 344dcf2..0000000 --- a/codebase/strategy.php +++ /dev/null @@ -1,508 +0,0 @@ -<?php - -class RenderStrategy { - - protected $conn = null; - - public function __construct($conn) { - $this->conn = $conn; - } - - /*! adds mix fields into DataConfig - * @param config - * DataConfig object - * @param mix - * mix structure - */ - protected function mix($config, $mix) { - for ($i = 0; $i < count($mix); $i++) { - if ($config->is_field($mix[$i]['name'])===-1) { - $config->add_field($mix[$i]['name']); - } - } - } - - /*! remove mix fields from DataConfig - * @param config - * DataConfig object - * @param mix - * mix structure - */ - protected function unmix($config, $mix) { - for ($i = 0; $i < count($mix); $i++) { - if ($config->is_field($mix[$i]['name'])!==-1) { - $config->remove_field_full($mix[$i]['name']); - } - } - } - - /*! adds mix fields in item - * simple mix adds only strings specified by user - * @param mix - * mix structure - * @param data - * array of selected data - */ - protected function simple_mix($mix, $data) { - // get mix details - for ($i = 0; $i < count($mix); $i++) - $data[$mix[$i]["name"]] = is_object($mix[$i]["value"]) ? "" : $mix[$i]["value"]; - return $data; - } - - /*! adds mix fields in item - * complex mix adds strings specified by user and results of subrequests - * @param mix - * mix structure - * @param data - * array of selected data - */ - protected function complex_mix($mix, $data) { - // get mix details - for ($i = 0; $i < count($mix); $i++) { - $mixname = $mix[$i]["name"]; - if ($mix[$i]['filter'] !== false) { - $subconn = $mix[$i]["value"]; - $filter = $mix[$i]["filter"]; - - // setting relationships - $subconn->clear_filter(); - foreach ($filter as $k => $v) - if (isset($data[$v])) - $subconn->filter($k, $data[$v], "="); - else - throw new Exception('There was no such data field registered as: '.$k); - - $subconn->asString(true); - $data[$mixname]=$subconn->simple_render(); - if (is_array($data[$mixname]) && count($data[$mixname]) == 1) - $data[$mixname] = $data[$mixname][0]; - } else { - $data[$mixname] = $mix[$i]["value"]; - } - } - return $data; - } - - /*! render from DB resultset - @param res - DB resultset - process commands, output requested data as XML - */ - public function render_set($res, $name, $dload, $sep, $config, $mix){ - $output=""; - $index=0; - $conn = $this->conn; - $this->mix($config, $mix); - $conn->event->trigger("beforeRenderSet",$conn,$res,$config); - while ($data=$conn->sql->get_next($res)){ - $data = $this->simple_mix($mix, $data); - - $data = new $name($data,$config,$index); - if ($data->get_id()===false) - $data->set_id($conn->uuid()); - $conn->event->trigger("beforeRender",$data); - $output.=$data->to_xml().$sep; - $index++; - } - $this->unmix($config, $mix); - return $output; - } - -} - -class JSONRenderStrategy extends RenderStrategy { - - /*! render from DB resultset - @param res - DB resultset - process commands, output requested data as json - */ - public function render_set($res, $name, $dload, $sep, $config, $mix){ - $output=array(); - $index=0; - $conn = $this->conn; - $this->mix($config, $mix); - $conn->event->trigger("beforeRenderSet",$conn,$res,$config); - while ($data=$conn->sql->get_next($res)){ - $data = $this->complex_mix($mix, $data); - $data = new $name($data,$config,$index); - if ($data->get_id()===false) - $data->set_id($conn->uuid()); - $conn->event->trigger("beforeRender",$data); - $item = $data->to_xml(); - if ($item !== false) - $output[]=$item; - $index++; - } - $this->unmix($config, $mix); - return $output; - } - -} - -class TreeRenderStrategy extends RenderStrategy { - - protected $id_swap = array(); - - public function __construct($conn) { - parent::__construct($conn); - $conn->event->attach("afterInsert",array($this,"parent_id_correction_a")); - $conn->event->attach("beforeProcessing",array($this,"parent_id_correction_b")); - } - - public function render_set($res, $name, $dload, $sep, $config, $mix){ - $output=""; - $index=0; - $conn = $this->conn; - $config_copy = new DataConfig($config); - $this->mix($config, $mix); - while ($data=$conn->sql->get_next($res)){ - $data = $this->simple_mix($mix, $data); - $data = new $name($data,$config,$index); - $conn->event->trigger("beforeRender",$data); - //there is no info about child elements, - //if we are using dyn. loading - assume that it has, - //in normal mode juse exec sub-render routine - if ($data->has_kids()===-1 && $dload) - $data->set_kids(true); - $output.=$data->to_xml_start(); - if ($data->has_kids()===-1 || ( $data->has_kids()==true && !$dload)){ - $sub_request = new DataRequestConfig($conn->get_request()); - //$sub_request->set_fieldset(implode(",",$config_copy->db_names_list($conn->sql))); - $sub_request->set_relation($data->get_id()); - $output.=$this->render_set($conn->sql->select($sub_request), $name, $dload, $sep, $config_copy, $mix); - } - $output.=$data->to_xml_end(); - $index++; - } - $this->unmix($config, $mix); - return $output; - } - - /*! store info about ID changes during insert operation - @param dataAction - data action object during insert operation - */ - public function parent_id_correction_a($dataAction){ - $this->id_swap[$dataAction->get_id()]=$dataAction->get_new_id(); - } - - /*! update ID if it was affected by previous operation - @param dataAction - data action object, before any processing operation - */ - public function parent_id_correction_b($dataAction){ - $relation = $this->conn->get_config()->relation_id["db_name"]; - $value = $dataAction->get_value($relation); - - if (array_key_exists($value,$this->id_swap)) - $dataAction->set_value($relation,$this->id_swap[$value]); - } -} - - - -class JSONTreeRenderStrategy extends TreeRenderStrategy { - - public function render_set($res, $name, $dload, $sep, $config,$mix){ - $output=array(); - $index=0; - $conn = $this->conn; - $config_copy = new DataConfig($config); - $this->mix($config, $mix); - while ($data=$conn->sql->get_next($res)){ - $data = $this->complex_mix($mix, $data); - $data = new $name($data,$config,$index); - $conn->event->trigger("beforeRender",$data); - //there is no info about child elements, - //if we are using dyn. loading - assume that it has, - //in normal mode just exec sub-render routine - if ($data->has_kids()===-1 && $dload) - $data->set_kids(true); - $record = $data->to_xml_start(); - if ($data->has_kids()===-1 || ( $data->has_kids()==true && !$dload)){ - $sub_request = new DataRequestConfig($conn->get_request()); - //$sub_request->set_fieldset(implode(",",$config_copy->db_names_list($conn->sql))); - $sub_request->set_relation($data->get_id()); - //$sub_request->set_filters(array()); - $temp = $this->render_set($conn->sql->select($sub_request), $name, $dload, $sep, $config_copy, $mix); - if (sizeof($temp)) - $record["data"] = $temp; - } - if ($record !== false) - $output[] = $record; - $index++; - } - $this->unmix($config, $mix); - return $output; - } - -} - - -class MultitableTreeRenderStrategy extends TreeRenderStrategy { - - private $level = 0; - private $max_level = null; - protected $sep = "-@level@-"; - - public function __construct($conn) { - parent::__construct($conn); - $conn->event->attach("beforeProcessing", Array($this, 'id_translate_before')); - $conn->event->attach("afterProcessing", Array($this, 'id_translate_after')); - } - - public function set_separator($sep) { - $this->sep = $sep; - } - - public function render_set($res, $name, $dload, $sep, $config, $mix){ - $output=""; - $index=0; - $conn = $this->conn; - $this->mix($config, $mix); - while ($data=$conn->sql->get_next($res)){ - $data = $this->simple_mix($mix, $data); - $data[$config->id['name']] = $this->level_id($data[$config->id['name']]); - $data = new $name($data,$config,$index); - $conn->event->trigger("beforeRender",$data); - if (($this->max_level !== null)&&($conn->get_level() == $this->max_level)) { - $data->set_kids(false); - } else { - if ($data->has_kids()===-1) - $data->set_kids(true); - } - $output.=$data->to_xml_start(); - $output.=$data->to_xml_end(); - $index++; - } - $this->unmix($config, $mix); - return $output; - } - - - public function level_id($id, $level = null) { - return ($level === null ? $this->level : $level).$this->sep.$id; - } - - - /*! remove level prefix from id, parent id and set new id before processing - @param action - DataAction object - */ - public function id_translate_before($action) { - $id = $action->get_id(); - $id = $this->parse_id($id, false); - $action->set_id($id); - $action->set_value('tr_id', $id); - $action->set_new_id($id); - $pid = $action->get_value($this->conn->get_config()->relation_id['db_name']); - $pid = $this->parse_id($pid, false); - $action->set_value($this->conn->get_config()->relation_id['db_name'], $pid); - } - - - /*! add level prefix in id and new id after processing - @param action - DataAction object - */ - public function id_translate_after($action) { - $id = $action->get_id(); - $action->set_id($this->level_id($id)); - $id = $action->get_new_id(); - $action->success($this->level_id($id)); - } - - - public function get_level($parent_name) { - if ($this->level) return $this->level; - if (!isset($_GET[$parent_name])) { - if (isset($_POST['ids'])) { - $ids = explode(",",$_POST["ids"]); - $id = $this->parse_id($ids[0]); - $this->level--; - } - $this->conn->get_request()->set_relation(false); - } else { - $id = $this->parse_id($_GET[$parent_name]); - $_GET[$parent_name] = $id; - } - return $this->level; - } - - - public function is_max_level() { - if (($this->max_level !== null) && ($this->level >= $this->max_level)) - return true; - return false; - } - public function set_max_level($max_level) { - $this->max_level = $max_level; - } - public function parse_id($id, $set_level = true) { - $parts = explode($this->sep, $id, 2); - if (count($parts) === 2) { - $level = $parts[0] + 1; - $id = $parts[1]; - } else { - $level = 0; - $id = ''; - } - if ($set_level) $this->level = $level; - return $id; - } - -} - - -class JSONMultitableTreeRenderStrategy extends MultitableTreeRenderStrategy { - - public function render_set($res, $name, $dload, $sep, $config, $mix){ - $output=array(); - $index=0; - $conn = $this->conn; - $this->mix($config, $mix); - while ($data=$conn->sql->get_next($res)){ - $data = $this->complex_mix($mix, $data); - $data[$config->id['name']] = $this->level_id($data[$config->id['name']]); - $data = new $name($data,$config,$index); - $conn->event->trigger("beforeRender",$data); - - if ($this->is_max_level()) { - $data->set_kids(false); - } else { - if ($data->has_kids()===-1) - $data->set_kids(true); - } - $record = $data->to_xml_start($output); - $output[] = $record; - $index++; - } - $this->unmix($config, $mix); - return $output; - } - -} - - -class GroupRenderStrategy extends RenderStrategy { - - protected $id_postfix = '__{group_param}'; - - public function __construct($conn) { - parent::__construct($conn); - $conn->event->attach("beforeProcessing", Array($this, 'check_id')); - $conn->event->attach("onInit", Array($this, 'replace_postfix')); - } - - public function render_set($res, $name, $dload, $sep, $config, $mix, $usemix = false){ - $output=""; - $index=0; - $conn = $this->conn; - if ($usemix) $this->mix($config, $mix); - while ($data=$conn->sql->get_next($res)){ - if (isset($data[$config->id['name']])) { - $this->simple_mix($mix, $data); - $has_kids = false; - } else { - $data[$config->id['name']] = $data['value'].$this->id_postfix; - $data[$config->text[0]['name']] = $data['value']; - $has_kids = true; - } - $data = new $name($data,$config,$index); - $conn->event->trigger("beforeRender",$data); - if ($has_kids === false) { - $data->set_kids(false); - } - - if ($data->has_kids()===-1 && $dload) - $data->set_kids(true); - $output.=$data->to_xml_start(); - if (($data->has_kids()===-1 || ( $data->has_kids()==true && !$dload))&&($has_kids == true)){ - $sub_request = new DataRequestConfig($conn->get_request()); - $sub_request->set_relation(str_replace($this->id_postfix, "", $data->get_id())); - $output.=$this->render_set($conn->sql->select($sub_request), $name, $dload, $sep, $config, $mix, true); - } - $output.=$data->to_xml_end(); - $index++; - } - if ($usemix) $this->unmix($config, $mix); - return $output; - } - - public function check_id($action) { - if (isset($_GET['editing'])) { - $config = $this->conn->get_config(); - $id = $action->get_id(); - $pid = $action->get_value($config->relation_id['name']); - $pid = str_replace($this->id_postfix, "", $pid); - $action->set_value($config->relation_id['name'], $pid); - if (!empty($pid)) { - return $action; - } else { - $action->error(); - $action->set_response_text("This record can't be updated!"); - return $action; - } - } else { - return $action; - } - } - - public function replace_postfix() { - if (isset($_GET['id'])) { - $_GET['id'] = str_replace($this->id_postfix, "", $_GET['id']); - } - } - - public function get_postfix() { - return $this->id_postfix; - } - -} - - -class JSONGroupRenderStrategy extends GroupRenderStrategy { - - public function render_set($res, $name, $dload, $sep, $config, $mix, $usemix = false){ - $output=array(); - $index=0; - $conn = $this->conn; - if ($usemix) $this->mix($config, $mix); - while ($data=$conn->sql->get_next($res)){ - if (isset($data[$config->id['name']])) { - $data = $this->complex_mix($mix, $data); - $has_kids = false; - } else { - $data[$config->id['name']] = $data['value'].$this->id_postfix; - $data[$config->text[0]['name']] = $data['value']; - $has_kids = true; - } - $data = new $name($data,$config,$index); - $conn->event->trigger("beforeRender",$data); - if ($has_kids === false) { - $data->set_kids(false); - } - - if ($data->has_kids()===-1 && $dload) - $data->set_kids(true); - $record = $data->to_xml_start(); - if (($data->has_kids()===-1 || ( $data->has_kids()==true && !$dload))&&($has_kids == true)){ - $sub_request = new DataRequestConfig($conn->get_request()); - $sub_request->set_relation(str_replace($this->id_postfix, "", $data->get_id())); - $temp = $this->render_set($conn->sql->select($sub_request), $name, $dload, $sep, $config, $mix, true); - if (sizeof($temp)) - $record["data"] = $temp; - } - $output[] = $record; - $index++; - } - if ($usemix) $this->unmix($config, $mix); - return $output; - } - -} - - -?>
\ No newline at end of file diff --git a/codebase/tools.php b/codebase/tools.php deleted file mode 100644 index 5017a72..0000000 --- a/codebase/tools.php +++ /dev/null @@ -1,267 +0,0 @@ -<?php
-/*
- @author dhtmlx.com
- @license GPL, see license.txt
-*/
-
-/*! Class which allows to assign|fire events.
-*/
-class EventMaster{
- private $events;//!< hash of event handlers
- private $master;
- private static $eventsStatic=array();
-
- /*! constructor
- */
- function __construct(){
- $this->events=array();
- $this->master = false;
- }
- /*! Method check if event with such name already exists.
- @param name
- name of event, case non-sensitive
- @return
- true if event with such name registered, false otherwise
- */
- public function exist($name){
- $name=strtolower($name);
- return (isset($this->events[$name]) && sizeof($this->events[$name]));
- }
- /*! Attach custom code to event.
-
- Only on event handler can be attached in the same time. If new event handler attached - old will be detached.
-
- @param name
- name of event, case non-sensitive
- @param method
- function which will be attached. You can use array(class, method) if you want to attach the method of the class.
- */
- public function attach($name,$method=false){
- //use class for event handling
- if ($method === false){
- $this->master = $name;
- return;
- }
- //use separate functions
- $name=strtolower($name);
- if (!array_key_exists($name,$this->events))
- $this->events[$name]=array();
- $this->events[$name][]=$method;
- }
-
- public static function attach_static($name, $method){
- $name=strtolower($name);
- if (!array_key_exists($name,EventMaster::$eventsStatic))
- EventMaster::$eventsStatic[$name]=array();
- EventMaster::$eventsStatic[$name][]=$method;
- }
-
- public static function trigger_static($name, $method){
- $arg_list = func_get_args();
- $name=strtolower(array_shift($arg_list));
-
- if (isset(EventMaster::$eventsStatic[$name]))
- foreach(EventMaster::$eventsStatic[$name] as $method){
- if (is_array($method) && !method_exists($method[0],$method[1]))
- throw new Exception("Incorrect method assigned to event: ".$method[0].":".$method[1]);
- if (!is_array($method) && !function_exists($method))
- throw new Exception("Incorrect function assigned to event: ".$method);
- call_user_func_array($method, $arg_list);
- }
- return true;
- }
-
- /*! Detach code from event
- @param name
- name of event, case non-sensitive
- */
- public function detach($name){
- $name=strtolower($name);
- unset($this->events[$name]);
- }
- /*! Trigger event.
- @param name
- name of event, case non-sensitive
- @param data
- value which will be provided as argument for event function,
- you can provide multiple data arguments, method accepts variable number of parameters
- @return
- true if event handler was not assigned , result of event hangler otherwise
- */
- public function trigger($name,$data){
- $arg_list = func_get_args();
- $name=strtolower(array_shift($arg_list));
-
- if (isset($this->events[$name]))
- foreach($this->events[$name] as $method){
- if (is_array($method) && !method_exists($method[0],$method[1]))
- throw new Exception("Incorrect method assigned to event: ".$method[0].":".$method[1]);
- if (!is_array($method) && !function_exists($method))
- throw new Exception("Incorrect function assigned to event: ".$method);
- call_user_func_array($method, $arg_list);
- }
-
- if ($this->master !== false)
- if (method_exists($this->master, $name))
- call_user_func_array(array($this->master, $name), $arg_list);
-
- return true;
- }
-}
-
-/*! Class which handles access rules.
-**/
-class AccessMaster{
- private $rules,$local;
- /*! constructor
-
- Set next access right to "allowed" by default : read, insert, update, delete
- Basically - all common data operations allowed by default
- */
- function __construct(){
- $this->rules=array("read" => true, "insert" => true, "update" => true, "delete" => true);
- $this->local=true;
- }
- /*! change access rule to "allow"
- @param name
- name of access right
- */
- public function allow($name){
- $this->rules[$name]=true;
- }
- /*! change access rule to "deny"
-
- @param name
- name of access right
- */
- public function deny($name){
- $this->rules[$name]=false;
- }
-
- /*! change all access rules to "deny"
- */
- public function deny_all(){
- $this->rules=array();
- }
-
- /*! check access rule
-
- @param name
- name of access right
- @return
- true if access rule allowed, false otherwise
- */
- public function check($name){
- if ($this->local){
- /*!
- todo
- add referrer check, to prevent access from remote points
- */
- }
- if (!isset($this->rules[$name]) || !$this->rules[$name]){
- return false;
- }
- return true;
- }
-}
-
-/*! Controls error and debug logging.
- Class designed to be used as static object.
-**/
-class LogMaster{
- private static $_log=false;//!< logging mode flag
- private static $_output=false;//!< output error infor to client flag
- private static $session="";//!< all messages generated for current request
-
- /*! convert array to string representation ( it is a bit more readable than var_dump )
-
- @param data
- data object
- @param pref
- prefix string, used for formating, optional
- @return
- string with array description
- */
- private static function log_details($data,$pref=""){
- if (is_array($data)){
- $str=array("");
- foreach($data as $k=>$v)
- array_push($str,$pref.$k." => ".LogMaster::log_details($v,$pref."\t"));
- return implode("\n",$str);
- }
- return $data;
- }
- /*! put record in log
-
- @param str
- string with log info, optional
- @param data
- data object, which will be added to log, optional
- */
- public static function log($str="",$data=""){
- if (LogMaster::$_log){
- $message = $str.LogMaster::log_details($data)."\n\n";
- LogMaster::$session.=$message;
- error_log($message,3,LogMaster::$_log);
- }
- }
-
- /*! get logs for current request
- @return
- string, which contains all log messages generated for current request
- */
- public static function get_session_log(){
- return LogMaster::$session;
- }
-
- /*! error handler, put normal php errors in log file
-
- @param errn
- error number
- @param errstr
- error description
- @param file
- error file
- @param line
- error line
- @param context
- error cntext
- */
- public static function error_log($errn,$errstr,$file,$line,$context){
- LogMaster::log($errstr." at ".$file." line ".$line);
- }
-
- /*! exception handler, used as default reaction on any error - show execution log and stop processing
-
- @param exception
- instance of Exception
- */
- public static function exception_log($exception){
- LogMaster::log("!!!Uncaught Exception\nCode: " . $exception->getCode() . "\nMessage: " . $exception->getMessage());
- if (LogMaster::$_output){
- echo "<pre><xmp>\n";
- echo LogMaster::get_session_log();
- echo "\n</xmp></pre>";
- }
- die();
- }
-
- /*! enable logging
-
- @param name
- path to the log file, if boolean false provided as value - logging will be disabled
- @param output
- flag of client side output, if enabled - session log will be sent to client side in case of an error.
- */
- public static function enable_log($name,$output=false){
- LogMaster::$_log=$name;
- LogMaster::$_output=$output;
- if ($name){
- set_error_handler(array("LogMaster","error_log"),E_ALL);
- set_exception_handler(array("LogMaster","exception_log"));
- LogMaster::log("\n\n====================================\nLog started, ".date("d/m/Y h:i:s")."\n====================================");
- }
- }
-}
-
-?>
\ No newline at end of file diff --git a/codebase/tree_connector.php b/codebase/tree_connector.php deleted file mode 100644 index 63d4442..0000000 --- a/codebase/tree_connector.php +++ /dev/null @@ -1,231 +0,0 @@ -<?php
-/*
- @author dhtmlx.com
- @license GPL, see license.txt
-*/
-require_once("base_connector.php");
-
-/*! DataItem class for Tree component
-**/
-
-class TreeDataItem extends DataItem{
- private $im0;//!< image of closed folder
- private $im1;//!< image of opened folder
- private $im2;//!< image of leaf item
- private $check;//!< checked state
- private $kids=-1;//!< checked state
- private $attrs;//!< collection of custom attributes
-
- function __construct($data,$config,$index){
- parent::__construct($data,$config,$index);
-
- $this->im0=false;
- $this->im1=false;
- $this->im2=false;
- $this->check=false;
- $this->attrs = array();
- }
- /*! get id of parent record
-
- @return
- id of parent record
- */
- function get_parent_id(){
- return $this->data[$this->config->relation_id["name"]];
- }
- /*! get state of items checkbox
-
- @return
- state of item's checkbox as int value, false if state was not defined
- */
- function get_check_state(){
- return $this->check;
- }
- /*! set state of item's checkbox
-
- @param value
- int value, 1 - checked, 0 - unchecked, -1 - third state
- */
- function set_check_state($value){
- $this->check=$value;
- }
-
- /*! return count of child items
- -1 if there is no info about childs
- @return
- count of child items
- */
- function has_kids(){
- return $this->kids;
- }
- /*! sets count of child items
- @param value
- count of child items
- */
- function set_kids($value){
- $this->kids=$value;
- }
-
- /*! set custom attribute
-
- @param name
- name of the attribute
- @param value
- new value of the attribute
- */
- function set_attribute($name, $value){
- switch($name){
- case "id":
- $this->set_id($value);
- break;
- case "text":
- $this->data[$this->config->text[0]["name"]]=$value;
- break;
- case "checked":
- $this->set_check_state($value);
- break;
- case "im0":
- $this->im0=$value;
- break;
- case "im1":
- $this->im1=$value;
- break;
- case "im2":
- $this->im2=$value;
- break;
- case "child":
- $this->set_kids($value);
- break;
- default:
- $this->attrs[$name]=$value;
- }
- }
-
-
- /*! assign image for tree's item
-
- @param img_folder_closed
- image for item, which represents folder in closed state
- @param img_folder_open
- image for item, which represents folder in opened state, optional
- @param img_leaf
- image for item, which represents leaf item, optional
- */
- function set_image($img_folder_closed,$img_folder_open=false,$img_leaf=false){
- $this->im0=$img_folder_closed;
- $this->im1=$img_folder_open?$img_folder_open:$img_folder_closed;
- $this->im2=$img_leaf?$img_leaf:$img_folder_closed;
- }
- /*! return self as XML string, starting part
- */
- function to_xml_start(){
- if ($this->skip) return "";
-
- $str1="<item id='".$this->xmlentities($this->get_id())."' text='".$this->xmlentities($this->data[$this->config->text[0]["name"]])."' ";
- if ($this->has_kids()==true) $str1.="child='".$this->has_kids()."' ";
- if ($this->im0) $str1.="im0='".$this->im0."' ";
- if ($this->im1) $str1.="im1='".$this->im1."' ";
- if ($this->im2) $str1.="im2='".$this->im2."' ";
- if ($this->check) $str1.="checked='".$this->check."' ";
- foreach ($this->attrs as $key => $value)
- $str1.=$key."='".$this->xmlentities($value)."' ";
- $str1.=">";
- if ($this->userdata !== false)
- foreach ($this->userdata as $key => $value)
- $str1.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>";
-
- return $str1;
- }
- /*! return self as XML string, ending part
- */
- function to_xml_end(){
- if ($this->skip) return "";
- return "</item>";
- }
-
-}
-
-require_once("filesystem_item.php");
-
-/*! Connector for the dhtmlxtree
-**/
-class TreeConnector extends Connector{
- protected $parent_name = 'id';
- public $rootId = "0";
-
- /*! constructor
-
- Here initilization of all Masters occurs, execution timer initialized
- @param res
- db connection resource
- @param type
- string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
- @param item_type
- name of class, which will be used for item rendering, optional, DataItem will be used by default
- @param data_type
- name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
- * @param render_type
- * name of class which will provides data rendering
- */
- public function __construct($res,$type=false,$item_type=false,$data_type=false, $render_type=false){
- if (!$item_type) $item_type="TreeDataItem";
- if (!$data_type) $data_type="TreeDataProcessor";
- if (!$render_type) $render_type="TreeRenderStrategy";
- parent::__construct($res,$type,$item_type,$data_type,$render_type);
- }
-
- //parse GET scoope, all operations with incoming request must be done here
- public function parse_request(){
- parent::parse_request();
-
- if (isset($_GET[$this->parent_name]))
- $this->request->set_relation($_GET[$this->parent_name]);
- else
- $this->request->set_relation($this->rootId);
-
- $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode
- }
-
- /*! renders self as xml, starting part
- */
- public function xml_start(){
- $attributes = "";
- foreach($this->attributes as $k=>$v)
- $attributes .= " ".$k."='".$v."'";
-
- return "<tree id='".$this->request->get_relation()."'".$attributes.">";
- }
-
- /*! renders self as xml, ending part
- */
- public function xml_end(){
- $this->fill_collections();
- return $this->extra_output."</tree>";
- }
-}
-
-
-class TreeDataProcessor extends DataProcessor{
-
- function __construct($connector,$config,$request){
- parent::__construct($connector,$config,$request);
- $request->set_relation(false);
- }
-
- /*! convert incoming data name to valid db name
- converts c0..cN to valid field names
- @param data
- data name from incoming request
- @return
- related db_name
- */
- function name_data($data){
- if ($data=="tr_pid")
- return $this->config->relation_id["db_name"];
- if ($data=="tr_text")
- return $this->config->text[0]["db_name"];
- return $data;
- }
-}
-
-?>
\ No newline at end of file diff --git a/codebase/treedatagroup_connector.php b/codebase/treedatagroup_connector.php deleted file mode 100644 index 336915a..0000000 --- a/codebase/treedatagroup_connector.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("data_connector.php"); - -class TreeDataGroupConnector extends TreeDataConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$render_type) $render_type="GroupRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - /*! if not isset $_GET[id] then it's top level - */ - protected function set_relation() { - if (!isset($_GET[$this->parent_name])) $this->request->set_relation(false); - } - - /*! if it's first level then distinct level - * else select by parent - */ - protected function get_resource() { - $resource = null; - if (isset($_GET[$this->parent_name])) - $resource = $this->sql->select($this->request); - else - $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); - return $resource; - } - - - /*! renders self as xml, starting part - */ - public function xml_start(){ - if (isset($_GET[$this->parent_name])) { - return "<data parent='".$_GET[$this->parent_name].$this->render->get_postfix()."'>"; - } else { - return "<data parent='0'>"; - } - } - -} - - - - -class JSONTreeDataGroupConnector extends JSONTreeDataConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$render_type) $render_type="JSONGroupRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - /*! if not isset $_GET[id] then it's top level - */ - protected function set_relation() { - if (!isset($_GET[$this->parent_name])) $this->request->set_relation(false); - } - - /*! if it's first level then distinct level - * else select by parent - */ - protected function get_resource() { - $resource = null; - if (isset($_GET[$this->parent_name])) - $resource = $this->sql->select($this->request); - else - $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); - return $resource; - } - - - /*! renders self as xml, starting part - */ - public function xml_start(){ - if (isset($_GET[$this->parent_name])) { - return "<data parent='".$_GET[$this->parent_name].$this->render->get_postfix()."'>"; - } else { - return "<data parent='0'>"; - } - } - -} - - - -?>
\ No newline at end of file diff --git a/codebase/treedatamultitable_connector.php b/codebase/treedatamultitable_connector.php deleted file mode 100644 index 104770e..0000000 --- a/codebase/treedatamultitable_connector.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("data_connector.php"); - -class TreeDataMultitableConnector extends TreeDataConnector{ - - protected $parent_name = 'parent'; - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$data_type) $data_type="TreeDataProcessor"; - if (!$render_type) $render_type="MultitableTreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - public function render(){ - $this->dload = true; - return parent::render(); - } - - /*! sets relation for rendering */ - protected function set_relation() { - if (!isset($_GET[$this->parent_name])) - $this->request->set_relation(false); - } - - public function xml_start(){ - if (isset($_GET[$this->parent_name])) { - return "<data parent='".$this->xmlentities($this->render->level_id($_GET[$this->parent_name], $this->render->get_level() - 1))."'>"; - } else { - return "<data parent='0'>"; - } - } - - /*! set maximum level of tree - @param max_level - maximum level - */ - public function setMaxLevel($max_level) { - $this->render->set_max_level($max_level); - } - - public function get_level() { - return $this->render->get_level($this->parent_name); - } - -} - - - - - - -class JSONTreeDataMultitableConnector extends TreeDataMultitableConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="JSONTreeCommonDataItem"; - if (!$data_type) $data_type="CommonDataProcessor"; - if (!$render_type) $render_type="JSONMultitableTreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - protected function output_as_xml($res){ - $result = $this->render_set($res); - if ($this->simple) return $result; - - $data = array(); - if (isset($_GET['parent'])) - $data["parent"] = $this->render->level_id($_GET[$this->parent_name], $this->render->get_level() - 1); - else - $data["parent"] = "0"; - $data["data"] = $result; - - $result = json_encode($data); - if ($this->as_string) return $result; - - $out = new OutputWriter($result, ""); - $out->set_type("json"); - $this->event->trigger("beforeOutput", $this, $out); - $out->output("", true, $this->encoding); - } - - public function xml_start(){ - return ''; - } -} - - -?>
\ No newline at end of file diff --git a/codebase/treegrid_connector.php b/codebase/treegrid_connector.php deleted file mode 100644 index 1f89137..0000000 --- a/codebase/treegrid_connector.php +++ /dev/null @@ -1,121 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("grid_connector.php"); - -/*! DataItem class for TreeGrid component -**/ -class TreeGridDataItem extends GridDataItem{ - private $kids=-1;//!< checked state - - function __construct($data,$config,$index){ - parent::__construct($data,$config,$index); - $this->im0=false; - } - /*! return id of parent record - - @return - id of parent record - */ - function get_parent_id(){ - return $this->data[$this->config->relation_id["name"]]; - } - /*! assign image to treegrid's item - longer description - @param img - relative path to the image - */ - function set_image($img){ - $this->set_cell_attribute($this->config->text[0]["name"],"image",$img); - } - - /*! return count of child items - -1 if there is no info about childs - @return - count of child items - */ - function has_kids(){ - return $this->kids; - } - /*! sets count of child items - @param value - count of child items - */ - function set_kids($value){ - $this->kids=$value; - if ($value) - $this->set_row_attribute("xmlkids",$value); - } -} -/*! Connector for dhtmlxTreeGrid -**/ -class TreeGridConnector extends GridConnector{ - protected $parent_name = 'id'; - protected $rootId = "0"; - - /*! constructor - - Here initilization of all Masters occurs, execution timer initialized - @param res - db connection resource - @param type - string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided - @param item_type - name of class, which will be used for item rendering, optional, DataItem will be used by default - @param data_type - name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default. - * @param render_type - * name of class which will provides data rendering - */ - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$item_type) $item_type="TreeGridDataItem"; - if (!$data_type) $data_type="TreeGridDataProcessor"; - if (!$render_type) $render_type="TreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - /*! process treegrid specific options in incoming request */ - public function parse_request(){ - parent::parse_request(); - - if (isset($_GET[$this->parent_name])) - $this->request->set_relation($_GET[$this->parent_name]); - else - $this->request->set_relation($this->rootId); - - $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode - } - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - return "<rows parent='".$this->xmlentities( $this->request->get_relation() )."'>"; - } -} - -/*! DataProcessor class for Grid component -**/ -class TreeGridDataProcessor extends GridDataProcessor{ - - function __construct($connector,$config,$request){ - parent::__construct($connector,$config,$request); - $request->set_relation(false); - } - - /*! convert incoming data name to valid db name - converts c0..cN to valid field names - @param data - data name from incoming request - @return - related db_name - */ - function name_data($data){ - - if ($data=="gr_pid") - return $this->config->relation_id["name"]; - else return parent::name_data($data); - } -} -?>
\ No newline at end of file diff --git a/codebase/treegridgroup_connector.php b/codebase/treegridgroup_connector.php deleted file mode 100644 index cd8fdf2..0000000 --- a/codebase/treegridgroup_connector.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("treegrid_connector.php"); - -class TreeGridGroupConnector extends TreeGridConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$render_type) $render_type="GroupRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - /*! if not isset $_GET[id] then it's top level - */ - protected function set_relation() { - if (!isset($_GET[$this->parent_name])) $this->request->set_relation(false); - } - - /*! if it's first level then distinct level - * else select by parent - */ - protected function get_resource() { - $resource = null; - if (isset($_GET[$this->parent_name])) - $resource = $this->sql->select($this->request); - else - $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); - return $resource; - } - - - /*! renders self as xml, starting part - */ - protected function xml_start(){ - if (isset($_GET[$this->parent_name])) { - return "<rows parent='".$_GET[$this->parent_name].$this->render->get_postfix()."'>"; - } else { - return "<rows parent='0'>"; - } - } - -} - -?>
\ No newline at end of file diff --git a/codebase/treegridmultitable_connector.php b/codebase/treegridmultitable_connector.php deleted file mode 100644 index 31217f9..0000000 --- a/codebase/treegridmultitable_connector.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("treegrid_connector.php"); - -class TreeGridMultitableConnector extends TreeGridConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - $data_type="TreeGridMultitableDataProcessor"; - if (!$render_type) $render_type="MultitableTreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - public function render(){ - $this->dload = true; - return parent::render(); - } - - /*! sets relation for rendering */ - protected function set_relation() { - if (!isset($_GET['id'])) - $this->request->set_relation(false); - } - - public function xml_start(){ - if (isset($_GET['id'])) { - return "<rows parent='".$this->xmlentities($this->render->level_id($_GET['id'], $this->get_level() - 1))."'>"; - } else { - return "<rows parent='0'>"; - } - } - - /*! set maximum level of tree - @param max_level - maximum level - */ - public function setMaxLevel($max_level) { - $this->render->set_max_level($max_level); - } - - public function get_level() { - return $this->render->get_level($this->parent_name); - } - - -} - - -class TreeGridMultitableDataProcessor extends DataProcessor { - - function name_data($data){ - if ($data=="gr_pid") - return $this->config->relation_id["name"]; - if ($data=="gr_id") - return $this->config->id["name"]; - preg_match('/^c([%\d]+)$/', $data, $data_num); - if (!isset($data_num[1])) return $data; - $data_num = $data_num[1]; - if (isset($this->config->data[$data_num]["db_name"])) { - return $this->config->data[$data_num]["db_name"]; - } - return $data; - } - -} - -?>
\ No newline at end of file diff --git a/codebase/treegroup_connector.php b/codebase/treegroup_connector.php deleted file mode 100644 index 5266d0b..0000000 --- a/codebase/treegroup_connector.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("tree_connector.php"); - -class TreeGroupConnector extends TreeConnector{ - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$render_type) $render_type="GroupRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - /*! if not isset $_GET[id] then it's top level - */ - protected function set_relation() { - if (!isset($_GET[$this->parent_name])) $this->request->set_relation(false); - } - - /*! if it's first level then distinct level - * else select by parent - */ - protected function get_resource() { - $resource = null; - if (isset($_GET[$this->parent_name])) - $resource = $this->sql->select($this->request); - else - $resource = $this->sql->get_variants($this->config->relation_id['name'], $this->request); - return $resource; - } - - - /*! renders self as xml, starting part - */ - public function xml_start(){ - if (isset($_GET[$this->parent_name])) { - return "<tree id='".$_GET[$this->parent_name].$this->render->get_postfix()."'>"; - } else { - return "<tree id='0'>"; - } - } - -} - -?>
\ No newline at end of file diff --git a/codebase/treemultitable_connector.php b/codebase/treemultitable_connector.php deleted file mode 100644 index b06164c..0000000 --- a/codebase/treemultitable_connector.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ -require_once("tree_connector.php"); - -class TreeMultitableConnector extends TreeConnector{ - - protected $parent_name = 'id'; - - public function __construct($res,$type=false,$item_type=false,$data_type=false,$render_type=false){ - if (!$data_type) $data_type="TreeDataProcessor"; - if (!$render_type) $render_type="MultitableTreeRenderStrategy"; - parent::__construct($res,$type,$item_type,$data_type,$render_type); - } - - public function render(){ - $this->dload = true; - return parent::render(); - } - - /*! sets relation for rendering */ - protected function set_relation() { - if (!isset($_GET[$this->parent_name])) - $this->request->set_relation(false); - } - - public function xml_start(){ - if (isset($_GET[$this->parent_name])) { - return "<tree id='".$this->xmlentities($this->render->level_id($_GET[$this->parent_name], $this->get_level() - 1))."'>"; - } else { - return "<tree id='0'>"; - } - } - - /*! set maximum level of tree - @param max_level - maximum level - */ - public function setMaxLevel($max_level) { - $this->render->set_max_level($max_level); - } - - public function get_level() { - return $this->render->get_level($this->parent_name); - } - -} - -?>
\ No newline at end of file diff --git a/codebase/update.php b/codebase/update.php deleted file mode 100644 index dacc211..0000000 --- a/codebase/update.php +++ /dev/null @@ -1,266 +0,0 @@ -<?php -/* - @author dhtmlx.com - @license GPL, see license.txt -*/ - -/*! DataItemUpdate class for realization Optimistic concurrency control - Wrapper for DataItem object - It's used during outputing updates instead of DataItem object - Create wrapper for every data item with update information. -*/ -class DataItemUpdate extends DataItem { - - - /*! constructor - @param data - hash of data - @param config - DataConfig object - @param index - index of element - */ - public function __construct($data,$config,$index,$type){ - $this->config=$config; - $this->data=$data; - $this->index=$index; - $this->skip=false; - $this->child = new $type($data, $config, $index); - } - - /*! returns parent_id (for Tree and TreeGrid components) - */ - public function get_parent_id(){ - if (method_exists($this->child, 'get_parent_id')) { - return $this->child->get_parent_id(); - } else { - return ''; - } - } - - - /*! generate XML on the data hash base - */ - public function to_xml(){ - $str= "<update "; - $str .= 'status="'.$this->data['type'].'" '; - $str .= 'id="'.$this->data['dataId'].'" '; - $str .= 'parent="'.$this->get_parent_id().'"'; - $str .= '>'; - $str .= $this->child->to_xml(); - $str .= '</update>'; - return $str; - } - - /*! return starting tag for XML string - */ - public function to_xml_start(){ - $str="<update "; - $str .= 'status="'.$this->data['type'].'" '; - $str .= 'id="'.$this->data['dataId'].'" '; - $str .= 'parent="'.$this->get_parent_id().'"'; - $str .= '>'; - $str .= $this->child->to_xml_start(); - return $str; - } - - /*! return ending tag for XML string - */ - public function to_xml_end(){ - $str = $this->child->to_xml_end(); - $str .= '</update>'; - return $str; - } - - /*! returns false for outputing only current item without child items - */ - public function has_kids(){ - return false; - } - - /*! sets count of child items - @param value - count of child items - */ - public function set_kids($value){ - if (method_exists($this->child, 'set_kids')) { - $this->child->set_kids($value); - } - } - - /*! sets attribute for item - */ - public function set_attribute($name, $value){ - if (method_exists($this->child, 'set_attribute')) { - LogMaster::log("setting attribute: \nname = {$name}\nvalue = {$value}"); - $this->child->set_attribute($name, $value); - } else { - LogMaster::log("set_attribute method doesn't exists"); - } - } -} - - -class DataUpdate{ - - protected $table; //!< table , where actions are stored - protected $url; //!< url for notification service, optional - protected $sql; //!< DB wrapper object - protected $config; //!< DBConfig object - protected $request; //!< DBRequestConfig object - protected $event; - protected $item_class; - protected $demu; - - //protected $config;//!< DataConfig instance - //protected $request;//!< DataRequestConfig instance - - /*! constructor - - @param connector - Connector object - @param config - DataConfig object - @param request - DataRequestConfig object - */ - function __construct($sql, $config, $request, $table, $url){ - $this->config= $config; - $this->request= $request; - $this->sql = $sql; - $this->table=$table; - $this->url=$url; - $this->demu = false; - } - - public function set_demultiplexor($path){ - $this->demu = $path; - } - - public function set_event($master, $name){ - $this->event = $master; - $this->item_class = $name; - } - - private function select_update($actions_table, $join_table, $id_field_name, $version, $user) { - $sql = "SELECT * FROM {$actions_table}"; - $sql .= " LEFT OUTER JOIN {$join_table} ON "; - $sql .= "{$actions_table}.DATAID = {$join_table}.{$id_field_name} "; - $sql .= "WHERE {$actions_table}.ID > '{$version}' AND {$actions_table}.USER <> '{$user}'"; - return $sql; - } - - private function get_update_max_version() { - $sql = "SELECT MAX(id) as VERSION FROM {$this->table}"; - $res = $this->sql->query($sql); - $data = $this->sql->get_next($res); - - if ($data == false || $data['VERSION'] == false) - return 1; - else - return $data['VERSION']; - } - - private function log_update_action($actions_table, $dataId, $status, $user) { - $sql = "INSERT INTO {$actions_table} (DATAID, TYPE, USER) VALUES ('{$dataId}', '{$status}', '{$user}')"; - $this->sql->query($sql); - if ($this->demu) - file_get_contents($this->demu); - } - - - - - /*! records operations in actions_table - @param action - DataAction object - */ - public function log_operations($action) { - $type = $this->sql->escape($action->get_status()); - $dataId = $this->sql->escape($action->get_new_id()); - $user = $this->sql->escape($this->request->get_user()); - if ($type!="error" && $type!="invalid" && $type !="collision") { - $this->log_update_action($this->table, $dataId, $type, $user); - } - } - - - /*! return action version in XMl format - */ - public function get_version() { - $version = $this->get_update_max_version(); - return "<userdata name='version'>".$version."</userdata>"; - } - - - /*! adds action version in output XML as userdata - */ - public function version_output($conn, $out) { - $out->add($this->get_version()); - } - - - /*! create update actions in XML-format and sends it to output - */ - public function get_updates() { - $sub_request = new DataRequestConfig($this->request); - $version = $this->request->get_version(); - $user = $this->request->get_user(); - - $sub_request->parse_sql($this->select_update($this->table, $this->request->get_source(), $this->config->id['db_name'], $version, $user)); - $sub_request->set_relation(false); - - $output = $this->render_set($this->sql->select($sub_request), $this->item_class); - - ob_clean(); - header("Content-type:text/xml"); - - echo $this->updates_start(); - echo $this->get_version(); - echo $output; - echo $this->updates_end(); - } - - - protected function render_set($res, $name){ - $output=""; - $index=0; - while ($data=$this->sql->get_next($res)){ - $data = new DataItemUpdate($data,$this->config,$index, $name); - $this->event->trigger("beforeRender",$data); - $output.=$data->to_xml(); - $index++; - } - return $output; - } - - /*! returns update start string - */ - protected function updates_start() { - $start = '<updates>'; - return $start; - } - - /*! returns update end string - */ - protected function updates_end() { - $start = '</updates>'; - return $start; - } - - /*! checks if action version given by client is deprecated - @param action - DataAction object - */ - public function check_collision($action) { - $version = $this->sql->escape($this->request->get_version()); - //$user = $this->sql->escape($this->request->get_user()); - $last_version = $this->get_update_max_version(); - if (($last_version > $version)&&($action->get_status() == 'update')) { - $action->error(); - $action->set_status('collision'); - } - } -} - -?>
\ No newline at end of file diff --git a/codebase/xss_filter.php b/codebase/xss_filter.php deleted file mode 100644 index ed0a309..0000000 --- a/codebase/xss_filter.php +++ /dev/null @@ -1,199 +0,0 @@ -<?php - -// +----------------------------------------------------------------------+ -// | Copyright (c) 2001-2008 Liip AG | -// +----------------------------------------------------------------------+ -// | 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. | -// +----------------------------------------------------------------------+ -// | Author: Christian Stocker <christian.stocker@liip.ch> | -// +----------------------------------------------------------------------+ - - -//original name was lx_externalinput_clean -//renamed to prevent possible conflicts -class dhx_externalinput_clean { - // this basic clean should clean html code from - // lot of possible malicious code for Cross Site Scripting - // use it whereever you get external input - - // you can also set $filterOut to some use html cleaning, but I don't know of any code, which could - // exploit that. But if you want to be sure, set it to eg. array("Tidy","Dom"); - static function basic($string, $filterIn = array("Tidy","Dom","Striptags"), $filterOut = "none") { - $string = self::tidyUp($string, $filterIn); - $string = str_replace(array("&", "<", ">"), array("&amp;", "&lt;", "&gt;"), $string); - - // fix &entitiy\n; - $string = preg_replace('#(&\#*\w+)[\x00-\x20]+;#u', "$1;", $string); - $string = preg_replace('#(&\#x*)([0-9A-F]+);*#iu', "$1$2;", $string); - - $string = html_entity_decode($string, ENT_COMPAT, "UTF-8"); - - // remove any attribute starting with "on" or xmlns - $string = preg_replace('#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>#iUu', "$1>", $string); - - // remove javascript: and vbscript: protocol - $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iUu', '$1=$2nojavascript...', $string); - $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iUu', '$1=$2novbscript...', $string); - $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*-moz-binding[\x00-\x20]*:#Uu', '$1=$2nomozbinding...', $string); - $string = preg_replace('#([a-z]*)[\x00-\x20\/]*=[\x00-\x20\/]*([\`\'\"]*)[\x00-\x20\/]*data[\x00-\x20]*:#Uu', '$1=$2nodata...', $string); - - //remove any style attributes, IE allows too much stupid things in them, eg. - //<span style="width: expression(alert('Ping!'));"></span> - // and in general you really don't want style declarations in your UGC - - $string = preg_replace('#(<[^>]+[\x00-\x20\"\'\/])style[^>]*>#iUu', "$1>", $string); - - //remove namespaced elements (we do not need them...) - $string = preg_replace('#</*\w+:\w[^>]*>#i', "", $string); - - //remove really unwanted tags - do { - $oldstring = $string; - $string = preg_replace('#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i', "", $string); - } while ($oldstring != $string); - - return self::tidyUp($string, $filterOut); - } - - static function tidyUp($string, $filters) { - if (is_array($filters)) { - foreach ($filters as $filter) { - $return = self::tidyUpWithFilter($string, $filter); - if ($return !== false) { - return $return; - } - } - } else { - $return = self::tidyUpWithFilter($string, $filters); - } - // if no filter matched, use the Striptags filter to be sure. - if ($return === false) { - return self::tidyUpModuleStriptags($string); - } else { - return $return; - } - } - - static private function tidyUpWithFilter($string, $filter) { - if (is_callable(array("self", "tidyUpModule" . $filter))) { - return call_user_func(array("self", "tidyUpModule" . $filter), $string); - } - return false; - } - - static private function tidyUpModuleStriptags($string) { - - return strip_tags($string); - } - - static private function tidyUpModuleNone($string) { - return $string; - } - - static private function tidyUpModuleDom($string) { - $dom = new domdocument(); - @$dom->loadHTML("<html><body>" . $string . "</body></html>"); - $string = ''; - foreach ($dom->documentElement->firstChild->childNodes as $child) { - $string .= $dom->saveXML($child); - } - return $string; - } - - static private function tidyUpModuleTidy($string) { - if (class_exists("tidy")) { - $tidy = new tidy(); - $tidyOptions = array("output-xhtml" => true, - "show-body-only" => true, - "clean" => true, - "wrap" => "350", - "indent" => true, - "indent-spaces" => 1, - "ascii-chars" => false, - "wrap-attributes" => false, - "alt-text" => "", - "doctype" => "loose", - "numeric-entities" => true, - "drop-proprietary-attributes" => true, - "enclose-text" => false, - "enclose-block-text" => false - - ); - $tidy->parseString($string, $tidyOptions, "utf8"); - $tidy->cleanRepair(); - return (string) $tidy; - } else { - return false; - } - } -} - -define("DHX_SECURITY_SAFETEXT", 1); -define("DHX_SECURITY_SAFEHTML", 2); -define("DHX_SECURITY_TRUSTED", 3); - -class ConnectorSecurity{ - static public $xss = DHX_SECURITY_SAFETEXT; - static public $security_key = false; - static public $security_var = "dhx_security"; - - static private $filterClass = null; - static function filter($value, $mode = false){ - if ($mode === false) - $mode = ConnectorSecurity::$xss; - - if ($mode == DHX_SECURITY_TRUSTED) - return $value; - if ($mode == DHX_SECURITY_SAFETEXT) - return filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); - if ($mode == DHX_SECURITY_SAFEHTML){ - if (ConnectorSecurity::$filterClass == null) - ConnectorSecurity::$filterClass = new dhx_externalinput_clean(); - return ConnectorSecurity::$filterClass->basic($value); - } - throw new Error("Invalid security mode:"+$mode); - } - - static function CSRF_detected(){ - LogMaster::log("[SECURITY] Possible CSRF attack detected", array( - "referer" => $_SERVER["HTTP_REFERER"], - "remote" => $_SERVER["REMOTE_ADDR"] - )); - LogMaster::log("Request data", $_POST); - die(); - } - static function checkCSRF($edit){ - if (ConnectorSecurity::$security_key){ - if (!isset($_SESSION)) - @session_start(); - - if ($edit=== true){ - if (!isset($_POST[ConnectorSecurity::$security_var])) - return ConnectorSecurity::CSRF_detected(); - $master_key = $_SESSION[ConnectorSecurity::$security_var]; - $update_key = $_POST[ConnectorSecurity::$security_var]; - if ($master_key != $update_key) - return ConnectorSecurity::CSRF_detected(); - - return ""; - } - //data loading - if (!array_key_exists(ConnectorSecurity::$security_var,$_SESSION)){ - $_SESSION[ConnectorSecurity::$security_var] = md5(uniqid()); - } - - return $_SESSION[ConnectorSecurity::$security_var]; - } - - return ""; - } - -}
\ No newline at end of file diff --git a/composer.json b/composer.json index 17dfa50..5cdc5a4 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "prefer-stable": true, "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "yii2": "1.0-dev" } }, "config": { diff --git a/samples/combo/01_basic.html b/samples/combo/01_basic.html deleted file mode 100644 index 129140a..0000000 --- a/samples/combo/01_basic.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../dhtmlx/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="combo_zone4" style="width:200px; height:30px;"></div> - <hr/> - <div id="combo_zone5" style="width:200px; height:30px;"></div> - <hr/> - <div id="combo_zone6" style="width:200px; height:30px;"></div> - <script> - var z=new dhtmlXCombo("combo_zone4","alfa4",200); - z.load("01_basic_connector.php"); - </script> - <script> - var z=new dhtmlXCombo("combo_zone5","alfa4",200); - z.enableFilteringMode(true,"01_basic_connector.php",true); - </script> - <script> - var z=new dhtmlXCombo("combo_zone6","alfa4",200); - z.enableFilteringMode(true,"01_basic_srnd_connector.php",true,true); - </script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/combo_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$combo </span><span style="color: #007700">= new </span><span style="color: #0000BB">ComboConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$combo</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$combo</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"country_data"</span><span style="color: #007700">,</span><span style="color: #DD0000">"country_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"name"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/combo/01_basic_connector.php b/samples/combo/01_basic_connector.php deleted file mode 100644 index 1ef8df4..0000000 --- a/samples/combo/01_basic_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../../codebase/db_pdo.php"); - require_once("../config.php"); - - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/combo_connector.php"); - $combo = new ComboConnector($res, "PDO"); -// $combo->enable_log("temp.log"); - $combo->render_table("country_data","country_id","name"); -?>
\ No newline at end of file diff --git a/samples/combo/01_basic_srnd_connector.php b/samples/combo/01_basic_srnd_connector.php deleted file mode 100644 index 8764723..0000000 --- a/samples/combo/01_basic_srnd_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - require_once("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/combo_connector.php"); - $combo = new ComboConnector($res, "PDO"); -// $combo->enable_log("temp.log"); - $combo->dynamic_loading(2); - $combo->render_table("country_data","country_id","name"); -?>
\ No newline at end of file diff --git a/samples/combo/02_sql.html b/samples/combo/02_sql.html deleted file mode 100644 index 9740cf3..0000000 --- a/samples/combo/02_sql.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../dhtmlx/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="combo_zone4" style="width:200px; height:30px;"></div> - <hr/> - <div id="combo_zone5" style="width:200px; height:30px;"></div> - <hr/> - <div id="combo_zone6" style="width:200px; height:30px;"></div> - <script> - var z=new dhtmlXCombo("combo_zone4","alfa4",200); - z.load("02_sql_connector.php"); - </script> - <script> - var z=new dhtmlXCombo("combo_zone5","alfa4",200); - z.enableFilteringMode(true,"02_sql_connector.php",true); - </script> - <script> - var z=new dhtmlXCombo("combo_zone6","alfa4",200); - z.enableFilteringMode(true,"02_sql_srnd_connector.php",true,true); - </script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/combo_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$combo </span><span style="color: #007700">= new </span><span style="color: #0000BB">ComboConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$combo</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$combo</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT * FROM country_data WHERE country_id >40 "</span><span style="color: #007700">,</span><span style="color: #DD0000">"country_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"name"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/combo/02_sql_connector.php b/samples/combo/02_sql_connector.php deleted file mode 100644 index cf0e559..0000000 --- a/samples/combo/02_sql_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require_once("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/combo_connector.php"); - $combo = new ComboConnector($res, "PDO"); - //$combo->enable_log("temp.log"); - $combo->render_sql("SELECT * FROM country_data WHERE country_id >40 ","country_id","name"); -?>
\ No newline at end of file diff --git a/samples/combo/02_sql_srnd_connector.php b/samples/combo/02_sql_srnd_connector.php deleted file mode 100644 index 311531d..0000000 --- a/samples/combo/02_sql_srnd_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - require_once("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/combo_connector.php"); - $combo = new ComboConnector($res, "PDO"); -// $combo->enable_log("temp.log"); - $combo->dynamic_loading(2); - $combo->render_sql("SELECT * FROM country_data WHERE country_id >40 ","country_id","name"); -?>
\ No newline at end of file diff --git a/samples/combo/index.html b/samples/combo/index.html deleted file mode 100644 index 2c7f63e..0000000 --- a/samples/combo/index.html +++ /dev/null @@ -1,26 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - - <li><a href="01_basic.html">Basic init</a></li> - <li><a href="02_sql.html">Basic init by sql string</a></li> - - </body> -</html> - diff --git a/samples/common/01_mixin_connector.php b/samples/common/01_mixin_connector.php deleted file mode 100644 index b03374b..0000000 --- a/samples/common/01_mixin_connector.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/data_connector.php"); - require("../../codebase/scheduler_connector.php"); - require("../../codebase/mixed_connector.php"); - - $data1 = new JSONDataConnector($res, "PDO"); - $data1->configure("country_data", "country_id", "name,full_name,type"); - - $data2 = new JSONTreeDataConnector($res, "PDO"); - $data2->configure("tasks","taskId","taskName","","parentId"); - - $conn = new MixedConnector($res, "PDO"); - $conn->add("country_data", $data1); - $conn->add("countries", $data2); - $conn->render(); - -?>
\ No newline at end of file diff --git a/samples/common/02_easyfilter_connector.php b/samples/common/02_easyfilter_connector.php deleted file mode 100644 index 0d7c35c..0000000 --- a/samples/common/02_easyfilter_connector.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - $grid->filter("item_nm", "member"); -// $grid->filter("item_nm='member'"); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/common/03_easysort_connector.php b/samples/common/03_easysort_connector.php deleted file mode 100644 index 7441352..0000000 --- a/samples/common/03_easysort_connector.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - $grid->sort("item_nm ASC"); - $grid->sort("item_cd", "DESC"); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/common/04_mix_connector.php b/samples/common/04_mix_connector.php deleted file mode 100644 index 5ad31c9..0000000 --- a/samples/common/04_mix_connector.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/data_connector.php"); - require("../../codebase/scheduler_connector.php"); - require("../../codebase/grid_connector.php"); - - - $details = new JSONDataConnector($res, "PDO"); - $details->mix("active", "yes"); - $details->configure("types","typeid","name"); - - $events = new JSONSchedulerConnector($res, "PDO"); - $events->mix("types", $details, array( - "typeid" => "type" - )); - $events->render_table("tevents","event_id","start_date,end_date,event_name,type", "", ""); -?>
\ No newline at end of file diff --git a/samples/common/05_asstring_connector.php b/samples/common/05_asstring_connector.php deleted file mode 100644 index 53e3d47..0000000 --- a/samples/common/05_asstring_connector.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/data_connector.php"); - $data = new JSONDataConnector($res, "PDO"); - $data->dynamic_loading(100); - $data->asString(true); - $json = $data->render_table("grid50000","item_id","item_nm,item_cd"); - echo "<strong>Generated json:</strong><br>"; - echo $json; -?>
\ No newline at end of file diff --git a/samples/config.php b/samples/config.php deleted file mode 100644 index 993d07b..0000000 --- a/samples/config.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - $mysql_server="mysql:dbname=sampleDB;host=192.168.3.251"; - $mysql_user = "sampleDB"; - $mysql_pass = "sampleDB"; - $mysql_db = "sampleDB"; - $excel_file = "../common/excel_sample.xls"; - - //necessary for PostgreSQL related samples only - $postrgre_connection = "host=localhost port=5432 dbname=sampleDB user=root password=1234"; - //necessary for Oracle related samples only - $oci_connection = "some here"; - //necessart for SQL Anywhere connection - $sasql_conn = "uid=DBA;pwd=sql"; -?>
\ No newline at end of file diff --git a/samples/dataview/01_static_loading.html b/samples/dataview/01_static_loading.html deleted file mode 100644 index 45ece36..0000000 --- a/samples/dataview/01_static_loading.html +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html> -<head> - <title>Static loading</title> - <script src="../dhtmlx/dhtmlx.js" type="text/javascript"></script> - <link rel="STYLESHEET" type="text/css" href="../dhtmlx/dhtmlx.css"> - <style type="text/css" media="screen"> - body { background-color:#EBEBEB; }; - </style> -</head> -<body> - <h1>Static loading</h1> - <p>All data is loaded at once</p> - <div id="data_container" style="border:1px solid #A4BED4; background-color:white; width:710px;height:392px;"></div> - <script> - data = new dhtmlXDataView({ - container:"data_container", - type:{ - template:"<span class='dhx_strong'>{obj.Maintainer}</span>{obj.Package} <span class='dhx_light'>{obj.Version}</span>", - height:35 - } - }); - data.load("01_static_loading.php"); - </script> - -</body> -</html> - diff --git a/samples/dataview/01_static_loading.php b/samples/dataview/01_static_loading.php deleted file mode 100644 index 10b8ee6..0000000 --- a/samples/dataview/01_static_loading.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../../codebase/db_pdo.php"); - require_once("../../codebase/dataview_connector.php"); - require_once("../config.php"); - - $conn = new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $data = new DataViewConnector($conn); - $data->render_sql(" SELECT * FROM packages_plain WHERE Id < 1000","Id","Package,Version,Maintainer"); -?>
\ No newline at end of file diff --git a/samples/dataview/02_dynamic_loading.html b/samples/dataview/02_dynamic_loading.html deleted file mode 100644 index 4a846fa..0000000 --- a/samples/dataview/02_dynamic_loading.html +++ /dev/null @@ -1,31 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html> -<head> - <title>Dynamic loading</title> - <script src="../dhtmlx/dhtmlx.js" type="text/javascript"></script> - <link rel="STYLESHEET" type="text/css" href="../dhtmlx/dhtmlx.css"> - <style type="text/css" media="screen"> - body { background-color:#EBEBEB; }; - </style> -</head> -<body> - <h1>Dynamic loading</h1> - <p>Data is loaded to the DataView on demand</p> - - <div id="data_container" style="border:1px solid #A4BED4; background-color:white; width:710px;height:392px;"></div> - <br> - <script> - data = new dhtmlXDataView({ - container:"data_container", - type:{ - template:"<span class='dhx_strong'>{obj.Maintainer}</span>{obj.Package} <span class='dhx_light'>{obj.Version}</span>", - height:35 - } - }); - data.load("02_dynamic_loading.php"); - </script> - -</body> -</html> - diff --git a/samples/dataview/02_dynamic_loading.php b/samples/dataview/02_dynamic_loading.php deleted file mode 100644 index 858c2b7..0000000 --- a/samples/dataview/02_dynamic_loading.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - - require_once("../../codebase/db_pdo.php"); - require_once("../../codebase/dataview_connector.php"); - require_once("../config.php"); - - $conn = new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $data = new DataViewConnector($conn); - $data->dynamic_loading(50); - $data->render_table("packages_plain","Id","Package,Version,Maintainer"); -?>
\ No newline at end of file diff --git a/samples/dataview/03_adding.html b/samples/dataview/03_adding.html deleted file mode 100644 index 6c08152..0000000 --- a/samples/dataview/03_adding.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<!--conf -<sample in_favorites="true"> - <product version="1.0" edition="std"/> - <modifications> - <modified date="080205"/> - </modifications> -<sampledescription><![CDATA[ ]]></sampledescription></sample> - --> - -<html> -<head> - <title>Connecting to database</title> - <script src="../dhtmlx/dhtmlx.js" type="text/javascript"></script> - <link rel="STYLESHEET" type="text/css" href="../dhtmlx/dhtmlx.css"> - <style type="text/css" media="screen"> - body { background-color:#EBEBEB; }; - </style> -<body> - <h1>Connecting to database</h1> - - <form style="float:right;"> - Product <input type="text" id="p_name" value="dhtmlxDataView"><br> - Version <input type="text" id="v_name" value="3.0"><br> - Maintainer <input type="text" id="m_name" value="Ivan"><br> - <input type="button" value="Add →" onclick='add_data()'> - <hr> - <input type="button" value="Remove selected →" onclick='remove_data()'> - </form> - - <div id="data_container" style="border:1px solid #A4BED4; background-color:white;width:596px;height:396px;"></div> - <script> - data = new dhtmlXDataView({ - - container:"data_container", - edit:true, - type:{ - template:"{obj.Package} : {obj.Version}<br/>{obj.Maintainer}", - template_edit:"<input class='dhx_item_editor' bind='obj.Package'>", - height:40 - } - }); - data.load("03_adding.php"); - - var dp = new dataProcessor("03_adding.php"); - dp.init(data); - - function add_data(argument) { - data.add({ - Package: document.getElementById("p_name").value, - Version: document.getElementById("v_name").value, - Maintainer: document.getElementById("m_name").value, - },0) - } - function remove_data(){ - data.remove(data.getSelected()); - } - </script> - - - -</body> -</html> - diff --git a/samples/dataview/03_adding.php b/samples/dataview/03_adding.php deleted file mode 100644 index 3bad14c..0000000 --- a/samples/dataview/03_adding.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../../codebase/db_pdo.php"); - require_once("../../codebase/dataview_connector.php"); - require_once("../config.php"); - - $conn = new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $data = new DataViewConnector($conn); - $data->render_table("packages_small","Id","Package,Version,Maintainer"); -?>
\ No newline at end of file diff --git a/samples/dataview/index.html b/samples/dataview/index.html deleted file mode 100644 index fd99f9a..0000000 --- a/samples/dataview/index.html +++ /dev/null @@ -1,25 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - <li><a href="01_static_loading.html">Static loading</a></li> - <li><a href="02_dynamic_loading.html">Dynamic loading</a></li> - <li><a href="03_adding.html">Adding</a></li> - </body> -</html> - diff --git a/samples/dhtmlx/dhtmlx.css b/samples/dhtmlx/dhtmlx.css deleted file mode 100644 index ec797a8..0000000 --- a/samples/dhtmlx/dhtmlx.css +++ /dev/null @@ -1,9 +0,0 @@ -/* -Product Name: dhtmlxSuite -Version: 4.0.3 -Edition: Professional -License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it 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;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);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;-o-user-select:text;user-select:text;-ms-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_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;-o-user-select:text;user-select:text;-ms-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;-o-user-select:none;user-select:none;-ms-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);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;-o-user-select:none;user-select:none;-ms-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 div.dhtmlxcalendar_time_img{position:absolute;left:66px;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_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 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;-o-user-select:none;user-select:none;-ms-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;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;-o-user-select:none;user-select:none;-ms-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_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_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_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_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_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_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_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;}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;font-size:12px;color:black;vertical-align:middle;}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);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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-user-select:none;overflow:hidden;cursor:default;}div.dhxcombolist_dhx_skyblue{position:absolute;font-family:Tahoma;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;-o-user-select:none;user-select:none;-ms-user-select:none;overflow-x:none;overflow-y:auto;-moz-transition:height .15s ease 0s;}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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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);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;z-index:1;top:0;right:0;}div.dhxcombo_dhx_skyblue.dhxcombo_in_grid{border-top:1px solid white;border-bottom:0 solid white;border-left:1px solid white;border-right:1px solid white;margin-left:-4px;}div.dhxcombo_dhx_skyblue.dhxcombo_in_grid input.dhxcombo_input{height:18px;border-left:2px solid white;line-height:17px;}div.dhxcombo_dhx_skyblue.dhxcombo_in_grid div.dhxcombo_select_button{top:0;}.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;-o-user-select:none;user-select:none;-ms-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;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;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;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;font-size:11px;color:black;padding:0;background-color:#e2efff;background: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);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);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);}.dhxslider_skin_detect{position:absolute;left:0;top:-100px;border:0 solid white;width:10px;height:10px;margin:0;padding:0;overflow:hidden;}.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;-o-user-select:none;user-select:none;-ms-user-select:none;}.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;margin:0;padding:0;overflow:hidden;width:16px;height:16px;border:1px solid #a4bed4;border-radius:2px;background-color:#f1f7ff;background:linear-gradient(#f1f7ff,#e2efff);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f1f7ff,endColorStr=#e2efff) progid:DXImageTransform.Microsoft.Alpha(opacity=100);}.dhtmlxslider_dhx_skyblue .dhxsl_runner_dis{border-color:#c9c9c9;background-color:#e8e8e8;background: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{border:1px solid #a4bed4;border-radius:2px;background-color:white;margin:0;padding:0;overflow:hidden;}.dhtmlxslider_dhx_skyblue .dhxsl_cont_vr .dhxsl_track{height:100%;width:3px;}.dhtmlxslider_dhx_skyblue .dhxsl_cont_hr .dhxsl_track{width:100%;height:3px;}.dhtmlxslider_dhx_skyblue .dhxsl_track_dis{border:1px solid #c9c9c9;background-color:#f0f0f0;}div.dhx_popup_dhx_skyblue{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;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;-o-user-select:none;user-select:none;-ms-user-select:none;}div.dhx_popup_dhx_skyblue div.dhx_popup_area td.dhx_popup_td div.dhtmlxcalendar_dhx_skyblue{position:relative;}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;-o-user-select:text;user-select:text;-ms-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.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;display:block;visibility:hidden;left:-100px;top:0;width:10px;height:10px;margin:0;padding:0;border:none;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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;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;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;font-size:11px;color:black;cursor:default;white-space:nowrap;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-user-select:none;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td{font-family:Tahoma;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;-o-user-select:none;user-select:none;-ms-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;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;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;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;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;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;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;margin-top:6px;}.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;margin-top: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;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;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;font-size:11px;color:black;}.dhtmlxribbon_dhx_skyblue .dhxrb_label_checkbox{float:left;margin:2px 4px;cursor:default;font-family:Tahoma;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;-o-user-select:none;user-select:none;-ms-user-select:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_highlight0{border:1px solid #a4bed4;background-color:#f1f7ff;background: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;-o-user-select:none;user-select:none;-ms-user-select:none;}.dhtmlxribbon_dhx_skyblue .dhxrb_highlight1{border:1px solid #a4bed4;background-color:#d2e7fe;background: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;-o-user-select:none;user-select:none;-ms-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);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;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;font-size:14px;color:#256488;}.dhtmlxribbon_dhx_skyblue .dhxrb_big_button .dhxrb_item_text{font-family:Tahoma;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);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;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;-o-user-select:none;user-select:none;-ms-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);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);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);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;-o-user-select:none;user-select:none;-ms-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;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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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);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;-o-user-select:none;user-select:none;-ms-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);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;-o-user-select:none;user-select:none;-ms-user-select:none;}div.dhx_toolbar_poly_dhx_skyblue td{font-family:Tahoma;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;}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;-o-user-select:none;user-select:none;-ms-user-select:none;font-family:Tahoma;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;}.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);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");}.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;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;font-size:11px;color:black;overflow:hidden;}.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;-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;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;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;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;}.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;font-size:12px;-moz-user-select:none;}.selectedTreeRow{background-color:navy;color:white;font-family:Tahoma;font-size:12px;-moz-user-select:none;}.dragAndDropRow{background-color:navy;color:white;}.standartTreeRow_lor{text-decoration:underline;background-color:#fff;font-family:Tahoma;font-size:12px;-moz-user-select:none;}.selectedTreeRow_lor{text-decoration:underline;background-color:navy;color:white;font-family:Tahoma;font-size:12px;-moz-user-select:none;}.standartTreeImage{width:18px;height:18px;overflow:hidden;border:0;padding:0;margin:0;font-size:1px;}.hiddenRow{width:1px;overflow:hidden;}.dragSpanDiv,.dragSpanDiv td{font-size:12px;background-color:#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;-moz-opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);-webkit-user-select:none;-moz-user-select:none;user-select:none;}.dhx_bg_img_fix{width:18px;height:18px;background-repeat:no-repeat;background-position:center;background-position-x:center;background-position-y:center;}.dhxtree_dhx_black,.dhxtree_dhx_skyblue{background:#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;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;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_dhx_web .selectedTreeRow_lor,.dhxtree_dhx_web .selectedTreeRow{background-color:transparent;}.dhxtree_dhx_web span.selectedTreeRow_lor,.dhxtree_dhx_web span.selectedTreeRow{background-color:#b5deff;color:black;}.dhxtree_dhx_web td.standartTreeRow,.dhxtree_dhx_web td.selectedTreeRow{padding-left:2px;}.dhxtree_dhx_web span.standartTreeRow,.dhxtree_dhx_web span.selectedTreeRow{padding-left:3px!important;}.dhxtree_dhx_web .standartTreeRow,.dhxtree_dhx_web .standartTreeRow,.dhxtree_dhx_web .selectedTreeRow_lor,.dhxtree_dhx_web .selectedTreeRow{font-family:Tahoma;font-size:12px;overflow:hidden;}.dhxtree_dhx_terrace .standartTreeRow,.dhxtree_dhx_terrace .standartTreeRow,.dhxtree_dhx_terrace .selectedTreeRow_lor,.dhxtree_dhx_terrace .selectedTreeRow{font-family:Tahoma;font-size:12px;padding:3px 1px 4px 2px;}.dhxtree_dhx_terrace .standartTreeImage{padding-left:3px;}.dhxtree_dhx_terrace .selectedTreeRow_lor,.dhxtree_dhx_terrace .selectedTreeRow{background-color:transparent;}.dhxtree_dhx_terrace span.selectedTreeRow_lor,.dhxtree_dhx_terrace span.selectedTreeRow{background-color:#b5deff;color:black;}div.gridbox{overflow:hidden;text-align:left;}.dhx_sub_row{background-color:#fff;}div.gridbox .xhdr{background-color:#D4D0C8;}div.gridbox table.obj{height:1px;}div.gridbox table.hdr td{line-height:normal;font-family:arial;font-size:12px;background-color:#D4D0C8;border:1px solid;border-color:#fff Gray Gray #fff;text-align:center;margin:0;padding:7px 0 7px 0;font-weight:normal;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;empty-cells:show;}div.gridbox table.hdr td div.hdrcell{overflow:hidden;}div.gridbox table.obj td{border:1px solid;border-color:#fff Gray Gray #fff;font-family:Arial;font-size:12px;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;padding-top:0;padding-bottom:0;empty-cells:show;}div.gridbox table.obj th,div.gridbox table.hdr th{padding:0;margin:0;}div.gridbox table.row20px tr td{height:20px;white-space:nowrap;padding:0;}div.gridbox .objbox{background-color:#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 tr.rowselected td.cellselected,div.gridbox table.obj td.cellselected{background-color:#d8d8d8;color:black;}div.gridbox table.obj tr.rowselected td{background-color:#e1e0d7;color:black;}div.gridbox table.obj td.editable{-moz-user-select:text;}div.gridbox table.obj td.group_row{vertical-align:middle;font-family:Tahoma;font-size:10pt;font-weight:bold;height:30px;border:0;border-bottom:2px solid navy;}.dragSpanDiv{font-size:12px;border:1px gray solid;background-color:#fff;z-index:999;}.dhx_combo_select{font-family:arial;font-size:12px;border:1px solid;border-color:black silver silver black;background-color:#fff;overflow:hidden;cursor:default;position:absolute;height:auto;z-index:600;}.dhx_combo_edit{width:100%;border:0;padding:0;padding-right:1px!ie;margin:0;font:12px arial;overflow:hidden;}.dhx_textarea{border:1px solid;border-color:black silver silver black;position:absolute;height:100px;z-index:600;}.dhx_clist{background-color:#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{font-size:12px;font-family:verdana,arial;}div.pagingBlock .pagingCurrentPage{font-weight:bold;cursor:default;}div.pagingBlock .pagingPage{cursor:pointer;text-decoration:underline;}span.recordsInfoBlock{font-size:12px;font-family:verdana,arial;}div.pagingBlock a{text-decoration:none;padding-right:2px;color:black;cursor:pointer;}div.pagingBlock a.dhx_not_active{text-decoration:none;cursor:default;}.toolbar_select{font-size:10px;}.dhtmlxGrid_selection{-moz-opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);background-color:yellow;opacity:.5;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;font-family:arial;font-size:12px;overflow:hidden;}div.gridbox table.hdr td.columnTargetR div.hdrcell{border-right:3px double #F60;border-left:3px solid #D4D0C8;}div.gridbox table.hdr td.columnTargetL div.hdrcell{border-right:3px solid #D4D0C8;border-left:3px double #F60;}.dhx_dragColDiv{font-family:Arial;font-size:12px;background-color:#D4D0C8;border:1px solid;border-color:#fff Gray Gray #fff;text-align:center;margin:0;padding:5px 20px 5px 20px;font-weight:normal;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=75);-moz-opacity:.75;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);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;-moz-user-select:text;}div.gridbox_dhx_skyblue.gridbox .ftr,div.gridbox_dhx_skyblue.gridbox .xhdr{color:black;background-color:#e2efff;background: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);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);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;font-size:12px;color:black;vertical-align:top;text-align:left;}div.gridbox_dhx_skyblue.gridbox{border:1px solid #a4bed4;}div.gridbox_dhx_skyblue.gridbox table.obj{font-family:Tahoma;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 .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.rowselected 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{font-family:Tahoma;font-size:12px;}.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);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,arial;}.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;}.dhxgrid_sort_asc{background-image:url("imgs/dhxgrid_skyblue/sort_asc.gif");background-repeat:no-repeat;}.dhxform_obj_dhx_skyblue{font-family:Tahoma;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;apadding-top:1px;}.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 .dhxform_textarea{border:1px solid #a4bed4;font-family:Tahoma;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;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{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{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;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;*float:left;*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;*float:left;*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;amargin:3px 1px 0 5px;}.dhxform_obj_dhx_skyblue.dhxform_rtl div.dhxform_item_label_left div.dhxform_img{float:left;amargin:3px 5px 0 1px;}.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;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;font-size:inherit;color:black;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;-ms-user-select:none;border:1px solid #a4bed4;background-color:#e2efff;background: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;}.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);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);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);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.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;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;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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-user-select:none;}.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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;font-size:13px;color:#a1a1a1;height:auto;top:0;left:35px;vertical-align:top;padding-top:6px;line-height:20px;cursor:default;}.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;}.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_fullscreen{width:100%;height:100%;margin:0;overflow:hidden;}.dhxacc_base_dhx_skyblue{position:relative;cursor:default;overflow:hidden;}.dhxacc_base_dhx_skyblue 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 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 div.dhx_cell_acc div.dhx_cell_cont_acc.dhx_cell_cont_no_borders{border-width:0;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_hdr{position:relative;height:27px;line-height:26px;overflow:hidden;font-family:Tahoma;font-size:11px;color:#34404b;font-weight:bold;border:1px solid #a4bed4;background-color:#e2efff;background: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;-o-user-select:none;user-select:none;-ms-user-select:none;}.dhxacc_base_dhx_skyblue 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 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 div.dhx_cell_acc div.dhx_cell_hdr div.dhx_cell_hdr_text.dhx_cell_hdr_icon{margin-left:24px;}.dhxacc_base_dhx_skyblue 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;-o-user-select:none;user-select:none;-ms-user-select:none;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc.dhx_cell_closed div.dhx_cell_hdr div.dhx_cell_hdr_arrow{background-position:-16px 0;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_cont.dhx_cell_cont_not_last{border-bottom:0 solid white;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_menu_def{position:relative;overflow:hidden;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle,.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_ribbon_def div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top:0 solid white;width:auto;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;font-family:Tahoma;font-size:11px;color:black;background-color:#ddecff;}.dhxacc_base_dhx_skyblue 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 div.dhx_cell_acc.acc_cell_dragged{box-shadow:0 0 5px #829cb2;z-index:5!important;}.dhxacc_base_dhx_skyblue div.dhx_cell_acc 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;}.dhxacc_base_dhx_skyblue 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:2;}.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{position:relative;cursor:default;}.dhxlayout_base_dhx_skyblue 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;-o-user-select:none;user-select:none;-ms-user-select:none;background-repeat:no-repeat;background-position:center center;z-index:2;}.dhxlayout_base_dhx_skyblue div.dhxlayout_sep.dhxlayout_sep_resize_v{cursor:w-resize;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif');}.dhxlayout_base_dhx_skyblue div.dhxlayout_sep.dhxlayout_sep_resize_h{cursor:n-resize;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif');}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout{position:absolute;background-color:#fff;margin:0;padding:0;overflow:hidden;cursor:default;z-index:0;}.dhxlayout_base_dhx_skyblue 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;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_cont_layout.dhx_cell_cont_no_borders{border:0 solid #fff!important;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_cont_layout,.dhxlayout_base_dhx_skyblue div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_cont_layout{display:none;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_hdr{position:relative;height:27px;line-height:26px;overflow:hidden;font-family:Tahoma;font-size:11px;color:#34404b;font-weight:bold;border:1px solid #a4bed4;background-color:#e2efff;background: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 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 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 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;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_hdr{height:18px;line-height:17px;color:#333;font-weight:normal;}.dhxlayout_base_dhx_skyblue 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);}.dhxlayout_base_dhx_skyblue 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:#333;font-weight:normal;}.dhxlayout_base_dhx_skyblue 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 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%;}.dhxlayout_base_dhx_skyblue 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 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 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 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 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 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;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_va{background-position:-16px 0;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_vb{background-position:-48px 0;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_ha{background-position:-32px 0;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_hdr div.dhxlayout_arrow.dhxlayout_arrow_hb{background-position:0 0;}.dhxlayout_base_dhx_skyblue 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 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 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 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 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 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 div.dhx_cell_layout.dhxlayout_collapsed_h div.dhx_cell_statusbar_def,.dhxlayout_base_dhx_skyblue div.dhx_cell_layout.dhxlayout_collapsed_v div.dhx_cell_statusbar_def{display:none;}.dhxlayout_base_dhx_skyblue div.dhxlayout_hdr_attached{position:relative;}.dhxlayout_base_dhx_skyblue div.dhxlayout_ftr_attached{position:absolute;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_menu_def{position:relative;overflow:hidden;border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;border-bottom:1px solid #a4bed4;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_menu_no_borders{position:relative;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_menu_def div.dhtmlxMenu_dhx_skyblue_Middle,.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_menu_no_borders div.dhtmlxMenu_dhx_skyblue_Middle{padding:0 2px;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_toolbar_def{position:relative;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_toolbar_def div.dhx_toolbar_dhx_skyblue{border-top-width:0;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_ribbon_def div.dhxrb_with_tabbar.dhxtabbar_base_dhx_skyblue{margin-top:-1px;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_ribbon_def div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{border-top-width:0;width:auto;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_statusbar_def{position:absolute;bottom:0;width:100%;font-family:Tahoma;font-size:11px;color:black;background-color:#ddecff;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout 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 div.dhxlayout_progress{position:absolute;left:0;top:0;width:100%;height:100%;background-color:white;opacity:.55;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=55);z-index:3;}.dhxlayout_base_dhx_skyblue div.dhxlayout_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.dhx_cell_layout 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;}.dhxlayout_base_dhx_skyblue div.dhx_cell_layout div.dhx_cell_progress_img{position:absolute;left:0;top:0;border:1px solid #a4bed4;background-image:url('imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif');background-position:center center;background-repeat:no-repeat;z-index:2;}.dhxlayout_base_dhx_skyblue div.dhxlayout_menu{position:relative;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhxlayout_toolbar{position:relative;background-color:#ebebeb;padding-bottom:4px;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhxlayout_ribbon{border-bottom:2px solid #ebebeb;position:relative;}.dhxlayout_base_dhx_skyblue div.dhxlayout_ribbon div.dhtmlxribbon_dhx_skyblue.dhxrb_without_tabbar{width:auto;}.dhxlayout_base_dhx_skyblue div.dhxlayout_statusbar{position:absolute;background-color:#ebebeb;overflow:hidden;}.dhxlayout_base_dhx_skyblue div.dhxlayout_statusbar div.dhxcont_statusbar{position:relative;margin-top:2px;border:1px solid #a4bed4;background-color:#ddecff;font-family:Tahoma;font-size:11px;color:black;padding:3px 4px;}body.dhxlayout_resize_v *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;-ms-user-select:none;cursor:w-resize!important;}body.dhxlayout_resize_h *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;-ms-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_skin_detect{position:absolute;left:0;top:-100px;margin:0;padding:0;border:0 solid white;width:10px;height:10px;overflow:hidden;}.dhxtabbar_fullscreen{width:100%;height:100%;margin:0;overflow:hidden;}.dhxtabbar_base_dhx_skyblue{position:relative;}.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);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(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);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none;-ms-user-select:none;}.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;-o-user-select:none;user-select:none;-ms-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);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;-o-user-select:none;user-select:none;-ms-user-select:none;cursor:pointer;z-index:4;}.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);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;-o-user-select:none;user-select:none;-ms-user-select:none;cursor:pointer;z-index:4;}.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_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;}.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;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;-o-user-select:none;user-select:none;-ms-user-select:none;background-color:#e2efff;background: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);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;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;}span.dhxtabbar_tabs_text_test_dhx_skyblue{position:absolute;visibility:hidden;right:0;top:0;font-weight:bold;font-family:Tahoma;font-size:11px;color:black;}.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;}.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;}.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);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#e5f0fd,endColorStr=#d3e6fe) progid:DXImageTransform.Microsoft.Alpha(opacity=100);font-family:Tahoma;font-size:11px;color:#34404b;cursor:inherit;overflow:hidden;z-index:3;}.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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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;-o-user-select:none;user-select:none;-ms-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{box-shadow:0 0 3px #cececf;}.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 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;}.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;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_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!important;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/samples/dhtmlx/dhtmlx.js b/samples/dhtmlx/dhtmlx.js deleted file mode 100644 index 5a07142..0000000 --- a/samples/dhtmlx/dhtmlx.js +++ /dev/null @@ -1,9 +0,0 @@ -/* -Product Name: dhtmlxSuite -Version: 4.0.3 -Edition: Professional -License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com -Copyright UAB Dinamenta http://www.dhtmlx.com -*/ - -if(typeof(window.dhx4)=="undefined"){window.dhx4={version:"4.0.3",skin:null,skinDetect:function(c){var g=document.createElement("DIV");g.className=c+"_skin_detect";if(document.body.firstChild){document.body.insertBefore(g,document.body.firstChild)}else{document.body.appendChild(g)}var a=g.offsetWidth;g.parentNode.removeChild(g);g=null;return{10:"dhx_skyblue",20:"dhx_web",30:"dhx_terrace"}[a]||null},lastId:1,newId:function(){return this.lastId++},zim:{data:{},step:5,first:function(){return 100},last:function(){var g=this.first();for(var c in this.data){g=Math.max(g,this.data[c])}return g},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){return(a==true||a==1||a=="true"||a=="1"||a=="yes"||a=="y")},trim:function(a){return String(a).replace(/^\s{1,}/,"").replace(/\s{1,}$/,"")},template:function(c,g,a){return c.replace(/#([a-zA-Z0-9_-]{1,})#/g,function(l,h){if(h.length>0&&typeof(g[h])!="undefined"){if(a==true){return window.dhx4.trim(g[h])}return String(g[h])}return""})},absLeft:function(a){if(typeof(a)=="string"){a=document.getElementById(a)}return this._aOfs(a).left},absTop:function(a){if(typeof(a)=="string"){a=document.getElementById(a)}return this._aOfs(a).top},_aOfsSum:function(a){var g=0,c=0;while(a){g=g+parseInt(a.offsetTop);c=c+parseInt(a.offsetLeft);a=a.offsetParent}return{top:g,left:c}},_aOfsRect:function(h){var n=h.getBoundingClientRect();var o=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||o.scrollTop;var l=window.pageXOffset||c.scrollLeft||o.scrollLeft;var m=c.clientTop||o.clientTop||0;var q=c.clientLeft||o.clientLeft||0;var r=n.top+a-m;var g=n.left+l-q;return{top:Math.round(r),left:Math.round(g)}},_aOfs:function(a){if(a.getBoundingClientRect){return this._aOfsRect(a)}else{return this._aOfsSum(a)}},_isObj:function(a){return(a!=null&&typeof(a)=="object"&&typeof(a.length)=="undefined")},_copyObj:function(h){if(this._isObj(h)){var g={};for(var c in h){if(typeof(h[c])=="object"&&h[c]!=null){g[c]=this._copyObj(h[c])}else{g[c]=h[c]}}}else{var g=[];for(var c=0;c<h.length;c++){if(typeof(h[c])=="object"&&h[c]!=null){g[c]=this._copyObj(h[c])}else{g[c]=h[c]}}}return g},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,m,c){h=(typeof(h)=="string"?document.getElementById(h):h);var a=h.value.length;m=Math.max(Math.min(m,a),0);c=Math.min(c,a);if(h.setSelectionRange){try{h.setSelectionRange(m,c)}catch(l){}}else{if(h.createTextRange){var g=h.createTextRange();g.moveStart("character",m);g.moveEnd("character",c-a);try{g.select()}catch(l){}}}},transData:null,transDetect:function(){if(this.transData==null){this.transData={transProp:false,transEv:null};var g={MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd",OTransition:"oTransitionEnd",msTransition:"transitionend",transition:"transitionend"};for(var c in g){if(this.transData.transProp==false&&document.documentElement.style[c]!=null){this.transData.transProp=c;this.transData.transEv=g[c]}}g=null}return this.transData}};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.isOpera=(navigator.userAgent.indexOf("Opera")>=0);window.dhx4.isChrome=(navigator.userAgent.indexOf("Chrome")>=0);window.dhx4.isKHTML=(navigator.userAgent.indexOf("Safari")>=0||navigator.userAgent.indexOf("Konqueror")>=0);window.dhx4.isFF=(navigator.userAgent.indexOf("Firefox")>=0);window.dhx4.isIPad=(navigator.userAgent.search(/iPad/gi)>=0)}if(typeof(window.dhx4.ajax)=="undefined"){window.dhx4.ajax={cache:false,method:"post",get:function(a,c){this._call("GET",a,null,true,c)},getSync:function(a){return this._call("GET",a,null,false)},post:function(c,a,g){if(arguments.length==1){a=""}else{if(arguments.length==2&&(typeof(a)=="function"||typeof(window[a])=="function")){g=a;a=""}else{a=String(a)}}this._call("POST",c,a,true,g)},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,g){if(arguments.length==2&&(typeof(a)=="function"||typeof(window[a]))){g=a;a=""}this._call("POST",c,a,true,g,{url:c,postData:a})},_call:function(o,c,a,m,l,h){var g=(window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));var n=(navigator.userAgent.match(/AppleWebKit/)!=null&&navigator.userAgent.match(/Qt/)!=null&&navigator.userAgent.match(/Safari/)!=null);if(m==true){g.onreadystatechange=function(){if((g.readyState==4&&g.status==200)||(n==true&&g.readyState==3)){window.setTimeout(function(){if(typeof(l)=="function"){l.apply(window,[{xmlDoc:g}])}if(h!=null){if(typeof(h.postData)!="undefined"){dhx4.ajax.postLong(h.url,h.postData,l)}else{dhx4.ajax.getLong(h.url,l)}}l=null;g=null},1)}}}if(o=="GET"&&this.cache!=true){c+=(c.indexOf("?")>=0?"&":"?")+"dhxr"+new Date().getTime()}g.open(o,c,m);if(o=="POST"){g.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(this.cache!=true){a+=(a.length>0?"&":"")+"dhxr"+new Date().getTime()}}else{a=null}g.setRequestHeader("X-Requested-With","XMLHttpRequest");g.send(a);if(!m){return{xmlDoc:g}}}}}if(typeof(window.dhx4._enableDataLoading)=="undefined"){window.dhx4._enableDataLoading=function(obj,initObj,xmlToJson,xmlRootTag,mode){if(mode=="clear"){for(var a in obj._dhxdataload){obj._dhxdataload[a]=null;delete obj._dhxdataload[a]}obj._loadData=null;obj._dhxdataload=null;obj.load=null;obj.loadStruct=null;obj=null;return}obj._dhxdataload={initObj:initObj,xmlToJson:xmlToJson,xmlRootTag:xmlRootTag,onBeforeXLS:null};obj._loadData=function(data,loadParams,onLoad){if(arguments.length==2){onLoad=loadParams;loadParams=null}var obj=null;if(arguments.length==3){onLoad=arguments[2]}if(typeof(data)=="string"){var k=data.replace(/^\s{1,}/,"").replace(/\s{1,}$/,"");var tag=new RegExp("^<"+this._dhxdataload.xmlRootTag);if(tag.test(k.replace(/^<\?xml[^\?]*\?>\s*/,""))){if(window.DOMParser){obj=(new window.DOMParser()).parseFromString(data,"text/xml")}else{if(typeof(window.ActiveXObject)!="undefined"){obj=new window.ActiveXObject("Microsoft.XMLDOM");obj.async="false";obj.loadXML(data)}}if(obj!=null){obj=this[this._dhxdataload.xmlToJson].apply(this,[obj])}}if(obj==null&&(k.match(/^\{.*\}$/)!=null||k.match(/^\[.*\]$/)!=null)){try{eval("dhx4.temp="+k)}catch(e){dhx4.temp=null}obj=dhx4.temp;dhx4.temp=null}if(obj==null){this.callEvent("onXLS",[]);var params=[];if(typeof(this._dhxdataload.onBeforeXLS)=="function"){var k=this._dhxdataload.onBeforeXLS.apply(this,[data]);if(k!=null&&typeof(k)=="object"){if(k.url!=null){data=k.url}if(k.params!=null){for(var a in k.params){params.push(a+"="+encodeURIComponent(k.params[a]))}}}}var t=this;var callBack=function(r){var obj=null;if((r.xmlDoc.getResponseHeader("Content-Type")||"").search(/xml/gi)>=0||(r.xmlDoc.responseText.replace(/^\s{1,}/,"")).match(/^</)!=null){obj=t[t._dhxdataload.xmlToJson].apply(t,[r.xmlDoc.responseXML])}else{try{eval("dhx4.temp="+r.xmlDoc.responseText)}catch(e){dhx4.temp=null}obj=dhx4.temp;dhx4.temp=null}if(obj!=null){t[t._dhxdataload.initObj].apply(t,[obj,data])}t.callEvent("onXLE",[]);if(onLoad!=null){if(typeof(onLoad)=="function"){onLoad.apply(t,[])}else{if(typeof(window[onLoad])=="function"){window[onLoad].apply(t,[])}}}callBack=onLoad=null;obj=r=t=null};params=params.join("&")+(typeof(loadParams)=="string"?"&"+loadParams:"");if(dhx4.ajax.method=="post"){dhx4.ajax.post(data,params,callBack)}else{if(dhx4.ajax.method=="get"){dhx4.ajax.get(data+(data.indexOf("?")>0?"":"")+params,callBack)}}return}}else{if(typeof(data.documentElement)=="object"||(typeof(data.tagName)!="undefined"&&typeof(data.getElementsByTagName)!="undefined"&&data.getElementsByTagName(this._dhxdataload.xmlRootTag).length>0)){obj=this[this._dhxdataload.xmlToJson].apply(this,[data])}else{obj=window.dhx4._copyObj(data)}}if(obj!=null){this[this._dhxdataload.initObj].apply(this,[obj])}if(onLoad!=null){if(typeof(onLoad)=="function"){onLoad.apply(this,[])}else{if(typeof(window[onLoad])=="function"){window[onLoad].apply(this,[])}}onLoad=null}};if(mode!=null){var k={struct:"loadStruct",data:"load"};for(var a in mode){if(mode[a]==true){obj[k[a]]=function(){return this._loadData.apply(this,arguments)}}}}obj=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(g,l){g=String(g).toLowerCase();if(!this.dhxevs.data[g]){this.dhxevs.data[g]={}}var h=window.dhx4.newId();this.dhxevs.data[g][h]=l;return h};a.detachEvent=function(m){for(var h in this.dhxevs.data){var l=0;for(var g in this.dhxevs.data[h]){if(g==m){this.dhxevs.data[h][g]=null;delete this.dhxevs.data[h][g]}else{l++}}if(l==0){this.dhxevs.data[h]=null;delete this.dhxevs.data[h]}}};a.checkEvent=function(g){g=String(g).toLowerCase();return(this.dhxevs.data[g]!=null)};a.callEvent=function(h,m){h=String(h).toLowerCase();if(this.dhxevs.data[h]==null){return true}var l=true;for(var g in this.dhxevs.data[h]){l=this.dhxevs.data[h][g].apply(this,m)&&l}return l};a.detachAllEvents=function(){for(var h in this.dhxevs.data){for(var g in this.dhxevs.data[h]){this.dhxevs.data[h][g]=null;delete this.dhxevs.data[h][g]}this.dhxevs.data[h]=null;delete this.dhxevs.data[h]}};a=null}}dhtmlx=function(g){for(var c in g){dhtmlx[c]=g[c]}return dhtmlx};dhtmlx.extend_api=function(a,h,g){var c=window[a];if(!c){return}window[a]=function(n){if(n&&typeof n=="object"&&!n.tagName){var m=c.apply(this,(h._init?h._init(n):arguments));for(var l in dhtmlx){if(h[l]){this[h[l]](dhtmlx[l])}}for(var l in n){if(h[l]){this[h[l]](n[l])}else{if(l.indexOf("on")==0){this.attachEvent(l,n[l])}}}}else{var m=c.apply(this,arguments)}if(h._patch){h._patch(this)}return m||this};window[a].prototype=c.prototype;if(g){dhtmlXHeir(window[a].prototype,g)}};dhtmlxAjax={get:function(a,g){var c=new dtmlXMLLoaderObject(true);c.async=(arguments.length<3);c.waitCall=g;c.loadXML(a);return c},post:function(a,g,h){var c=new dtmlXMLLoaderObject(true);c.async=(arguments.length<4);c.waitCall=h;c.loadXML(a,true,g);return c},getSync:function(a){return this.get(a,null,true)},postSync:function(a,c){return this.post(a,c,null,true)}};function dtmlXMLLoaderObject(c,h,g,a){this.xmlDoc="";if(typeof(g)!="undefined"){this.async=g}else{this.async=true}this.onloadAction=c||null;this.mainObject=h||null;this.waitCall=null;this.rSeed=a||false;return this}dtmlXMLLoaderObject.count=0;dtmlXMLLoaderObject.prototype.waitLoadFunction=function(c){var a=true;this.check=function(){if((c)&&(c.onloadAction!=null)){if((!c.xmlDoc.readyState)||(c.xmlDoc.readyState==4)){if(!a){return}a=false;dtmlXMLLoaderObject.count++;if(typeof c.onloadAction=="function"){c.onloadAction(c.mainObject,null,null,null,c)}if(c.waitCall){c.waitCall.call(this,c);c.waitCall=null}}}};return this.check};dtmlXMLLoaderObject.prototype.getXMLTopNode=function(g,a){if(typeof this.xmlDoc.status=="undefined"||this.xmlDoc.status<400){if(this.xmlDoc.responseXML){var c=this.xmlDoc.responseXML.getElementsByTagName(g);if(c.length==0&&g.indexOf(":")!=-1){var c=this.xmlDoc.responseXML.getElementsByTagName((g.split(":"))[1])}var h=c[0]}else{var h=this.xmlDoc.documentElement}if(h){this._retry=false;return h}if(!this._retry&&_isIE){this._retry=true;var a=this.xmlDoc;this.loadXMLString(this.xmlDoc.responseText.replace(/^[\s]+/,""),true);return this.getXMLTopNode(g,a)}}dhtmlxError.throwError("LoadXML","Incorrect XML",[(a||this.xmlDoc),this.mainObject]);return document.createElement("DIV")};dtmlXMLLoaderObject.prototype.loadXMLString=function(c,a){if(!_isIE){var g=new DOMParser();this.xmlDoc=g.parseFromString(c,"text/xml")}else{this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");this.xmlDoc.async=this.async;this.xmlDoc.onreadystatechange=function(){};this.xmlDoc.loadXML(c)}if(a){return}if(this.onloadAction){this.onloadAction(this.mainObject,null,null,null,this)}if(this.waitCall){this.waitCall();this.waitCall=null}};dtmlXMLLoaderObject.prototype.loadXML=function(g,c,a,h){if(this.rSeed){g+=((g.indexOf("?")!=-1)?"&":"?")+"a_dhx_rSeed="+(new Date()).valueOf()}this.filePath=g;if((!_isIE)&&(window.XMLHttpRequest)){this.xmlDoc=new XMLHttpRequest()}else{this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP")}if(this.async){this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this)}this.xmlDoc.open(c?"POST":"GET",g,this.async);if(h){this.xmlDoc.setRequestHeader("User-Agent","dhtmlxRPC v0.1 ("+navigator.userAgent+")");this.xmlDoc.setRequestHeader("Content-type","text/xml")}else{if(c){this.xmlDoc.setRequestHeader("Content-type",(this.contenttype||"application/x-www-form-urlencoded"))}}this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");this.xmlDoc.send(null||a);if(!this.async){(new this.waitLoadFunction(this))()}};dtmlXMLLoaderObject.prototype.destructor=function(){this._filterXPath=null;this._getAllNamedChilds=null;this._retry=null;this.async=null;this.rSeed=null;this.filePath=null;this.onloadAction=null;this.mainObject=null;this.xmlDoc=null;this.doXPath=null;this.doXPathOpera=null;this.doXSLTransToObject=null;this.doXSLTransToString=null;this.loadXML=null;this.loadXMLString=null;this.doSerialization=null;this.xmlNodeToJSON=null;this.getXMLTopNode=null;this.setXSLParamValue=null;return null};dtmlXMLLoaderObject.prototype.xmlNodeToJSON=function(h){var g={};for(var c=0;c<h.attributes.length;c++){g[h.attributes[c].name]=h.attributes[c].value}g._tagvalue=h.firstChild?h.firstChild.nodeValue:"";for(var c=0;c<h.childNodes.length;c++){var a=h.childNodes[c].tagName;if(a){if(!g[a]){g[a]=[]}g[a].push(this.xmlNodeToJSON(h.childNodes[c]))}}return g};function callerFunction(a,c){this.handler=function(g){if(!g){g=window.event}a(g,c);return true};return this.handler}function getAbsoluteLeft(a){return getOffset(a).left}function getAbsoluteTop(a){return getOffset(a).top}function getOffsetSum(a){var g=0,c=0;while(a){g=g+parseInt(a.offsetTop);c=c+parseInt(a.offsetLeft);a=a.offsetParent}return{top:g,left:c}}function getOffsetRect(h){var n=h.getBoundingClientRect();var o=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||o.scrollTop;var l=window.pageXOffset||c.scrollLeft||o.scrollLeft;var m=c.clientTop||o.clientTop||0;var q=c.clientLeft||o.clientLeft||0;var r=n.top+a-m;var g=n.left+l-q;return{top:Math.round(r),left:Math.round(g)}}function getOffset(a){if(a.getBoundingClientRect){return getOffsetRect(a)}else{return getOffsetSum(a)}}function convertStringToBoolean(a){if(typeof(a)=="string"){a=a.toLowerCase()}switch(a){case"1":case"true":case"yes":case"y":case 1:case true:return true;break;default:return false}}function getUrlSymbol(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 l=document.createElement("Div");l.innerHTML=dragger.dragNode.outerHTML;dragger.dragNode=l.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(l){if(window.name){var g=parent.frames[window.name].frameElement.offsetParent;var h=0;var c=0;while(g){h+=g.offsetLeft;c+=g.offsetTop;g=g.offsetParent}if((parent.dhtmlDragAndDrop)){var a=parent.dhtmlDragAndDrop.calculateFramePosition(1);h+=a.split("_")[0]*1;c+=a.split("_")[1]*1}if(l){return h+"_"+c}else{this.fx=h}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])}}}}dtmlXMLLoaderObject.prototype.doXPath=function(g,l,h,q){if(_isKHTML||(!_isIE&&!window.XPathResult)){return this.doXPathOpera(g,l)}if(_isIE){if(!l){if(!this.xmlDoc.nodeName){l=this.xmlDoc.responseXML}else{l=this.xmlDoc}}if(!l){dhtmlxError.throwError("LoadXML","Incorrect XML",[(l||this.xmlDoc),this.mainObject])}if(h!=null){l.setProperty("SelectionNamespaces","xmlns:xsl='"+h+"'")}if(q=="single"){return l.selectSingleNode(g)}else{return l.selectNodes(g)||new Array(0)}}else{var a=l;if(!l){if(!this.xmlDoc.nodeName){l=this.xmlDoc.responseXML}else{l=this.xmlDoc}}if(!l){dhtmlxError.throwError("LoadXML","Incorrect XML",[(l||this.xmlDoc),this.mainObject])}if(l.nodeName.indexOf("document")!=-1){a=l}else{a=l;l=l.ownerDocument}var n=XPathResult.ANY_TYPE;if(q=="single"){n=XPathResult.FIRST_ORDERED_NODE_TYPE}var m=new Array();var c=l.evaluate(g,a,function(r){return h},n,null);if(n==XPathResult.FIRST_ORDERED_NODE_TYPE){return c.singleNodeValue}var o=c.iterateNext();while(o){m[m.length]=o;o=c.iterateNext()}return m}};function _dhtmlxError(c,a,g){if(!this.catches){this.catches=new Array()}return this}_dhtmlxError.prototype.catchError=function(c,a){this.catches[c]=a};_dhtmlxError.prototype.throwError=function(c,a,g){if(this.catches[c]){return this.catches[c](c,a,g)}if(this.catches.ALL){return this.catches.ALL(c,a,g)}alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]);return null};window.dhtmlxError=new _dhtmlxError();dtmlXMLLoaderObject.prototype.doXPathOpera=function(g,a){var l=g.replace(/[\/]+/gi,"/").split("/");var h=null;var c=1;if(!l.length){return[]}if(l[0]=="."){h=[a]}else{if(l[0]==""){h=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(l[c].replace(/\[[^\]]*\]/g,""));c++}else{return[]}}for(c;c<l.length;c++){h=this._getAllNamedChilds(h,l[c])}if(l[c-1].indexOf("[")!=-1){h=this._filterXPath(h,l[c-1])}return h};dtmlXMLLoaderObject.prototype._filterXPath=function(h,g){var m=new Array();var g=g.replace(/[^\[]*\[\@/g,"").replace(/[\[\]\@]*/g,"");for(var l=0;l<h.length;l++){if(h[l].getAttribute(g)){m[m.length]=h[l]}}return m};dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(h,g){var n=new Array();if(_isKHTML){g=g.toUpperCase()}for(var m=0;m<h.length;m++){for(var l=0;l<h[m].childNodes.length;l++){if(_isKHTML){if(h[m].childNodes[l].tagName&&h[m].childNodes[l].tagName.toUpperCase()==g){n[n.length]=h[m].childNodes[l]}}else{if(h[m].childNodes[l].tagName==g){n[n.length]=h[m].childNodes[l]}}}}return n};function dhtmlXHeir(h,g){for(var l in g){if(typeof(g[l])=="function"){h[l]=g[l]}}return h}function dhtmlxEvent(c,g,a){if(c.addEventListener){c.addEventListener(g,a,false)}else{if(c.attachEvent){c.attachEvent("on"+g,a)}}}dtmlXMLLoaderObject.prototype.xslDoc=null;dtmlXMLLoaderObject.prototype.setXSLParamValue=function(c,g,h){if(!h){h=this.xslDoc}if(h.responseXML){h=h.responseXML}var a=this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+c+"']",h,"http://www.w3.org/1999/XSL/Transform","single");if(a!=null){a.firstChild.nodeValue=g}};dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(h,c){if(!h){h=this.xslDoc}if(h.responseXML){h=h.responseXML}if(!c){c=this.xmlDoc}if(c.responseXML){c=c.responseXML}if(!_isIE){if(!this.XSLProcessor){this.XSLProcessor=new XSLTProcessor();this.XSLProcessor.importStylesheet(h)}var a=this.XSLProcessor.transformToDocument(c)}else{var a=new ActiveXObject("Msxml2.DOMDocument.3.0");try{c.transformNodeToObject(h,a)}catch(g){a=c.transformNode(h)}}return a};dtmlXMLLoaderObject.prototype.doXSLTransToString=function(g,c){var a=this.doXSLTransToObject(g,c);if(typeof(a)=="string"){return a}return this.doSerialization(a)};dtmlXMLLoaderObject.prototype.doSerialization=function(c){if(!c){c=this.xmlDoc}if(c.responseXML){c=c.responseXML}if(!_isIE){var a=new XMLSerializer();return a.serializeToString(c)}else{return c.xml}};dhtmlxEventable=function(obj){obj.attachEvent=function(name,catcher,callObj){name="ev_"+name.toLowerCase();if(!this[name]){this[name]=new this.eventCatcher(callObj||this)}return(name+":"+this[name].addEvent(catcher))};obj.callEvent=function(name,arg0){name="ev_"+name.toLowerCase();if(this[name]){return this[name].apply(this,arg0)}return true};obj.checkEvent=function(name){return(!!this["ev_"+name.toLowerCase()])};obj.eventCatcher=function(obj){var dhx_catch=[];var z=function(){var res=true;for(var i=0;i<dhx_catch.length;i++){if(dhx_catch[i]!=null){var zr=dhx_catch[i].apply(obj,arguments);res=res&&zr}}return res};z.addEvent=function(ev){if(typeof(ev)!="function"){ev=eval(ev)}if(ev){return dhx_catch.push(ev)-1}return false};z.removeEvent=function(id){dhx_catch[id]=null};return z};obj.detachEvent=function(id){if(id!=false){var list=id.split(":");this[list[0]].removeEvent(list[1])}};obj.detachAllEvents=function(){for(var name in this){if(name.indexOf("ev_")==0){this.detachEvent(name);this[name]=null}}};obj=null};if(!window.dhtmlx){dhtmlx={}}dhtmlx.assert=function(c,a){if(!c){dhtmlx.error(a)}};dhtmlx.assert_enabled=function(){return false};dhtmlx.assert_event=function(m,g){if(!m._event_check){m._event_check={};m._event_check_size={}}for(var c in g){m._event_check[c.toLowerCase()]=g[c];var l=-1;for(var h in g[c]){l++}m._event_check_size[c.toLowerCase()]=l}};dhtmlx.assert_method_info=function(l,c,h,m){var a=[];for(var g=0;g<m.length;g++){a.push(m[g][0]+" : "+m[g][1]+"\n "+m[g][2].describe()+(m[g][3]?"; optional":""))}return l.name+"."+c+"\n"+h+"\n Arguments:\n - "+a.join("\n - ")};dhtmlx.assert_method=function(g,a){for(var c in a){dhtmlx.assert_method_process(g,c,a[c].descr,a[c].args,(a[c].min||99),a[c].skip)}};dhtmlx.assert_method_process=function(m,c,l,n,g,h){var a=m[c];if(!h){m[c]=function(){if(arguments.length!=n.length&&arguments.length<g){dhtmlx.log("warn","Incorrect count of parameters\n"+m[c].describe()+"\n\nExpecting "+n.length+" but have only "+arguments.length)}else{for(var o=0;o<n.length;o++){if(!n[o][3]&&!n[o][2](arguments[o])){dhtmlx.log("warn","Incorrect method call\n"+m[c].describe()+"\n\nActual value of "+(o+1)+" parameter: {"+(typeof arguments[o])+"} "+arguments[o])}}}return a.apply(this,arguments)}}m[c].describe=function(){return dhtmlx.assert_method_info(m,c,l,n)}};dhtmlx.assert_event_call=function(g,c,a){if(g._event_check){if(!g._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(g._event_check_size[c]!=a.length){dhtmlx.log("warn","Incorrect event call, expected "+g._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(g,c){if(typeof g=="object"){for(var a in g){dhtmlx.assert_settings(a,g[a],c)}}};dhtmlx.assert_settings=function(o,l,h){h=h||this._settings_check;if(h){if(!h[o]){return dhtmlx.log("warn","Unknown propery: "+o)}var n="";var c="";var a=false;for(var g=0;g<h[o].length;g++){var m=h[o][g];if(typeof m=="string"){continue}if(typeof m=="function"){a=a||m(l)}else{if(typeof m=="object"&&typeof m[1]=="function"){a=a||m[1](l);if(a&&m[2]){dhtmlx.assert_check(l,m[2])}}}if(a){break}}if(!a){dhtmlx.log("warn","Invalid configuration\n"+dhtmlx.assert_info(o,h)+"\nActual value: {"+(typeof l)+"} "+l)}}};dhtmlx.assert_info=function(c,m){var a=m[c];var l="";var h=[];for(var g=0;g<a.length;g++){if(typeof rule=="string"){l=a[g]}else{if(a[g].describe){h.push(a[g].describe())}else{if(a[g][1]&&a[g][1].describe){h.push(a[g][1].describe())}}}}return"Property: "+c+", "+l+" \nExpected value: \n - "+h.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(g){return c[g]};a.describe=function(){var h=[];for(var g in c){h.push(g)}return"{String} can take one of next values: "+h.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(g,c){var h=function(a){if(g(a)||c(a)){return true}return false};h.describe=function(){return g.describe()};return h}}dhtmlx.version="3.0";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 g in a){c[g]=a[g]}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 m=arguments;var g=m[0];var c=[];for(var l=m.length-1;l>0;l--){if(typeof m[l]=="function"){m[l]=m[l].prototype}for(var h in m[l]){if(h=="_init"){c.push(m[l][h])}else{if(!g[h]){g[h]=m[l][h]}}}}if(m[0]._init){c.push(m[0]._init)}g._init=function(){for(var n=0;n<c.length;n++){c[n].apply(this,arguments)}};g.base=m[1];var a=function(n){this._init(n);if(this._parseSettings){this._parseSettings(n,this.defaults)}};a.prototype=g;g=m=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,g,c){return function(){var h=false;h=a[g].apply(a,arguments);return h}};dhtmlx.isNotDefined=function(c){return typeof c=="undefined"};dhtmlx.delay=function(h,c,g,a){setTimeout(function(){var l=h.apply(c,g);h=c=g=null;return l},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(h,g,a,c){h=dhtmlx.toNode(h);var l=dhtmlx.uid();dhtmlx._events[l]=[h,g,a];if(c){a=dhtmlx.bind(a,c)}if(h.addEventListener){h.addEventListener(g,a,false)}else{if(h.attachEvent){h.attachEvent("on"+g,a)}}return l};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,g,a){if(window.console&&console.log){c=c.toLowerCase();if(window.console[c]){window.console[c](g||"unknown error")}else{window.console.log(c+": "+g)}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 g="_start_time_log"+a;if(!dhtmlx[g]){dhtmlx[g]=new Date();dhtmlx.log("Info","Timing start ["+a+"]")}else{var c=new Date();dhtmlx.log("Info","Timing end ["+a+"]:"+(c.valueOf()-dhtmlx[g].valueOf())/1000+"s");dhtmlx[g]=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(g,l){if(this._events._block){return true}g=g.toLowerCase();dhtmlx.assert_event_call(this,g,l);var h=this._events[g.toLowerCase()];var a=true;if(dhtmlx.debug){dhtmlx.log("info","["+this.name+"] event:"+g,l)}if(h){for(var c=0;c<h.length;c++){if(h[c].apply(this,(l||[]))===false){a=false}}}if(this._map[g]&&!this._map[g].callEvent(g,l)){a=false}return a},attachEvent:function(c,a,h){c=c.toLowerCase();dhtmlx.assert_event_attach(this,c);h=h||dhtmlx.uid();a=dhtmlx.toFunctor(a);var g=this._events[c]||dhtmlx.toArray();g.push(a);this._events[c]=g;this._handlers[h]={f:a,t:c};return h},detachEvent:function(h){if(this._handlers[h]){var c=this._handlers[h].t;var a=this._handlers[h].f;var g=this._events[c];g.remove(a);delete this._handlers[h]}}};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,g){if(!g&&g!==0){this.push(c)}else{var a=this.splice(g,(this.length-g));this[g]=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,g){for(var c=0;c<this.length;c++){a.call((g||this),this[c])}},map:function(a,g){for(var c=0;c<this.length;c++){this[c]=a.call((g||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 h=document.createElement("DIV");var g;for(var c=0;c<a.names.length;c++){while(p=a[a.names[c]].pop()){if(typeof h.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,g){a=a||{};var h=document.createElement(c);for(var l in a){h.setAttribute(l,a[l])}if(a.style){h.style.cssText=a.style}if(a["class"]){h.className=a["class"]}if(g){h.innerHTML=g}return h},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,g,a){if(!c){return}if(g){g.parentNode.insertBefore(c,g)}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(h){if(h.getBoundingClientRect){var n=h.getBoundingClientRect();var o=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||o.scrollTop;var l=window.pageXOffset||c.scrollLeft||o.scrollLeft;var m=c.clientTop||o.clientTop||0;var q=c.clientLeft||o.clientLeft||0;var r=n.top+a-m;var g=n.left+l-q;return{y:Math.round(r),x:Math.round(g)}}else{var r=0,g=0;while(h){r=r+parseInt(h.offsetTop,10);g=g+parseInt(h.offsetLeft,10);h=h.offsetParent}return{y:r,x:g}}},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 g=0;g<dhtmlx.destructors.length;g++){dhtmlx.destructors[g].destructor()}dhtmlx.destructors=[]}for(var c in dhtmlx._events){var h=dhtmlx._events[c];if(h[0].removeEventListener){h[0].removeEventListener(h[1],h[2],false)}else{if(h[0].detachEvent){h[0].detachEvent("on"+h[1],h[2])}}delete dhtmlx._events[c]}});dhtmlx.ajax=function(a,c,g){if(arguments.length!==0){var h=new dhtmlx.ajax();if(g){h.master=g}h.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(l,q,n){var c=this.getXHR();if(typeof n=="function"){n=[n]}if(typeof q=="object"){var m=[];for(var g in q){var o=q[g];if(o===null||o===dhtmlx.undefined){o=""}m.push(g+"="+encodeURIComponent(o))}q=m.join("&")}if(q&&!this.post){l=l+(l.indexOf("?")!=-1?"&":"?")+q;q=null}c.open(this.post?"POST":"GET",l,!this._sync);if(this.post){c.setRequestHeader("Content-type","application/x-www-form-urlencoded")}var h=this;c.onreadystatechange=function(){if(!c.readyState||c.readyState==4){if(n&&h){for(var a=0;a<n.length;a++){if(n[a]){n[a].call((h.master||h),c.responseText,c.responseXML,c)}}}h.master=null;n=h=null}};c.send(q||null);return c},get:function(a,g,c){this.post=false;return this.send(a,g,c)},post:function(a,g,c){this.post=true;return this.send(a,g,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.xml}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(l,c,a){var g=this.data.driver;var h=g.getRecords(g.toObject(l,c))[0];this.data=(g?g.getDetails(h):l);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(h,g){this._ignore_feed=true;this.setValues(dhtmlx.DataDriver.json.toObject(h)[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 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(g){var a={};for(var c=0;c<g.length;c++){a["data"+c]=g[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(g){g=this.stringToArray(g);var a={};for(var c=0;c<g.length;c++){a["data"+c]=g[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,q){if(window.XPathResult){var g=h;if(h.nodeName.indexOf("document")==-1){h=h.ownerDocument}var n=[];var c=h.evaluate(q,g,null,XPathResult.ANY_TYPE,null);var o=c.iterateNext();while(o){n.push(o);o=c.iterateNext()}return n}else{var m=true;try{if(typeof(h.selectNodes)=="undefined"){m=false}}catch(l){}if(m){return h.selectNodes(q)}else{var a=q.split("/").pop();return h.getElementsByTagName(a)}}},tagToObject:function(g,q){q=q||{};var l=false;var h=g.attributes;if(h&&h.length){for(var n=0;n<h.length;n++){q[h[n].name]=h[n].value}l=true}var c=g.childNodes;var o={};for(var n=0;n<c.length;n++){if(c[n].nodeType==1){var m=c[n].tagName;if(typeof q[m]!="undefined"){if(!(q[m] instanceof Array)){q[m]=[q[m]]}q[m].push(this.tagToObject(c[n],{}))}else{q[c[n].tagName]=this.tagToObject(c[n],{})}l=true}}if(!l){return this.nodeValue(g)}q.value=this.nodeValue(g);return q},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(h,g){if(g&&(g.firstChild&&g.firstChild.tagName!="parsererror")){return g}var c=this.fromString(h.replace(/^[\s]+/,""));if(c){return c}dhtmlx.error("xml can't be parsed",h)}};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(h,g){if(this._load_count){return this._load_count=[h,g]}else{this._load_count=true}this.load(a+((a.indexOf("?")==-1)?"?":"&")+"posStart="+h+"&count="+g,function(){var l=this._load_count;this._load_count=false;if(typeof l=="object"){this.data.feed.apply(this,l)}})}}},_onLoad:function(g,c,a){this.data._parse(this.data.driver.toObject(g,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(n,m){if(this._settings.dataFeed){var l={};if(!n&&!l){return}if(typeof n=="function"){if(!m){return}n(m,l)}else{l={text:m}}this.clearAll();var c=this._settings.dataFeed;if(typeof c=="function"){return c.call(this,m,l)}var h=[];for(var g in l){h.push("dhx_filter["+g+"]="+encodeURIComponent(l[g]))}this.load(c+(c.indexOf("?")<0?"?":"&")+h.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(l){this.callEvent("onParse",[this.driver,l]);if(this._filter_order){this.filter()}var m=this.driver.getInfo(l);if(m._key){dhtmlx.security_key=m._key}var h=this.driver.getRecords(l);var o=(m._from||0)*1;if(o===0&&this.order[0]){o=this.order.length}var c=0;for(var g=0;g<h.length;g++){var a=this.driver.getDetails(h[g]);var n=this.id(a);if(!this.pull[n]){this.order[c+o]=n;c++}this.pull[n]=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 g=0;g<m._size;g++){if(!this.order[g]){var n=dhtmlx.uid();var a={id:n,$template:"loading"};this.pull[n]=a;this.order[g]=n}}this.callEvent("onStoreLoad",[this.driver,l]);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(h,g){if(h){h=this.indexById(h)}else{h=this.startOffset||0}if(g){g=this.indexById(g)}else{g=Math.min((this.endOffset||Infinity),(this.dataCount()-1));if(g<0){g=0}}if(h>g){var c=g;g=h;h=c}return this.getIndexRange(h,g)},getIndexRange:function(h,g){g=Math.min((g||Infinity),this.dataCount()-1);var a=dhtmlx.toArray();for(var c=(h||0);c<=g;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,h){if(a<0||h<0){dhtmlx.error("DataStore::move","Incorrect indexes");return}var g=this.idByIndex(a);var c=this.item(g);this.order.removeAt(a);this.order.insertAt(g,Math.min(this.order.length,h));this.callEvent("onStoreUpdated",[g,c,"move"])},scheme:function(a){this._scheme=a},sync:function(l,h,a){if(typeof h!="function"){a=h;h=null}if(dhtmlx.debug_bind){this.debug_sync_master=l;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 g=l;if(l.name!="DataStore"){l=l.data}var c=dhtmlx.bind(function(o,m,n){if(n!="update"||h){o=null}if(!o){this.order=dhtmlx.toArray([].concat(l.order));this._filter_order=null;this.pull=l.pull;if(h){this.silent(h)}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(o)}else{a=false}},this);l.attachEvent("onStoreUpdated",c);this.feed=function(n,m){g.loadNext(m,n)};c()},add:function(l,a){if(this._scheme){l=l||{};for(var c in this._scheme){l[c]=l[c]||this._scheme[c]}if(this._scheme){if(this._scheme.$init){this._scheme.$update(l)}else{if(this._scheme.$update){this._scheme.$update(l)}}}}var m=this.id(l);var h=this.dataCount();if(dhtmlx.isNotDefined(a)||a<0){a=h}if(a>h){dhtmlx.log("Warning","DataStore:add","Index of out of bounds");a=Math.min(this.order.length,a)}if(this.callEvent("onBeforeAdd",[m,l,a])===false){return false}if(this.exists(m)){return dhtmlx.error("Not unique ID")}this.pull[m]=l;this.order.insertAt(m,a);if(this._filter_order){var g=this._filter_order.length;if(!a&&this.order.length){g=0}this._filter_order.insertAt(m,g)}this.callEvent("onafterAdd",[m,a]);this.callEvent("onStoreUpdated",[m,l,"add"]);return m},remove:function(g){if(g instanceof Array){for(var a=0;a<g.length;a++){this.remove(g[a])}return}if(this.callEvent("onBeforeDelete",[g])===false){return false}if(!this.exists(g)){return dhtmlx.error("Not existing ID",g)}var c=this.item(g);this.order.remove(g);if(this._filter_order){this._filter_order.remove(g)}delete this.pull[g];this.callEvent("onafterdelete",[g]);this.callEvent("onStoreUpdated",[g,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(m,c,a){var g=m;if(typeof m=="function"){g={as:m,dir:c}}else{if(typeof m=="string"){g={by:m,dir:c,as:a}}}var l=[g.by,g.dir,g.as];if(!this.callEvent("onbeforesort",l)){return}if(this.order.length){var n=dhtmlx.sort.create(g);var h=this.getRange(this.first(),this.last());h.sort(n);this.order=h.map(function(o){return this.id(o)},this)}this.refresh();this.callEvent("onaftersort",l)},filter:function(l,h){if(!this.callEvent("onBeforeFilter",[l,h])){return}if(this._filter_order){this.order=this._filter_order;delete this._filter_order}if(!this.order.length){return}if(l){var c=l;h=h||"";if(typeof l=="string"){l=dhtmlx.Template.fromHTML(l);h=h.toString().toLowerCase();c=function(o,n){return l(o).toLowerCase().indexOf(n)!=-1}}var g=dhtmlx.toArray();for(var a=0;a<this.order.length;a++){var m=this.order[a];if(c(this.item(m),h)){g.push(m)}}this._filter_order=this.order;this.order=g}this.refresh();this.callEvent("onAfterFilter",[])},each:function(g,c){for(var a=0;a<this.order.length;a++){g.call((c||this),this.item(this.order[a]))}},provideApi:function(h,c){this.debug_bind_master=h;if(c){this.mapEvent({onbeforesort:h,onaftersort:h,onbeforeadd:h,onafteradd:h,onbeforedelete:h,onafterdelete:h,onbeforeupdate:h})}var g=["get","set","sort","add","remove","exists","idByIndex","indexById","item","update","refresh","dataCount","filter","next","previous","clearAll","first","last","serialize"];for(var a=0;a<g.length;a++){h[g[a]]=dhtmlx.methodPush(this,g[a])}if(dhtmlx.assert_enabled()){this.assert_event(h)}},serialize:function(){var g=this.order;var a=[];for(var c=0;c<g.length;c++){a.push(this.pull[g[c]])}return a}};dhtmlx.sort={create:function(a){return dhtmlx.sort.dir(a.dir,dhtmlx.sort.by(a.by,a.as))},as:{"int":function(g,c){g=g*1;c=c*1;return g>c?1:(g<c?-1:0)},string_strict:function(g,c){g=g.toString();c=c.toString();return g>c?1:(g<c?-1:0)},string:function(g,c){g=g.toString().toLowerCase();c=c.toString().toLowerCase();return g>c?1:(g<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(h,g){return a(c(h),c(g))}},dir:function(c,a){if(c=="asc"){return a}return function(h,g){return a(h,g)*-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(m,l,c){m=m||event;var a=m.target||m.srcElement;var g="";var n=null;var h=false;while(a&&a.parentNode){if(!h&&a.getAttribute){n=a.getAttribute(this._id);if(n){if(a.getAttribute("userdata")){this.callEvent("onLocateData",[n,a])}if(!this.callEvent("on"+c,[n,m,a])){return}h=true}}g=a.className;if(g){g=g.split(" ");g=g[0]||g[1];if(l[g]){return l[g].call(this,m,n||dhtmlx.html.locate(m,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 g=this[c+"_setter"];return this._settings[c]=g?g.call(this,a):a},_parseSeetingColl:function(g){if(g){for(var c in g){this._define(c,g[c])}}},_parseSettings:function(g,a){var c=dhtmlx.extend({},a);if(typeof g=="object"&&!g.tagName){dhtmlx.extend(c,g)}this._parseSeetingColl(c)},_mergeSettings:function(a,g){for(var c in g){switch(typeof a[c]){case"object":a[c]=this._mergeSettings((a[c]||{}),g[c]);break;case"undefined":a[c]=g[c];break;default:break}}return a},_parseContainer:function(c,a,g){if(typeof c=="object"&&!c.tagName){c=c.container}this._obj=this.$view=dhtmlx.toNode(c);if(!this._obj&&g){this._obj=g(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 g=this;return function(){return a.apply(g,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(g,c){if(!g.types&&g.prototype.types){g=g.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");g.types[a]=dhtmlx.extend(dhtmlx.extend({},(g.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(g,a){a="template"+(a?("_"+a):"");var c=g[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}}g[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";this.version="3.0";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)}};(function(){if(!window.dhtmlxError){var c=function(){};window.dhtmlxError={catchError:c,throwError:c};window.convertStringToBoolean=function(g){return !!g};window.dhtmlxEventable=function(g){dhtmlx.extend(g,dhtmlx.EventSystem)};var a={getXMLTopNode:function(g){},doXPath:function(g){return dhtmlx.DataDriver.xml.xpath(this.xml,g)},xmlDoc:{responseXML:true}};dhtmlx.compat.dataProcessor=function(m){var g="_sendData";var h="_in_progress";var n="_tMode";var l="_waitMode";m[g]=function(q,r){if(!q){return}if(r){this[h][r]=(new Date()).valueOf()}if(!this.callEvent("onBeforeDataSending",r?[r,this.getState(r)]:[])){return false}var o=this;var s=this.serverProcessor;if(this[n]!="POST"){dhtmlx.ajax().get(s+((s.indexOf("?")!=-1)?"&":"?")+this.serialize(q,r),"",function(w,u,v){a.xml=dhtmlx.DataDriver.xml.checkResponse(w,u);o.afterUpdate(o,null,null,null,a)})}else{dhtmlx.ajax().post(s,this.serialize(q,r),function(w,u,v){a.xml=dhtmlx.DataDriver.xml.checkResponse(w,u);o.afterUpdate(o,null,null,null,a)})}this[l]++}}}})();if(!dhtmlx.attaches){dhtmlx.attaches={}}dhtmlx.attaches.attachAbstract=function(c,a){var l=document.createElement("DIV");l.id="CustomObject_"+dhtmlx.uid();l.style.width="100%";l.style.height="100%";l.cmp="grid";document.body.appendChild(l);this.attachObject(l.id);a.container=l.id;var h=this.vs[this.av];h.grid=new window[c](a);h.gridId=l.id;h.gridObj=l;h.grid.setSizes=function(){if(this.resize){this.resize()}else{this.render()}};var g="_viewRestore";return this.vs[this[g]()].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(g,a){this.cell=document.createElement("DIV");this.cell.className="dhx_cell"+(a||"");this._idd=g;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"},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 h in this.conf.idx){this.conf.idx[h]=null;delete this.conf.idx[h]}for(var n=0;n<this.cell.childNodes.length;n++){var l=this.cell.childNodes[n].className;for(var h in this.conf.idx_data){var m=new RegExp(this.conf.idx_data[h]);if(l.match(m)!=null){this.conf.idx[h]=n}}}this.callEvent("_onIdxUpdated",[])};this._adjustAttached=function(){for(var h in this.dataNodes){if(this.dataNodes[h]!=null&&typeof(this.dataNodes[h].setSizes)=="function"){this.dataNodes[h].setSizes()}}if(this.dataObj!=null&&typeof(this.dataObj.setSizes)=="function"){if(this.dataType=="layout"&&typeof(window.dhtmlXLayoutCell)!="undefined"&&this instanceof window.dhtmlXLayoutCell&&this.dataObj._getMainInst()!=this.layout._getMainInst()){this.dataObj.setSizes();return}this.dataObj.setSizes.apply(this.dataObj,arguments)}};this._setSize=function(m,s,n,q,r,l,o){if(!this.conf.size){this.conf.size={}}this.conf.size.x=m;this.conf.size.y=s;this.conf.size.w=n;this.conf.size.h=q;this.cell.style.left=m+"px";this.cell.style.top=s+"px";this.cell.style.width=n+"px";this.cell.style.height=q+"px";this.callEvent("_onSetSize",[]);if(l!==true){this._adjustCont(r,o)}else{this._adjustAttached(r)}this._adjustProgress()};this._adjustCont=function(q,n){var o=this.cell.childNodes[this.conf.idx.cont];var m=0;for(var h in this.conf.ofs_nodes.t){var l=this.conf.ofs_nodes.t[h];m+=(l=="func"?this[h]():(l==true?this.cell.childNodes[this.conf.idx[h]].offsetHeight:0))}var r=0;for(var h in this.conf.ofs_nodes.b){var l=this.conf.ofs_nodes.b[h];r+=(l=="func"?this[h]():(l==true?this.cell.childNodes[this.conf.idx[h]].offsetHeight:0))}o.style.left="0px";o.style.top=m+"px";if(!this.conf.cells_cont){this.conf.cells_cont={};o.style.width=this.cell.offsetWidth+"px";o.style.height=Math.max(this.cell.offsetHeight-m-r,0)+"px";this.conf.cells_cont.w=parseInt(o.style.width)-o.offsetWidth;this.conf.cells_cont.h=parseInt(o.style.height)-o.offsetHeight}o.style.left="0px";o.style.top=m+"px";o.style.width=Math.max(this.cell.offsetWidth+this.conf.cells_cont.w,0)+"px";o.style.height=Math.max(this.conf.size.h-m-r+this.conf.cells_cont.h,0)+"px";o=null;this._adjustAttached(q);if(n=="expand"&&this.dataType=="editor"&&this.dataObj!=null){this.dataObj._prepareContent(true)}};this._mtbUpdBorder=function(){var l=["menu","toolbar"];for(var n=0;n<l.length;n++){if(this.conf.idx[l[n]]!=null){var o=this.cell.childNodes[this.conf.idx[l[n]]];var m="dhx_cell_"+l[n]+"_no_borders";var h="dhx_cell_"+l[n]+"_def";o.className=o.className.replace(new RegExp(this.conf.borders?m:h),this.conf.borders?h:m);o=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(m){this.views[m]={borders:this.conf.borders,ofs_nodes:{t:{},b:{}},dataType:this.dataType,dataObj:this.dataObj,cellCont:[],dataNodes:{},dataNodesCont:{}};var n=this.cell.childNodes[this.conf.idx.cont];while(n.childNodes.length>0){this.views[m].cellCont.push(n.firstChild);n.removeChild(n.firstChild)}this.dataType=null;this.dataObj=null;for(var l in this.dataNodes){for(var h in this.conf.ofs_nodes){if(typeof(this.conf.ofs_nodes[h][l])!="undefined"){this.views[m].ofs_nodes[h][l]=this.conf.ofs_nodes[h][l];this.conf.ofs_nodes[h][l]=null;delete this.conf.ofs_nodes[h][l]}}this.views[m].dataNodesCont[l]=this.cell.childNodes[this.conf.idx[l]];this.cell.removeChild(this.cell.childNodes[this.conf.idx[l]]);this.views[m].dataNodes[l]=this.dataNodes[l];this.dataNodes[l]=null;delete this.dataNodes[l];this._updateIdx()}this.callEvent("_onViewSave",[m])};this._viewRestore=function(m){if(this.views[m]==null){return}this.dataObj=this.views[m].dataObj;this.dataType=this.views[m].dataType;for(var n=0;n<this.views[m].cellCont.length;n++){this.cell.childNodes[this.conf.idx.cont].appendChild(this.views[m].cellCont[n])}for(var l in this.views[m].dataNodes){this.dataNodes[l]=this.views[m].dataNodes[l];if(l=="menu"){this.cell.insertBefore(this.views[m].dataNodesCont[l],this.cell.childNodes[this.conf.idx.toolbar||this.conf.idx.cont])}if(l=="toolbar"){this.cell.insertBefore(this.views[m].dataNodesCont[l],this.cell.childNodes[this.conf.idx.cont])}if(l=="sb"){this.cell.appendChild(this.views[m].dataNodesCont[l])}this._updateIdx()}for(var l in this.views[m].ofs_nodes){for(var h in this.views[m].ofs_nodes[l]){this.conf.ofs_nodes[l][h]=this.views[m].ofs_nodes[l][h]}}if(this.conf.borders!=this.views[m].borders){this[this.views[m].borders?"_showBorders":"_hideBorders"](true)}this.callEvent("_onViewRestore",[m]);this._viewDelete(m)};this._viewDelete=function(m){if(this.views[m]==null){return}this.views[m].borders=null;for(var l in this.views[m].ofs_nodes){for(var h in this.views[m].ofs_nodes[l]){this.views[m].ofs_nodes[l][h]=null}this.views[m].ofs_nodes[l]=null}this.views[m].dataType=null;this.views[m].dataObj=null;for(var n=0;n<this.views[m].cellCont.length;n++){this.views[m].cellCont[n]=null}this.views[m].cellCont=null;for(var l in this.views[m].dataNodes){this.views[m].dataNodes[l]=null;this.views[m].dataNodesCont[l]=null}this.views[m].dataNodes=this.views[m].dataNodesCont=null;this.views[m]=null;delete this.views[m]};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(h){if(h==this.conf.view){var l=this.conf.unloading;this.conf.unloading=true;this.detachMenu();this.detachToolbar();this.detachStatusBar();this.detachRibbon();this._detachObject(null,true);this.conf.unloading=l;if(!this.conf.unloading){this._adjustCont(this._idd)}return}if(this.views[h]==null){return}var g=this.views[h];for(var c in g.dataNodes){if(typeof(g.dataNodes[c].unload)=="function"){g.dataNodes[c].unload()}g.dataNodes[c]=null;g.dataNodesCont[c]=null}if(g.dataType=="url"){if(g.cellCont!=null&&g.cellCont[0]!="null"){this._detachURLEvents(g.cellCont[0])}}else{if(g.dataObj!=null){if(typeof(g.dataObj.unload)=="function"){g.dataObj.unload()}else{if(typeof(g.dataObj.destructor)=="function"){g.dataObj.destructor()}}g.dataObj=null}}g=null;this._viewDelete(h);if(typeof(this.conf.views_loaded[h])!="undefined"){delete this.conf.views_loaded[h]}};dhtmlXCellObject.prototype.getId=function(){return this._idd};dhtmlXCellObject.prototype.progressOn=function(){if(this.conf.progress){return}this.conf.progress=true;var c=document.createElement("DIV");c.className="dhx_cell_progress_bar";this.cell.appendChild(c);var a=document.createElement("DIV");a.className="dhx_cell_progress_img";this.cell.appendChild(a);c=a=null;this._updateIdx();this._adjustProgress()};dhtmlXCellObject.prototype.progressOff=function(){if(!this.conf.progress){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._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(l,g){if(window.dhx4.s2b(g)&&!(typeof(window.dhtmlXWindowsCell)!="undefined"&&(this instanceof window.dhtmlXWindowsCell))){g=false}if(typeof(l)=="string"){l=document.getElementById(l)}if(l.parentNode==this.cell.childNodes[this.conf.idx.cont]){l=null;return}if(g){l.style.display="";var a=l.offsetWidth;var c=l.offsetHeight}this._attachObject(l);this.dataType="obj";l.style.display="";l=null;if(g){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.getAttachedMenu=function(){return this.dataNodes.menu};dhtmlXCellObject.prototype.getAttachedToolbar=function(){return this.dataNodes.toolbar};dhtmlXCellObject.prototype.getAttachedRibbon=function(){return this.dataNodes.ribbon};dhtmlXCellObject.prototype.getAttachedStatusBar=function(){return this.dataNodes.sb};dhtmlXCellObject.prototype.getAttachedObject=function(){return this.dataObj};dhtmlXCellObject.prototype.attachURL=function(c,r,g){if(g==true){g={}}var h=(typeof(g)!="undefined"&&g!=false&&g!=null);if(!this.conf.url_data){this.conf.url_data={}}this.conf.url_data.url=c;this.conf.url_data.ajax=(r==true);this.conf.url_data.post_data=(g==true?{}:(g||null));if(r==true){var q=this;if(h){var l="";for(var o in g){l+="&"+encodeURIComponent(o)+"="+encodeURIComponent(g[o])}dhx4.ajax.post(c,l,function(a){q.attachHTMLString("<div style='position:relative;width:100%;height:100%;overflow:auto;'>"+a.xmlDoc.responseText+"</div>");if(typeof(q._doOnFrameContentLoaded)=="function"){q._doOnFrameContentLoaded()}q.dataType="url-ajax";q=a=null})}else{dhx4.ajax.get(c,function(a){q.attachHTMLString("<div style='position:relative;width:100%;height:100%;overflow:auto;'>"+a.xmlDoc.responseText+"</div>");if(typeof(q._doOnFrameContentLoaded)=="function"){q._doOnFrameContentLoaded()}q.dataType="url-ajax";q=a=null})}}else{if(this.dataType=="url"){var m=this.getFrame()}else{var m=document.createElement("IFRAME");m.frameBorder=0;m.border=0;m.style.width="100%";m.style.height="100%";m.style.position="relative";this._attachObject(m);this.dataType="url";this._attachURLEvents()}if(h){var n=(typeof(this.conf.url_data.post_ifr)=="undefined");this.conf.url_data.post_ifr=true;if(n){this._attachURLEvents()}m.src="about:blank"}else{m.src=c+(window.dhx4.ajax.cache!=true?(c.indexOf("?")>=0?"&":"?")+"dhxr"+new Date().getTime():"")}m=null}m=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.attachLayout=function(a){if(this.conf.skin=="dhx_skyblue"&&typeof(window.dhtmlXWindowsCell)!="undefined"&&(this instanceof dhtmlXWindowsCell)){}if(this instanceof dhtmlXLayoutCell){this._hideBorders()}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(this instanceof window.dhtmlXLayoutCell){}if(typeof(window.dhtmlXLayoutCell)!="undefined"&&this instanceof dhtmlXLayoutCell){c._isParentCell=true}if(typeof(window.dhtmlXAccordionCell)!="undefined"&&(this instanceof window.dhtmlXAccordionCell)){c._ofs={t:-1}}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 dhtmlXLayoutCell){this.dataObj.parentLayout=this.layout}c._layoutMainInst=null;a.parent=null;c=a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCellObject.prototype.attachTree=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);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};dhtmlXCellObject.prototype.attachGrid=function(){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(this.conf.skin=="dhx_skyblue"&&typeof(window.dhtmlXWindowsCell)!="undefined"&&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};dhtmlXCellObject.prototype.attachTabbar=function(a){if(typeof(window.dhtmlXLayoutCell)!="undefined"&&this instanceof dhtmlXLayoutCell){this._hideBorders()}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)!="undefined"&&(this instanceof window.dhtmlXAccordionCell)){c._ofs={t:-1}}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};dhtmlXCellObject.prototype.attachAccordion=function(a){if(typeof(window.dhtmlXWindowsCell)!="undefined"&&(this instanceof dhtmlXWindowsCell)){}else{if(this._isCell){this._hideBorders()}}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)!="undefined"&&(this instanceof window.dhtmlXAccordionCell)){c._ofs={s:{first:-1},m:{first:4}}}this.dataType="acc";this.dataObj=new dhtmlXAccordion(a);a.obj=null;c=a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCellObject.prototype.attachEditor=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(!(typeof(a)=="object"&&a!=null)){a={}}a.parent=c;this.dataType="editor";this.dataObj=new dhtmlXEditor(a);c=null;a.parent=null;a=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCellObject.prototype.attachDataView=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(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};dhtmlXCellObject.prototype.attachScheduler=function(a,n,c,h){h=h||window.scheduler;var l=false;if(c){var m=document.getElementById(c);if(m){l=true}}if(!l){var g=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 m=document.createElement("DIV");m.id="dhxSchedObj_"+new Date().getTime();m.style.width="100%";m.style.height="100%";m.style.position="relative";m.style.overflow="hidden";m.className="dhx_cal_container";m.innerHTML='<div class="dhx_cal_navline"><div class="dhx_cal_prev_button"> </div><div class="dhx_cal_next_button"> </div><div class="dhx_cal_today_button"></div><div class="dhx_cal_date"></div>'+g+'</div><div class="dhx_cal_header"></div><div class="dhx_cal_data"></div>'}this._attachObject(m);this.dataType="scheduler";this.dataObj=h;this.dataObj.setSizes=function(){this.update_view()};h.init(m.id,a,n);m=null;this.callEvent("_onContentAttach",[]);return this.dataObj};dhtmlXCellObject.prototype.attachForm=function(a){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};dhtmlXCellObject.prototype.attachMap=function(a){var c=document.createElement("DIV");c.id="GMapsObj_"+this._genStr(12);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.attachChart=function(a){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};dhtmlXCellObject.prototype.attachMenu=function(a){if(this.dataNodes.menu){return}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;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.attachToolbar=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}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;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.attachRibbon=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}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;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.attachStatusBar=function(a){if(this.dataNodes.sb){return}if(this.conf.skin=="dhx_skyblue"&&typeof(window.dhtmlXWindowsCell)!="undefined"&&(this instanceof 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)!="undefined"&&(this instanceof 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._genStr=function(){if(!this._genStrId){this._genStrId=new Date().getTime()}return this._genStrId++};dhtmlXCellObject.prototype._attachURLEvents=function(){if(this.dataType!="url"){return}var g=this;var c=this._idd;var a=this.cell.childNodes[this.conf.idx.cont].firstChild;if(typeof(this._doOnFrameMouseDown)!="function"){this._doOnFrameMouseDown=function(h){g.callEvent("_onContentMouseDown",[c,h||event])}}if(typeof(window.addEventListener)=="function"){a.onload=function(){try{if(typeof(g._doOnFrameMouseDown)=="function"){this.contentWindow.document.body.addEventListener("mousedown",g._doOnFrameMouseDown,false)}}catch(h){}try{if(typeof(g._doOnFrameContentLoaded)=="function"){g._doOnFrameContentLoaded()}}catch(h){}}}else{a.onreadystatechange=function(h){if(this.readyState=="complete"){try{if(typeof(g._doOnFrameMouseDown)=="function"){this.contentWindow.document.body.attachEvent("onmousedown",g._doOnFrameMouseDown)}}catch(l){}try{if(typeof(g._doOnFrameContentLoaded)=="function"){g._doOnFrameContentLoaded()}}catch(l){}}}}};dhtmlXCellObject.prototype._doOnFrameContentLoaded=function(){if(this.conf.url_data.post_ifr==true){var m=this.getFrame().contentWindow.document;var l=m.createElement("FORM");l.method="POST";l.action=this.conf.url_data.url;m.body.appendChild(l);var g={};if(window.dhx4.ajax.cache!=true){g["dhxr"+new Date().getTime()]="1"}for(var c in this.conf.url_data.post_data){g[c]=this.conf.url_data.post_data[c]}for(var c in g){var h=m.createElement("INPUT");h.type="hidden";h.name=c;h.value=g[c];l.appendChild(h);h=null}this.conf.url_data.post_ifr=false;l.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(o,l,n,a,m){if(o=="menu"){if(typeof(m)!="undefined"){o=m}else{o=document.createElement("DIV");o.className="dhx_cell_menu_"+(this.conf.borders?"def":"no_borders");o.appendChild(document.createElement("DIV"))}this.cell.insertBefore(o,this.cell.childNodes[this.conf.idx.toolbar||this.conf.idx.cont]);this.conf.ofs_nodes.t.menu=true;this._updateIdx();return o}if(o=="toolbar"){if(typeof(m)!="undefined"){o=m}else{o=document.createElement("DIV");o.className="dhx_cell_toolbar_"+(this.conf.borders?"def":"no_borders");o.appendChild(document.createElement("DIV"));o.firstChild.className="dhx_toolbar_base_18_dhx_skyblue"}this.cell.insertBefore(o,this.cell.childNodes[this.conf.idx.cont]);this.conf.ofs_nodes.t.toolbar=true;this._updateIdx();return o}if(o=="ribbon"){if(typeof(m)!="undefined"){o=m}else{o=document.createElement("DIV");o.className="dhx_cell_ribbon_"+(this.conf.borders?"def":"no_borders");o.appendChild(document.createElement("DIV"))}this.cell.insertBefore(o,this.cell.childNodes[this.conf.idx.cont]);this.conf.ofs_nodes.t.ribbon=true;this._updateIdx();this._adjustCont(this._idd);return o}if(o=="sb"){if(typeof(m)!="undefined"){o=m}else{var c=l||{};var q=(typeof(c.text)=="string"&&c.text.length>0?c.text:" ");var g=(typeof(c.height)=="number"?c.height:false);var o=document.createElement("DIV");o.className="dhx_cell_statusbar_def";o.innerHTML="<div class='dhx_cell_statusbar_text'>"+q+"</div>";if(g!=false){o.firstChild.style.height=o.firstChild.style.lineHeight=g+"px"}}if(this.conf.idx.pr1!=null){this.cell.insertBefore(o,this.cell.childNodes[this.conf.idx.pr1])}else{this.cell.appendChild(o)}this.conf.ofs_nodes.b.sb=true;this._updateIdx();this._adjustCont(this._idd);return o}if(a!=true){this._detachObject(null,true,null)}if(typeof(n)=="string"){this.cell.childNodes[this.conf.idx.cont].innerHTML=n}else{this.cell.childNodes[this.conf.idx.cont].appendChild(o)}o=null};dhtmlXCellObject.prototype._detachObject=function(l,c,a){this.callEvent("_onBeforeContentDetach",[]);if(l=="menu"||l=="toolbar"||l=="ribbon"||l=="sb"){var h=this.cell.childNodes[this.conf.idx[l]];h.parentNode.removeChild(h);h=null;this.conf.ofs_nodes[l=="sb"?"b":"t"][l]=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 h=this.cell.childNodes[this.conf.idx.cont];while(h.childNodes.length>0){if(a===false){h.removeChild(h.lastChild)}else{h.firstChild.style.display="none";a.appendChild(h.firstChild)}}if(this.conf.append_mode){h.style.overflow="";this.conf.append_mode=false}var g=(this.dataType=="tabbar");this.dataObj=null;this.dataType=null;a=h=null;if(this.conf.unloading!=true&&g){this.showHeader(true);this._showBorders()}};dhtmlXCellObject.prototype._attachFromCell=function(c){this.detachObject(true);var h="layout";if(typeof(window.dhtmlXWindowsCell)!="undefined"&&this instanceof window.dhtmlXWindowsCell){h="window"}if(typeof(window.dhtmlXWindowsCell)!="undefined"&&c instanceof window.dhtmlXWindowsCell&&c.wins.w[c._idd].conf.parked){c.wins._winCellSetOpacity(c._idd,"open",false)}if(typeof(window.dhtmlXAccordionCell)!="undefined"&&c instanceof window.dhtmlXAccordionCell&&c.conf.opened==false){c._cellSetOpacity("open",false)}for(var g in c.dataNodes){this._attachObject(g,null,null,null,c.cell.childNodes[c.conf.idx[g]]);this.dataNodes[g]=c.dataNodes[g];c.dataNodes[g]=null;c.conf.ofs_nodes[g=="sb"?"b":"t"][g]=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(h=="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 g in c.views){this.views[g]=c.views[g];c.views[g]=null;delete c.views[g]}c._updateIdx();c._adjustCont();this._updateIdx();this._adjustCont();if(h=="window"&&this.wins.w[this._idd].conf.parked){this.wins._winCellSetOpacity(this._idd,"close",false)}};function dhtmlXCalendarObject(m,u){this.i={};var g=null;if(typeof(m)=="string"){var h=document.getElementById(m)}else{var h=m}if(h&&typeof(h)=="object"&&h.tagName&&String(h.tagName).toLowerCase()!="input"){g=h}h=null;if(typeof(m)!="object"||!m.length){m=[m]}for(var c=0;c<m.length;c++){if(typeof(m[c])=="string"){m[c]=(document.getElementById(m[c])||null)}if(m[c]!=null&&m[c].tagName&&String(m[c].tagName).toLowerCase()=="input"){this.i[window.dhx4.newId()]={input:m[c]}}else{if(!(m[c] instanceof Array)&&m[c] instanceof Object&&(m[c].input!=null||m[c].button!=null)){if(m[c].input!=null&&typeof(m[c].input)=="string"){m[c].input=document.getElementById(m[c].input)}if(m[c].button!=null&&typeof(m[c].button)=="string"){m[c].button=document.getElementById(m[c].button)}this.i[window.dhx4.newId()]=m[c]}}m[c]=null}this.conf={skin:(u||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhtmlxcalendar")||"dhx_skyblue"),zi:window.dhx4.newId(),touch:(typeof(window.ontouchstart)!="undefined")};this.setSkin=function(q,a){if(this.conf.skin==q&&!a){return}this.conf.skin=q;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(g!=null){this._hasParent=true;g.appendChild(this.base);g=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);if(this.conf.touch){this.base.ontouchstart=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}a.cancelBubble=true}}else{this.base.onclick=function(a){a=a||event;a.cancelBubble=true};this.base.onmousedown=function(){return false}}this.loadUserLanguage=function(y){if(!this.langData[y]){return}this.lang=y;this.setWeekStartDay(this.langData[this.lang].weekstart);this.setDateFormat(this.langData[this.lang].dateformat||"%Y-%m-%d");if(this.msCont){var x=0;for(var v=0;v<this.msCont.childNodes.length;v++){for(var a=0;a<this.msCont.childNodes[v].childNodes.length;a++){this.msCont.childNodes[v].childNodes[a].innerHTML=this.langData[this.lang].monthesSNames[x++]}}}};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 n=document.createElement("UL");n.className="dhtmlxcalendar_line";this.contMonth.appendChild(n);var s=document.createElement("LI");s.className="dhtmlxcalendar_cell dhtmlxcalendar_month_hdr";s.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>";n.appendChild(s);var l=this;s[this.conf.touch?"ontouchstart":"onclick"]=function(w){w=w||event;var q=(w.target||w.srcElement);if(q.className&&q.className.indexOf("dhtmlxcalendar_month_arrow")===0){l._hideSelector();var v=(q.parentNode.firstChild==q?-1:1);var a=new Date(l._activeMonth);l._drawMonth(new Date(l._activeMonth.getFullYear(),l._activeMonth.getMonth()+v,1,0,0,0,0));l._evOnArrowClick([a,new Date(l._activeMonth)]);return}if(q.className&&q.className=="dhtmlxcalendar_month_label_month"){w.cancelBubble=true;l._showSelector("month",Math.round(q.offsetLeft+q.offsetWidth/2),q.offsetTop+q.offsetHeight+2,"selector_month",true);return}if(q.className&&q.className=="dhtmlxcalendar_month_label_year"){w.cancelBubble=true;l._showSelector("year",Math.round(q.offsetLeft+q.offsetWidth/2),q.offsetTop+q.offsetHeight+2,"selector_year",true);return}l._hideSelector()};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 y=document.createElement("UL");y.className="dhtmlxcalendar_line";this.contDays.appendChild(y)}else{var y=this.contDays.firstChild}var v=this._wStart;var x=this.langData[this.lang].daysSNames;x.push(String(this.langData[this.lang].daysSNames[0]).valueOf());for(var A=0;A<8;A++){if(y.childNodes[A]==null){var a=document.createElement("LI");y.appendChild(a)}else{var a=y.childNodes[A]}if(A==0){a.className="dhtmlxcalendar_cell_wn";a.innerHTML="<div class='dhtmlxcalendar_label'>"+(this.langData[this.lang].weekname||"w")+"</div>"}else{a.className="dhtmlxcalendar_cell"+(v>=6?" dhtmlxcalendar_day_weekday_cell":"")+(A==1?"_first":"");a.innerHTML=x[v];if(++v>7){v=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[this.conf.touch?"ontouchend":"onclick"]=function(y){y=y||event;var q=(y.target||y.srcElement);if(q.parentNode!=null&&q.parentNode._date!=null){q=q.parentNode}if(q._date!=null&&!q._css_dis){var w=l._activeDate.getHours();var v=l._activeDate.getMinutes();var x=q._date;if(l.checkEvent("onBeforeChange")){if(!l.callEvent("onBeforeChange",[new Date(q._date.getFullYear(),q._date.getMonth(),q._date.getDate(),w,v)])){return}}if(l._activeDateCell!=null){l._activeDateCell._css_date=false;l._updateCellStyle(l._activeDateCell._q,l._activeDateCell._w)}var a=(l._activeDate.getFullYear()+"_"+l._activeDate.getMonth()!=x.getFullYear()+"_"+x.getMonth());l._nullDate=false;l._activeDate=new Date(x.getFullYear(),x.getMonth(),x.getDate(),w,v);l._activeDateCell=q;l._activeDateCell._css_date=true;l._activeDateCell._css_hover=false;l._updateCellStyle(l._activeDateCell._q,l._activeDateCell._w);if(a){l._drawMonth(l._activeDate)}if(l._activeInp&&l.i[l._activeInp]&&l.i[l._activeInp].input!=null){l.i[l._activeInp].input.value=l._dateToStr(new Date(l._activeDate.getTime()))}if(!l._hasParent){l._hide()}l._evOnClick([new Date(l._activeDate.getTime())])}};if(!this.conf.touch){this.contDates.onmouseover=function(q){q=q||event;var a=(q.target||q.srcElement);if(a.parentNode!=null&&a.parentNode._date!=null){a=a.parentNode}if(a._date!=null){if(l._lastHover==a||a._css_hover){return}a._css_hover=true;l._updateCellStyle(a._q,a._w);l._lastHover=a;l._evOnMouseOver([new Date(a._date.getFullYear(),a._date.getMonth(),a._date.getDate(),0,0,0,0),q]);a=null}};this.contDates.onmouseout=function(a){l._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);l._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 n=document.createElement("UL");n.className="dhtmlxcalendar_line";this.contDates.appendChild(n);for(var r=0;r<=7;r++){var s=document.createElement("LI");if(r==0){s.className="dhtmlxcalendar_cell_wn"}else{s.className="dhtmlxcalendar_cell"}n.appendChild(s)}}this.contTime=document.createElement("DIV");this.contTime.className="dhtmlxcalendar_time_cont";this.base.firstChild.appendChild(this.contTime);this.showTime=function(){this.contTime.style.display="";this._ifrSize()};this.hideTime=function(){this.contTime.style.display="none";this._ifrSize()};var n=document.createElement("UL");n.className="dhtmlxcalendar_line";this.contTime.appendChild(n);var s=document.createElement("LI");s.className="dhtmlxcalendar_cell dhtmlxcalendar_time_hdr";s.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>";n.appendChild(s);s[this.conf.touch?"ontouchstart":"onclick"]=function(v){v=v||event;var a=(v.target||v.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"){v.cancelBubble=true;var q=l.contMonth.offsetHeight+l.contDays.offsetHeight+l.contDates.offsetHeight+a.offsetTop;l._showSelector("hours",Math.round(a.offsetLeft+a.offsetWidth/2),q-2,"selector_hours",true);return}if(a.className&&a.className=="dhtmlxcalendar_label_minutes"){v.cancelBubble=true;if(l._minutesInterval==1){var w=l.getFormatedDate("%i");a.innerHTML="<span class='dhtmlxcalendar_selected_date'>"+w.charAt(0)+"</span>"+w.charAt(1);a.firstChild._par=true;l._selectorMode=1}var q=l.contMonth.offsetHeight+l.contDays.offsetHeight+l.contDates.offsetHeight+a.offsetTop;l._showSelector("minutes",Math.round(a.offsetLeft+a.offsetWidth/2),q-2,"selector_minutes",true);return}l._hideSelector()};this._activeMonth=null;this._activeDate=new Date();this._activeDateCell=null;this.setDate=function(q){this._nullDate=(typeof(q)=="undefined"||q===""||!q);if(!(q instanceof Date)){q=this._strToDate(String(q||""));if(q=="Invalid Date"){q=new Date()}}var a=q.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(q){if(this._nullDate){return null}var a=new Date(this._activeDate.getTime());if(q){return this._dateToStr(a)}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 x=C.getDay();var I=x-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 A=0;for(var v=0;v<6;v++){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()+A,0,0,0,0));this.contDates.childNodes[v].childNodes[K].innerHTML="<div class='dhtmlxcalendar_label'>"+J+"</div>"}else{var a=new Date(C.getFullYear(),C.getMonth(),C.getDate()+A,0,0,0,0);var H=a.getDay();var y=a.getTime();var F="dhtmlxcalendar_label";if(this._tipData[y]!=null){if(this._tipData[y].usePopup&&typeof(window.dhtmlXPopup)=="function"){this.contDates.childNodes[v].childNodes[K].removeAttribute("title");this._initTooltipPopup()}else{this.contDates.childNodes[v].childNodes[K].setAttribute("title",this._tipData[y].text)}if(this._tipData[y].showIcon){F+=" dhtmlxcalendar_label_title"}}else{this.contDates.childNodes[v].childNodes[K].removeAttribute("title")}this.contDates.childNodes[v].childNodes[K].innerHTML="<div class='"+F+"'>"+a.getDate()+"</div>";this.contDates.childNodes[v].childNodes[K]._date=new Date(y);this.contDates.childNodes[v].childNodes[K]._q=v;this.contDates.childNodes[v].childNodes[K]._w=K;this.contDates.childNodes[v].childNodes[K]._css_month=(a.getMonth()==L);this.contDates.childNodes[v].childNodes[K]._css_date=(!this._nullDate&&y==M);this.contDates.childNodes[v].childNodes[K]._css_weekend=(D>=6);this.contDates.childNodes[v].childNodes[K]._css_dis=this._isOutOfRange(y);this.contDates.childNodes[v].childNodes[K]._css_holiday=(this._holidays[y]==true);this._updateCellStyle(v,K);if(y==M){this._activeDateCell=this.contDates.childNodes[v].childNodes[K]}if(++D>7){D=1}A++}}}this.contMonth.firstChild.firstChild.childNodes[1].innerHTML=this._buildMonthHdr(E)};this._updateCellStyle=function(y,a){var x=this.contDates.childNodes[y].childNodes[a];var v="dhtmlxcalendar_cell dhtmlxcalendar_cell";v+=(x._css_month?"_month":"");v+=(x._css_date?"_date":"");v+=(x._css_weekend?"_weekend":"");v+=(x._css_holiday?"_holiday":"");v+=(x._css_dis?"_dis":"");v+=(x._css_hover&&!x._css_dis?"_hover":"");x.className=v;x=null};this._minutesInterval=5;this._initSelector=function(E,y){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=" ";this._sel.firstChild.firstChild.firstChild.childNodes[2].innerHTML=" ";if(!this.conf.touch){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(w){w=w||event;var q=(w.target||w.srcElement);if(q._cell===true){if(l._selHover!=q){l._clearSelHover()}if(String(q.className).match(/^\s{0,}dhtmlxcalendar_selector_cell\s{0,}$/gi)!=null){q.className+=" dhtmlxcalendar_selector_cell_hover";l._selHover=q}}};this._sel.onmouseout=function(){l._clearSelHover()}}this._sel.firstChild.firstChild.firstChild.childNodes[0][this.conf.touch?"ontouchstart":"onclick"]=function(q){q=q||event;q.cancelBubble=true;l._scrollYears(-1)};this._sel.firstChild.firstChild.firstChild.childNodes[2][this.conf.touch?"ontouchstart":"onclick"]=function(q){q=q||event;q.cancelBubble=true;l._scrollYears(1)};this._sel._ta={};this._selHover=null;this._sel.appendChild(document.createElement("DIV"));this._sel.lastChild.className="dhtmlxcalendar_selector_obj_arrow"}if(this._sel._ta[E]==true){return}if(E=="month"){this._msCells={};this.msCont=document.createElement("DIV");this.msCont.className="dhtmlxcalendar_area_"+y;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.msCont);var v=0;for(var a=0;a<4;a++){var D=document.createElement("UL");D.className="dhtmlxcalendar_selector_line";this.msCont.appendChild(D);for(var F=0;F<3;F++){var H=document.createElement("LI");H.innerHTML=this.langData[this.lang].monthesSNames[v];H.className="dhtmlxcalendar_selector_cell";D.appendChild(H);H._month=v;H._cell=true;this._msCells[v++]=H}}this.msCont[this.conf.touch?"ontouchstart":"onclick"]=function(w){w=w||event;w.cancelBubble=true;var q=(w.target||w.srcElement);if(q._month!=null){l._hideSelector();l._updateActiveMonth();l._drawMonth(new Date(l._activeMonth.getFullYear(),q._month,1,0,0,0,0));l._doOnSelectorChange()}}}if(E=="year"){this._ysCells={};this.ysCont=document.createElement("DIV");this.ysCont.className="dhtmlxcalendar_area_"+y;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.ysCont);for(var a=0;a<4;a++){var D=document.createElement("UL");D.className="dhtmlxcalendar_selector_line";this.ysCont.appendChild(D);for(var F=0;F<3;F++){var H=document.createElement("LI");H.className="dhtmlxcalendar_selector_cell";H._cell=true;D.appendChild(H)}}this.ysCont[this.conf.touch?"ontouchstart":"onclick"]=function(w){w=w||event;w.cancelBubble=true;var q=(w.target||w.srcElement);if(q._year!=null){l._hideSelector();l._drawMonth(new Date(q._year,l._activeMonth.getMonth(),1,0,0,0,0));l._doOnSelectorChange()}}}if(E=="hours"){this._hsCells={};this.hsCont=document.createElement("DIV");this.hsCont.className="dhtmlxcalendar_area_"+y;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.hsCont);var v=0;for(var a=0;a<4;a++){var D=document.createElement("UL");D.className="dhtmlxcalendar_selector_line";this.hsCont.appendChild(D);for(var F=0;F<6;F++){var H=document.createElement("LI");H.innerHTML=this._fixLength(v,2);H.className="dhtmlxcalendar_selector_cell";D.appendChild(H);H._hours=v;H._cell=true;this._hsCells[v++]=H}}this.hsCont[this.conf.touch?"ontouchstart":"onclick"]=function(w){w=w||event;w.cancelBubble=true;var q=(w.target||w.srcElement);if(q._hours!=null){l._hideSelector();l._activeDate.setHours(q._hours);l._updateActiveHours();l._updateVisibleHours();l._doOnSelectorChange()}}}if(E=="minutes"){var C=4;var x=3;var A=2;if(this._minutesInterval==1){if(this._selectorMode==1){C=2;x=3;A=1}else{C=2;x=5;A=1;y+="5"}}if(this._minutesInterval==10){C=2}if(this._minutesInterval==15){C=1;x=4;y+="4"}this._rsCells={};this.rsCont=document.createElement("DIV");this.rsCont.className="dhtmlxcalendar_area_"+y;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.rsCont);var v=0;for(var a=0;a<C;a++){var D=document.createElement("UL");D.className="dhtmlxcalendar_selector_line";this.rsCont.appendChild(D);for(var F=0;F<x;F++){var H=document.createElement("LI");H.innerHTML=(A>1?this._fixLength(v,A):v);H.className="dhtmlxcalendar_selector_cell";D.appendChild(H);H._minutes=v;H._cell=true;this._rsCells[v]=H;v+=this._minutesInterval}}this.rsCont[this.conf.touch?"ontouchstart":"onclick"]=function(I){I=I||event;I.cancelBubble=true;var w=(I.target||I.srcElement);if(w._minutes!=null){if(l._minutesInterval==1){var q=l.getFormatedDate("%i");if(l._selectorMode==1){q=w._minutes.toString()+q.charAt(1)}else{q=q.charAt(0)+w._minutes.toString()}l._activeDate.setMinutes(Number(q));l._hideSelector();if(l._selectorMode==1){l._updateVisibleMinutes(true);l._selectorMode=2;l._showSelector("minutes",l._sel._x,l._sel._y,"selector_minutes",true);l._updateActiveMinutes();return}else{l._selectorMode=1}}else{l._hideSelector();l._activeDate.setMinutes(w._minutes);l._updateActiveMinutes()}l._updateVisibleMinutes();l._doOnSelectorChange()}}}this._sel._ta[E]=true};this._showSelector=function(A,q,C,w,a){if(a===true&&this._sel!=null&&this._isSelectorVisible()&&A==this._sel._t){this._hideSelector();return}if(this.conf.skin=="dhx_terrace"){q+=12}if(!this._sel||!this._sel._ta[A]){this._initSelector(A,w)}if(A!=this._sel._t&&this._sel._t=="minutes"&&this._minutesInterval==1){this.contTime.firstChild.firstChild.childNodes[3].innerHTML=this.getFormatedDate("%i")}this._sel._x=q;this._sel._y=C;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=A;this._sel.className="dhtmlxcalendar_selector_obj dhtmlxcalendar_"+w;this._sel.childNodes[0].firstChild.firstChild.childNodes[0].style.display=this._sel.childNodes[0].firstChild.firstChild.childNodes[2].style.display=(A=="year"?"":"none");var v=Math.max(0,q-Math.round(this._sel.offsetWidth/2));if(v+this._sel.offsetWidth>this._sel.parentNode.offsetWidth){v=this._sel.parentNode.offsetWidth-this._sel.offsetWidth}this._sel.style.left=v+"px";if(A=="hours"||A=="minutes"){this._sel.style.top=C-this._sel.offsetHeight+"px"}else{this._sel.style.top=C+"px"}this._sel.childNodes[1].style.width=this._sel.childNodes[0].offsetWidth+"px";this._sel.style.visibility="visible";this._doOnSelectorShow(A)};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(v){if(!this._sel){return}if(!this._sel._ta[v]){return}if(v=="month"){this.msCont.onclick=this.msCont.ontouchstart=null;this._msActive=null;for(var q in this._msCells){this._msCells[q]._cell=null;this._msCells[q]._month=null;this._msCells[q].parentNode.removeChild(this._msCells[q]);this._msCells[q]=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(v=="year"){this.ysCont.onclick=this.ysCont.ontouchstart=null;for(var q in this._ysCells){this._ysCells[q]._cell=null;this._ysCells[q]._year=null;this._ysCells[q].parentNode.removeChild(this._ysCells[q]);this._ysCells[q]=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(v=="hours"){this.hsCont.onclick=this.hsCont.ontouchstart=null;this._hsActive=null;for(var q in this._hsCells){this._hsCells[q]._cell=null;this._hsCells[q]._hours=null;this._hsCells[q].parentNode.removeChild(this._hsCells[q]);this._hsCells[q]=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(v=="minutes"){this.rsCont.onclick=this.rsCont.ontouchstart=null;this._rsActive=null;for(var q in this._rsCells){this._rsCells[q]._cell=null;this._rsCells[q]._minutes=null;this._rsCells[q].parentNode.removeChild(this._rsCells[q]);this._rsCells[q]=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[v]=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(C){for(var x in this._ysCells){this._ysCells[x]=null;delete this._ysCells[x]}var y=12*Math.floor(C.getFullYear()/12);for(var A=0;A<4;A++){for(var v=0;v<3;v++){this.ysCont.childNodes[A].childNodes[v].innerHTML=y;this.ysCont.childNodes[A].childNodes[v]._year=y;this.ysCont.childNodes[A].childNodes[v].className="dhtmlxcalendar_selector_cell";this._ysCells[y++]=this.ysCont.childNodes[A].childNodes[v]}}this._updateActiveYear()};this._scrollYears=function(a){var v=(a<0?this.ysCont.firstChild.firstChild._year:this.ysCont.lastChild.lastChild._year)+a;var q=new Date(v,this._activeMonth.getMonth(),1,0,0,0,0);this._updateYearsList(q)};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(q){var a=this._fixLength(this._activeDate.getMinutes(),2).toString();if(q==true){a=a.charAt(0)+"<span class='dhtmlxcalendar_selected_date'>"+a.charAt(1)+"</span>"}this.contTime.firstChild.firstChild.childNodes[3].innerHTML=a;if(q==true){this.contTime.firstChild.firstChild.childNodes[3].lastChild._par=true}};this._fixLength=function(a,q){while(String(a).length<q){a="0"+String(a)}return a};this._dateFormat="";this._dateFormatRE=null;this.setDateFormat=function(x){var w={};if(this._strToDate!=null){for(var q in this.i){if(this.i[q].input!=null&&this.i[q].input.value.length>0){var y=this._strToDate(this.i[q].input.value,this._dateFormat||this.langData[this.lang].dateformat||"%Y-%m-%d");if(y instanceof Date){w[q]=y}}}}this._dateFormat=x;var v=String(this._dateFormat).replace(/%[a-zA-Z]+/g,function(a){var A=a.replace(/%/,"");switch(A){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"("+l.langData[l.lang].monthesSNames.join("|").toLowerCase()+"){1,}";case"F":return"("+l.langData[l.lang].monthesFNames.join("|").toLowerCase()+"){1,}";case"D":return"[a-z]{2}";case"a":case"A":return"AM|PM"}return a});this._dateFormatRE=new RegExp(v,"i");for(var q in w){this.i[q].input.value=this._dateToStr(w[q])}w=null};this.setDateFormat(this.langData[this.lang].dateformat||"%Y-%m-%d");this._getInd=function(w,a){for(var v=0;v<a.length;v++){if(a[v].toLowerCase()==w){return v}}return -1};this._updateDateStr=function(q){if(!this._dateFormatRE||!q.match(this._dateFormatRE)){return}if(q==this.getFormatedDate()){return}var a=this._strToDate(q);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(x,y,q,w){var v=this._strToDate(y,x);if(w){return v}this.setDate(v)};this.getFormatedDate=function(q,a){if(!(a&&a instanceof Date)){if(this._nullDate){return""}a=new Date(this._activeDate)}return this._dateToStr(a,q)};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 E=this._wStart;var w=E+7;var D=4;var q=new Date(x.getFullYear(),0,1,0,0,0,0);var v=q.getDay();if(v==0){v=7}if(D<E){D+=7;v+=7}var A=0;if(v>=E&&v<=D){}else{A=1}var y=v-E;var C=new Date(x.getFullYear(),0,1-y+A*7,0,0,0,0);var H=604800000;var a=new Date(x.getFullYear(),x.getMonth(),x.getDate()+1,0,0,0,0);var F=Math.ceil((a.getTime()-C.getTime())/H);return F};this.showWeekNumbers=function(){this.base.firstChild.className="dhtmlxcalendar_wn"};this.hideWeekNumbers=function(){this.base.firstChild.className=""};this.show=function(v){if(!v&&this._hasParent){this._show();return}if(typeof(v)=="object"&&typeof(v._dhtmlxcalendar_uid)!="undefined"&&this.i[v._dhtmlxcalendar_uid]==v){this._show(v._dhtmlxcalendar_uid);return}if(typeof(v)=="undefined"){for(var q in this.i){if(!v){v=q}}}if(!v){return}this._show(v)};this.hide=function(){if(this._isVisible()){this._hide()}};this.isVisible=function(){return this._isVisible()};this._activeInp=null;this.pos="bottom";this.setPosition=function(a,q){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(q)!="undefined"&&!isNaN(q)){this.base.style.top=q+"px";this._py=q}this._ifrSize()}};this._show=function(A,a){if(a===true&&this._activeInp==A&&this._isVisible()){this._hide();return}this.base.style.visibility="hidden";this.base.style.display="";if(!A){if(this._px&&this._py){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 w=(this.i[A].input||this.i[A].button);var q=(navigator.appVersion.indexOf("MSIE")!=-1);var x=Math.max((q?document.documentElement:document.getElementsByTagName("html")[0]).scrollTop,document.body.scrollTop);var v=x+(q?Math.max(document.documentElement.clientHeight||0,document.documentElement.offsetHeight||0,document.body.clientHeight||0):window.innerHeight);if(this.pos=="right"){this.base.style.left=this._getLeft(w)+w.offsetWidth+"px";this.base.style.top=Math.min(this._getTop(w),v-this.base.offsetHeight)+"px"}else{if(this.pos=="bottom"){var y=this._getTop(w)+w.offsetHeight+1;if(y+this.base.offsetHeight>v){y=this._getTop(w)-this.base.offsetHeight}this.base.style.left=this._getLeft(w)+"px";this.base.style.top=y+"px"}else{this.base.style.left=(this._px||0)+"px";this.base.style.top=(this._py||0)+"px"}}this._activeInp=A;w=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(){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._getLeft=function(a){return this._posGetOffset(a).left};this._getTop=function(a){return this._posGetOffset(a).top};this._posGetOffsetSum=function(a){var v=0,q=0;while(a){v=v+parseInt(a.offsetTop);q=q+parseInt(a.offsetLeft);a=a.offsetParent}return{top:v,left:q}};this._posGetOffsetRect=function(w){var A=w.getBoundingClientRect();var C=document.body;var q=document.documentElement;var a=window.pageYOffset||q.scrollTop||C.scrollTop;var x=window.pageXOffset||q.scrollLeft||C.scrollLeft;var y=q.clientTop||C.clientTop||0;var D=q.clientLeft||C.clientLeft||0;var E=A.top+a-y;var v=A.left+x-D;return{top:Math.round(E),left:Math.round(v)}};this._posGetOffset=function(a){return this[a.getBoundingClientRect?"_posGetOffsetRect":"_posGetOffsetSum"](a)};this._rangeActive=false;this._rangeFrom=null;this._rangeTo=null;this._rangeSet={};this.setInsensitiveDays=function(w){var a=this._extractDates(w);for(var v=0;v<a.length;v++){this._rangeSet[new Date(a[v].getFullYear(),a[v].getMonth(),a[v].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(v){if(v==null){this._clearHolidays()}else{if(v!=null){var a=this._extractDates(v);for(var w=0;w<a.length;w++){this._holidays[new Date(a[w].getFullYear(),a[w].getMonth(),a[w].getDate(),0,0,0,0).getTime()]=true}}}this._drawMonth(this._activeMonth)};this._extractDates=function(x){if(typeof(x)=="string"||x instanceof Date){x=[x]}var v=[];for(var y=0;y<x.length;y++){if(typeof(x[y])=="string"){var A=x[y].split(",");for(var a=0;a<A.length;a++){v.push(this._strToDate(A[a]))}}else{if(x[y] instanceof Date){v.push(x[y])}}}return v};this._clearRange=function(){this._rangeActive=false;this._rangeType=null;this._rangeFrom=null;this._rangeTo=null};this._clearRangeSet=function(){for(var q in this._rangeSet){this._rangeSet[q]=null;delete this._rangeSet[q]}};this._clearHolidays=function(){for(var q in this._holidays){this._holidays[q]=null;delete this._holidays[q]}};this._isOutOfRange=function(q){if(this._rangeSet[q]==true){return true}if(this._rangeActive){if(this._rangeType=="in"&&(q<this._rangeFrom||q>this._rangeTo)){return true}if(this._rangeType=="out"&&(q>=this._rangeFrom&&q<=this._rangeTo)){return true}if(this._rangeType=="from"&&q<this._rangeFrom){return true}if(this._rangeType=="to"&&q>this._rangeTo){return true}}var a=new Date(q);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(w,v,a){var q=false;if(w!=null&&v!=null){if(!(w instanceof Date)){w=this._strToDate(w)}if(!(v instanceof Date)){v=this._strToDate(v)}if(w.getTime()>v.getTime()){return}this._rangeFrom=new Date(w.getFullYear(),w.getMonth(),w.getDate(),0,0,0,0).getTime();this._rangeTo=new Date(v.getFullYear(),v.getMonth(),v.getDate(),0,0,0,0).getTime();this._rangeActive=true;this._rangeType="in";q=true}if(!q&&w!=null&&v==null){if(!(w instanceof Date)){w=this._strToDate(w)}this._rangeFrom=new Date(w.getFullYear(),w.getMonth(),w.getDate(),0,0,0,0).getTime();this._rangeTo=null;if(a===true){this._rangeFrom++}this._rangeActive=true;this._rangeType="from";q=true}if(!q&&w==null&&v!=null){if(!(v instanceof Date)){v=this._strToDate(v)}this._rangeFrom=null;this._rangeTo=new Date(v.getFullYear(),v.getMonth(),v.getDate(),0,0,0,0).getTime();if(a===true){this._rangeTo--}this._rangeActive=true;this._rangeType="to";q=true}if(q){this._drawMonth(this._activeMonth)}};this.setInsensitiveRange=function(q,a){if(q!=null&&a!=null){if(!(q instanceof Date)){q=this._strToDate(q)}if(!(a instanceof Date)){a=this._strToDate(a)}if(q.getTime()>a.getTime()){return}this._rangeFrom=new Date(q.getFullYear(),q.getMonth(),q.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(q!=null&&a==null){this.setSensitiveRange(null,q,true);return}if(q==null&&a!=null){this.setSensitiveRange(a,null,true);return}};this.disableDays=function(A,y){if(A=="week"){if(typeof(y)!="object"&&typeof(y.length)=="undefined"){y=[y]}if(!this._rangeWeekData){this._rangeWeekData={}}for(var v in this._rangeWeekData){this._rangeWeekData[v]=false;delete this._rangeWeekData[v]}for(var x=0;x<y.length;x++){this._rangeWeekData[y[x]]=true;if(y[x]==7){this._rangeWeekData[0]=true}}this._rangeWeek=true}if(A=="month"){if(typeof(y)!="object"&&typeof(y.length)=="undefined"){y=[y]}if(!this._rangeMonthData){this._rangeMonthData={}}for(var v in this._rangeMonthData){this._rangeMonthData[v]=false;delete this._rangeMonthData[v]}for(var x=0;x<y.length;x++){this._rangeMonthData[y[x]]=true}this._rangeMonth=true}if(A=="year"){var w=this._extractDates(y);if(!this._rangeYearData){this._rangeYearData={}}for(var v in this._rangeYearData){this._rangeYearData[v]=false;delete this._rangeYearData[v]}for(var x=0;x<w.length;x++){this._rangeYearData[w[x].getMonth()+"_"+w[x].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(w,A,C,a){var x=this._extractDates(w);for(var y=0;y<x.length;y++){var v=new Date(x[y].getFullYear(),x[y].getMonth(),x[y].getDate(),0,0,0,0).getTime();this._tipData[v]={text:A,showIcon:C,usePopup:a}}this._drawMonth(this._activeMonth)};this.clearTooltip=function(v){var w=this._extractDates(v);for(var x=0;x<w.length;x++){var a=new Date(w[x].getFullYear(),w[x].getMonth(),w[x].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(q){var a=new Date(q.getFullYear(),q.getMonth(),q.getDate(),0,0,0,0).getTime();if(this._tipData[a]!=null){if(this._tipTM){window.clearTimeout(this._tipTM)}this._tipCellDate=q;this._tipCellDim=this.getCellDimension(q);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(A,a,C,q,v){if(!l._tipPopup){l._tipPopup=new dhtmlXPopup({mode:"top"})}l._tipPopup.attachHTML(l._tipText);l._tipPopup.show(l._tipCellDim.x,l._tipCellDim.y,l._tipCellDim.w,l._tipCellDim.h);l.callEvent("onPopupShow",[l._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(x){if(typeof(x)=="string"){x=this._strToDate(x)}if(!(x instanceof Date)){return null}var y=new Date(x.getFullYear(),x.getMonth(),x.getDate(),0,0,0,0).getTime();var v=null;for(var A=0;A<this.contDates.childNodes.length;A++){for(var a=0;a<this.contDates.childNodes[A].childNodes.length;a++){var C=this.contDates.childNodes[A].childNodes[a];if(C._date!=null&&C._date.getTime()==y){v={x:this._getLeft(C),y:this._getTop(C),w:C.offsetWidth,h:C.offsetHeight}}C=null}}return v};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(q){q=q||event;var a=(q.target||q.srcElement);if(a._dhtmlxcalendar_uid&&a._dhtmlxcalendar_uid!=l._activeInp&&l._isVisible()&&l._activeInp){l._hide();return}if(!a._dhtmlxcalendar_uid||!l.i[a._dhtmlxcalendar_uid]){if(l._isSelectorVisible()){l._hideSelector()}else{if(!l._hasParent&&l._isVisible()){l._hide()}}}};this._doOnKeyDown=function(a){a=a||event;if(a.keyCode==27||a.keyCode==13){if(l._isSelectorVisible()){l._hideSelector()}else{if(l._isVisible()&&!l._hasParent){l._hide()}}}};this._doOnInpClick=function(q){q=q||event;var a=(q.target||q.srcElement);if(!a._dhtmlxcalendar_uid){return}if(!l._listenerEnabled){l._updateFromInput(a)}l._show(a._dhtmlxcalendar_uid,true)};this._doOnInpKeyUp=function(q){q=q||event;var a=(q.target||q.srcElement);if(q.keyCode==13||!a._dhtmlxcalendar_uid){return}if(!l._listenerEnabled){l._updateFromInput(a)}};this._doOnBtnClick=function(q){q=q||event;var a=(q.target||q.srcElement);if(!a._dhtmlxcalendar_uid){return}if(l.i[a._dhtmlxcalendar_uid].input!=null){l._updateFromInput(l.i[a._dhtmlxcalendar_uid].input)}l._show(a._dhtmlxcalendar_uid,true)};this._doOnUnload=function(){if(l&&l.unload){l.unload()}};if(typeof(window.addEventListener)=="function"){document.body.addEventListener((this.conf.touch?"touchstart":"click"),l._doOnClick,false);window.addEventListener("keydown",l._doOnKeyDown,false);window.addEventListener("unload",l._doOnUnload,false)}else{document.body.attachEvent("onclick",l._doOnClick);document.body.attachEvent("onkeydown",l._doOnKeyDown);window.attachEvent("onunload",l._doOnUnload)}this.attachObj=function(v){var q=window.dhx4.newId();if(typeof(v)=="string"){this.i[q]={input:document.getElementById(v)}}else{if(typeof(v.tagName)!="undefined"){this.i[q]={input:v}}else{if(typeof(v)=="object"&&(v.input!=null||v.button!=null)){this.i[q]={};if(v.input!=null){this.i[q].input=(typeof(v.input)=="string"?document.getElementById(v.input):v.input)}if(v.button!=null){this.i[q].button=(typeof(v.button)=="string"?document.getElementById(v.button):v.button)}}}}this._attachEventsToObject(q);return q};this.detachObj=function(w){var v=null;if(this.i[w]!=null){v=w}else{if(typeof(w)=="string"){w=document.getElementById(w);v=w._dhtmlxcalendar_uid}else{if(typeof(w.tagName)!="undefined"){v=w._dhtmlxcalendar_uid}else{if(typeof(w)=="object"&&(w.input!=null||w.button!=null)){if(v==null&&w.input!=null){v=(typeof(w.input)=="string"?document.getElementById(w.input):w.input)._dhtmlxcalendar_uid}if(v==null&&w.button!=null){v=(typeof(w.button)=="string"?document.getElementById(w.button):w.button)._dhtmlxcalendar_uid}}}}}if(v!=null&&this.i[v]!=null){this._detachEventsFromObject(v);for(var q in this.i[q]){this.i[v][q]._dhtmlxcalendar_uid=null;this.i[v][q]=null;delete this.i[v][q]}this.i[v]=null;delete this.i[v];return true}return false};this._attachEventsToObject=function(q){if(this.i[q].button!=null){this.i[q].button._dhtmlxcalendar_uid=q;if(typeof(window.addEventListener)=="function"){this.i[q].button.addEventListener((this.conf.touch?"touchstart":"click"),l._doOnBtnClick,false)}else{this.i[q].button.attachEvent("onclick",l._doOnBtnClick)}}else{if(this.i[q].input!=null){this.i[q].input._dhtmlxcalendar_uid=q;if(typeof(window.addEventListener)=="function"){this.i[q].input.addEventListener((this.conf.touch?"touchstart":"click"),l._doOnInpClick,false);this.i[q].input.addEventListener("keyup",l._doOnInpKeyUp,false)}else{this.i[q].input.attachEvent("onclick",l._doOnInpClick);this.i[q].input.attachEvent("onkeyup",l._doOnInpKeyUp)}}}};this._detachEventsFromObject=function(q){if(this.i[q].button!=null){if(typeof(window.addEventListener)=="function"){this.i[q].button.removeEventListener((this.conf.touch?"touchstart":"click"),l._doOnBtnClick,false)}else{this.i[q].button.detachEvent("onclick",l._doOnBtnClick)}}else{if(this.i[q].input!=null){if(typeof(window.addEventListener)=="function"){this.i[q].input.removeEventListener((this.conf.touch?"touchstart":"click"),l._doOnInpClick,false);this.i[q].input.removeEventListener("keyup",l._doOnInpKeyUp,false)}else{this.i[q].input.detachEvent("onclick",l._doOnInpClick);this.i[q].input.detachEvent("onkeyup",l._doOnInpKeyUp)}}}};this.enableListener=function(a){if(!a){return}if(typeof(window.addEventListener)=="function"){a.addEventListener("focus",l._listenerEvFocus,false);a.addEventListener("blur",l._listenerEvBlur,false)}else{a.attachEvent("onfocus",l._listenerEvFocus);a.attachEvent("onblur",l._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",l._listenerEvFocus,false);a.removeEventListener("blur",l._listenerEvBlur,false)}else{a.detachEvent("onfocus",l._listenerEvFocus);a.detachEvent("onblur",l._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(){l._startListener(a)},100)}};this._listenerEvFocus=function(q){q=q||event;var a=q.target||q.srcElement;a._f0=true;l._startListener(a);a=null};this._listenerEvBlur=function(q){q=q||event;var a=q.target||q.srcElement;a._f0=false;a=null};for(var o in this.i){this._attachEventsToObject(o)}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((this.conf.touch?"touchstart":"click"),l._doOnClick,false);window.removeEventListener("keydown",l._doOnKeyDown,false);window.removeEventListener("unload",l._doOnUnload,false)}else{document.body.detachEvent("onclick",l._doOnClick);document.body.detachEvent("onkeydown",l._doOnKeyDown);window.detachEvent("onunload",l._doOnKeyDown)}this._doOnClick=null;this._doOnKeyDown=null;this._doOnUnload=null;for(var q in this.i){this.i[q]._dhtmlxcalendar_uid=null;this._detachEventsFromObject(q);this.disableListener(this.i[q].input);this.i[q]=null;delete this.i[q]}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 q in this._sel._ta){this._sel._ta[q]=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._getLeft=null;this._getTop=null;this._ifrSize=null;this._hide=null;this._hideSelector=null;this._initSelector=null;this._isSelectorVisible=null;this._isVisible=null;this._posGetOffset=null;this._posGetOffsetRect=null;this._posGetOffsetSum=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 q in this){delete this[q]}q=l=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(l){var c=this;var h=function(m){return(String(m).length==1?"0"+String(m):m)};var a=function(m,n){return"<span class='dhtmlxcalendar_month_label_"+m+"'>"+n+"</span>"};var g=String(this.langData[this.lang].hdrformat||("%F %Y")).replace(/%[a-z]/gi,function(m){switch(m){case"%m":return a("month",h(l.getMonth()+1));case"%n":return a("month",l.getMonth()+1);case"%M":return a("month",c.langData[c.lang].monthesSNames[l.getMonth()]);case"%F":return a("month",c.langData[c.lang].monthesFNames[l.getMonth()]);case"%y":return a("year",h(l.getYear()%100));case"%Y":return a("year",l.getFullYear());case"%%":return"%";default:return m}});c=h=a=null;return g};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._strToDate=function(l,A){A=(A||this._dateFormat);A=A.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\\:|]/g,"\\$&");var D=[];var s=[];A=A.replace(/%[a-z]/gi,function(q){switch(q){case"%d":case"%m":case"%y":case"%h":case"%H":case"%i":case"%s":s.push(q);return"(\\d{2})";case"%D":case"%l":case"%M":case"%F":s.push(q);return"([a-zéûä\u0430-\u044F\u0451]{1,})";case"%j":case"%n":case"%g":case"%G":s.push(q);return"(\\d{1,2})";case"%Y":s.push(q);return"(\\d{4})";case"%a":s.push(q);return"([am|pm])";case"%A":s.push(q);return"([AM|PM])"}return q});var E=new RegExp(A,"i");var u=l.match(E);if(u==null||u.length-1!=s.length){return"Invalid Date"}for(var c=1;c<u.length;c++){D.push(u[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};var x={};var n={};for(var c=0;c<s.length;c++){if(typeof(g[s[c]])!="undefined"){var h=g[s[c]];if(!x[h]){x[h]=[];n[h]=[]}x[h].push(D[c]);n[h].push(s[c])}}D=[];s=[];for(var c=1;c<=7;c++){if(x[c]!=null){for(var y=0;y<x[c].length;y++){D.push(x[c][y]);s.push(n[c][y])}}}var o=this;var a=new Date();a.setDate(1);a.setMinutes(0);a.setSeconds(0);for(var c=0;c<D.length;c++){switch(s[c]){case"%d":case"%j":case"%n":case"%m":case"%Y":case"%H":case"%G":case"%i":case"%s":if(!isNaN(D[c])){a[{"%d":"setDate","%j":"setDate","%n":"setMonth","%m":"setMonth","%Y":"setFullYear","%H":"setHours","%G":"setHours","%i":"setMinutes","%s":"setSeconds"}[s[c]]](Number(D[c])+(s[c]=="%m"||s[c]=="%n"?-1:0))}break;case"%M":case"%F":var m=this._getInd(D[c].toLowerCase(),o.langData[o.lang][{"%M":"monthesSNames","%F":"monthesFNames"}[s[c]]]);if(m>=0){a.setMonth(m)}break;case"%y":if(!isNaN(D[c])){var C=Number(D[c]);a.setFullYear(C+(C>50?1900:2000))}break;case"%g":case"%h":if(!isNaN(D[c])){var C=Number(D[c]);if(C<=12&&C>=0){a.setHours(C+(this._getInd("pm",D)>=0?(C==12?0:12):(C==12?-12:0)))}}break}}o=null;return a};dhtmlXCalendarObject.prototype._dateToStr=function(m,h){var g=this;if(m instanceof Date){var l=function(n){return(String(n).length==1?"0"+String(n):n)};var a=function(n){switch(n){case"%d":return l(m.getDate());case"%j":return m.getDate();case"%D":return g.langData[g.lang].daysSNames[m.getDay()];case"%l":return g.langData[g.lang].daysFNames[m.getDay()];case"%m":return l(m.getMonth()+1);case"%n":return m.getMonth()+1;case"%M":return g.langData[g.lang].monthesSNames[m.getMonth()];case"%F":return g.langData[g.lang].monthesFNames[m.getMonth()];case"%y":return l(m.getYear()%100);case"%Y":return m.getFullYear();case"%g":return(m.getHours()+11)%12+1;case"%h":return l((m.getHours()+11)%12+1);case"%G":return m.getHours();case"%H":return l(m.getHours());case"%i":return l(m.getMinutes());case"%s":return l(m.getSeconds());case"%a":return(m.getHours()>11?"pm":"am");case"%A":return(m.getHours()>11?"PM":"AM");case"%%":"%";default:return n}};var c=String(h||this._dateFormat).replace(/%[a-zA-Z]/g,a)}g=null;return(c||String(m))};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(g){a._updateRange("rightCalendar",g,null);a._evOnClick(["left",g])});this.rightCalendar.attachEvent("onClick",function(g){a._updateRange("leftCalendar",null,g);a._evOnClick(["right",g])});this.leftCalendar.attachEvent("onBeforeChange",function(g){return a._evOnBeforeChange(["left",g])});this.rightCalendar.attachEvent("onBeforeChange",function(g){return a._evOnBeforeChange(["right",g])});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(g){this.leftCalendar.setDateFormat(g);this.rightCalendar.setDateFormat(g)};this.setDates=function(h,g){if(h!=null){this.leftCalendar.setDate(h)}if(g!=null){this.rightCalendar.setDate(g)}this._updateRange()};this._updateRange=function(g,l,h){if(arguments.length==3){(g=="leftCalendar"?this.leftCalendar:this.rightCalendar).setSensitiveRange(l,h)}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(g){return this.callEvent("onClick",g)};this._evOnBeforeChange=function(g){return this.callEvent("onBeforeChange",g)};window.dhx4._eventable(this);return this};function dhtmlXCombo(m,s,g,o,l){var n=this;var h=null;var u=null;if(typeof(m)=="object"&&!m.tagName){h=m;m=h.parent;g=h.width;s=h.name;o=h.mode;u=h.skin}this.cont=(typeof(m)=="string"?document.getElementById(m):m);this.conf={skin:null,form_name:s||"dhxcombo",combo_width:(parseInt(g)||this.cont.offsetWidth||120)-(dhx4.isFF||dhx4.isIE?2:0),combo_image:false,combo_focus:false,opts_type:(typeof(o)=="string"&&typeof(this.modes[o])!="undefined"?o:"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,enabled:true,img_path:"",img_def:"",img_def_dis:true,template:{input:"#text#",option:"#text#"},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:"",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},dhx_web:{list_ofs:0},dhx_terrace:{list_ofs:1}}};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.style.display="none";document.body.insertBefore(this.list,document.body.firstChild);this.setSkin(u||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(D){if(this.conf.f_server_tm){window.clearTimeout(this.conf.f_server_tm)}var w=String(this.base.firstChild.value).replace(new RegExp(this.conf.f_ac_text+"$","i"),"");if(this.conf.f_server_last==w.toLowerCase()){this._checkForMatch();return}if(this.conf.f_url!=null&&this.checkEvent("onDynXLS")){this.conf.f_server_last=w.toLowerCase();this.callEvent("onDynXLS",[w]);return}if(this.conf.f_url!=null){if(w.length==0){this.conf.f_server_last=w.toLowerCase();this.clearAll();return}if(this.conf.f_cache==true&&this.conf.f_cache_data[w]!=null){this.clearAll();this.conf.f_server_last=w.toLowerCase();for(var y=0;y<this.conf.f_cache_data[w].data.length;y++){this.load(this.conf.f_cache_data[w].data[y])}if(this.conf.f_dyn){this.conf.f_dyn_end=this.conf.f_cache_data[w].dyn_end;this.conf.f_mask=this.conf.f_cache_data[w].mask}if(D!==true){this._showList(true);this._checkForMatch()}}else{this.conf.f_server_tm=window.setTimeout(function(){n.conf.f_server_last=w.toLowerCase();n.conf.f_mask=w;var q="mask="+encodeURIComponent(w);if(n.conf.f_dyn){q+="&pos=0";n.conf.f_dyn_end=false}var a=function(F){if(n.conf.f_cache){if(!n.conf.f_cache_data[w]){n.conf.f_cache_data[w]={data:[],dyn_end:false,mask:w}}n.conf.f_cache_data[w].data.push(F.xmlDoc.responseXML)}n.clearAll();n.load(F.xmlDoc.responseXML);if(n.conf.f_ac&&n.conf.f_mode=="start"&&n.conf.clear_bsp==false&&n.list.firstChild!=null){var E=n.list.firstChild._optId;var H=String(n.t[E].obj.getText(n.list.firstChild,true));if(String(H).toLowerCase().indexOf(String(w).toLowerCase())===0){n.base.firstChild.value=H;n._selectRange(w.length,H.length)}}if(D!==true){n._showList(true);n._checkForMatch()}a=null};if(window.dhx4.ajax.method=="post"){window.dhx4.ajax.post(n.conf.f_url,q,a)}else{if(window.dhx4.ajax.method=="get"){window.dhx4.ajax.get(n.conf.f_url+(String(n.conf.f_url).indexOf("?")>=0?"&":"?")+q,a)}}},200)}}else{this.conf.f_server_last=w.toLowerCase();var x=(w.length==0?true:new RegExp((this.conf.f_mode=="start"?"^":"")+w,"i"));var C=null;for(var v in this.t){var A=this.t[v].obj.getText(this.t[v].item,true);if(x===true||x.test(A)==true){this.t[v].item.style.display="";if(C==null&&w.length>0){C=String(this.t[v].obj.getText(this.t[v].item,true))}}else{this.t[v].item.style.display="none"}}if(this.conf.f_ac&&this.conf.f_mode=="start"&&this.conf.clear_bsp==false&&C!=null){this.conf.f_ac_text=C.replace(new RegExp("^"+w,"i"),"");this.base.firstChild.value=C;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(D!==true){this._showList(true);this._checkForMatch()}}};this._initObj=function(a){if(typeof(a.template)!="undefined"){this.setTemplate(a.template)}this.addOption(a.options)};this._xmlToObj=function(F,I,D){var M={options:[]};var J=(I==true?F:F.getElementsByTagName("complete"));if(J.length>0){var x=J[0].childNodes;for(var v=0;v<x.length;v++){if(typeof(x[v].tagName)!="undefined"){if(String(x[v].tagName).toLowerCase()=="template"){for(var L=0;L<x[v].childNodes.length;L++){if(x[v].childNodes[L].tagName!=null){var E=x[v].childNodes[L].tagName;if(typeof(this.conf.template[E])!="undefined"){this.conf.template[E]=(x[v].childNodes[L].firstChild!=null?x[v].childNodes[L].firstChild.nodeValue:"")}}}}if(String(x[v].tagName).toLowerCase()=="option"){var C=false;if(I==true){C=(M.options.length==D)}else{C=window.dhx4.s2b(x[v].getAttribute("selected"))}var y={value:x[v].getAttribute("value"),text:(x[v].firstChild!=null?x[v].firstChild.nodeValue:""),selected:C,checked:window.dhx4.s2b(x[v].getAttribute("checked"))};for(var K in {img:1,img_dis:1,img_src:1,img_src_dis:1,css:1}){if(x[v].getAttribute(K)!=null){y[K]=x[v].getAttribute(K)}}for(var L=0;L<x[v].childNodes.length;L++){if(x[v].childNodes[L].tagName!=null&&String(x[v].childNodes[L].tagName).toLowerCase()=="text"){y.text={};var A=x[v].childNodes[L];for(var H=0;H<A.childNodes.length;H++){if(A.childNodes[H].tagName!=null){y.text[A.childNodes[H].tagName]=(A.childNodes[H].firstChild!=null?A.childNodes[H].firstChild.nodeValue:"")}}}}M.options.push(y)}}}J=x=null}return M};window.dhx4._enableDataLoading(this,"_initObj","_xmlToObj","complete",{data:true});window.dhx4._eventable(this);this._getNearItem=function(v,q){var a=null;while(v!=null){v=v[q<0?"previousSibling":"nextSibling"];if(a==null&&v!=null&&v.style.display==""&&v._optId!=null){a=v;v=null}}return a};this.setName(this.conf.form_name);this._doOnListMouseMove=function(q){q=q||event;var a=q.target||q.srcElement;while(a!=null&&a!=this){if(typeof(a._optId)!="undefined"){if(n.conf.tm_hover){window.clearTimeout(n.conf.tm_hover)}n._setSelected(a._optId)}a=a.parentNode}a=null};this._doOnListMouseDown=function(a){a=a||event;a.cancelBubble=true;n.conf.clear_click=true;window.setTimeout(function(){n.base.firstChild.focus()},1)};this._doOnListMouseUp=function(v){v=v||event;var a=v.target||v.srcElement;while(a!=null&&a!=this){if(typeof(a._optId)!="undefined"){var q=true;if(typeof(n.t[a._optId].obj.optionClick)=="function"&&n.t[a._optId].obj.optionClick(a,v,n)!==true){q=false}if(q){n._setSelected(a._optId,null,true);n._confirmSelect("click")}}a=a.parentNode}a=null};this._doOnListMouseOut=function(a){if(n.conf.tm_hover){window.clearTimeout(n.conf.tm_hover)}n.conf.tm_hover=window.setTimeout(function(){var q=n.conf.last_match||n.conf.last_selected;if(n.conf.last_match==null&&n.t[q]!=null){if(n.base.firstChild.value!=n.t[q].obj.getText(n.t[q].item,true)){q=null}}n._setSelected(q,null,true)},1)};this._doOnBaseMouseDown=function(x){if(!n.conf.enabled){return}n.conf.clear_click=true;x=x||event;var q=x.target||x.srcElement;if(q!=this.firstChild){window.setTimeout(function(){n.base.firstChild.focus()},1);var w=q;while(w!=this&&w!=null){if(w==this.lastChild){if(typeof(n.modes[n.conf.opts_type].topImageClick)=="function"){var v=(n.conf.last_hover||n.conf.last_selected);var a=(v!=null?n.t[v].item:null);if(n.modes[n.conf.opts_type].topImageClick(a,n)!==true){v=a=null;return}}w=null}else{w=w.parentNode}}}if(n._isListVisible()){n._hideList()}else{if(q!=this.firstChild){n.conf.clear_blur=true}n._showList();n._setSelected(n.conf.last_selected,true,true)}q=null};this._doOnBodyMouseDown=function(){if(n.conf.clear_click){n.conf.clear_click=false;return}n._confirmSelect("blur")};this._doOnInputFocus=function(){n.conf.clear_blur=false;if(n.conf.tm_confirm_blur){window.clearTimeout(n.conf.tm_confirm_blur)}if(n.conf.combo_focus==false){n.conf.combo_focus=true;n.callEvent("onFocus",[])}};this._doOnInputBlur=function(){if(n.conf.clear_blur==true){n.conf.clear_blur=false;return}if(n.conf.tm_confirm_blur){window.clearTimeout(n.conf.tm_confirm_blur)}n.conf.tm_confirm_blur=window.setTimeout(function(){if(n.conf.clear_click==false){n._confirmSelect("blur");n.conf.combo_focus=false;n.callEvent("onBlur",[])}},20)};this._doOnInputKeyUp=function(a){a=a||event;if(n.conf.f_mode!=false){n.conf.clear_bsp=(a.keyCode==8||a.keyCode==46);n._filterOpts();return}else{n._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;n._keyOnUpDown(a.keyCode==38?-1:1)}if(a.keyCode==113){if(!n._isListVisible()){n._showList();if(n.base.firstChild.value==n.conf.last_text){n._setSelected(n.conf.last_selected,true,true);n.base.firstChild.value=n.conf.last_text;n.conf.f_server_last=n.base.firstChild.value.toLowerCase()}else{n.conf.f_server_last=n.base.firstChild.value.toLowerCase();if(n.conf.f_mode==false){n._checkForMatch()}}}else{}}if(a.keyCode==27){if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}a.cancelBubble=true;n._cancelSelect()}if(a.keyCode==13){if(a.preventDefault){a.preventDefault()}n._confirmSelect("kbd")}n.conf.clear_key=true;n.callEvent("onKeyPressed",[a.keyCode||a.charCode])};this._doOnInputKeyPress=function(a){if(n.conf.clear_key){n.conf.clear_key=false;return}a=a||event;n.callEvent("onKeyPressed",[a.keyCode||a.charCode])};this._keyOnUpDown=function(a){var q=null;if(this.conf.last_hover){q=this.t[this.conf.last_hover].item}else{if(this.conf.last_selected){q=this.t[this.conf.last_selected].item}}if(!q&&this._getListVisibleCount()==0){return}if(q!=null&&q.style.display!=""){q=null}this._showList();if(q!=null){if(this.t[q._optId].obj.isSelected(q)){q=this._getNearItem(q,a)}}else{q=this.list.firstChild;if(q.style.display!=""){q=this._getNearItem(q,1)}}if(q==null){return}this._setSelected(q._optId,true,true);if(this.conf.f_mode==false){this.base.firstChild.value=this.t[q._optId].obj.getText(q,true)}else{var v=String(this.t[q._optId].obj.getText(q,true));if(this.conf.f_mode=="start"&&this.conf.f_ac==true){if(v.toLowerCase().indexOf(this.conf.f_server_last)===0){this.conf.f_ac_text=v.substring(this.conf.f_server_last.length,v.length);this.base.firstChild.value=v;this._selectRange(this.conf.f_server_last.length,this.base.firstChild.value.length)}else{this.base.firstChild.value=v;this.conf.f_server_last=this.base.firstChild.value.toLowerCase();this._selectRange(0,this.base.firstChild.value.length)}}else{this.base.firstChild.value=v;this.conf.f_server_last=this.base.firstChild.value.toLowerCase()}}q=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 r in this.conf.evs_nodes[c].evs){if(window.addEventListener){this.conf.evs_nodes[c].node.addEventListener(r,this[this.conf.evs_nodes[c].evs[r]],false)}else{this.conf.evs_nodes[c].node.attachEvent("on"+r,this[this.conf.evs_nodes[c].evs[r]])}}}this.unload=function(){this.clearAll();this.t=null;for(var w=0;w<this.conf.evs_nodes.length;w++){for(var v in this.conf.evs_nodes[w].evs){if(window.addEventListener){this.conf.evs_nodes[w].node.removeEventListener(v,this[this.conf.evs_nodes[w].evs[v]],false)}else{this.conf.evs_nodes[w].node.detachEvent("on"+v,this[this.conf.evs_nodes[w].evs[v]])}this.conf.evs_nodes[w].evs[v]=null;delete this.conf.evs_nodes[w].evs[v]}this.conf.evs_nodes[w].node=null;this.conf.evs_nodes[w].evs=null;delete this.conf.evs_nodes[w].node;delete this.conf.evs_nodes[w].evs;this.conf.evs_nodes[w]=null}window.dhx4._eventable(this,"clear");window.dhx4._enableDataLoading(this,null,null,null,"clear");this.DOMelem_input=this.DOMelem_button=this.DOMlist=null;for(var v in this.conf){this.conf[v]=null;delete this.conf[v]}this.conf=null;this.base.parentNode.removeChild(this.base);this.list.parentNode.removeChild(this.list);this.base=this.list=this.cont=null;this.modes=null;for(var v in this){if(typeof(this[v])=="function"){this[v]=null}}n=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=m;m=null;if(h!=null){if(h.filter!=null){if(typeof(h.filter)=="string"){this.enableFilteringMode(true,h.filter,window.dhx4.s2b(h.filter_cache),window.dhx4.s2b(h.filter_sub_load))}else{this.enableFilteringMode(true)}}if(h.image_path!=null){this.setImagePath(h.image_path)}if(h.default_image!=null||h.default_image_dis!=null){this.setDefaultImage(h.default_image,h.default_image_dis)}if(h.items||h.options){this.addOption(h.items||h.options)}if(h.xml||h.json){this.load(h.xml||h.json)}if(typeof(h.readonly)!="undefined"){this.readonly(h.readonly)}h=null}return this}function dhtmlXComboFromSelect(g){if(typeof(g)=="string"){g=document.getElementById(g)}var c=g.offsetWidth;var r=g.getAttribute("name")||null;var h=document.createElement("SPAN");g.parentNode.insertBefore(h,g);var m=g.getAttribute("mode")||g.getAttribute("opt_type")||"option";var l=new dhtmlXCombo(h,r,c,m);h=null;var o=g.getAttribute("imagePath");if(o){l.setImagePath(o)}var q=g.getAttribute("defaultImage");var n=g.getAttribute("defaultImageDis");if(window.dhx4.s2b(n)==true){n=true}if(q!=null||n!=null){l.setDefaultImage(q,n)}var a=l._xmlToObj([g],true,g.selectedIndex);if(a.options.length>0){l.addOption(a.options)}a=null;g.parentNode.removeChild(g);g=null;return l}dhtmlXCombo.prototype.setName=function(a){this.conf.form_name=a;this.base.childNodes[1].name=a;this.base.childNodes[2].name=a+"_new_value"};dhtmlXCombo.prototype.readonly=function(a){if(window.dhx4.s2b(a)){this.base.firstChild.setAttribute("readOnly","true")}else{this.base.firstChild.removeAttribute("readOnly")}};dhtmlXCombo.prototype.setPlaceholder=function(a){if(typeof(a)=="undefined"||a==null){a=""}this.base.firstChild.setAttribute("placeholder",String(a))};dhtmlXCombo.prototype.setTemplate=function(g){for(var c in g){if(typeof(this.conf.template[c])!="undefined"){this.conf.template[c]=String(g[c])}}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};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(l){var m=null;var g=null;for(var h=0;h<this.list.childNodes.length;h++){if(m==null){var c=this.list.childNodes[h]._optId;if(this.t[c].obj.getValue(this.t[c].item)==l){m=c;g=h}}}return(m==null?null:this._getOption(m,g))};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(l){var m=null;var g=null;for(var h=0;h<this.list.childNodes.length;h++){if(m==null){var c=this.list.childNodes[h]._optId;if(this.t[c].obj.getText(this.t[c].item,true)==l){m=c;g=h}}}return(m==null?null:this._getOption(m,g))};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.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){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,g,a){if(c<0||c>=this.list.childNodes.length){return}var h=this.list.childNodes[c]._optId;this._setSelected(h,this._isListVisible(),true);this._confirmSelect("script")};dhtmlXCombo.prototype.unSelectOption=function(){};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.enableFilteringMode=function(h,c,a,g){if(h==true||h=="between"){this.conf.f_mode=(h==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(g)}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(c){for(var g=0;g<this.list.childNodes.length;g++){var a=c.apply(window,[this._getOption(this.list.childNodes[g]._optId,g)]);this.list.childNodes[g].style.display=(a===true?"":"none")}this._showList(true)};dhtmlXCombo.prototype.sort=function(g){var a=[];for(var c=0;c<this.list.childNodes.length;c++){var h=this.list.childNodes[c]._optId;a.push([h,this._getOption(h,c)])}if(g=="asc"||g=="desc"){k=true;a.sort(function(m,l){m=m[1].text_option.toLowerCase();l=l[1].text_option.toLowerCase();var n=(g=="asc"?1:-1);return(m>l?n:-1*n)})}else{if(typeof(g)=="function"||typeof(window[g])=="function"){if(typeof(window[g])=="function"){g=window[g]}a.sort(function(m,l){return g.apply(window,[m[1],l[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(a){this.conf.allow_free_text=(typeof(a)=="undefined"?true:window.dhx4.s2b(a))};dhtmlXCombo.prototype._checkForMatch=function(h){var a=window.dhx4.trim(this.base.firstChild.value).toLowerCase();var l=null;var c=this.list.firstChild;while(c!=null){if(c.style.display==""&&c._optId!=null){var g=window.dhx4.trim(this.t[c._optId].obj.getText(c,true)).toLowerCase();if(a==g){l=c._optId;c=null}}if(c!=null){c=c.nextSibling}}if(this.conf.last_match==null){if(l!=null){this._setSelected(l,true,true);this.conf.last_match=l}else{if(this.conf.f_mode!="between"||h==true){this._setSelected(null,true,true);this.conf.last_match=null}}}else{if(l!=null){if(l!=this.conf.last_match){this._setSelected(l,true,true);this.conf.last_match=l}}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);this.list.style.visibility="hidden";this.list.style.display="";this.list.style.width=Math.max(this.conf.opts_width||0,this.conf.combo_width)+"px";this.list.style.top=window.dhx4.absTop(this.base)+this.base.offsetHeight-1+"px";this.list.style.left=window.dhx4.absLeft(this.base)+"px";this._checkListHeight();this.list.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";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 q=this.list.firstChild;while(q!=null){if(q.style.display==""){this.conf.item_h=q.offsetHeight;q=null}else{q=q.nextSibling}}q=null}var r=window.dhx4.screenDim();var m=window.dhx4.absTop(this.base);var a=this.base.offsetHeight;var c=Math.max(0,Math.floor((m-r.top)/this.conf.item_h));var o=Math.max(0,Math.floor((r.bottom-(m+a))/this.conf.item_h));var u=this._getListVisibleCount();if(o<Math.min(this.conf.opts_count_min,u)&&c>o){o=null}var n=Math.min((o==null?c:o),this.conf.opts_count,u);var g=(n<u?(n*this.conf.item_h)+"px":"");var l=this.conf.sp[this.conf.skin].list_ofs;this.list.style.height=g;this.list.style.top=(o==null?m-this.list.offsetHeight+l:m+a-l)+"px"};dhtmlXCombo.prototype._scrollToItem=function(l){var h=this.t[l].item.offsetTop;var g=h+this.t[l].item.offsetHeight;var c=this.list.scrollTop;var a=c+this.list.clientHeight;if(h<c){this.list.scrollTop=h}else{if(g>a){this.list.scrollTop=g-this.list.clientHeight}}};dhtmlXCombo.prototype._setSelected=function(m,l,c){if(c){this._updateTopImage(m)}if(m!=null&&this.conf.last_hover==m){if(l){this._scrollToItem(m)}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(m==null){this.callEvent("onSelectionChange",[])}}if(m!=null){this.t[m].obj.setSelected(this.t[m].item,true);this.conf.last_hover=m;this.callEvent("onSelectionChange",[]);if(this.t[m].item==this.t[m].item.parentNode.lastChild&&this.conf.f_url!=null&&this.conf.f_dyn==true&&!this.conf.f_dyn_end){var h="mask="+encodeURIComponent(this.conf.f_mask)+"&pos="+this.list.childNodes.length;var a=this;var g=function(o){if(a.conf.f_cache){a.conf.f_cache_data[a.conf.f_mask].data.push(o.xmlDoc.responseXML)}var n=a.list.childNodes.length;a.load(o.xmlDoc.responseXML);if(n==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}}g=a=null};if(window.dhx4.ajax.method=="post"){window.dhx4.ajax.post(this.conf.f_url,h,g)}else{if(window.dhx4.ajax.method=="get"){window.dhx4.ajax.get(this.conf.f_url+(String(this.conf.f_url).indexOf("?")>=0?"&":"?")+h,g)}}}if(l){this._scrollToItem(m)}}};dhtmlXCombo.prototype.addOption=function(m,n,c,a,h){var g=null;if(!(m instanceof Array)){var o=this._renderOption({value:m,text:n,css:c,img:a});if(g==null&&window.dhx4.s2b(h)==true){g=o}}else{for(var l=0;l<m.length;l++){if(m[l] instanceof Array){o=this._renderOption({value:m[l][0],text:m[l][1],css:m[l][2],img:m[l][3]});if(g==null&&window.dhx4.s2b(m[l][4])==true){g=o}}else{var o=this._renderOption(m[l]);if(g==null&&window.dhx4.s2b(m[l].selected)==true){g=o}}}}if(g!=null){this._setSelected(g,this._isListVisible(),true);this._confirmSelect("onInit")}};dhtmlXCombo.prototype.updateOption=function(a,g,c,h){var l=this._getOptionId(a);if(l==null){return}this.t[l].obj.update(this.t[l].item,{value:g,text:c,css:h});if(this.conf.last_selected==l){this.conf.last_text=this.base.firstChild.value=this.t[l].obj.getText(this.t[l].item,true);this.conf.f_server_last=this.base.firstChild.value.toLowerCase()}};dhtmlXCombo.prototype.deleteOption=function(h){for(var c in this.t){var g=this.t[c].obj.getValue(this.t[c].item);if(g==h){this._removeOption(c)}}if(this._isListVisible()){this._showList(true)}};dhtmlXCombo.prototype.clearAll=function(){for(var c in this.t){this._removeOption(c)}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;this._hideList()};dhtmlXCombo.prototype._renderOption=function(c){var g=window.dhx4.newId();var a=document.createElement("DIV");a._optId=g;a._tpl=this.conf.template;if(typeof(c.img)=="undefined"&&typeof(c.img_src)!="undefined"){c.img=c.img_src;delete c.img_src}if(typeof(c.img_dis)=="undefined"&&typeof(c.img_src_dis)!="undefined"){c.img_dis=c.img_src_dis;delete c.img_src_dis}c.img_path=this.conf.img_path;c.img_def=this.conf.img_def;c.img_def_dis=this.conf.img_def_dis;this.list.appendChild(a);this.t[a._optId]={obj:this.modes[this.conf.opts_type].render(a,c),item:a,conf:{type:this.conf.opts_type}};a=null;return g};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(c){var a=false;if(this.conf.f_server_tm){window.clearTimeout(this.conf.f_server_tm)}if(this.conf.last_hover!=null){a=a||(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)){a=a||(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();this._updateTopImage(this.conf.last_selected);return}}if(this.conf.f_ac&&this.conf.f_mode=="start"){this.conf.f_ac_text="";if(c!="blur"){this._selectRange(this.base.firstChild.value.length,this.base.firstChild.value.length)}}this._hideList();if(a==true&&c!="onInit"&&c!="onDelete"){this.callEvent("onChange",[this.conf.last_value,this.conf.last_text])}};dhtmlXCombo.prototype._cancelSelect=function(){this._hideList();this.base.firstChild.value=this.conf.last_text;if(this.conf.f_mode!=false){this._filterOpts(true)}};dhtmlXCombo.prototype._getOption=function(n,h){if(!this.t[n]){return null}if(typeof(h)=="undefined"){h=-1}if(h<0){for(var m=0;m<this.list.childNodes.length;m++){if(h<0&&this.list.childNodes[m]._optId==n){h=m}}}var l={value:this.t[n].obj.getValue(this.t[n].item),text:this.t[n].obj.getText(this.t[n].item),text_input:this.t[n].obj.getText(this.t[n].item,true),text_option:this.t[n].obj.getText(this.t[n].item,null,true),css:this.t[n].obj.getCss(this.t[n].item),selected:(n==this.conf.last_selected),index:h};if(typeof(this.t[n].obj.getExtraData)=="function"){var g=this.t[n].obj.getExtraData(this.t[n].item);for(var c in g){if(typeof(l[c])=="undefined"){l[c]=g[c]}}}return l};dhtmlXCombo.prototype._getOptionProp=function(h,g,c){if(h!=null){var a=this._getOption(h);if(a!=null){return a[g]}}return c};dhtmlXCombo.prototype._getOptionId=function(c){var h=null;for(var a=0;a<this.list.childNodes.length;a++){if(h==null){var g=this.list.childNodes[a]._optId;if(c==this.t[g].obj.getValue(this.t[g].item)){h=g}}}return h};dhtmlXCombo.prototype._getOptionValue=function(a){return this._getOptionProp(a,"value",null)};dhtmlXCombo.prototype.setSize=function(a){this.conf.combo_width=parseInt(a);this.base.style.width=this.conf.combo_width+"px";this.base.firstChild.style.width=(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.modes={};dhtmlXCombo.prototype.doWithItem=function(a,n,l,g){var m=(a>=0&&a<this.list.childNodes.length?this.list.childNodes[a]._optId:null);if(m==null){return null}if(typeof(this.t[m].obj[n])!="function"){return null}var h=[this.t[m].item];for(var c=2;c<arguments.length;c++){h.push(arguments[c])}return this.t[m].obj[n].apply(this.t[m].obj,h)};function dhtmlXComboExtend(h,g){for(var c in dhtmlXCombo.prototype.modes[g]){if(typeof(dhtmlXCombo.prototype.modes[h][c])=="undefined"){dhtmlXCombo.prototype.modes[h][c]=dhtmlXCombo.prototype.modes[g][c]}}}dhtmlXCombo.prototype.modes.option={image: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+"'> </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,g){c._conf.text=g;var a=(typeof(g)=="object"?window.dhx4.template(c._tpl.option,c._conf.text,true):window.dhx4.trim(c._conf.text||""));c.lastChild.innerHTML=(a.length==0?" ":a)},getText:function(g,a,c){if(window.dhx4.s2b(a)&&typeof(g._conf.text)=="object"){return window.dhx4.template(g._tpl.input,g._conf.text,true)}if(window.dhx4.s2b(c)&&typeof(g._conf.text)=="object"){return window.dhx4.template(g._tpl.option,g._conf.text,true)}return g._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"}}};dhtmlXCombo.prototype.modes.checkbox={image:true,image_css:"dhxcombo_checkbox dhxcombo_chbx_#state#",option_css:"dhxcombo_option_text dhxcombo_option_text_chbx",render:function(a,c){a._conf={value:c.value,css:"",checked:window.dhx4.s2b(c.checked)};a.className="dhxcombo_option";a.innerHTML="<div class='"+String(this.image_css).replace("#state#",(a._conf.checked?"1":"0"))+"'></div><div class='"+this.option_css+"'> </div>";a.firstChild._optChbxId=a._optId;if(c.css!=null){a.lastChild.style.cssText+=c.css;a._conf.css=c.css}this.setText(a,c.text);return this},setChecked:function(a,c){a._conf.checked=window.dhx4.s2b(c);a.firstChild.className=String(this.image_css).replace("#state#",(a._conf.checked?"1":"0"))},isChecked:function(a){return(a._conf.checked==true)},getExtraData:function(a){return{type:"checkbox",checked:a._conf.checked}},optionClick:function(h,g,l){var c=true;var a=(g.target||g.srcElement);while(c==true&&a!=null&&a!=h){if(a._optChbxId!=null){if(l.callEvent("onCheck",[h._conf.value,!h._conf.checked])===true){this.setChecked(h,!this.isChecked(h))}c=false}else{a=a.parentNode}}a=l=h=null;return c},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,h){var c=[];for(var g=0;g<this.list.childNodes.length;g++){if(this.isChecked(g)){c.push(this._getOptionProp(this.list.childNodes[g]._optId,"value",""))}}return c};dhtmlXCombo.prototype.isChecked=function(a){return this.doWithItem(a,"isChecked")};dhtmlXCombo.prototype.modes.image={image: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+"'> </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(g,a,l,m,h,c){if(a!=null&&a.length>0){a=m+a}else{if(h!=null&&h.length>0){a=m+h}else{a=null}}if(l!=null&&l.length>0){l=m+l}else{if(c!=null&&c.length>0){l=m+c}else{if(c==true){l=a}else{l=null}}}g._conf.img=a;g._conf.img_dis=l;g.firstChild.style.backgroundImage=(a!=null?"url("+a+")":"none")},getExtraData:function(a){return{type:"image"}},getTopImage:function(h,g){var c=(g?"img":"img_dis");if(h!=null&&h._conf[c]!=null){return"<div class='"+this.image_css+"' style='background-image:url("+h._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(o){if(!(this instanceof dhtmlXColorPicker)){return new dhtmlXColorPicker(o)}dhx4._eventable(this);var m=this,h=undefined,n=null,g,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:null,blue:null,green:null,hue:null,sat:null,lum:null};this._initMoveSelection=function(l){l=l||event;if(typeof(window.addEventListener)=="function"){m._controllerNodes.colorArea.addEventListener("mousemove",m._setMoveSelection,false);document.body.addEventListener("mouseup",m._cleanMoveSelection,false)}else{m._controllerNodes.colorArea.attachEvent("onmousemove",m._setMoveSelection);document.body.attachEvent("onmouseup",m._cleanMoveSelection)}m._setMoveSelection(l,m._controllerNodes.colorArea);return false};this._cleanMoveSelection=function(){if(typeof(window.removeEventListener)=="function"){m._controllerNodes.colorArea.removeEventListener("mousemove",m._setMoveSelection,false);document.body.removeEventListener("mouseup",m._cleanMoveSelection,false)}else{m._controllerNodes.colorArea.detachEvent("onmousemove",m._setMoveSelection);document.body.detachEvent("onmouseup",m._cleanMoveSelection)}return false};this._setMoveSelection=function(l){l=l||event;var q=m._getOffsetPosition(l,m._controllerNodes.colorArea);if(m._controllerNodes.fr_cover){setTimeout(function(){m._setColorAreaXY(q.x,q.y);m._setColorByXYC()},0)}else{m._setColorAreaXY(q.x,q.y);m._setColorByXYC()}return false};this._initMoveContrast=function(l){l=l||event;if(typeof(window.addEventListener)=="function"){document.body.addEventListener("mousemove",m._setMoveContrast,false);document.body.addEventListener("mouseup",m._cleanMoveContrast,false)}else{document.body.attachEvent("onmousemove",m._setMoveContrast);document.body.attachEvent("onmouseup",m._cleanMoveContrast)}m._setMoveContrast(l,m._controllerNodes.contrastArea)};this._cleanMoveContrast=function(){if(typeof(window.removeEventListener)=="function"){document.body.removeEventListener("mousemove",m._setMoveContrast,false);document.body.removeEventListener("mouseup",m._cleanMoveContrast,false)}else{document.body.detachEvent("onmousemove",m._setMoveContrast);document.body.detachEvent("onmouseup",m._cleanMoveContrast)}};this._setMoveContrast=function(l){l=l||event;var q=m._getOffsetPosition(l,m._controllerNodes.contrastArea);m._setContrastY(q.y);m._setColorByXYC(true)};this._doOnSelectColor=function(){var l=m.colorAIP.rgb2hex({r:m.value.red,g:m.value.green,b:m.value.blue});if(m.activeNode!=null){if(m.activeNode.valueCont){m.activeNode.valueCont.value=l}if(m.activeNode.valueColor){m.activeNode.valueColor.style.backgroundColor=l}}if(m.base._dhx_remove||m.conf.hideOnSelect){m.hide()}m.callEvent("onSelect",[l,((m.activeNode)?m.activeNode.node:null)])};this._doOnCancel=function(){if(m.callEvent("onCancel",[((m.activeNode)?m.activeNode.node:null)])==true&&m.conf.closeable==true){m.hide()}};this._doOnFocusByInput=function(){var q=(this!=window)?this:event.srcElement;var l=(m.activeNode&&m.activeNode.valueCont&&m.activeNode.valueCont==q)?m.activeNode:m._getNodeByValueCont(q);m.activeNode=l;if(l&&l==m.activeNode){m._initListenerInput()}};this._doOnBlurByInput=function(){var q=(this!=window)?this:event.srcElement;var l=(m.activeNode&&m.activeNode.valueCont&&m.activeNode.valueCont==q)?m.activeNode:m._getNodeByValueCont(q);if(l&&l==m.activeNode){m._removeListenerInput()}};this._doOnClickByNode=function(q){q=q||event;var l=(this!=window)?this:event.srcElement;m.activeNode=(m.activeNode.node!=l)?m._getNodeByElement(l):m.activeNode;if(!m.isVisible()){m.show()}};this.saveColor=function(){m.memory.setValue(m.value)};this._onSelectMemoryEl=function(q){var l;m._refreshCoordinatesByHSL(q.value.hue,q.value.sat,q.value.lum);for(l in q.value){m.value[l]=q.value[l]}m._refreshContrast();m._refreshInputValues();m._refreshColorValue()};this._doOnClickByBody=function(r){r=r||event;var l=true,q=r.target||r.srcElement;if(m._isBaseNode(q)){l=false}if(l&&m.activeNode&&(m.activeNode.node==q||m.activeNode.valueCont==q)){l=false}if(l){m.hide()}};this._doOnChangeHSL=function(){var r=parseInt(m._controllerNodes.hue.value),q=parseInt(m._controllerNodes.sat.value),l=parseInt(m._controllerNodes.lum.value),s;if(isNaN(r)||r>359||r<0){m._controllerNodes.hue.value=m.value.hue}else{m.value.hue=r}if(isNaN(q)||q>100||q<0){m._controllerNodes.sat.value=m.value.sat}else{m.value.sat=q}if(isNaN(l)||l>100||l<0){m._controllerNodes.lum.value=m.value.lum}else{m.value.lum=l}s=m.colorAIP.hsl2rgb(m.value.hue,m.value.sat/100,m.value.lum/100);m.value.red=Math.round(255*s.r);m.value.green=Math.round(255*s.g);m.value.blue=Math.round(255*s.b);m._refreshCoordinatesByHSL(m.value.hue,m.value.sat,m.value.lum);m._refreshContrast();m._refreshInputValues();m._refreshColorValue()};this._doOnChangeRGB=function(){var s=parseInt(m._controllerNodes.red.value),r=parseInt(m._controllerNodes.green.value),l=parseInt(m._controllerNodes.blue.value),q;if(isNaN(s)||s>255||s<0){m._controllerNodes.red.value=m.value.red}else{m.value.red=s}if(isNaN(r)||r>255||r<0){m._controllerNodes.green.value=m.value.green}else{m.value.green=r}if(isNaN(l)||l>255||l<0){m._controllerNodes.blue.value=m.value.blue}else{m.value.blue=l}q=m.colorAIP.rgb2hsl(m.value.red/255,m.value.green/255,m.value.blue/255);m.value.hue=Math.round(q.h);m.value.sat=Math.round(q.s*100);m.value.lum=Math.round(q.l*100);m._refreshCoordinatesByHSL(m.value.hue,m.value.sat,m.value.lum);m._refreshContrast();m._refreshInputValues();m._refreshColorValue()};this._doOnChangeHSV=function(){m._controllerNodes.hsv.value=m.setColor(m._controllerNodes.hsv.value)};this._checkType=function(q){var l;if(q instanceof Array){l=m._checkType(q[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(q==undefined){return null}else{if(typeof(q)=="string"){return"string"}else{if(q.tagName&&q.tagName.toLowerCase()=="input"){return"input"}else{if(q.tagName&&q.tagName.toLowerCase()=="textarea"){return"textarea"}else{if(q.tagName){return"container"}else{if(typeof(q)=="object"){return"object"}else{return undefined}}}}}}}};this._initByObject=function(l){if(l.parent&&l.parent.tagName){m.base=l.parent}else{if(typeof(l.parent)=="string"){m.base=document.getElementById(l.parent)}else{m.base=document.createElement("div");m.base._dhx_remove=true}}if(l.color){m.conf.selectedColor=l.color}if(typeof(l.closeable)!="undefined"){this.conf.closeable=dhx4.s2b(l.closeable)}if(l.custom_colors){this._tempInitCC=function(){var s,r;this.initMemoryColors();this.conf.customColors=true;if(l.custom_colors instanceof Array){r=l.custom_colors.length;for(s=0;s<r;s++){this.setCustomColors(l.custom_colors[s])}}if(this.base.parentNode){this.showMemory()}delete this._tempInitCC}}if(l.hide){m.conf.hide=true}if(l.input){m._addNode(l.input,l.target_color,l.target_value)}var q=l.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxcolorpicker")||"dhx_skyblue";m.setSkin(q);if(l.colors){m.initMemoryColors();m.conf.customColors=true}if(l.link){m._addNode(l.link)}};this.unload=function(){var s,q,r;if(this.isVisible()){this.hide()}this.destructMemory();q=this._nodes.length;for(s=0;s<q;s++){this._detachEventsFromNode(this._nodes[s]);for(r in this._nodes[s]){this._nodes[s][r]=null}delete this._nodes[s]}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(r in this){this[r]=null}m=null,n=null,c=null};h=this._checkType(o);switch(h){case"object":m._initByObject(o);break;case"input":case"textarea":m._initByObject({});this._addNode(o);break;case"string":n=document.getElementById(o);return new dhtmlXColorPicker(n);break;case"container":m._initByObject({parent:o});break;case null:m._initByObject({});break;case"array_string":case"array_input":m._initByObject({});a=o.length;for(g=0;g<a;g++){this._addNode(o[g])}break;case"array_object":m._initByObject({});a=o.length;for(g=0;g<a;g++){c=this._addNode(o[g].input,o[g].target_color,o[g].target_value).conf;c.customColors=(o[g].custom_colors!=undefined)?dhx4.s2b(o[g].custom_colors):c.customColors;c.selectedColor=(o[g].color!=undefined)?o[g].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)}if(this.conf.selectedColor){this.setColor(this.conf.selectedColor)}else{this._setColorAreaXY(10,10);this._setContrastY(10);m._setColorByXYC()}if(this._nodes.length){for(var g=0;g<this._nodes.length;g++){this._attachEventsToNode(this._nodes[g])}}if(this.conf.hide){this.hide()}if(typeof(this._cpInitFRM)=="function"){this._cpInitFRM()}}dhtmlXColorPicker.prototype.linkTo=function(c,g,h){if(arguments.length==1){g=h=c}var a;c=c||null;h=h||null;if(typeof(g)=="string"){g=document.getElementById(g)}a=this._addNode(g,c,h);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(g){var c,a,h=false;a=this._nodes.length;for(c=0;c<a;c++){if(this._nodes[c].valueCont==g){h=true;break}}return h};dhtmlXColorPicker.prototype._findNodesByArray=function(m){var g,a,c,h=[];a=m.length;for(g=0;g<a;g++){if(typeof(m[g])=="string"){c=document.getElementById(m[g])}else{c=m[g]}if(c){this._addNode(c)}}};dhtmlXColorPicker.prototype._addNode=function(l,n,m){var c,h,g,a;if(typeof(l)=="string"){c=document.getElementById(l)}else{c=l}if(typeof(n)=="string"){n=document.getElementById(n)}if(typeof(m)=="string"){m=document.getElementById(m)}if(!c){return null}if(dhx4.s2b(c.getAttribute("colorbox"))){h=document.createElement("div");h.style.width=c.offsetWidth+"px";h.style.height=c.offsetHeight+"px";c.style.width=c.offsetWidth-(c.offsetHeight+8)+"px";c.parentNode.insertBefore(h,c);h.style.position="relative";g=document.createElement("div");h.appendChild(c);h.appendChild(g);g.className="dhxcp_colorBox";c.className+=" dhxcp_colorInput";g.style.width=g.style.height=c.offsetHeight+"px"}a={node:c,valueColor:(n!=undefined)?n:g||c,valueCont:(m!=undefined)?m: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(g){var a=null,c=null;if(typeof(g)=="string"){a=document.getElementById(g)}else{a=g}if(a.tagName!=undefined){c=this._getNodeByElement(a)}return c};dhtmlXColorPicker.prototype._getNodeByElement=function(g){var h=null,c,a;a=this._nodes.length;for(c=0;c<a;c++){if(this._nodes[c].node==g){h=this._nodes[c]}}return h};dhtmlXColorPicker.prototype._getNodeByValueCont=function(g){var h=null,c,a;a=this._nodes.length;for(c=0;c<a;c++){if(this._nodes[c].valueCont&&this._nodes[c].valueCont==g){h=this._nodes[c]}}return h};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(h){var g=c.colorAIP.rgb2hex({r:h.red,g:h.green,b:h.blue});c.callEvent("onSaveColor",[g])};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(o,n,c){var a,m,g;a=Math.round((this.configColorArea.maxX-this.configColorArea.minX)*o/359)+this.configColorArea.minX;m=Math.round((this.configColorArea.maxY-this.configColorArea.minY)*(100-c)/100)+this.configColorArea.minY;g=Math.round((this.configColorArea.maxY-this.configColorArea.minY)*(100-n)/100)+this.configColorArea.minY;this._setColorAreaXY(a,m);this._setContrastY(g)};dhtmlXColorPicker.prototype.setColor=function(n){var h,g,m=true,c,a=this.colorAIP.rgb2hex({r:this.value.red,g:this.value.green,b:this.value.blue}),l;if(n instanceof Array){h={r:parseInt(n[0]),g:parseInt(n[1]),b:parseInt(n[2])}}else{if(typeof(n)=="string"){n=n.replace(/\s/g,"");if(/^rgb\((\d{1,3})\,(\d{1,3})\,(\d{1,3})\)$/i.test(n)){g=n.match(/^rgb\((\d{1,3})\,(\d{1,3})\,(\d{1,3})\)$/i);h={r:parseInt(g[1]),g:parseInt(g[2]),b:parseInt(g[3])}}else{h=this.colorAIP.hex2rgb(n)}}}m=m&&h instanceof Object;m=m&&(0<=h.r&&h.r<=255);m=m&&(0<=h.g&&h.g<=255);m=m&&(0<=h.b&&h.b<=255);if(!m){return a}l=this.colorAIP.rgb2hex({r:h.r,g:h.g,b:h.b});if(l==a){return a}this.value.red=h.r;this.value.green=h.g;this.value.blue=h.b;c=this.colorAIP.rgb2hsl(h.r/255,h.g/255,h.b/255);this.value.hue=Math.round(c.h);this.value.sat=Math.round(c.s*100);this.value.lum=Math.round(c.l*100);this._refreshCoordinatesByHSL(this.value.hue,this.value.sat,this.value.lum);this._refreshContrast();this._refreshInputValues();this._refreshColorValue();return l};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);if(document.body.firstChild){document.body.insertBefore(this.base,document.body.firstChild)}else{document.body.appendChild(this.base)}this._refreshPosition();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,l){var h=null,a=parseInt(c),g=parseInt(l);if(isNaN(a)){h=(c.toLowerCase()=="left")?"left":(c.toLowerCase()=="bottom")?"bottom":null}if(this.base._dhx_remove){if(h==null){}else{this.conf.position=h;this._refreshPosition(h)}}else{if(isNaN(a)||isNaN(g)){}else{this._globalNode.style.left=a+"px";this._globalNode.style.top=g+"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),a=dhx4.absLeft(this.activeNode.node),g=dhx4.screenDim(),h=this._globalNode.offsetHeight,l=0;c=c||this.conf.position;switch(c){case"bottom":this._globalNode.style.top=m+this.activeNode.node.offsetHeight+this.conf.indent+"px";this._globalNode.style.left=a+"px";break;default:this._globalNode.style.left=a+this.activeNode.node.offsetWidth+this.conf.indent+"px";l=m;if(g.bottom-(l+h)<=0){l=g.bottom-(h+this.conf.indent)}if(l-g.top<0){l=g.top+this.conf.indent}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,g){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}}}g=parseInt(g);if(c.minY>g){this.conf.y=c.minY}else{if(g>c.maxY){this.conf.y=c.maxY}else{if(!isNaN(g)){this.conf.y=g}}}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 h=this.colorAIP.hsl2rgb(this.value.hue,0,this.value.lum/100);var l=this.colorAIP.hsl2rgb(this.value.hue,1,this.value.lum/100);var g=this._checkIeVersion();if(g&&g<=8){var m=this._controllerNodes.contrastArea.firstChild;if(m==this._controllerNodes.contrast_line){m=document.createElement("div");m.className+="dhxcp_ie_gradient";this._controllerNodes.contrastArea.appendChild(m);this._controllerNodes.contrastArea.appendChild(this._controllerNodes.contrast_line)}var c=this.colorAIP.rgb2hex({r:Math.round(255*h.r),g:Math.round(255*h.g),b:Math.round(255*h.b)});var a=this.colorAIP.rgb2hex({r:Math.round(255*l.r),g:Math.round(255*l.g),b:Math.round(255*l.b)});m.style.filter="progid:DXImageTransform.Microsoft.gradient(startColorstr='"+a+"', endColorstr='"+c+"', GradientType=0)"}else{h=[Math.round(255*h.r),Math.round(255*h.g),Math.round(255*h.b)];l=[Math.round(255*l.r),Math.round(255*l.g),Math.round(255*l.b)];this._controllerNodes.contrastArea.style.backgroundImage="linear-gradient(to top, rgb("+h.join(",")+"), rgb("+l.join(",")+"))"}};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(l){var h=parseInt(l.r),c=parseInt(l.g),a=parseInt(l.b);h=h||0,c=c||0,a=a||0;return"#"+((h)?((h<16)?"0"+h.toString(16):h.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(q,o,h){var n,m,c;var a=Math.max(q,o,h),l=Math.min(q,o,h);c=0.5*(a+l);if(a==l){n=0}else{if(a==q){n=60*(o-h)/(a-l);if(o<h){n+=360}}else{if(a==o){n=60*(h-q)/(a-l)+120}else{n=60*(q-o)/(a-l)+240}}}if(c==0||a==l){m=0}else{if(c<=0.5){m=0.5*(a-l)/c}else{m=0.5*(a-l)/(1-c)}}return{h:n,s:m,l:c}},hsl2rgb:function(q,g,n){var l,m,o;var c=[],a=[];if(n<=0.5){l=n*(1+g)}else{l=n+g-(n*g)}m=2*n-l;o=q/360;c.push(o+1/3);c.push(o);c.push(o-1/3);for(var h=0;h<3;h++){if(c[h]<0){c[h]+=1}else{if(c[h]>1){c[h]-=1}}if(c[h]<1/6){a.push(m+(l-m)*6*c[h])}else{if(c[h]<0.5){a.push(l)}else{if(c[h]<2/3){a.push(m+(l-m)*(2/3-c[h])*6)}else{a.push(m)}}}}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 h,g,n,c,m,a;g=arguments.length;for(h=0;h<g;h++){if(arguments[h] instanceof Array){n=this._rgb2value(arguments[h][0],arguments[h][1],arguments[h][2]);this.memory.setValue(n,null,false);continue}else{if(typeof(arguments[h])=="string"){c=arguments[h].match(/^rgb\((\d{1,3})\,(\d{1,3})\,(\d{1,3})\)$/i);if(c instanceof Array){n=this._rgb2value(c[1],c[2],c[3]);this.memory.setValue(n,null,false);continue}c=arguments[h].match(/(#[\da-f]{6})/ig);if(c instanceof Array){a=c.length;for(m=0;m<a;m++){n=this._hex2value(c[m]);this.memory.setValue(n,null,false)}}}}}};dhtmlXColorPicker.prototype._rgb2value=function(l,h,a){var c=this.colorAIP.rgb2hsl(l/255,h/255,a/255);return{red:l,green:h,blue:a,hue:Math.round(c.h),sat:Math.round(c.s*100),lum:Math.round(c.l*100)}};dhtmlXColorPicker.prototype._hex2value=function(g){var c,a;c=this.colorAIP.hex2rgb(g);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(l){l=l.toLowerCase();var g,c=-1,a,h="dhtmlxcp";g=this.base.className.match(/\S\w+/ig);if(g instanceof Array){for(a in this._skinCollection){if(c==-1){c=this._indexOf(g,h+"_"+a)}else{break}}c=(c==-1)?g.length:c}else{g=[];c=0}g[c]=h+"_"+l;this.base.className=g.join(" ");this.skin=l};dhtmlXColorPicker.prototype.hideOnSelect=function(a){a=dhx4.s2b(a);this.conf.hideOnSelect=a};dhtmlXColorPicker.prototype._indexOf=function(a,h){var g,c,m=-1;c=a.length;for(g=c;g>=0;g--){if(a[g]==h){m=g;break}}return m};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(g){var c=this,a=null,h={red:255,blue:255,green:255,hue:0,sat:0,lum:100};this.select=function(){var m=(this!=window)?this:event.srcElement;var l=l||m.dhxpc_memory;if(a!=null){c.unSelect()}a=l;l.domElement.className+=" dhxcp_memory_el_select";if(typeof(c.onSelect)=="function"){c.onSelect(l)}};this.onSelect=null;this.onSave=null;this._createMemoryController=function(l){var m={domElement:l,value:dhx4._copyObj(h)};l.dhxpc_memory=m;if(typeof(window.addEventListener)=="function"){l.addEventListener("click",c.select,false)}else{l.attachEvent("onclick",c.select)}return m};this._findMemoryControllers=function(r){var o=r.getElementsByTagName("a"),n,m,q=[];m=o.length;for(n=0;n<m;n++){q.push(this._createMemoryController(o[n]))}return q};this.controllers=this._findMemoryControllers(g);this.unSelect=function(){if(a){a.domElement.className=a.domElement.className.replace(/\s.*$/i,"")}a=null};this.setActiveNext=function(){var n=null,m;if(a==null){a=this.controllers[0]}else{n=this.getIndex(a);m=this.controllers.length;this.unSelect();a=(n+1<m)?this.controllers[n+1]:this.controllers[0]}a.domElement.className+=" dhxcp_memory_el_next";return a};this.setValue=function(m,l,n){a=l||a;if(a==null){a=this.controllers[0]}a.value.red=m.red;a.value.blue=m.blue;a.value.green=m.green;a.value.hue=m.hue;a.value.sat=m.sat;a.value.lum=m.lum;a.domElement.style.backgroundColor="rgb("+[m.red,m.green,m.blue].join(", ")+")";this.setActiveNext();if((n!=false)&&(typeof(this.onSave)=="function")){this.onSave(m)}};this.clean=function(){var m=this.controllers.length,o;for(var n=0;n<m;n++){o=this.controllers[n];o.value=dhx4._copyObj(h);o.domElement.style.backgroundColor="rgb("+[h.red,h.green,h.blue].join(", ")+")"}this.unSelect();a=this.controllers[0]};this.getIndex=function(o){var n,m,q=-1;m=this.controllers.length;for(n=0;n<m;n++){if(this.controllers[n]==o){q=n;break}}return q};this.remove=function(){var n,m;m=this.controllers.length;for(n=0;n<m;n++){if(typeof(window.addEventListener)=="function"){this.controllers[n].domElement.removeEventListener("click",this.select,false)}else{this.controllers[n].domElement.detachEvent("onclick",this.select)}delete this.controllers[n].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(g){var c=this;this.conf={size:null,skin:null,vertical:false,min:0,max:99,value:0,step:1,decimals:0,margin:2,border:1,disabled:false,tooltip:false,visible:true,linkTo:undefined};this._attachedNode={};this.base=null;var a=null;if(arguments.length>1){return new dhtmlXSlider(this._renderArgumets(arguments))}else{if(typeof(g)=="string"||(typeof(g)=="object"&&g.tagName)){return new dhtmlXSlider({parent:g})}}if(typeof(g.parent)=="string"){this.base=document.getElementById(g.parent)}else{this.base=g.parent}this._mergeConfig(this._readAttFormNode(this.base));this._mergeConfig(g);this._detectDecimals();if(this.conf.size==null||this.conf.size==undefined){if(this.conf.vertical){this.conf.size=this.base.offsetHeight}else{this.conf.size=this.base.offsetWidth}}var h=this.conf.skin||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxslider")||"dhx_skyblue";this.setSkin(h);this.base.innerHTML="<div class='dhxsl_container'><div class='dhxsl_track'></div><div class='dhxsl_runner'></div></div>";this._nodes={cont:this.base.firstChild,track:this.base.firstChild.firstChild,runner:this.base.firstChild.childNodes[1]};this._nodes.cont.onmousedown=this._nodes.track.onmousedown=this._nodes.cont.onselectstart=this._nodes.track.onselectstart=function(l){l=l||event;if(typeof(l.preventDefault)=="function"){l.preventDefault()}else{l.returnValue=false}return false};this.conf.value=this._normalize(this.conf.value);this._setOrient(this.conf.vertical);this.setSize(this.conf.size);this._initMover=function(l){l=l||event;a={};a.value=c.conf.value;a.coord=(c.conf.vertical)?l.clientY:l.clientX;if(c.conf.disabled==false){if(typeof(window.addEventListener)=="function"){window.addEventListener("mousemove",c._move,false);window.addEventListener("mouseup",c._cleanMove,false)}else{document.body.attachEvent("onmousemove",c._move);document.body.attachEvent("onmouseup",c._cleanMove)}}c.callEvent("_onRunnerMouseDown",[]);return false};this._move=function(q){q=q||event;var o=(c.conf.vertical)?c._nodes.runner.offsetHeight:c._nodes.runner.offsetWidth;var m=c.conf.max-c.conf.min;var l=(c.conf.vertical)?q.clientY:q.clientX;var n=a.value+(l-a.coord)*m/(c.conf.size-o);c.setValue(n,true)};this._cleanMove=function(l){if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousemove",c._move,false);window.removeEventListener("mouseup",c._cleanMove,false)}else{document.body.detachEvent("onmousemove",c._move);document.body.detachEvent("onmouseup",c._cleanMove)}a=null;c.callEvent("onSlideEnd",[c.conf.value]);c.callEvent("_onRunnerMouseUp",[])};this._doOnSetValue=function(q){if(a){return false}q=q||event;var o=(c.conf.vertical)?(q.offsetY||q.layerY):(q.offsetX||q.layerX);var n=(c.conf.vertical)?c._nodes.runner.offoffsetHeightsetHe:c._nodes.runner.offsetWidth;var l=c.conf.max-c.conf.min;var m=o*l/(c.conf.size)+c.conf.min;c.setValue(m,true);if(!a){c._initMover(q)}return false};this._doOnChangeInput=function(m){m=m||event;var l=m.target||m.srcElement;c.setValue(l.value)};this._doOnKeyDown=function(m){m=m||event;var l=m.target||m.srcElement;if(m.keyCode==13){c.setValue(l.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(/\s?dhtmlxslider_\S*/.test(this.base.className)){this.base.className=this.base.className.replace(/\s?dhtmlxslider_\S*/,"")}for(var l in this){this[l]=null}c=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._attachEvents=function(a){if(typeof(window.addEventListener)=="function"){a.runner.addEventListener("mousedown",this._initMover,false);a.cont.addEventListener("mousedown",this._doOnSetValue,false)}else{a.runner.attachEvent("onmousedown",this._initMover);a.cont.attachEvent("onmousedown",this._doOnSetValue)}};dhtmlXSlider.prototype._detachEvents=function(a){if(typeof(window.addEventListener)=="function"){a.runner.removeEventListener("mousedown",this._initMover,false);a.cont.removeEventListener("mousedown",this._doOnSetValue,false)}else{a.runner.detachEvent("onmousedown",this._initMover);a.cont.detachEvent("onmousedown",this._doOnSetValue)}};dhtmlXSlider.prototype._mergeConfig=function(c){for(var a in c){switch(a.toLowerCase()){case"size":case"min":case"max":case"value":case"step":this.conf[a]=c[a];break;case"vertical":case"tooltip":case"disabled":case"visible":this.conf[a]=dhx4.s2b(c[a]);break;case"parent":continue;break;default:this.conf[a]=c[a]}}};dhtmlXSlider.prototype._readAttFormNode=function(h){var n=h.attributes,a=n.length,g,m={},c;for(g=0;g<a;g++){c=n[g];switch(c.name.toLowerCase()){case"size":case"min":case"max":case"value":case"step":m[c.name]=c.value;break;case"skin":m.skin=c.value;break;case"vertical":case"disabled":case"visible":m[c.name]=dhx4.s2b(c.value);break;case"linkto":m.linkTo=c.value;break;case"tooltip":m.tooltip=dhx4.s2b(c.value);break}}return m};dhtmlXSlider.prototype._renderArgumets=function(a){var h={},g,c;c=a.length;for(g=0;g<c;g++){switch(g){case 0:h.parent=a[g];break;case 1:h.size=a[g];break;case 2:h.skin=a[g];break;case 3:h.vertical=a[g];break;case 4:h.min=a[g];break;case 5:h.max=a[g];break;case 6:h.value=a[g];break;case 7:h.step=a[g];break}}return h};dhtmlXSlider.prototype._skinCollection={dhx_skyblue:true,dhx_web:true,dhx_terrace:true};dhtmlXSlider.prototype._indexOf=function(a,h){var g,c,m=-1;c=a.length;for(g=c;g>=0;g--){if(a[g]==h){m=g;break}}return m};dhtmlXSlider.prototype._refreshRunner=function(){var a,c;if(this.conf.vertical){a=this._nodes.cont.offsetHeight-this._nodes.runner.offsetHeight;c=this._getCoord(a);this._nodes.runner.style.top=c+this.conf.border+"px";this._nodes.runner.style.left=Math.round((this._nodes.cont.offsetWidth-this._nodes.runner.offsetWidth)/2)+"px"}else{a=this._nodes.cont.offsetWidth-this._nodes.runner.offsetWidth;c=this._getCoord(a);this._nodes.runner.style.left=c+this.conf.border+"px";this._nodes.runner.style.top=Math.round((this._nodes.cont.offsetHeight-this._nodes.runner.offsetHeight)/2)+"px"}};dhtmlXSlider.prototype._setValueByCoord=function(h){var a=dhx4.absLeft(this._nodes.cont),l=dhx4.absTop(this._nodes.cont),g,c;if(this.conf.vertical){c=(h.y-l-this._nodes.runner.offsetHeight/2)/(this._nodes.cont.offsetHeight-this._nodes.runner.offsetHeight)}else{c=(h.x-a-this._nodes.runner.offsetWidth/2)/(this._nodes.cont.offsetWidth-this._nodes.runner.offsetWidth)}g=(this.conf.max-this.conf.min)*c+this.conf.min;this.setValue(g,true)};dhtmlXSlider.prototype._getCoord=function(a){var g=this.conf;var c=(g.value-g.min)/(g.max-g.min);return Math.round(a*c)};dhtmlXSlider.prototype._normalize=function(c){c=Math.round(c/this.conf.step)*this.conf.step;var a=Math.pow(10,this.conf.decimals);c=Math.round(c*a)/a;return c};dhtmlXSlider.prototype._attachNode=function(c){var a=c.tagName.toLowerCase();if(!a){return}this._attachedNode.node=c;switch(a){case"input":case"select":if(typeof(window.addEventListener)=="function"){c.addEventListener("change",this._doOnChangeInput,false);c.addEventListener("keydown",this._doOnKeyDown,false)}else{c.attachEvent("onchange",this._doOnChangeInput);c.attachEvent("onkeydown",this._doOnKeyDown)}this._attachedNode.setValue=function(m,g){m=String(m);if(g>0){var h=m.match(/\.\d{1,}$/);if(h!=null){g=Math.max(g-h[0].length+1)}m+=(m.indexOf(".")<0?".":"");for(var l=0;l<g;l++){m+="0"}}this.node.value=m};break;default:this._attachedNode.setValue=function(g){this.node.innerHTML=g}}this._attachedNode.setValue(this.conf.value,this.conf.decimals)};dhtmlXSlider.prototype._detachNode=function(){var c=this._attachedNode.node;if(!c){return}var a=c.tagName;switch(a){case"input":case"select":if(typeof(window.addEventListener)=="function"){c.removeEventListener("change",this._doOnChangeInput,false);c.removeEventListener("keydown",this._doOnChangeInput,false)}else{c.detachEvent("change",this._doOnChangeInput);c.detachEvent("keydown",this._doOnChangeInput)}break}delete this._attachedNode.node;delete this._attachedNode.setValue};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(l){l=l.toLowerCase();var g,c=-1,a,h="dhtmlxslider";g=this.base.className.match(/\S\w+/ig);if(g instanceof Array){for(a in this._skinCollection){if(c==-1){c=this._indexOf(g,h+"_"+a)}else{break}}c=(c==-1)?g.length:c}else{g=[];c=0}g[c]=h+"_"+l;this.base.className=g.join(" ");this.conf.skin=l;if(this._nodes){this._refreshRunner()}};dhtmlXSlider.prototype.setValue=function(a,c){c=c||false;if(!isNaN(a)){a=this._normalize(a);a=Math.max(this.conf.min,a);a=Math.min(this.conf.max,a);if(this.conf.value!=a){this.conf.value=a;this._refreshRunner();if(this.conf.tooltip){this._nodes.cont.title=this.conf.value}if(c){this.callEvent("onChange",[this.conf.value,this])}}}if(typeof(this._attachedNode.setValue)=="function"){this._attachedNode.setValue(this.conf.value,this.conf.decimals)}};dhtmlXSlider.prototype.getValue=function(){return this.conf.value};dhtmlXSlider.prototype.disable=function(g){g=(g==false)?false:true;var c=null;if(g){for(var a in this._nodes){if(a=="cont"){continue}c=new RegExp("\\s?dhxsl_"+a+"_dis","i");if(!c.test(this._nodes[a].className)){this._nodes[a].className+=" dhxsl_"+a+"_dis"}}this.conf.disabled=true}else{this.enable()}};dhtmlXSlider.prototype.enable=function(){var c;for(var a in this._nodes){if(a=="cont"){continue}c=new RegExp("\\s?dhxsl_"+a+"_dis","i");if(c.test(this._nodes[a].className)){this._nodes[a].className=this._nodes[a].className.replace(c,"")}}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._nodes.cont.title=this.conf.value;this.conf.tooltip=true}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(typeof(a)=="string"){a=document.getElementById(a)}if(this._attachedNode.node){this._detachNode()}this._attachNode(a)};function dhtmlXPopup(g){var h=this;this.conf=g||{};g=null;this.mode=(this.conf.mode||"bottom");this.conf.zi=window.dhx4.newId();this.conf.isIE=(navigator.userAgent.indexOf("MSIE")>=0);this.p=document.createElement("DIV");this.p.style.display="none";this.p.innerHTML="<div class='dhx_popup_area"+(this.conf.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.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.onclick=function(l){l=l||event;h._clearClick=true;if(h._nodeObj!=null){h.callEvent("onContentClick",[]);return true}var a=(l.target||l.srcElement);var m=null;while(a!=h.p&&a!=null){if(typeof(a._idd)!="undefined"&&!a._isSeparator){m=a._idd;a=null}else{a=a.parentNode}}a=null;if(m!=null){h.callEvent("onClick",[m]);if(h!=null&&h.isVisible!=null&&h.isVisible()&&h.callEvent("onBeforeHide",["select",l,m])===true){l.cancelBubble=true;h.hide()}}};this.separator="DHXSEP_"+window.dhx4.newId();this.tpl=[];this._setTemplate=function(a){this.tpl=a.split(",")};this.show=function(l){var a=null;if(arguments.length==1){if(!l){l=this.conf.id[0]}else{if(!this._idExists(l)){return}}if(this.conf.toolbar){a=this.conf.toolbar._getItemDim(l)}if(this.conf.ribbon){a=this.conf.ribbon._getItemDim(l)}if(this.conf.form){a=this.conf.form._getItemDim(l)}}else{if(arguments.length==4){this._clearClick=true;a={left:arguments[0],top:arguments[1],width:arguments[2],height:arguments[3]};l=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=l;this.callEvent("onShow",[l])};this._setPos=function(I,n){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=n||this.mode;if(typeof(n)=="undefined"){n=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(!n&&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 m=u-r;var K=u-D-a;var q=u+a+D-this.p.offsetWidth;if(m<N.left-A){m=Math.min(N.left-A,K)}else{if(m+this.p.offsetWidth>N.right+A){m=Math.max(q,N.right+A-this.p.offsetWidth)}}this.p.style.left=m+"px";this.p.style.top=(F=="top"?s-this.p.offsetHeight:s+L)+"px";u=u-m-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 o=Math.round(this.p.offsetHeight/2);var S=Math.round(this.p.lastChild.offsetHeight/2);if(s<N.top){var l=Math.min(s+L,N.top);L=s+L-l;s=l}if(s+L>N.bottom){L=N.bottom-s}var u=Math.round(s+L/2);var H=u-o;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);window.setTimeout(function(){E.style.visibility="visible";E=null},1)}};this._getAvailPos=function(s,r){var m={top:["bottom","right","left"],bottom:["top","right","left"],left:["right","bottom","top"],right:["left","bottom","top"]};var n=null;for(var o=0;o<m[s].length;o++){if(n==null&&r[m[s][o]]>0){n=m[s][o]}}if(n==null){n="bottom";for(var l in r){if(r[l]>r[n]){n=l}}}if(n==s){return false}return n};this._repaint=function(){if(this.isVisible()){this._setPos(this._posData)}};this.clear=function(){if(this._nodeObj){if(this.conf.isIE&&typeof(dhtmlXLayoutObject)!="undefined"&&this._nodeObj instanceof 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 l=0;l<this._nodeObjEv.length;l++){this.detachEvent(this._nodeObjEv[l])}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.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(m,u){this._setTemplate(m);this.clear();var n=this.p.firstChild.firstChild.firstChild;for(var s=0;s<u.length;s++){var o=document.createElement("TR");if(u[s]!=this.separator){if(typeof(u[s].id)=="undefined"||u[s].id==null){o._idd=window.dhx4.newId();while(this.itemData[o._idd]!=null){o._idd=window.dhx4.newId()}}else{o._idd=u[s].id}this.itemData[o._idd]=u[s]}n.appendChild(o);if(u[s]==this.separator){o.className="dhx_popup_sep";o._isSeparator=true;var v=document.createElement("TD");v.className="dhx_popup_sep";v.colSpan=this.tpl.length;v.innerHTML="<div class='dhx_popup_sep'> </div>";o.appendChild(v);v=null}else{for(var a=0;a<this.tpl.length;a++){var l="dhx_popup_td";if(this._IEFirstLast&&(this.tpl.length==1||a==0||a==this.tpl.length-1)){if(this.tpl.length==1){l+=" dhx_popup_td_single"}else{l+=(a==0?" dhx_popup_td_first":" dhx_popup_td_last")}}var v=document.createElement("TD");v.className=l;v.innerHTML=u[s][this.tpl[a]]||" ";o.appendChild(v);v=null}if(this._IEHover){o._IEHover=true;if(!this._IEHoverInited){this._IEHoverInit()}}}o=null}n=null;this._repaint()};this._attachNode=function(n,m){this.clear();this._nodeId="dhxpopup_node_"+window.dhx4.newId();var a=this.p.firstChild.firstChild.firstChild;var l=document.createElement("TR");l.className="dhxnode";a.appendChild(l);var o=document.createElement("TD");o.className="dhx_popup_td";o.innerHTML="<div id='"+this._nodeId+"' style='position:relative;'></div>";if(m.width){o.firstChild.style.width=m.width+"px"}if(m.height){o.firstChild.style.height=m.height+"px"}l.appendChild(o);o=l=a=null;if(typeof(this["_attach_init_"+n])=="function"){this["_attach_init_"+n](m);this._enableIEVFix()}this._repaint();return this._nodeObj};this.unload=function(){if(typeof(window.addEventListener)=="function"){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)}this.clear();this._doOnClick=null;this._doOnUnload=null;this._doOnKeyUp=null;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){for(var a=0;a<this.conf.slider_events.length;a++){this.conf.slider.detachEvent(this.conf.slider_events[a])}this.conf.slider_events=null;this._sliderShow=this._sliderHide=null;this.conf.slider=null}window.dhx4._eventable(this,"clear");this.attachList=this.attachAccordion=this.attachCalendar=this.attachForm=this.attachGrid=this.attachLayout=this.attachTabbar=this.attachTree=this.attachHTML=this.attachObject=this._attachNode=null;this.show=this.hide=this.isVisible=this._setTemplate=this._repaint=this._setPos=this.getItemData=this.clear=this._idExists=this._doOnToolbarClick=this._doOnRibbonClick=this.setSkin=null;this.tpl=this.itemData=this.separator=this.mode=null;this._clearClick=this._lastId=this._posData=this.skinParams=this.skinParent=null;this.p.onclick=null;this.p.parentNode.removeChild(this.p);this.p=null;this.conf.toolbar=this.conf.toolbarEvent=this.conf.ribbon=this.conf.ribbonEvent=this.conf.form=this.conf.id=null;this.conf=null;this._IEHover=this._IEHoverTM=this._IEHoverInit=this._IEHoverClear=this._IEHoverRender=this._IEHoverInited=null;this._IEDisp=null;this.unload=null;h=null};window.dhx4._eventable(this);this._doOnClick=function(o){o=o||event;if(h._clearClick){h._clearClick=false;return}if(h.conf.form!=null){var q;var l=(o.target||o.srcElement);if((l.tagName||"").toLowerCase()=="option"){l=l.parentNode}if(l.className!=null&&l.className.search("dhxform")>=0){if(l.parentNode!=null&&l.parentNode.parentNode!=null&&l.parentNode.parentNode._idd!=null){q=l.parentNode.parentNode._idd;if(l.parentNode.parentNode._type=="ra"){q=[l.parentNode.parentNode._group,l.parentNode.parentNode._value]}}}else{var a=true;var m=false;while(a&&!m){var n=(l.className||"").toLowerCase();if(n.length>0){m=(n=="dhxform_btn"||n.search(/dhxeditor_inside/gi)>=0||n=="dhxcombo_input"||n.search(/dhxcombolist/gi)>=0)}l=l.parentNode;a=(l!=null)}if(m){return}}l=null;if(q!=null&&h._idExists(q)){return}}if(h.isVisible()&&h.callEvent("onBeforeHide",["click",o])===true){h.hide()}};this._doOnKeyUp=function(a){a=a||event;if(a.keyCode==27){if(h.isVisible()&&h.callEvent("onBeforeHide",["esc",a])===true){h.hide()}}};this._doOnUnload=function(){h.unload()};if(typeof(window.addEventListener)=="function"){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._idExists=function(m){var a=false;for(var l=0;l<this.conf.id.length;l++){if(this.conf.id[l] instanceof Array){a=a||(this.conf.id[l][0]==m[0]&&this.conf.id[l][1]==m[1])}else{a=a||this.conf.id[l]==m}}return a};this._IEDisp=(this.conf.isIE&&(navigator.userAgent.search("MSIE 6.0")>=0||document.compatMode!="CSS1Compat"));this._IEHover=(this.conf.isIE&&navigator.userAgent.search("MSIE 6.0")>=0);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(h._IEHoverTM){window.clearTimeout(h._IEHoverTM)}if(h._lastIEHover==a){return}h._IEHoverRender(a);a=null}};this.p.onmouseout=function(){if(h._IEHoverTM){window.clearTimeout(h._IEHoverTM)}h._IEHoverTM=window.setTimeout(function(){h._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";h._lastIEHover=a}};this._IEHoverInited=true};this._IEHoverClear=function(){this.p.onmouseover=null;this.p.onmouseout=null;this._IEHoverInited=false}}this._IEFirstLast=(this.conf.isIE&&navigator.userAgent.search(/MSIE [6,7,8]\.0/i)>=0);this._enableIEVFix=function(){if(this.conf.isIE&&navigator.userAgent.search("MSIE 6.0")>=0){var l=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(l,a)}};if(typeof(window.dhtmlXToolbarObject)!="undefined"&&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(l){for(var a=0;a<h.conf.id.length;a++){if(l==h.conf.id[a]){if(l!=h._lastId){h.show(l);h._clearClick=true}}}};if(typeof(dhtmlXToolbarObject.prototype._getItemDim)=="undefined"){dhtmlXToolbarObject.prototype._getItemDim=function(m){var a=this.objPull[this.idPrefix+m];var l={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 l}}this.conf.toolbarEvent=this.conf.toolbar.attachEvent("onClick",this._doOnToolbarClick)}if(typeof(window.dhtmlXRibbon)!="undefined"&&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(l){for(var a=0;a<h.conf.id.length;a++){if(l==h.conf.id[a]){if(l!=h._lastId){h.show(l);h._clearClick=true}}}};if(typeof(dhtmlXRibbon.prototype._getItemDim)=="undefined"){dhtmlXRibbon.prototype._getItemDim=function(m){var a=this._items[m].base;var l={left:window.dhx4.absLeft(a),top:window.dhx4.absTop(a),width:a.offsetWidth,height:a.offsetHeight};a=null;return l}}this.conf.ribbonEvent=this.conf.ribbon.attachEvent("_showPopup",this._doOnRibbonClick)}if(typeof(window.dhtmlXForm)!="undefined"&&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,l){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(l){var a=l;if({ta:true,pw:true,se:true,calendar:true,colorpicker:1,editor:true}[l._type]){a=l.childNodes[l._ll?1:0].childNodes[0]}if({ch:true,ra:true,btn2state:true}[l._type]){a=l.childNodes[l._ll?1:0].childNodes[1]}if({bt:true}[l._type]){a=l.firstChild}if({combo:true}[l._type]){a=l._combo.DOMParent.firstChild}var m={left:window.dhx4.absLeft(a),top:window.dhx4.absTop(a),width:a.offsetWidth,height:a.offsetHeight};a=null;return m}}}}}if(typeof(window.dhtmlXSlider)!="undefined"&&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(h.conf.slider_tm){window.clearTimeout(h.conf.slider_tm)}var a=h.conf.slider._nodes.runner;var l={left:window.dhx4.absLeft(a),top:window.dhx4.absTop(a),width:a.offsetWidth,height:a.offsetHeight};h.show(l.left,l.top,l.width,l.height)};this._sliderHide=function(){h.conf.slider_tm=window.setTimeout(function(){h.hide()},200)};this.conf.slider_events=[this.conf.slider.attachEvent("_onRunnerMouseDown",this._sliderShow),this.conf.slider.attachEvent("_onRunnerMouseUp",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(a){return this._attachNode("form",{struct: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 l=dhtmlXForm.prototype.items.editor.editor;for(var g in l){var m=l[g].base;var h=false;while(m!=null){if(m==this.p){h=true;m=null}else{m=m.parentNode}}m=null;if(h==true){l[g].cell.conf.cells_cont=null;l[g].setSizes()}}l=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(){return this._attachNode("calendar",{})};dhtmlXPopup.prototype._attach_init_calendar=function(a){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(g,c,a){return this._attachNode("tree",{width:g||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,g){return this._attachNode("layout",{width:c||400,height:a||200,pattern:g||"3L"})};dhtmlXPopup.prototype._attach_init_layout=function(a){this._nodeObj=new dhtmlXLayoutObject(this._nodeId,a.pattern,this.conf.skin)};dhtmlXPopup.prototype.attachAccordion=function(g,a,c){return this._attachNode("accordion",{width:g||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(g,a,c){if(typeof(c)=="string"){c={mode:c}}else{if(typeof(c)!="object"||c==null){c={}}}return this._attachNode("tabbar",{width:g||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.attachEditor=function(g,a,c){return this._attachNode("editor",{width:g||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)};function dhtmlXMenuObject(l,m){var h=this;this.conf={skin:(m||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,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(l)=="object"&&l!=null&&typeof(l.tagName)=="undefined"){if(l.icons_path!=null||l.icon_path!=null){this.conf.icons_path=(l.icons_path||l.icon_path)}if(l.skin!=null){this.conf.skin=l.skin}if(l.visible_area){this.conf.v_enabled=true;this.conf.v={x1:l.visible_area.x1,x2:l.visible_area.x2,y1:l.visible_area.y1,y2:l.visible_area.y2}}for(var g 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(l[g]!=null){this.conf.autoload[g]=l[g]}}l=l.parent}if(l==null){this.base=document.body}else{var c=(typeof(l)=="string"?document.getElementById(l):l);if(c!=null){this.base=c;if(!this.base.id){this.base.id=(new Date()).valueOf()}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(o){var q=this.conf.skin;this.conf.skin=o;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_"+q+"_Middle","")+" dhtmlxMenu_"+this.conf.skin+"_Middle"}for(var n in this.idPull){this.idPull[n].className=String(this.idPull[n].className).replace(q,this.conf.skin)}};this.setSkin(this.conf.skin);this._addSubItemToSelected=function(o,n){var a=true;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)){a=false}}if(a==true){this.conf.selected_sub.push(new Array(o,n))}return a};this._removeSubItemFromSelected=function(r,o){var a=new Array();var n=false;for(var s=0;s<this.conf.selected_sub.length;s++){if((this.conf.selected_sub[s][0]==r)&&(this.conf.selected_sub[s][1]==o)){n=true}else{a[a.length]=this.conf.selected_sub[s]}}if(n==true){this.conf.selected_sub=a}return n};this._getSubItemToDeselectByPolygon=function(r){var a=new Array();for(var s=0;s<this.conf.selected_sub.length;s++){if(this.conf.selected_sub[s][1]==r){a[a.length]=this.conf.selected_sub[s][0];a=a.concat(this._getSubItemToDeselectByPolygon(this.conf.selected_sub[s][0]));var o=true;for(var n=0;n<this.conf.opened_poly.length;n++){if(this.conf.opened_poly[n]==this.conf.selected_sub[s][0]){o=false}}if(o==true){this.conf.opened_poly[this.conf.opened_poly.length]=this.conf.selected_sub[s][0]}this.conf.selected_sub[s][0]=-1;this.conf.selected_sub[s][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(I,o){var N=this._countVisiblePolygonItems(I);if(N==0){return}var J="polygon_"+I;if((this.idPull[J]!=null)&&(this.idPull[I]!=null)){if(this.conf.top_mode&&this.conf.mode=="web"&&!this.conf.context){if(!this.idPull[I]._mouseOver&&o==this.conf.dir_toplv){return}}if(!this.conf.fixed_pos){this._autoDetectVisibleArea()}var K=0;var M=0;var P=null;var E=null;if(this.idPull[J]._zId==null){this.idPull[J]._zId=window.dhx4.newId()}this.idPull[J]._zInd=window.dhx4.zim.reserve(this.idPull[J]._zId);this.idPull[J].style.visibility="hidden";this.idPull[J].style.left="0px";this.idPull[J].style.top="0px";this.idPull[J].style.display="";this.idPull[J].style.zIndex=this.idPull[J]._zInd;if(this.conf.auto_overflow){if(this.idPull[J].firstChild.offsetHeight>this.conf.v.y1+this.conf.v.y2){var D=Math.floor((this.conf.v.y2-this.conf.v.y1-35)/24);this.conf.overflow_limit=D}else{this.conf.overflow_limit=0;if(this.idPull["arrowup_"+I]!=null){this._removeUpArrow(String(I).replace(this.idPrefix,""))}if(this.idPull["arrowdown_"+I]!=null){this._removeDownArrow(String(I).replace(this.idPrefix,""))}}}if(this.conf.overflow_limit>0&&this.conf.overflow_limit<N){if(this.idPull["arrowup_"+I]==null){this._addUpArrow(String(I).replace(this.idPrefix,""))}if(this.idPull["arrowdown_"+I]==null){this._addDownArrow(String(I).replace(this.idPrefix,""))}P=this.idPull["arrowup_"+I];P.style.display="none";E=this.idPull["arrowdown_"+I];E.style.display="none"}if(this.conf.overflow_limit>0){if(this.conf.overflow_limit<N){this.idPull[J].childNodes[1].style.height=24*this.conf.overflow_limit+"px";P.style.width=E.style.width=this.idPull[J].childNodes[1].style.width=this.idPull[J].childNodes[1].childNodes[0].offsetWidth+"px";this.idPull[J].childNodes[1].scrollTop=0;P.style.display="";K=P.offsetHeight;E.style.display="";M=E.offsetHeight}else{this.idPull[J].childNodes[1].style.height="";this.idPull[J].childNodes[1].style.width=""}}if(this.itemPull[I]!=null){var A="polygon_"+this.itemPull[I]["parent"]}else{if(this.conf.context){var A=this.idPull[this.idPrefix+this.topId]}}var a=(this.idPull[I].tagName!=null?window.dhx4.absLeft(this.idPull[I]):this.idPull[I][0]);var O=(this.idPull[I].tagName!=null?window.dhx4.absTop(this.idPull[I]):this.idPull[I][1]);var n=(this.idPull[I].tagName!=null?this.idPull[I].offsetWidth:0);var q=(this.idPull[I].tagName!=null?this.idPull[I].offsetHeight:0);var v=0;var u=0;var C=this.idPull[J].offsetWidth;var L=this.idPull[J].childNodes[1].offsetHeight+K+M;if(o=="bottom"){if(this.conf.rtl){v=a+(n!=null?n:0)-C}else{if(this.conf.align=="right"){v=a+n-C}else{v=a-1+(o==this.conf.dir_toplv?this.conf.tl_rmarg:0)}}u=O-1+q+this.conf.tl_botmarg}if(o=="right"){v=a+n-1;u=O+2}if(o=="left"){v=a-this.idPull[J].offsetWidth+2;u=O+2}if(o=="top"){v=a-1;u=O-L+2}if(this.conf.fixed_pos){var H=65536;var F=65536}else{var H=(this.conf.v.x2!=null?this.conf.v.x2:0);var F=(this.conf.v.y2!=null?this.conf.v.y2:0);if(H==0){if(window.innerWidth){H=window.innerWidth;F=window.innerHeight}else{H=document.body.offsetWidth;F=document.body.scrollHeight}}}if(v+C>H&&!this.conf.rtl){v=a-C+2}if(v<this.conf.v.x1&&this.conf.rtl){v=a+n-2}if(v<0){v=0}if(u+L>F&&this.conf.v.y2!=null){u=Math.max(O+q-L+2,(this.conf.v_enabled?this.conf.v.y1+2:2));if(this.conf.context&&this.idPrefix+this.topId==I&&E!=null){u=u-2}if(this.itemPull[I]!=null&&!this.conf.context){if(this.itemPull[I]["parent"]==this.idPrefix+this.topId){u=u-this.base.offsetHeight}}}this.idPull[J].style.left=v+"px";this.idPull[J].style.top=u+"px";if(typeof(this._menuEffect)!="undefined"&&this._menuEffect!==false){this._showPolygonEffect(J)}else{this.idPull[J].style.visibility="";if(this.conf.overflow_limit>0&&this.conf.overflow_limit<N){this.idPull[J].childNodes[1].scrollTop=0;this._checkArrowsState(I)}if(window.dhx4.isIE6){var s=J+"_ie6cover";if(this.idPull[s]==null){var r=document.createElement("IFRAME");r.className="dhtmlxMenu_IE6CoverFix_"+this.conf.skin;r.frameBorder=0;r.setAttribute("src","javascript:false;");document.body.insertBefore(r,document.body.firstChild);this.idPull[s]=r}this.idPull[s].style.left=v+"px";this.idPull[s].style.top=u+"px";this.idPull[s].style.width=this.idPull[J].offsetWidth+"px";this.idPull[s].style.height=this.idPull[J].offsetHeight+"px";this.idPull[s].style.zIndex=this.idPull[J].style.zIndex-1;this.idPull[s].style.display=""}}I=String(I).replace(this.idPrefix,"");if(I==this.topId){I=null}this.callEvent("onShow",[I]);if(I!=null&&this.conf.skin=="dhx_terrace"&&this.itemPull[this.idPrefix+I].parent==this.idPrefix+this.topId){this._improveTerraceButton(this.idPrefix+I,false)}}};this._redistribSubLevelSelection=function(s,r){while(this.conf.opened_poly.length>0){this.conf.opened_poly.pop()}var a=this._getSubItemToDeselectByPolygon(r);this._removeSubItemFromSelected(-1,-1);for(var n=0;n<a.length;n++){if((this.idPull[a[n]]!=null)&&(a[n]!=s)){if(this.itemPull[a[n]]["state"]=="enabled"){this.idPull[a[n]].className="sub_item"}}}for(var n=0;n<this.conf.opened_poly.length;n++){if(this.conf.opened_poly[n]!=r){this._hidePolygon(this.conf.opened_poly[n])}}if(this.itemPull[s]["state"]=="enabled"){this.idPull[s].className="sub_item_selected";if(this.itemPull[s]["complex"]&&this.conf.dload&&(this.itemPull[s]["loaded"]=="no")){if(this.conf.dload_icon==true){this._updateLoaderIcon(s,true)}this.itemPull[s].loaded="get";var o=s.replace(this.idPrefix,"");this._dhxdataload.onBeforeXLS=function(){var u={params:{}};u.params[this.conf.dload_pid]=o;for(var q in this.conf.dload_params){u.params[q]=this.conf.dload_params[q]}return u};this.loadStruct(this.conf.dload_url)}if(this.itemPull[s]["complex"]||(this.conf.dload&&(this.itemPull[s]["loaded"]=="yes"))){if((this.itemPull[s]["complex"])&&(this.idPull["polygon_"+s]!=null)){this._updateItemComplexState(s,true,true);this._showPolygon(s,this.conf.dir_sublv)}}this._addSubItemToSelected(s,r);this.conf.selected=s}};this._doOnClick=function(n,x,r){this.conf.last_click=n;if(this.itemPull[this.idPrefix+n]["href_link"]!=null&&this.itemPull[this.idPrefix+n].state=="enabled"){var s=document.createElement("FORM");var v=String(this.itemPull[this.idPrefix+n]["href_link"]).split("?");s.action=v[0];if(v[1]!=null){var o=String(v[1]).split("&");for(var a=0;a<o.length;a++){var w=String(o[a]).split("=");var u=document.createElement("INPUT");u.type="hidden";u.name=(w[0]||"");u.value=(w[1]||"");s.appendChild(u)}}if(this.itemPull[this.idPrefix+n]["href_target"]!=null){s.target=this.itemPull[this.idPrefix+n]["href_target"]}s.style.display="none";document.body.appendChild(s);s.submit();if(s!=null){document.body.removeChild(s);s=null}return}if(x.charAt(0)=="c"){return}if(x.charAt(1)=="d"){return}if(x.charAt(2)=="s"){return}if(this.checkEvent("onClick")){this.callEvent("onClick",[n,this.conf.ctx_zoneid,r])}else{if((x.charAt(1)=="d")||(this.conf.mode=="win"&&x.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(o,s){var a=new Array();for(var r=0;r<s.length;r++){if(typeof(s[r])=="object"){if(s[r].length==5){if(typeof(s[r][0])!="object"){if((s[r][0].replace(this.idPrefix,"")==o)&&(r==0)){a=s}}}var n=this._searchMenuNode(o,s[r]);if(n.length>0){a=n}}}return a};this._getMenuNodes=function(q){var n=new Array;for(var o in this.itemPull){if(this.itemPull[o]["parent"]==q){n[n.length]=o}}return n};this._genStr=function(a){var n="";var r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var o=0;o<a;o++){n+=r.charAt(Math.round(Math.random()*(r.length-1)))}return n};this.getItemType=function(a){a=this.idPrefix+a;if(this.itemPull[a]==null){return null}return this.itemPull[a]["type"]};this.forEachItem=function(o){for(var n in this.itemPull){o(String(n).replace(this.idPrefix,""))}};this._clearAndHide=function(){h.conf.selected=-1;h.conf.last_click=-1;while(h.conf.opened_poly.length>0){h.conf.opened_poly.pop()}for(var a=0;a<h.conf.selected_sub.length;a++){var n=h.conf.selected_sub[a][0];if(h.idPull[n]!=null){if(h.itemPull[n]["state"]=="enabled"){if(h.idPull[n].className=="sub_item_selected"){h.idPull[n].className="sub_item"}if(h.idPull[n].className=="dhtmlxMenu_"+h.conf.skin+"_TopLevel_Item_Selected"){if(h.itemPull[n]["cssNormal"]!=null){h.idPull[n].className=h.itemPull[n]["cssNormal"]}else{h.idPull[n].className="dhtmlxMenu_"+h.conf.skin+"_TopLevel_Item_Normal"}}}}h._hidePolygon(n)}h.conf.is_touched=false;if(h.conf.context&&h.conf.ctx_hideall){h._hidePolygon(h.idPrefix+h.topId)}};this._showSubLevelItem=function(n,a){if(document.getElementById("arrow_"+this.idPrefix+n)!=null){document.getElementById("arrow_"+this.idPrefix+n).style.display=(a?"none":"")}if(document.getElementById("image_"+this.idPrefix+n)!=null){document.getElementById("image_"+this.idPrefix+n).style.display=(a?"none":"")}if(document.getElementById(this.idPrefix+n)!=null){document.getElementById(this.idPrefix+n).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(h.conf.context){if(h.conf.ctx_autohide&&(!window.dhx4.isOpera||(h._isContextMenuVisible()&&window.dhx4.isOpera))){h._hideContextMenu()}}else{if(h._clearAndHide){h._clearAndHide()}}};this._bodyContext=function(o){o=o||event;var n=String((o.srcElement||o.target).className);if(n.search("dhtmlxMenu")!=-1&&n.search("SubLevelArea")!=-1){return}var a=true;var q=o.target||o.srcElement;while(q!=null){if(q.id!=null){if(h.isContextZone(q.id)){a=false}}if(q==document.body){a=false}q=q.parentNode}if(a){h.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(o){}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 n in this.conf.ctx_zones){this.removeContextZone(n)}}if(this.cont!=null){this.cont.className="";this.cont.parentNode.removeChild(this.cont);this.cont=null}if(this.base!=null){this.base.className="";if(!this.conf.context){this.base.oncontextmenu=(this.base._oldContextMenuHandler||null)}this.base.onselectstart=null;this.base=null}for(var n in this){this[n]=null}h=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 g in {onclick:1,oncheckboxclick:1,onradioclick:1}){if(this.conf.autoload[g]!=null){if(typeof(this.conf.autoload[g])=="function"){this.attachEvent(g,this.conf.autoload[g])}else{if(typeof(window[this.conf.autoload[g]])=="function"){this.attachEvent(g,window[this.conf.autoload[g]])}}}}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 g in this.conf.autoload){this.conf.autoload[g]=null;delete this.conf.autoload[g]}this.conf.autoload=null;return this}dhtmlXMenuObject.prototype._init=function(){if(this._isInited==true){return}if(this.conf.dload){this._dhxdataload.onBeforeXLS=function(){var g={params:{}};for(var c in this.conf.dload_params){g.params[c]=this.conf.dload_params[c]}return g};this.loadStruct(this.conf.dload_url)}else{this._initTopLevelMenu();this._isInited=true}};dhtmlXMenuObject.prototype._countVisiblePolygonItems=function(m){var h=0;for(var c in this.itemPull){var g=this.itemPull[c]["parent"];var l=this.itemPull[c]["type"];if(this.idPull[c]!=null){if(g==m&&(l=="item"||l=="radio"||l=="checkbox")&&this.idPull[c].style.display!="none"){h++}}}return h};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(l,g,h){if((!this.conf.context)&&(this._getItemLevelType(l.replace(this.idPrefix,""))=="TopLevel")){this.itemPull[l]["complex"]=g;return}if((this.idPull[l]==null)||(this.itemPull[l]==null)){return}this.itemPull[l]["complex"]=g;if(l==this.idPrefix+this.topId){return}var a=null;var c=this.idPull[l].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[l]["complex"]){if(a==null){a=document.createElement("DIV");a.className="complex_arrow";a.id="arrow_"+l;while(c.childNodes.length>0){c.removeChild(c.childNodes[0])}c.appendChild(a)}if(this.conf.dload&&(this.itemPull[l].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[l]["complex"])&&(a!=null)){c.removeChild(a);if(this.itemPull[l]["hotkey_backup"]!=null&&this.setHotKey){this.setHotKey(l.replace(this.idPrefix,""),this.itemPull[l]["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 o=this.itemPull[g]["type"];if(o=="checkbox"||o=="radio"){return}var l=(this.itemPull[g]["parent"]==this.idPrefix+this.topId&&!this.conf.context);var m=null;if(l){for(var a=0;a<this.idPull[g].childNodes.length;a++){try{if(this.idPull[g].childNodes[a].className=="dhtmlxMenu_TopLevel_Item_Icon"){m=this.idPull[g].childNodes[a]}}catch(n){}}}else{try{var m=this.idPull[g].childNodes[this.conf.rtl?2:0].childNodes[0]}catch(n){}if(!(m!=null&&typeof(m.className)!="undefined"&&m.className=="sub_icon")){m=null}}var s=this.itemPull[g][(this.itemPull[g]["state"]=="enabled"?"imgen":"imgdis")];if(s.length>0){if(m!=null){m.src=this.conf.icons_path+s}else{if(l){var m=document.createElement("IMG");m.className="dhtmlxMenu_TopLevel_Item_Icon";m.src=this.conf.icons_path+s;m.border="0";m.id="image_"+g;if(!this.conf.rtl&&this.idPull[g].childNodes.length>0){this.idPull[g].insertBefore(m,this.idPull[g].childNodes[0])}else{this.idPull[g].appendChild(m)}}else{var m=document.createElement("IMG");m.className="sub_icon";m.src=this.conf.icons_path+s;m.border="0";m.id="image_"+g;var r=this.idPull[g].childNodes[this.conf.rtl?2:0];while(r.childNodes.length>0){r.removeChild(r.childNodes[0])}r.appendChild(m)}}}else{if(m!=null){var c=m.parentNode;c.removeChild(m);c.innerHTML=" ";c=m=null}}};dhtmlXMenuObject.prototype._getAllParents=function(m){var g=new Array();for(var c in this.itemPull){if(this.itemPull[c]["parent"]==m){g[g.length]=this.itemPull[c]["id"];if(this.itemPull[c]["complex"]){var h=this._getAllParents(this.itemPull[c]["id"]);for(var l=0;l<h.length;l++){g[g.length]=h[l]}}}}return g};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(l){l=this.idPrefix+l;var h=-1;if(this.itemPull[l]==null){return h}var a=this.itemPull[l]["parent"];var g=(this.idPull["polygon_"+a]!=null?this.idPull["polygon_"+a].tbd:this.cont);for(var c=0;c<g.childNodes.length;c++){if(g.childNodes[c]==this.idPull["separator_"+l]||g.childNodes[c]==this.idPull[l]){h=c}}return h};dhtmlXMenuObject.prototype.setItemPosition=function(n,m){n=this.idPrefix+n;if(this.idPull[n]==null){return}var c=(this.itemPull[n]["parent"]==this.idPrefix+this.topId);var a=this.idPull[n];var h=this.getItemPosition(n.replace(this.idPrefix,""));var g=this.itemPull[n]["parent"];var l=(this.idPull["polygon_"+g]!=null?this.idPull["polygon_"+g].tbd:this.cont);l.removeChild(l.childNodes[h]);if(m<0){m=0}if(c&&m<1){m=1}if(m<l.childNodes.length){l.insertBefore(a,l.childNodes[m])}else{l.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(h,c){var a=this._getSubItemToDeselectByPolygon("parent");this._removeSubItemFromSelected(-1,-1);for(var g=0;g<a.length;g++){if(a[g]!=h){this._hidePolygon(a[g])}if((this.idPull[a[g]]!=null)&&(a[g]!=h)){this.idPull[a[g]].className=this.idPull[a[g]].className.replace(/Selected/g,"Normal")}}if(this.itemPull[this.idPrefix+h]["state"]=="enabled"){this.idPull[this.idPrefix+h].className="dhtmlxMenu_"+this.conf.skin+"_TopLevel_Item_Selected";this._addSubItemToSelected(this.idPrefix+h,"parent");this.conf.selected=(this.conf.mode=="win"?(this.conf.selected!=-1?h:this.conf.selected):h);if((this.itemPull[this.idPrefix+h]["complex"])&&(this.conf.selected!=-1)){this._showPolygon(this.idPrefix+h,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(o,n){var l=this;var a=document.createElement("DIV");a.id=o;if(this.itemPull[o]["state"]=="enabled"&&this.itemPull[o]["cssNormal"]!=null){a.className=this.itemPull[o]["cssNormal"]}else{a.className="dhtmlxMenu_"+this.conf.skin+"_TopLevel_Item_"+(this.itemPull[o]["state"]=="enabled"?"Normal":"Disabled")}if(this.itemPull[o]["title"]!=""){var h=document.createElement("DIV");h.className="top_level_text";h.innerHTML=this.itemPull[o]["title"];a.appendChild(h)}if(this.itemPull[o]["tip"].length>0){a.title=this.itemPull[o]["tip"]}if((this.itemPull[o]["imgen"]!="")||(this.itemPull[o]["imgdis"]!="")){var g=this.itemPull[o][(this.itemPull[o]["state"]=="enabled")?"imgen":"imgdis"];if(g){var c=document.createElement("IMG");c.border="0";c.id="image_"+o;c.src=this.conf.icons_path+g;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(n!=null){n++;if(n<0){n=0}if(n>this.cont.childNodes.length-1){n=null}}if(n!=null){this.cont.insertBefore(a,this.cont.childNodes[n])}else{this.cont.appendChild(a)}this.idPull[a.id]=a;if(this.itemPull[o]["complex"]&&(!this.conf.dload)){this._addSubMenuPolygon(this.itemPull[o]["id"],this.itemPull[o]["id"])}a.onmouseover=function(){if(l.conf.mode=="web"){window.clearTimeout(l.conf.tm_handler)}var m=l._getSubItemToDeselectByPolygon("parent");l._removeSubItemFromSelected(-1,-1);for(var s=0;s<m.length;s++){if(m[s]!=this.id){l._hidePolygon(m[s])}if((l.idPull[m[s]]!=null)&&(m[s]!=this.id)){if(l.itemPull[m[s]]["cssNormal"]!=null){l.idPull[m[s]].className=l.itemPull[m[s]]["cssNormal"]}else{if(l.idPull[m[s]].className=="sub_item_selected"){l.idPull[m[s]].className="sub_item"}l.idPull[m[s]].className=l.idPull[m[s]].className.replace(/Selected/g,"Normal")}}}if(l.itemPull[this.id]["state"]=="enabled"){this.className="dhtmlxMenu_"+l.conf.skin+"_TopLevel_Item_Selected";l._addSubItemToSelected(this.id,"parent");l.conf.selected=(l.conf.mode=="win"?(l.conf.selected!=-1?this.id:l.conf.selected):this.id);if(l.conf.dload){if(l.itemPull[this.id].loaded=="no"){this._dynLoadTM=new Date().getTime();l.itemPull[this.id].loaded="get";var u=this.id.replace(l.idPrefix,"");l._dhxdataload.onBeforeXLS=function(){var v={params:{}};v.params[this.conf.dload_pid]=u;for(var q in this.conf.dload_params){v.params[q]=this.conf.dload_params[q]}return v};l.loadStruct(l.conf.dload_url)}if(l.conf.top_mode&&l.conf.mode=="web"&&!l.conf.context){this._mouseOver=true}}if((!l.conf.dload)||(l.conf.dload&&(!l.itemPull[this.id]["loaded"]||l.itemPull[this.id]["loaded"]=="yes"))){if((l.itemPull[this.id]["complex"])&&(l.conf.selected!=-1)){if(l.conf.top_mode&&l.conf.mode=="web"&&!l.conf.context){this._mouseOver=true;var r=this.id;this._menuOpenTM=window.setTimeout(function(){l._showPolygon(r,l.conf.dir_toplv)},l.conf.top_tmtime)}else{l._showPolygon(this.id,l.conf.dir_toplv)}}}}l._doOnTouchMenu(this.id.replace(l.idPrefix,""))};a.onmouseout=function(){if(!((l.itemPull[this.id]["complex"])&&(l.conf.selected!=-1))&&(l.itemPull[this.id]["state"]=="enabled")){if(l.itemPull[this.id]["cssNormal"]!=null){a.className=l.itemPull[this.id]["cssNormal"]}else{a.className="dhtmlxMenu_"+l.conf.skin+"_TopLevel_Item_Normal"}}if(l.conf.mode=="web"){window.clearTimeout(l.conf.tm_handler);l.conf.tm_handler=window.setTimeout(function(){l._clearAndHide()},l.conf.tm_sec,"JavaScript")}if(l.conf.top_mode&&l.conf.mode=="web"&&!l.conf.context){this._mouseOver=false;window.clearTimeout(this._menuOpenTM)}};a.onclick=function(u){if(l.conf.mode=="web"){window.clearTimeout(l.conf.tm_handler)}if(l.conf.mode!="web"&&l.itemPull[this.id]["state"]=="disabled"){return}u=u||event;u.cancelBubble=true;if(u.preventDefault){u.preventDefault()}else{u.returnValue=false}if(l.conf.mode=="win"){if(l.itemPull[this.id]["complex"]){if(l.conf.selected==this.id){l.conf.selected=-1;var r=false}else{l.conf.selected=this.id;var r=true}if(r){l._showPolygon(this.id,l.conf.dir_toplv)}else{l._hidePolygon(this.id)}}}var m=(l.itemPull[this.id]["complex"]?"c":"-");var v=(l.itemPull[this.id]["state"]!="enabled"?"d":"-");var q={ctrl:u.ctrlKey,alt:u.altKey,shift:u.shiftKey};l._doOnClick(this.id.replace(l.idPrefix,""),m+v+"t",q);return false};if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXMenuObject.prototype._addSubMenuPolygon=function(m,l){var c=this._renderSublevelPolygon(m,l);var a=this._getMenuNodes(l);for(g=0;g<a.length;g++){if(this.itemPull[a[g]]["type"]=="separator"){this._renderSeparator(a[g],null)}else{this._renderSublevelItem(a[g],null)}}if(m==l){var h="topLevel"}else{var h="subLevel"}for(var g=0;g<a.length;g++){if(this.itemPull[a[g]]["complex"]){this._addSubMenuPolygon(m,this.itemPull[a[g]]["id"])}}};dhtmlXMenuObject.prototype._renderSublevelPolygon=function(l,h){var c=document.createElement("DIV");c.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_Polygon "+(this.conf.rtl?"dir_right":"");c.dir="ltr";c.oncontextmenu=function(m){m=m||event;if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}m.cancelBubble=true;return false};c.id="polygon_"+h;c.onclick=function(m){m=m||event;m.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 g=document.createElement("TABLE");g.className="dhtmlxMebu_SubLevelArea_Tbl";g.cellSpacing=0;g.cellPadding=0;g.border=0;var a=document.createElement("TBODY");g.appendChild(a);c.childNodes[1].appendChild(g);c.tbl=g;c.tbd=a;this.idPull[c.id]=c;if(this.sxDacProc!=null){this.idPull["sxDac_"+h]=new this.sxDacProc(c,c.className);if(window.dhx4.isIE){this.idPull["sxDac_"+h]._setSpeed(this.dacSpeedIE);this.idPull["sxDac_"+h]._setCustomCycle(this.dacCyclesIE)}else{this.idPull["sxDac_"+h]._setSpeed(this.dacSpeed);this.idPull["sxDac_"+h]._setCustomCycle(this.dacCycles)}}return c};dhtmlXMenuObject.prototype._renderSublevelItem=function(a,r){var o=this;var q=document.createElement("TR");q.className=(this.itemPull[a]["state"]=="enabled"?"sub_item":"sub_item_dis");var n=document.createElement("TD");n.className="sub_item_icon";var s=this.itemPull[a][(this.itemPull[a]["state"]=="enabled"?"imgen":"imgdis")];if(s!=""){var w=this.itemPull[a]["type"];if(w=="checkbox"||w=="radio"){var l=document.createElement("DIV");l.id="image_"+this.itemPull[a]["id"];l.className="sub_icon "+s;n.appendChild(l)}if(!(w=="checkbox"||w=="radio")){var l=document.createElement("IMG");l.id="image_"+this.itemPull[a]["id"];l.className="sub_icon";l.src=this.conf.icons_path+s;n.appendChild(l)}}else{n.innerHTML=" "}var m=document.createElement("TD");m.className="sub_item_text";if(this.itemPull[a]["title"]!=""){var v=document.createElement("DIV");v.className="sub_item_text";v.innerHTML=this.itemPull[a]["title"];m.appendChild(v)}else{m.innerHTML=" "}var h=document.createElement("TD");h.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"];h.appendChild(c)}else{if(this.itemPull[a]["hotkey"].length>0&&!this.itemPull[a]["complex"]){var g=document.createElement("DIV");g.className="sub_item_hk";g.innerHTML=this.itemPull[a]["hotkey"];h.appendChild(g)}else{h.innerHTML=" "}}q.appendChild(this.conf.rtl?h:n);q.appendChild(m);q.appendChild(this.conf.rtl?n:h);q.id=this.itemPull[a]["id"];q.parent=this.itemPull[a]["parent"];if(this.itemPull[a]["tip"].length>0){q.title=this.itemPull[a]["tip"]}q.onselectstart=function(x){x=x||event;if(x.preventDefault){x.preventDefault()}else{x.returnValue=false}return false};q.onmouseover=function(x){if(o.conf.hide_tm[this.id]){window.clearTimeout(o.conf.hide_tm[this.id])}if(o.conf.mode=="web"){window.clearTimeout(o.conf.tm_handler)}if(!this._visible){o._redistribSubLevelSelection(this.id,this.parent)}this._visible=true};q.onmouseout=function(){if(o.conf.mode=="web"){if(o.conf.tm_handler){window.clearTimeout(o.conf.tm_handler)}o.conf.tm_handler=window.setTimeout(function(){if(o&&o._clearAndHide){o._clearAndHide()}},o.conf.tm_sec,"JavaScript")}var x=this;if(o.conf.hide_tm[this.id]){window.clearTimeout(o.conf.hide_tm[this.id])}o.conf.hide_tm[this.id]=window.setTimeout(function(){x._visible=false},50)};q.onclick=function(y){if(!o.checkEvent("onClick")&&o.itemPull[this.id]["complex"]){return}y=y||event;y.cancelBubble=true;if(y.preventDefault){y.preventDefault()}else{y.returnValue=false}tc=(o.itemPull[this.id]["complex"]?"c":"-");td=(o.itemPull[this.id]["state"]=="enabled"?"-":"d");var x={ctrl:y.ctrlKey,alt:y.altKey,shift:y.shiftKey};switch(o.itemPull[this.id]["type"]){case"checkbox":o._checkboxOnClickHandler(this.id.replace(o.idPrefix,""),tc+td+"n",x);break;case"radio":o._radioOnClickHandler(this.id.replace(o.idPrefix,""),tc+td+"n",x);break;case"item":o._doOnClick(this.id.replace(o.idPrefix,""),tc+td+"n",x);break}return false};var u=this.idPull["polygon_"+this.itemPull[a]["parent"]];if(r!=null){r++;if(r<0){r=0}if(r>u.tbd.childNodes.length-1){r=null}}if(r!=null&&u.tbd.childNodes[r]!=null){u.tbd.insertBefore(q,u.tbd.childNodes[r])}else{u.tbd.appendChild(q)}this.idPull[q.id]=q};dhtmlXMenuObject.prototype._renderSeparator=function(c,n){var a=(this.conf.context?"SubLevelArea":(this.itemPull[c]["parent"]==this.idPrefix+this.topId?"TopLevel":"SubLevelArea"));if(a=="TopLevel"&&this.conf.context){return}var l=this;if(a!="TopLevel"){var m=document.createElement("TR");m.className="sub_sep";var g=document.createElement("TD");g.colSpan="3";m.appendChild(g)}var h=document.createElement("DIV");h.id="separator_"+c;h.className=(a=="TopLevel"?"top_sep":"sub_sep");h.onselectstart=function(r){r=r||event;if(r.preventDefault){r.preventDefault()}else{r.returnValue=false}};h.onclick=function(s){s=s||event;s.cancelBubble=true;var r={ctrl:s.ctrlKey,alt:s.altKey,shift:s.shiftKey};l._doOnClick(this.id.replace("separator_"+l.idPrefix,""),"--s",r)};if(a=="TopLevel"){if(n!=null){n++;if(n<0){n=0}if(this.cont.childNodes[n]!=null){this.cont.insertBefore(h,this.cont.childNodes[n])}else{this.cont.appendChild(h)}}else{var q=this.cont.childNodes[this.cont.childNodes.length-1];if(String(q).search("TopLevel_Text")==-1){this.cont.appendChild(h)}else{this.cont.insertBefore(h,q)}}this.idPull[h.id]=h}else{var o=this.idPull["polygon_"+this.itemPull[c]["parent"]];if(n!=null){n++;if(n<0){n=0}if(n>o.tbd.childNodes.length-1){n=null}}if(n!=null&&o.tbd.childNodes[n]!=null){o.tbd.insertBefore(m,o.tbd.childNodes[n])}else{o.tbd.appendChild(m)}g.appendChild(h);this.idPull[h.id]=m}};dhtmlXMenuObject.prototype.addNewSeparator=function(a,c){c=this.idPrefix+(c!=null?c:this._genStr(24));var g=this.idPrefix+this.getParentId(a);this._addItemIntoGlobalStrorage(c,g,"","separator",false,"","");this._renderSeparator(c,this.getItemPosition(a))};dhtmlXMenuObject.prototype._initObj=function(u,v,n){if(!(u instanceof Array)){n=u.parentId;if(n!=null&&String(n).indexOf(this.idPrefix)!==0){n=this.idPrefix+String(n)}u=u.items}for(var g=0;g<u.length;g++){if(typeof(u[g].id)=="undefined"||u[g].id==null){u[g].id=this._genStr(24)}if(String(u[g].id).indexOf(this.idPrefix)!==0){u[g].id=this.idPrefix+String(u[g].id)}var h={type:"item",tip:"",hotkey:"",state:"enabled",imgen:"",imgdis:""};for(var w in h){if(typeof(u[g][w])=="undefined"){u[g][w]=h[w]}}if(u[g].imgen==""&&u[g].img!=null){u[g].imgen=u[g].img}if(u[g].imgdis==""&&u[g].img_disabled!=null){u[g].imgdis=u[g].img_disabled}if(u[g].title==null&&u[g].text!=null){u[g].title=u[g].text}if(u[g].href!=null){if(u[g].href.link!=null){u[g].href_link=u[g].href.link}if(u[g].href.target!=null){u[g].href_target=u[g].href.target}}if(u[g].userdata!=null){for(var w in u[g].userdata){this.userData[u[g].id+"_"+w]=u[g].userdata[w]}}if(typeof(u[g].enabled)!="undefined"&&window.dhx4.s2b(u[g].enabled)==false){u[g].state="disabled"}else{if(typeof(u[g].disabled)!="undefined"&&window.dhx4.s2b(u[g].disabled)==true){u[g].state="disabled"}}if(typeof(u[g].parent)=="undefined"){u[g].parent=(n!=null?n:this.idPrefix+this.topId)}if(u[g].type=="checkbox"){u[g].checked=window.dhx4.s2b(u[g].checked);u[g].imgen=u[g].imgdis="chbx_"+(u[g].checked?"1":"0")}if(u[g].type=="radio"){u[g].checked=window.dhx4.s2b(u[g].checked);u[g].imgen=u[g].imgdis="rdbt_"+(u[g].checked?"1":"0");if(typeof(u[g].group)=="undefined"||u[g].group==null){u[g].group=this._genStr(24)}if(this.radio[u[g].group]==null){this.radio[u[g].group]=[]}this.radio[u[g].group].push(u[g].id)}this.itemPull[u[g].id]=u[g];if(u[g].items!=null&&u[g].items.length>0){this.itemPull[u[g].id].complex=true;this._initObj(u[g].items,true,u[g].id)}else{if(this.conf.dload&&u[g].complex==true){this.itemPull[u[g].id].loaded="no"}}this.itemPull[u[g].id].items=null}if(v!==true){if(this.conf.dload==true){if(n==null){this._initTopLevelMenu()}else{this._addSubMenuPolygon(n,n);if(this.conf.selected==n){var s=(this.itemPull[n].parent==this.idPrefix+this.topId);var c=(s&&!this.conf.context?this.conf.dir_toplv:this.conf.dir_sublv);var l=false;if(s&&this.conf.top_mode&&this.conf.mode=="web"&&!this.conf.context){var x=this.idPull[n];if(x._mouseOver==true){var m=this.conf.top_tmtime-(new Date().getTime()-x._dynLoadTM);if(m>1){var r=n;var o=this;x._menuOpenTM=window.setTimeout(function(){o._showPolygon(r,c);o=r=null},m);l=true}}}if(!l){this._showPolygon(n,c)}}this.itemPull[n].loaded="yes";if(this.conf.dload_icon==true){this._updateLoaderIcon(n,false)}}}else{this._init()}}};dhtmlXMenuObject.prototype._xmlToJson=function(l,h){var n=[];if(h==null){var o=l.getElementsByTagName(this.conf.tags.root);if(o==null||o.length==0){return data}o=o[0]}else{o=l}if(o.getAttribute("parentId")!=null){h=this.idPrefix+o.getAttribute("parentId")}for(var c=0;c<o.childNodes.length;c++){if(typeof(o.childNodes[c].tagName)!="undefined"&&String(o.childNodes[c].tagName).toLowerCase()==this.conf.tags.item){var a=o.childNodes[c];var v={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){v.cssNormal=a.getAttribute("cssNormal")}if(v.type=="checkbox"){v.checked=a.getAttribute("checked")}if(v.type=="radio"){v.checked=a.getAttribute("checked");v.group=a.getAttribute("group")}v.state="enabled";if(a.getAttribute("enabled")!=null&&window.dhx4.s2b(a.getAttribute("enabled"))==false){v.state="disabled"}else{if(a.getAttribute("disabled")!=null&&window.dhx4.s2b(a.getAttribute("disabled"))==true){v.state="disabled"}}v.parent=(h!=null?h:this.idPrefix+this.topId);if(this.conf.dload){v.complex=(a.getAttribute("complex")!=null);if(v.complex){v.loaded="no"}}else{var g=this._xmlToJson(a,v.id);v.items=g.items;v.complex=(v.items.length>0)}for(var s=0;s<a.childNodes.length;s++){if(typeof(a.childNodes[s].tagName)!="undefined"){var u=String(a.childNodes[s].tagName||"").toLowerCase();if(u==this.conf.tags.userdata){var m=a.childNodes[s];if(m.getAttribute("name")!=null){this.userData[v.id+"_"+m.getAttribute("name")]=(m.firstChild!=null&&m.firstChild.nodeValue!=null?m.firstChild.nodeValue:"")}}if(u==this.conf.tags.text_ext){v.title=a.childNodes[s].firstChild.nodeValue}if(u==this.conf.tags.tooltip){v.tip=a.childNodes[s].firstChild.nodeValue}if(u==this.conf.tags.hotkey){v.hotkey=a.childNodes[s].firstChild.nodeValue}if(u==this.conf.tags.href&&v.type=="item"){v.href_link=a.childNodes[s].firstChild.nodeValue;if(a.childNodes[s].getAttribute("target")!=null){v.href_target=a.childNodes[s].getAttribute("target")}}}}n.push(v)}}var a={parentId:h,items:n};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(h,g){if(this.idPull[h]==null){return}if(String(this.idPull[h].className).search("TopLevel_Item")>=0){return}var c=(this.conf.rtl?0:2);if(!this.idPull[h].childNodes[c]){return}if(!this.idPull[h].childNodes[c].childNodes[0]){return}var a=this.idPull[h].childNodes[c].childNodes[0];if(String(a.className).search("complex_arrow")===0){a.className="complex_arrow"+(g?"_loading":"")}};dhtmlXMenuObject.prototype.addNewSibling=function(h,l,a,c,g,o){var n=this.idPrefix+(l!=null?l:this._genStr(24));var m=this.idPrefix+(h!=null?this.getParentId(h):this.topId);this._addItemIntoGlobalStrorage(n,m,a,"item",c,g,o);if((m==this.idPrefix+this.topId)&&(!this.conf.context)){this._renderToplevelItem(n,this.getItemPosition(h))}else{this._renderSublevelItem(n,this.getItemPosition(h))}};dhtmlXMenuObject.prototype.addNewChild=function(n,m,h,a,c,g,l){if(n==null){if(this.conf.context){n=this.topId}else{this.addNewSibling(n,h,a,c,g,l);if(m!=null){this.setItemPosition(h,m)}return}}h=this.idPrefix+(h!=null?h:this._genStr(24));if(this.setHotKey){this.setHotKey(n,"")}n=this.idPrefix+n;this._addItemIntoGlobalStrorage(h,n,a,"item",c,g,l);if(this.idPull["polygon_"+n]==null){this._renderSublevelPolygon(n,n)}this._renderSublevelItem(h,m-1);this._redefineComplexState(n)};dhtmlXMenuObject.prototype.removeItem=function(h,m,l){if(!m){h=this.idPrefix+h}var n=null;if(h!=this.idPrefix+this.topId){if(this.itemPull[h]==null){return}if(this.idPull["polygon_"+h]&&this.idPull["polygon_"+h]._tmShow){window.clearTimeout(this.idPull["polygon_"+h]._tmShow)}var v=this.itemPull[h]["type"];if(v=="separator"){var u=this.idPull["separator_"+h];if(this.itemPull[h]["parent"]==this.idPrefix+this.topId){u.onclick=null;u.onselectstart=null;u.id=null;u.parentNode.removeChild(u)}else{u.childNodes[0].childNodes[0].onclick=null;u.childNodes[0].childNodes[0].onselectstart=null;u.childNodes[0].childNodes[0].id=null;u.childNodes[0].removeChild(u.childNodes[0].childNodes[0]);u.removeChild(u.childNodes[0]);u.parentNode.removeChild(u)}this.idPull["separator_"+h]=null;this.itemPull[h]=null;delete this.idPull["separator_"+h];delete this.itemPull[h];u=null}else{n=this.itemPull[h]["parent"];var u=this.idPull[h];u.onclick=null;u.oncontextmenu=null;u.onmouseover=null;u.onmouseout=null;u.onselectstart=null;u.id=null;while(u.childNodes.length>0){u.removeChild(u.childNodes[0])}u.parentNode.removeChild(u);this.idPull[h]=null;this.itemPull[h]=null;delete this.idPull[h];delete this.itemPull[h];u=null}v=null}for(var r in this.itemPull){if(this.itemPull[r]["parent"]==h){this.removeItem(r,true,true)}}var s=new Array(h);if(n!=null&&!l){if(this.idPull["polygon_"+n]!=null){if(this.idPull["polygon_"+n].tbd.childNodes.length==0){s.push(n);this._updateItemComplexState(n,false,false)}}}for(var c=0;c<s.length;c++){if(this.idPull["polygon_"+s[c]]){var g=this.idPull["polygon_"+s[c]];g.onclick=null;g.oncontextmenu=null;g.tbl.removeChild(g.tbd);g.tbd=null;g.childNodes[1].removeChild(g.tbl);g.tbl=null;g.id=null;g.parentNode.removeChild(g);g=null;if(window.dhx4.isIE6){var o="polygon_"+s[c]+"_ie6cover";if(this.idPull[o]!=null){document.body.removeChild(this.idPull[o]);delete this.idPull[o]}}if(this.idPull["arrowup_"+h]!=null&&this._removeArrow){this._removeArrow("arrowup_"+h)}if(this.idPull["arrowdown_"+h]!=null&&this._removeArrow){this._removeArrow("arrowdown_"+h)}this.idPull["polygon_"+s[c]]=null;delete this.idPull["polygon_"+s[c]]}}s=null;if(this.conf.skin=="dhx_terrace"&&arguments.length==1){this._improveTerraceSkin()}};dhtmlXMenuObject.prototype._addItemIntoGlobalStrorage=function(o,a,g,n,h,c,m){var l={id:o,title:g,imgen:(c!=null?c:""),imgdis:(m!=null?m:""),type:n,state:(h==true?"disabled":"enabled"),parent:a,complex:false,hotkey:"",tip:""};this.itemPull[l.id]=l};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 h=document.body}else{var h=document.getElementById(c)}var m=false;for(var g in this.conf.ctx_zones){m=m||(g==c)||(this.conf.ctx_zones[g]==h)}if(m==true){return false}this.conf.ctx_zones[c]=h;var l=this;if(window.dhx4.isOpera){this.operaContext=function(a){l._doOnContextMenuOpera(a,l)};h.addEventListener("mouseup",this.operaContext,false)}else{if(h.oncontextmenu!=null&&!h._oldContextMenuHandler){h._oldContextMenuHandler=h.oncontextmenu}h.oncontextmenu=function(n){for(var a in dhtmlXMenuObject.prototype.liveInst){if(a!=l.conf.live_id){if(dhtmlXMenuObject.prototype.liveInst[a].context){dhtmlXMenuObject.prototype.liveInst[a]._hideContextMenu()}}}n=n||event;n.cancelBubble=true;if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}l._doOnContextBeforeCall(n,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,g,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,g);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(l,n){this.conf.ctx_zoneid=n.id;this._clearAndHide();this._hideContextMenu();var h=(l.srcElement||l.target);var c=(window.dhx4.isIE||window.dhx4.isOpera||window.dhx4.isKHTML?l.offsetX:l.layerX);var a=(window.dhx4.isIE||window.dhx4.isOpera||window.dhx4.isKHTML?l.offsetY:l.layerY);var m=window.dhx4.absLeft(h)+c;var g=window.dhx4.absTop(h)+a;if(this.checkEvent("onBeforeContextMenu")){if(this.callEvent("onBeforeContextMenu",[n.id,l])){if(this.conf.ctx_autoshow){this._showContextMenu(m,g,n.id);this.callEvent("onAfterContextMenu",[n.id,l])}}}else{if(this.conf.ctx_autoshow){this._showContextMenu(m,g,n.id);this.callEvent("onAfterContextMenu",[n.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 g in this.itemPull){if(this.itemPull[g].parent==this.idPrefix+this.topId&&this.idPull[g]!=null){var l=false;var h=false;if(this.idPull[g].parentNode.firstChild==this.idPull[g]){l=true}if(this.idPull[g].parentNode.lastChild==this.idPull[g]){h=true}for(var c in this.itemPull){if(this.itemPull[c].type=="separator"&&this.itemPull[c].parent==this.idPrefix+this.topId){if(this.idPull[g].nextSibling==this.idPull["separator_"+c]){h=true}if(this.idPull[g].previousSibling==this.idPull["separator_"+c]){l=true}}}this.idPull[g].style.borderLeftWidth=(l?"1px":"0px");this.idPull[g].style.borderTopLeftRadius=this.idPull[g].style.borderBottomLeftRadius=(l?"3px":"0px");this.idPull[g].style.borderTopRightRadius=this.idPull[g].style.borderBottomRightRadius=(h?"3px":"0px");this.idPull[g]._bl=l;this.idPull[g]._br=h}}};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"}};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(l,h,c){var g=false;var a=this.idPrefix+l;if((this.itemPull[a]!=null)&&(this.idPull[a]!=null)){if(this.itemPull[a]["state"]!=h){this.itemPull[a]["state"]=h;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+l,this.itemPull[this.idPrefix+l]["complex"],false);this._updateItemImage(l,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 g};dhtmlXMenuObject.prototype.getItemText=function(a){return(this.itemPull[this.idPrefix+a]!=null?this.itemPull[this.idPrefix+a]["title"]:"")};dhtmlXMenuObject.prototype.setItemText=function(l,h){l=this.idPrefix+l;if((this.itemPull[l]!=null)&&(this.idPull[l]!=null)){this._clearAndHide();this.itemPull[l]["title"]=h;if(this.itemPull[l]["parent"]==this.idPrefix+this.topId&&!this.conf.context){var g=null;for(var a=0;a<this.idPull[l].childNodes.length;a++){try{if(this.idPull[l].childNodes[a].className=="top_level_text"){g=this.idPull[l].childNodes[a]}}catch(c){}}if(String(this.itemPull[l]["title"]).length==""||this.itemPull[l]["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[l].childNodes.length>0){this.idPull[l].insertBefore(g,this.idPull[l].childNodes[0])}else{this.idPull[l].appendChild(g)}}g.innerHTML=this.itemPull[l]["title"]}}else{var g=null;for(var a=0;a<this.idPull[l].childNodes[1].childNodes.length;a++){if(String(this.idPull[l].childNodes[1].childNodes[a].className||"")=="sub_item_text"){g=this.idPull[l].childNodes[1].childNodes[a]}}if(String(this.itemPull[l]["title"]).length==""||this.itemPull[l]["title"]==null){if(g){g.parentNode.removeChild(g);g=null;this.idPull[l].childNodes[1].innerHTML=" "}}else{if(!g){g=document.createElement("DIV");g.className="sub_item_text";this.idPull[l].childNodes[1].innerHTML="";this.idPull[l].childNodes[1].appendChild(g)}g.innerHTML=this.itemPull[l]["title"]}}}};dhtmlXMenuObject.prototype.loadFromHTML=function(g,m,h){var c=this.conf.tags.item;this.conf.tags.item="div";var l=(typeof(g)=="string"?document.getElementById(g):g);var a=this._xmlToJson(l,this.idPrefix+this.topId);this._initObj(a);this.conf.tags.item=c;if(m){l.parentNode.removeChild(l)}l=objOd=null;if(onload!=null){if(typeof(h)=="function"){h()}else{if(typeof(window[h])=="function"){window[h]()}}}};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(g,c){var a=this.idPrefix+g;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+g]["parent"])};dhtmlXMenuObject.prototype.setUserData=function(g,a,c){this.userData[this.idPrefix+g+"_"+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(g,a,c){if(this.itemPull[this.idPrefix+g]["type"]!="item"){return}this.itemPull[this.idPrefix+g]["imgen"]=a;this.itemPull[this.idPrefix+g]["imgdis"]=c;this._updateItemImage(g,this._getItemLevelType(g))};dhtmlXMenuObject.prototype.clearItemImage=function(a){this.setItemImage(a,"","")};dhtmlXMenuObject.prototype.setVisibleArea=function(c,a,h,g){this.conf.v_enabled=true;this.conf.v.x1=c;this.conf.v.x2=a;this.conf.v.y1=h;this.conf.v.y2=g};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(g,a,c){if(this.itemPull[this.idPrefix+g]==null){return}this.itemPull[this.idPrefix+g]["href_link"]=a;if(c!=null){this.itemPull[this.idPrefix+g]["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(h,a,c){if(a.charAt(1)=="d"){return}if(this.itemPull[this.idPrefix+h]==null){return}var g=this._getCheckboxState(h);if(this.checkEvent("onCheckboxClick")){if(this.callEvent("onCheckboxClick",[h,g,this.conf.ctx_zoneid,c])){this.setCheckboxState(h,!g)}}else{this.setCheckboxState(h,!g)}if(this.checkEvent("onClick")){this.callEvent("onClick",[h])}};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(o,h,q,r,s,a,l){if(this.conf.context&&h==this.topId){}else{if(this.itemPull[this.idPrefix+h]==null){return}if(o=="child"&&this.itemPull[this.idPrefix+h]["type"]!="item"){return}}var m="chbx_"+(a?"1":"0");var g=m;if(o=="sibling"){var c=this.idPrefix+(r!=null?r:this._genStr(24));var n=this.idPrefix+this.getParentId(h);this._addItemIntoGlobalStrorage(c,n,s,"checkbox",l,m,g);this.itemPull[c]["checked"]=a;this._renderSublevelItem(c,this.getItemPosition(h))}else{var c=this.idPrefix+(r!=null?r:this._genStr(24));var n=this.idPrefix+h;this._addItemIntoGlobalStrorage(c,n,s,"checkbox",l,m,g);this.itemPull[c]["checked"]=a;if(this.idPull["polygon_"+n]==null){this._renderSublevelPolygon(n,n)}this._renderSublevelItem(c,q-1);this._redefineComplexState(n)}};dhtmlXMenuObject.prototype.setHotKey=function(m,a){m=this.idPrefix+m;if(!(this.itemPull[m]!=null&&this.idPull[m]!=null)){return}if(this.itemPull[m]["parent"]==this.idPrefix+this.topId&&!this.conf.context){return}if(this.itemPull[m]["complex"]){return}var c=this.itemPull[m]["type"];if(!(c=="item"||c=="checkbox"||c=="radio")){return}var l=null;try{if(this.idPull[m].childNodes[this.conf.rtl?0:2].childNodes[0].className=="sub_item_hk"){l=this.idPull[m].childNodes[this.conf.rtl?0:2].childNodes[0]}}catch(h){}if(a.length==0){this.itemPull[m]["hotkey_backup"]=this.itemPull[m]["hotkey"];this.itemPull[m]["hotkey"]="";if(l!=null){l.parentNode.removeChild(l)}}else{this.itemPull[m]["hotkey"]=a;this.itemPull[m]["hotkey_backup"]=null;if(l==null){l=document.createElement("DIV");l.className="sub_item_hk";var g=this.idPull[m].childNodes[this.conf.rtl?0:2];while(g.childNodes.length>0){g.removeChild(g.childNodes[0])}g.appendChild(l)}l.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 g=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<g.length;c++){if(this.idPull[g[c]]!=null&&this.itemPull[g[c]]["state"]=="enabled"){this.idPull[g[c]].className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_Item_Normal"}}};dhtmlXMenuObject.prototype._checkArrowsState=function(h){var c=this.idPull["polygon_"+h].childNodes[1];var g=this.idPull["arrowup_"+h];var a=this.idPull["arrowdown_"+h];if(c.scrollTop==0){g.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowUp_Disabled"}else{g.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowUp"+(g.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=g=a=null};dhtmlXMenuObject.prototype._addUpArrow=function(h){var c=this;var g=document.createElement("DIV");g.pId=this.idPrefix+h;g.id="arrowup_"+this.idPrefix+h;g.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowUp";g.over=false;g.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false};g.oncontextmenu=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false};g.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)};g.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)};g.onclick=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}l.cancelBubble=true;return false};var a=this.idPull["polygon_"+this.idPrefix+h];a.childNodes[0].appendChild(g);this.idPull[g.id]=g;a=g=null};dhtmlXMenuObject.prototype._addDownArrow=function(h){var c=this;var g=document.createElement("DIV");g.pId=this.idPrefix+h;g.id="arrowdown_"+this.idPrefix+h;g.className="dhtmlxMenu_"+this.conf.skin+"_SubLevelArea_ArrowDown";g.over=false;g.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false};g.oncontextmenu=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false};g.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)};g.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)};g.onclick=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}l.cancelBubble=true;return false};var a=this.idPull["polygon_"+this.idPrefix+h];a.childNodes[2].appendChild(g);this.idPull[g.id]=g;a=g=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(m,h){var a=this.idPull["polygon_"+m].childNodes[1];if(this._canScrollUp&&a.scrollTop>0){var g=false;var l=a.scrollTop-this.conf.of_ustep;if(l<0){g=true;l=0}a.scrollTop=l;if(!g){var c=this;this.conf.of_utm=window.setTimeout(function(){c._doScrollUp(m,false);c=null},this.conf.of_utime)}else{h=true}}else{this._canScrollUp=false;this._checkArrowsState(m)}if(h){this._checkArrowsState(m)}};dhtmlXMenuObject.prototype._doScrollDown=function(m,h){var a=this.idPull["polygon_"+m].childNodes[1];if(this._canScrollDown&&a.scrollTop+a.offsetHeight<=a.scrollHeight){var g=false;var l=a.scrollTop+this.conf.of_dstep;if(l+a.offsetHeight>=a.scrollHeight){g=true;l=a.scrollHeight-a.offsetHeight}a.scrollTop=l;if(!g){var c=this;this.conf.of_dtm=window.setTimeout(function(){c._doScrollDown(m,false);c=null},this.conf.of_dtime)}else{h=true}}else{this._canScrollDown=false;this._checkArrowsState(m)}if(h){this._checkArrowsState(m)}};dhtmlXMenuObject.prototype._countPolygonItems=function(m){var h=0;for(var c in this.itemPull){var g=this.itemPull[c]["parent"];var l=this.itemPull[c]["type"];if(g==this.idPrefix+m&&(l=="item"||l=="radio"||l=="checkbox")){h++}}return h};dhtmlXMenuObject.prototype.setOverflowHeight=function(h){if(h==="auto"){this.conf.overflow_limit=0;this.conf.auto_overflow=true;return}if(this.conf.overflow_limit==0&&h<=0){return}this._clearAndHide();if(this.conf.overflow_limit>=0&&h>0){this.conf.overflow_limit=h;return}if(this.conf.overflow_limit>0&&h<=0){for(var g in this.itemPull){if(this._isArrowExists(g)){var c=String(g).replace(this.idPrefix,"");this._removeUpArrow(c);this._removeDownArrow(c);this.idPull["polygon_"+g].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(h,g){var c=this._getRadioImgObj(h);if(c!=null){var a=this.itemPull[this.idPrefix+h];a.checked=g;a.imgen="rdbt_"+(a.checked?"1":"0");a.imgdis=a.imgen;c.className="sub_icon "+a.imgen}};dhtmlXMenuObject.prototype._radioOnClickHandler=function(h,a,c){if(a.charAt(1)=="d"||this.itemPull[this.idPrefix+h]["group"]==null){return}var g=this.itemPull[this.idPrefix+h]["group"];if(this.checkEvent("onRadioClick")){if(this.callEvent("onRadioClick",[g,this.getRadioChecked(g),h,this.conf.ctx_zoneid,c])){this.setRadioChecked(g,h)}}else{this.setRadioChecked(g,h)}if(this.checkEvent("onClick")){this.callEvent("onClick",[h])}};dhtmlXMenuObject.prototype.getRadioChecked=function(h){var m=null;for(var g=0;g<this.radio[h].length;g++){var l=this.radio[h][g].replace(this.idPrefix,"");var a=this._getRadioImgObj(l);if(a!=null){var c=(a.className).match(/rdbt_1$/gi);if(c!=null){m=l}}}return m};dhtmlXMenuObject.prototype.setRadioChecked=function(c,h){if(this.radio[c]==null){return}for(var a=0;a<this.radio[c].length;a++){var g=this.radio[c][a].replace(this.idPrefix,"");this._setRadioState(g,(g==h))}};dhtmlXMenuObject.prototype.addRadioButton=function(q,l,r,s,u,v,a,m){if(this.conf.context&&l==this.topId){}else{if(this.itemPull[this.idPrefix+l]==null){return}if(q=="child"&&this.itemPull[this.idPrefix+l]["type"]!="item"){return}}var g=this.idPrefix+(s!=null?s:this._genStr(24));var n="rdbt_"+(a?"1":"0");var c=n;if(q=="sibling"){var o=this.idPrefix+this.getParentId(l);this._addItemIntoGlobalStrorage(g,o,u,"radio",m,n,c);this._renderSublevelItem(g,this.getItemPosition(l))}else{var o=this.idPrefix+l;this._addItemIntoGlobalStrorage(g,o,u,"radio",m,n,c);if(this.idPull["polygon_"+o]==null){this._renderSublevelPolygon(o,o)}this._renderSublevelItem(g,r-1);this._redefineComplexState(o)}var h=(v!=null?v:this._genStr(24));this.itemPull[g]["group"]=h;if(this.radio[h]==null){this.radio[h]=new Array()}this.radio[h][this.radio[h].length]=g;if(a==true){this.setRadioChecked(h,String(g).replace(this.idPrefix,""))}};dhtmlXMenuObject.prototype.serialize=function(){var a="<menu>"+this._readLevel(this.idPrefix+this.topId)+"</menu>";return a};dhtmlXMenuObject.prototype._readLevel=function(h){var l="";for(var q in this.itemPull){if(this.itemPull[q]["parent"]==h){var c="";var g="";var s="";var o=String(this.itemPull[q]["id"]).replace(this.idPrefix,"");var n="";var r=(this.itemPull[q]["title"]!=""?' text="'+this.itemPull[q]["title"]+'"':"");var m="";if(this.itemPull[q]["type"]=="item"){if(this.itemPull[q]["imgen"]!=""){c=' img="'+this.itemPull[q]["imgen"]+'"'}if(this.itemPull[q]["imgdis"]!=""){g=' imgdis="'+this.itemPull[q]["imgdis"]+'"'}if(this.itemPull[q]["hotkey"]!=""){s="<hotkey>"+this.itemPull[q]["hotkey"]+"</hotkey>"}}if(this.itemPull[q]["type"]=="separator"){n=' type="separator"'}else{if(this.itemPull[q]["state"]=="disabled"){m=' enabled="false"'}}if(this.itemPull[q]["type"]=="checkbox"){n=' type="checkbox"'+(this.itemPull[q]["checked"]?' checked="true"':"")}if(this.itemPull[q]["type"]=="radio"){n=' type="radio" group="'+this.itemPull[q]["group"]+'" '+(this.itemPull[q]["checked"]?' checked="true"':"")}l+="<item id='"+o+"'"+r+n+c+g+m+">";l+=s;if(this.itemPull[q]["complex"]){l+=this._readLevel(q)}l+="</item>"}}return l};dhtmlXMenuObject.prototype.enableEffect=function(g,l,h){this._menuEffect=(g=="opacity"||g=="slide"||g=="slide+"?g: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(l)=="undefined"?100:l)/(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=h||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(g,c){if(!this.idPull){return}if(this.idPull[g]._tmShow){window.clearTimeout(this.idPull[g]._tmShow)}this.idPull[g]._h=Math.max(0,Math.min(c,this.idPull[g]._max_h));if(this._menuEffect.search(/slide/)===0){this.idPull[g].style.height=this.idPull[g]._h+"px"}c+=this.idPull[g]._step_h;if(this._menuEffect=="slide+"||this._menuEffect=="opacity"){this.idPull[g]._op=Math.max(0,Math.min(this._pOpMax,this.idPull[g]._op+this.idPull[g].op_step));this._pOpacityApply(g)}if((this.idPull[g]._step_h>0&&c<=this.idPull[g]._max_h)||(this.idPull[g]._step_h<0&&c>=0)){var a=this;this.idPull[g]._tmShow=window.setTimeout(function(){a._pEffectSet(g,c)},this.idPull[g]._step_tm)}else{if(this._menuEffect.search(/slide/)===0){this.idPull[g].style.height=""}if(this.idPull[g]._step_h<0){this.idPull[g].style.visibility="hidden"}if(this._menuEffect=="slide+"||this._menuEffect=="opacity"){this.idPull[g]._op=(this.idPull[g]._step_h<0?(this._pOpStyleIE?100:1):this._pOpMax);this._pOpacityApply(g)}this.idPull[g]._tmShow=null;this.idPull[g]._h=null;this.idPull[g]._max_h=null;this.idPull[g]._step_tm=null}};function dhtmlXRibbon(h){var g=this,c,a;this.conf={type:"ribbon",icons_path:(h&&h.icons_path)?h.icons_path:"",skin:"dhx_skyblue"};this._eventHandlers={};this._base=null;this._items={};this._tabbar=null;this.childIds=[];if(typeof(h)=="string"){a=h}else{if(h&&h.tagName){a=h}else{if(h&&h.parent){if(h.parent.tagName||typeof(h.parent)=="string"){a=h.parent}}}}this._doOnHighlight0=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].mouseover)=="function"){if(g.items[m.type].mouseover(m,g,o)!=true){return false}}if(!/dhxrb_highlight0/.test(l.className)){l.className+=" dhxrb_highlight0"}};this._doOffHighlight0=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].mouseout)=="function"){if(g.items[m.type].mouseout(m,g,o)!=true){return false}}if(/dhxrb_highlight1/.test(l.className)){l.className=l.className.replace(/\s?dhxrb_highlight1/,"")}if(/dhxrb_highlight0/.test(l.className)){l.className=l.className.replace(/\s?dhxrb_highlight0/,"")}};this._doOnHighlight1=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}g.callEvent("_showPopup",[m.id]);if(g.items[m.type]&&typeof(g.items[m.type].mousedown)=="function"){if(g.items[m.type].mousedown(m,g,o)!=true){return false}}if(!/dhxrb_highlight1/.test(l.className)){l.className+=" dhxrb_highlight1"}};this._doOffHighlight1=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].mouseup)=="function"){if(g.items[m.type].mouseup(m,g,o)!=true){return false}}if(/dhxrb_highlight1/.test(l.className)){l.className=l.className.replace(/\s?dhxrb_highlight1/,"")}};this._doOnClick=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].click)=="function"){g.items[m.type].click(m,g,o)}};this._doOnFocus=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}g.callEvent("_showPopup",[m.id]);if(g.items[m.type]&&typeof(g.items[m.type].focus)=="function"){g.items[m.type].focus(m,g,o)}};this._doOnBlur=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].blur)=="function"){g.items[m.type].blur(m,g,o)}};this._doOnChange=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].change)=="function"){g.items[m.type].change(m,g,o)}};this._doOnKeydown=function(o){o=o||event;var n=o.target||o.srcElement;var l=g._findItemByNode(n);var m=g._items[l._dhx_ribbonId];if(m.conf.disable){return}if(g.items[m.type]&&typeof(g.items[m.type].keydown)=="function"){g.items[m.type].keydown(m,g,o)}};this._tabCustomApi={enable:function(o,n){var m=null,l=null;n=n||false;if(n!=true){m=g._items[this._idd];for(l in m.childIds){l=parseInt(l);g.enable(m.childIds[l])}}return g._tabOriginalApi.enable.apply(this,[o])},disable:function(o,n){var m=null,l=null;if(n!=false){m=g._items[this._idd];for(l in m.childIds){l=parseInt(l);g.disable(m.childIds[l])}}return g._tabOriginalApi.disable.apply(this,[o])},close:function(n){var m=g._items[this._idd],l;g._removeTab(m);g._tabOriginalApi.close.apply(this,[n]);for(l in g._tabOriginalApi){this[l]=null}}};this._attachEventTabbar=function(){this._tabbar.attachEvent("onSelect",function(){return g.callEvent("onSelect",arguments)});this._tabbar.attachEvent("onTabClick",function(){return g.callEvent("onTabClick",arguments)});this._tabbar.attachEvent("onTabClose",function(){return g.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(h)=="object"&&h.skin){c=h.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(h!=null){if(h.json){this.loadStruct(h.json,h.onload)}else{if(h.xml){this.loadStruct(h.xml,h.onload)}else{this._renderData(h)}}}this.unload=function(){var m=null,l=[];for(m in this.childIds){m=parseInt(m);l.push(this.childIds[m])}dhx4._enableDataLoading(this,null,null,null,"clear");dhx4._eventable(this,"clear");for(m in l){m=parseInt(m);if(this._items[l[m]].type=="tab"){this.tabs(l[m]).close(false)}else{this.removeItem(l[m])}}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(m in this){this[m]=null}g=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);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,h={},g=[];if(a&&a.tagName=="ribbon"){g=this._convertXmlNodeListIntoObject(a.childNodes)}if(g[0]&&g[0].type&&g[0].type.toLowerCase()=="block"){h.items=g}else{h.tabs=g}return h};dhtmlXRibbon.prototype._convertXmlNodeListIntoObject=function(c){var g,a,m=[],h;a=c.length;for(g=0;g<a;g++){h=this._covertXmlNodeToObject(c[g]);if(h){m.push(h)}}return m};dhtmlXRibbon.prototype._covertXmlNodeToObject=function(h){if(!h||!h.tagName||!(h.tagName.toLowerCase()=="item"||h.tagName.toLowerCase()=="tab")){return null}var g,a,c=h.attributes,m={};a=c.length;for(g=0;g<a;g++){switch(c[g].name){case"isbig":m.isbig=dhx4.s2b(c[g].value);break;case"state":m.state=dhx4.s2b(c[g].value);break;default:m[c[g].name]=c[g].value}}if(h.childNodes.length){if(h.getAttribute("type")=="buttonCombo"||h.getAttribute("type")=="buttonSelect"){m.data=h}else{if(h.tagName.toLowerCase()=="tab"){m.items=this._convertXmlNodeListIntoObject(h.childNodes)}else{m.list=this._convertXmlNodeListIntoObject(h.childNodes)}}}return m};dhtmlXRibbon.prototype._appendTabs=function(m){var c,a,g,h=[];a=m.length;for(c=0;c<a;c++){g=this._addTab(m[c]);if(m[c].items instanceof Array){g.childIds=this._appendBlocks(m[c].items,g.base,g)}h.push(g.id)}return h};dhtmlXRibbon.prototype._addTab=function(g){var a,h,c={conf:{active:false,text:"",width:null,position:null,disable:false},base:document.createElement("div"),type:"tab",childIds:[]};for(a in g){if(a=="items"){continue}c.conf[a]=g[a]}if(!g.id){c.id=dhx4.newId()}else{c.id=g.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,u,g){var n,h,o,m,r,c,s=[];g=g||null;h=a.length;for(n=0;n<h;n++){if(typeof(a[n])=="object"&&a[n].type=="block"){o=this._addBlock(a[n],u);if(a[n].list&&(a[n].list instanceof Array)){m=a[n].list;r=m.length;for(c=0;c<r;c++){this._addItem(o.id,null,null,m[c])}}if(g!=null){o.parentId=g.id}if(o.conf.disable){this.disable(o.id)}s.push(o.id)}}return s};dhtmlXRibbon.prototype._addBlock=function(m,h){var g,a,n,c;n={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 m){if(c=="list"||c=="type"||c=="id"){continue}n.conf[c]=m[c]}if(!m.id){n.id=dhx4.newId()}else{n.id=m.id}while(this._items[n.id]){n.id=dhx4.newId()}n.base.className="dhxrb_block_base";h.appendChild(n.base);n.contForItems.className="dhxrb_block_items";n.contForText.className="dhxrb_block_label";n.base.appendChild(n.contForItems);if(n.conf.text){n.contForText.innerHTML=n.conf.text;if(n.conf.text_pos=="top"){n.base.insertBefore(n.contForText,n.contForItems)}else{n.base.appendChild(n.contForText)}}n.base._dhx_ribbonId=n.id;this._items[n.id]=n;return n};dhtmlXRibbon.prototype._addItem=function(g,c,q,n){var l=this._items[g],a,m,s=null,o=this,h;if(n.type!="newLevel"&&!this.items[n.type]){return null}if(n.type=="newLevel"){this._addNewLevel(l)}else{if(l.type=="group"){a=document.createElement("div");a.className="dhxrb_in_group";l.base.appendChild(a)}else{if(n.isbig){a=document.createElement("div");a.className="dhxrb_big_button";l.contForItems.appendChild(a)}else{m=this._getContainerForSmallItem(l);a=document.createElement("div");a.className=(l.conf.mode=="rows")?"dhxrb_in_row":"dhxrb_3rows_button";m.appendChild(a)}}}if(a){this._attachEventForItem(a);h={icons_path:n.icons_path||this.conf.icons_path,skin:this.conf.skin};for(var r in n){h[r]=n[r]}if(!h.id){h.id=dhx4.newId()}while(this._items[h.id]){h.id=dhx4.newId()}s=(this.items[h.type]&&this.items[h.type].render)?this.items[h.type].render(a,h):null}if(s!=null){this._items[s.id]=s;s.parentId=l.id;l.childIds.push(s.id);a._dhx_ribbonId=s.id;if(h.onclick&&(typeof(h.onclick)=="function")){this._eventHandlers[s.id]=this._eventHandlers[s.id]||{};this._eventHandlers[s.id]["onclick"]=h.onclick}s.callEvent=function(){o.callEvent.apply(o,arguments)};s._callHandler=function(){o._callHandler.apply(o,arguments)};if(this.items[h.type]&&typeof(this.items[h.type].callAfterInit)=="function"){this.items[h.type].callAfterInit.apply(this,[s])}}return s};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 g,h;h={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(g in a){if(g=="id"||g=="onclick"||g=="type"){continue}h.conf[g]=a[g]}c.innerHTML="<img class='dhxrb_image"+((h.conf.img)?"'":" dhxrb_invisible'")+" src='"+((h.conf.img)?h.conf.icons_path+h.conf.img:"")+"' /><div class='dhxrb_label_button'>"+h.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(h)}if(h.conf.disable){this.disable(h)}return h},getText:function(a){return a.conf.text},setText:function(c,g){var a=c.base.childNodes[1];c.conf.text=g;a.innerHTML=g},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 g=c.base.childNodes[0],a=c.base.childNodes[1];if(c.conf.imgdis){g.src=c.conf.icons_path+c.conf.imgdis;if(/\s?dhxrb_invisible/i.test(g.className)){g.className=g.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 g=c.base.childNodes[0],a=c.base.childNodes[1];if(c.conf.img){g.src=c.conf.icons_path+c.conf.img}else{if(!/\s?dhxrb_invisible/i.test(g.className)){g.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,g){g=g||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(g){a.callEvent("onStateChange",[a.id,a.conf.state])}}};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,l,h){h=h||false;var g=null,c=dhx4.s2b(a.conf.state);if(c==false){g=this._getSelectedNeighbor(a,l);if(g!=null){this._unSelect(g)}if(!/dhxrb_highlight1/.test(a.base.className)){a.base.className+=" dhxrb_highlight1"}a.conf.state=true;if(h){l._callHandler(a.id,[a.id,(g?g.id:null)]);l.callEvent("onStateChange",[a.id,(g?g.id:null)])}}},remove:function(g,n){var l=dhx4.s2b(g.conf.state),m=null,a=0,c=n._items[g.parentId],h;if(l){while(c.childIds[a]&&m==null){h=n._items[c.childIds[a]];if(h.type=="buttonSegment"&&h!=g){m=h}a++}if(m){this.setState(m,n)}}},_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(h,o){var g=o._items[h.parentId],c,a,n,m=null;a=g.childIds.length;for(c=0;c<a;c++){n=o._items[g.childIds[c]];if(n.type=="buttonSegment"&&n.conf.state){m=n;break}}return m}};dhtmlXRibbon.prototype.items.buttonSelect={itemCollection:[],_isAttachedEventInWindow:false,afterRender:function(c){var a=c.base.childNodes[1];a.innerHTML+="<span class='dhxrb_arrow'> </span>";c.menu=null;this.itemCollection.push(c);this._attachEventToWindow();a=null},setText:function(a,g){var c=a.base.childNodes[1].lastChild;a.conf.text=g;a.base.childNodes[1].innerHTML=g;a.base.childNodes[1].appendChild(c)},_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(l){l=l||event;var g=l.target||l.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 n in c){var h=c[n];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),g=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(h){if(h==null){dhtmlXRibbon.prototype.items.buttonSelect._doOnHideMenu(c)}});c.menu.attachEvent("onShow",function(h){if(h==null){dhtmlXRibbon.prototype.items.buttonSelect._doOnShowMenu(c)}});c.menu.attachEvent("onClick",function(h){c.callEvent("onClick",[h])});c.base.oncontextmenu=function(){return false};dhtmlXRibbon.prototype.items.buttonSelect.showMenu(c)}else{c.menu.showContextMenu(a,g)}},hideMenu:function(a){if(a.menu instanceof dhtmlXMenuObject){a.menu.hideContextMenu()}},remove:function(c){var g,a;if(c.menu instanceof dhtmlXMenuObject){c.menu.unload();c.menu=null}c.base.oncontextmenu=null;g=dhtmlXRibbon.prototype._indexOf(dhtmlXRibbon.prototype.items.buttonSelect.itemCollection,c);if(g!=-1){dhtmlXRibbon.prototype.items.buttonSelect.itemCollection.splice(g,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 g,h;h={base:c,id:a.id,type:a.type,conf:{disable:false,skin:a.skin},childIds:[]};c.className="dhxrb_group";for(g in a){if(g=="id"||g=="onclick"||g=="type"){continue}h.conf[g]=a[g]}return h},callAfterInit:function(m){this._detachEventFromItem(m.base);var h,a,n=m.conf.list,o,g,c;a=(n)?n.length:0;for(h=0;h<a;h++){o=this._addItem(m.id,null,null,n[h]);if(o==null){continue}g=o.base.childNodes[1];if(g&&!g.innerHTML&&!/\s?dhxrb_label_hide/i.test(g.className)){g.className+=" dhxrb_label_hide"}}dhtmlXRibbon.prototype.items.group.normalize(m);if(m.conf.disable){this.disable(m.id)}n=undefined},normalize:function(o){var a=o.base.children;var g=a.length,c=false,q=0;var h,n;for(var m=0;m<g;m++){if(!/dhxrb_separator_group/i.test(a[m].className)){if(/dhxrb_item_hide/i.test(a[m].className)){q++;continue}}if((Math.ceil((m-q)/2)-Math.floor((m-q)/2))==0){if(/dhxrb_separator_group/i.test(a[m].className)){a[m].parentNode.removeChild(a[m]);c=true;break}}else{if(!/dhxrb_separator_group/i.test(a[m].className)){h=document.createElement("div");h.className="dhxrb_separator_groupp";o.base.insertBefore(h,a[m]);c=true;break}}}if(c){this.normalize(o)}else{n=o.base.lastChild;if(n&&/dhxrb_separator_group/i.test(n.className)){n.parentNode.removeChild(n)}}},hideChild:function(c,h){var a=dhtmlXRibbon.prototype._indexOf(c.base.children,h.base);if(a==0){a++}else{if(a!=-1){a--}else{return}}var g=c.base.children[a];if(g&&/dhxrb_separator_group/i.test(g.className)){g.parentNode.removeChild(g)}},showChild:function(a){this.normalize(a)}};dhtmlXRibbon.prototype.items.input={render:function(c,a){var g,h;h={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(g in a){if(g=="id"||g=="onclick"||g=="type"){continue}h.conf[g]=a[g]}c.innerHTML="<input type='text' class='dhxrb_input'><div class='dhxrb_label_button'>"+h.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(h)}if(h.conf.disable){this.disable(h)}if(h.conf.width){this.setWidth(h,h.conf.width)}if(h.conf.value){this.setValue(h,h.conf.value)}return h},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,g){var a=c.base.childNodes[0];g._detachEventsFromInput(a)},getValue:function(c){var a=c.base.childNodes[0],g;g=a.value;a=undefined;return g},setValue:function(c,g){var a=c.base.childNodes[0],g;a.value=g;c.conf.value=g},setWidth:function(c,g){var a=c.base.childNodes[0];a.style.width=parseInt(g)+"px"},disable:function(g){var c=g.base.childNodes[0],a=g.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(g){var c=g.base.childNodes[0],a=g.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}};dhtmlXRibbon.prototype.items.checkbox={render:function(c,a){var g,h;h={base:c,id:a.id,type:a.type,conf:{text:"",text_pos:(a.isbig)?"bottom":"right",disable:false,checked:false}};for(g in a){if(g=="id"||g=="onclick"||g=="type"){continue}h.conf[g]=a[g]}c.innerHTML="<div class='dhxrb_checkbox'></div><div class='dhxrb_label_checkbox'>"+h.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(h)}if(h.conf.checked){this.check(h)}return h},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])}},disable:function(a){return true},enable:function(a){return true}};dhtmlXRibbon.prototype.items.text={render:function(a,h){var g={base:a,id:h.id,type:h.type,conf:{text:""}};for(var c in h){if(c=="id"||c=="type"){continue}g.conf[c]=h[c]}a.innerHTML="<div class='dhxrb_item_text'>"+g.conf.text+"</div>";if(typeof(this.afterRender)=="function"){this.afterRender(g)}return g},callAfterInit:function(a){this._detachEventFromItem(a.base)},getText:function(a){return a.conf.text},setText:function(a,c){a.conf.text=c;a.base.innerHTML=c}};dhtmlXRibbon.prototype.items.buttonCombo={render:function(a,c){var g,h,l={};h={base:a,id:c.id,type:c.type,conf:{text:"",text_pos:"right",width:140,skin:c.skin,callEvent:true}};for(g in c){if(g=="id"||g=="onclick"||g=="type"){continue}h.conf[g]=c[g]}for(g in h.conf){if(g=="text"||g=="text_pos"||g=="disable"||g=="data"){continue}l[g]=h.conf[g]}h.base.className+=" dhxrb_buttoncombo_cont";h.base.innerHTML="<div class='dhxrb_buttoncombo'></div><div class='dhxrb_label_button'>"+h.conf.text+"</div>";l.parent=h.base.firstChild;h.combo=new dhtmlXCombo(l);h.combo.setSkin(l.skin);h.combo.attachEvent("onChange",function(m,n){h._callHandler(h.id,[m,n]);if(h.conf.callEvent==true){h.callEvent("onSelectOption",[h.id,m,n])}h.conf.callEvent=true});if(h.conf.data){h.combo.load(h.conf.data);delete h.conf.data}if(typeof(this.afterRender)=="function"){this.afterRender(h)}if(h.conf.disable){this.disable(h)}return h},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,g){if(a.combo instanceof dhtmlXCombo){a.conf.callEvent=g;a.combo.setComboValue(c)}},setSkin:function(a,c){if(a.combo instanceof dhtmlXCombo){a.combo.setSkin(c)}}};dhtmlXRibbon.prototype.items.slider={render:function(a,l){var g,h,c={};h={base:a,id:l.id,type:l.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(g in l){if(g=="id"||g=="onclick"||g=="type"){continue}h.conf[g]=l[g]}for(g in h.conf){if(g=="text"||g=="text_pos"||g=="isbig"){continue}c[g]=h.conf[g]}h.base.innerHTML="<center><div class='dhxrb_slider'></div></center><div class='dhxrb_label_button'>"+h.conf.text+"</div>";c.parent=h.base.firstChild.firstChild;h.slider=new dhtmlXSlider(c);if(typeof(this.afterRender)=="function"){this.afterRender(h)}if(h.conf.disable){this.disable(h)}h.slider.attachEvent("onChange",function(m){h._callHandler(h.id,[m]);h.callEvent("onValueChange",[h.id,m])});return h},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(g,c){var a;for(a in c){g[a]=g[a]||c[a]}return g};dhtmlXRibbon.prototype._addNewLevel=function(g){var c,a;if(g.conf.mode=="rows"){c=g.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";g.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";g.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(g){var c=g.contForItems.lastChild,a=null;if(g.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";g.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";g.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,h){var g,c;c=a.length;for(g=0;g<c;g++){if(a[g]==h){return g}}return -1};dhtmlXRibbon.prototype._removeItem=function(g){var a,h=-1,c=this._items[g.parentId];if(g.type=="group"){this._removeGroup(g);return}delete this._items[g.id];a=g.base.parentNode;this._detachEventFromItem(g.base);a.removeChild(g.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)}}h=this._indexOf(c.childIds,g.id);if(h!=-1){c.childIds.splice(h,1)}if(this.items[g.type]&&(typeof(this.items[g.type].remove)=="function")){this.items[g.type].remove(g,this)}};dhtmlXRibbon.prototype._removeGroup=function(h){var c=[],l,g=this._items[h.parentId],a=h.base.parentNode;for(l in h.childIds){l=parseInt(l);c.push(this._items[h.childIds[l]])}for(l in c){l=parseInt(l);this._removeItem(c[l])}delete this._items[h.id];if(h.base.parentNode){a.removeChild(h.base)}if(a.childNodes.length==0){a.parentNode.removeChild(a)}l=this._indexOf(g.childIds,h.id);if(l!=-1){g.childIds.splice(l,1)}if(this.items[h.type]&&(typeof(this.items[h.type].remove)=="function")){this.items[h.type].remove(h)}};dhtmlXRibbon.prototype._removeBlock=function(h){var a=[],g,c;for(g in h.childIds){g=parseInt(g);a.push(this._items[h.childIds[g]])}for(g in a){g=parseInt(g);this._removeItem(a[g])}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(g in c.childIds){g=parseInt(g);h.push(this._items[c.childIds[g]])}for(g in h){g=parseInt(g);this._removeBlock(h[g])}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(g){var a,c;for(a in this._items){c=this._items[a];c.conf.skin=g;if(dhtmlXRibbon.prototype.items[c.type]&&typeof(dhtmlXRibbon.prototype.items[c.type].setSkin)=="function"){dhtmlXRibbon.prototype.items[c.type].setSkin(c,g)}}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(g){var c=this._items[g];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(g){var c=this._items[g];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(g,c){c=dhx4.s2b(c);var a=this._items[g];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(g,c){c=dhx4.s2b(c);var a=this._items[g];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.disable=function(h,c){var g=this._items[h],a;if(this.items[g.type]&&(typeof(this.items[g.type].disable)=="function")){if(this.items[g.type].disable(g)!=true){return}}if(g.type=="tab"){return}else{if(g.type=="block"||g.type=="group"){for(a in g.childIds){a=parseInt(a);this.disable(g.childIds[a])}}}if(!/\s?dhxrb_item_disable/i.test(g.base.className)){g.base.className+=" dhxrb_item_disable"}g.conf.disable=true};dhtmlXRibbon.prototype.enable=function(h,c){var g=this._items[h],a;if(this.items[g.type]&&(typeof(this.items[g.type].enable)=="function")){if(this.items[g.type].enable(g)!=true){return}}if(g.type=="tab"){return}else{if(g.type=="block"||g.type=="group"){for(a in g.childIds){a=parseInt(a);this.enable(g.childIds[a])}}}if(/\s?dhxrb_item_disable/i.test(g.base.className)){g.base.className=g.base.className.replace(/\s?dhxrb_item_disable/i,"")}g.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(h,c,g){c=dhx4.s2b(c);g=dhx4.s2b(g);var a=this._items[h];if(a&&(typeof(this.items[a.type].setState)=="function")){switch(a.type){case"buttonSegment":this.items[a.type].setState(a,this,g);break;default:this.items[a.type].setState(a,c,g)}}};dhtmlXRibbon.prototype.setIconPath=function(a){this.conf.icons_path=a};dhtmlXRibbon.prototype.removeItem=function(c){var a=this._items[c];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(l){l=(typeof(l)=="string")?l.toLowerCase():"";if(this._skinCollection[l]!=true){return}var g,c=-1,a,h="dhtmlxribbon";g=this._base.className.match(/\S\w+/ig);if(g instanceof Array){for(a in this._skinCollection){if(c==-1){c=this._indexOf(g,h+"_"+a)}else{break}}c=(c==-1)?g.length:c}else{g=[];c=0}g[c]=h+"_"+l;this._base.className=g.join(" ");this.conf.skin=l;if(this._tabbar!=null){this._tabbar.setSkin(l)}this._setSkinForItems(l)};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(g){var a=this._items[g],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(h,c,g){var a=this._items[h];g=(g===false?false:true);if(a&&this.items[a.type]&&typeof(this.items[a.type].setValue)=="function"){this.items[a.type].setValue(a,c,g)}};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(g,c){var a=this._items[g];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)}}}}};(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)})();function dhtmlXToolbarObject(c,g){var a=this;this.conf={skin:(g||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.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);if(window.dhx4.isIPad){this.cont.ontouchstart=function(h){h=h||event;if((String(h.target.tagName||"").toLowerCase()=="input")){return true}if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}h.cancelBubble=true;return false}}this.setSkin(this.conf.skin);this.objPull={};this.anyUsed="none";this._genStr=function(h){var l="";var n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var m=0;m<h;m++){l+=n.charAt(Math.round(Math.random()*(n.length-1)))}return l};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(n,h){var l=null;for(var m=0;m<n.childNodes.length;m++){if(n.childNodes[m].tagName!=null){if(String(n.childNodes[m].tagName).toLowerCase()==String(h).toLowerCase()){l=n.childNodes[m]}}}return l};this._addImgObj=function(l){var h=document.createElement("IMG");if(l.childNodes.length>0){l.insertBefore(h,l.childNodes[0])}else{l.appendChild(h)}return h};this._setItemImage=function(n,l,h){if(h==true){n.imgEn=l}else{n.imgDis=l}if((!n.state&&h==true)||(n.state&&h==false)){return}var m=this._getObj(n.obj,"img");if(m==null){m=this._addImgObj(n.obj)}m.src=this.conf.icons_path+l};this._clearItemImage=function(m,h){if(h==true){m.imgEn=""}else{m.imgDis=""}if((!m.state&&h==true)||(m.state&&h==false)){return}var l=this._getObj(m.obj,"img");if(l!=null){l.parentNode.removeChild(l)}};this._setItemText=function(h,m){var l=this._getObj(h.obj,"div");if(m==null||m.length==0){if(l!=null){l.parentNode.removeChild(l)}return}if(l==null){l=document.createElement("DIV");l.className="dhxtoolbar_text";h.obj.appendChild(l)}l.innerHTML=m};this._getItemText=function(h){var l=this._getObj(h.obj,"div");if(l!=null){return l.innerHTML}return""};this._enableItem=function(l){if(l.state){return}l.state=true;if(this.objPull[l.id]["type"]=="buttonTwoState"&&this.objPull[l.id]["obj"]["pressed"]==true){l.obj.className="dhx_toolbar_btn dhxtoolbar_btn_pres";l.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_over"}else{l.obj.className="dhx_toolbar_btn dhxtoolbar_btn_def";l.obj.renderAs=l.obj.className}if(l.arw){l.arw.className=String(l.obj.className).replace("btn","arw")}var h=this._getObj(l.obj,"img");if(l.imgEn!=""){if(h==null){h=this._addImgObj(l.obj)}h.src=this.conf.icons_path+l.imgEn}else{if(h!=null){h.parentNode.removeChild(h)}}};this._disableItem=function(l){if(!l.state){return}l.state=false;l.obj.className="dhx_toolbar_btn dhxtoolbar_btn_"+(this.objPull[l.id]["type"]=="buttonTwoState"&&l.obj.pressed?"pres_":"")+"dis";l.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";if(l.arw){l.arw.className=String(l.obj.className).replace("btn","arw")}var h=this._getObj(l.obj,"img");if(l.imgDis!=""){if(h==null){h=this._addImgObj(l.obj)}h.src=this.conf.icons_path+l.imgDis}else{if(h!=null){h.parentNode.removeChild(h)}}if(l.polygon!=null){if(l.polygon.style.display!="none"){window.dhx4.zim.clear(l.polygon._idd);l.polygon.style.display="none";if(l.polygon._ie6cover){l.polygon._ie6cover.style.display="none"}if(this.conf.skin=="dhx_terrace"){this._improveTerraceButtonSelect(l.id,true)}}}this.anyUsed="none"};this.clearAll=function(){for(var h in this.objPull){this._removeItem(String(h).replace(this.idPrefix,""))}};this._doOnClick=function(h){if(a&&a.forEachItem){a.forEachItem(function(m){if(a.objPull[a.idPrefix+m]["type"]=="buttonSelect"){var l=a.objPull[a.idPrefix+m];if(l.arw._skip===true){l.arw._skip=false}else{if(l.polygon.style.display!="none"){l.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";l.obj.className=l.obj.renderAs;l.arw.className=String(l.obj.renderAs).replace("btn","arw");a.anyUsed="none";window.dhx4.zim.clear(l.polygon._idd);l.polygon.style.display="none";if(l.polygon._ie6cover){l.polygon._ie6cover.style.display="none"}if(a.conf.skin=="dhx_terrace"){a._improveTerraceButtonSelect(l.id,true)}}}}})}};if(window.dhx4.isIPad){document.addEventListener("touchstart",this._doOnClick,false)}else{if(typeof(window.addEventListener)!="undefined"){window.addEventListener("mousedown",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}return this}dhtmlXToolbarObject.prototype.addSpacer=function(g){var c=this.idPrefix+g;if(this._spacer!=null){if(this._spacer.idd==g){return}if(this._spacer==this.objPull[c].obj.parentNode){var a=true;while(a){var n=this._spacer.childNodes[0].idd;this.base.appendChild(this._spacer.childNodes[0]);if(n==g||this._spacer.childNodes.length==0){if(this.objPull[c].arw!=null){this.base.appendChild(this.objPull[c].arw)}a=false}}this._spacer.idd=g;this._fixSpacer();return}if(this.base==this.objPull[c].obj.parentNode){var a=true;var m=(this.objPull[c].arw!=null);while(a){var h=this.base.childNodes.length-1;if(m==true){if(this.base.childNodes[h]==this.objPull[c].arw){a=false}}if(this.base.childNodes[h].idd==g){a=false}if(a){if(this._spacer.childNodes.length>0){this._spacer.insertBefore(this.base.childNodes[h],this._spacer.childNodes[0])}else{this._spacer.appendChild(this.base.childNodes[h])}}}this._spacer.idd=g;this._fixSpacer();return}}else{var l=null;for(var h=0;h<this.base.childNodes.length;h++){if(this.base.childNodes[h]==this.objPull[this.idPrefix+g].obj){l=h;if(this.objPull[this.idPrefix+g].arw!=null){l=h+1}}}if(l!=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=g;while(this.base.childNodes.length>l+1){this._spacer.appendChild(this.base.childNodes[l+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(g){var h=this.getParentId(g);if(h!=null){var c=null;var a=this.objPull[this.idPrefix+h]._listOptions[g];if(a!=null){if(a.sep!=null){c="buttonSelectSeparator"}else{c="buttonSelectButton"}}return c}else{if(this.objPull[this.idPrefix+g]==null){return null}return this.objPull[this.idPrefix+g]["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(g,c){for(var a=0;a<g.length;a++){if(g[a]==c){return true}}return false};dhtmlXToolbarObject.prototype.getParentId=function(h){var l=null;for(var g in this.objPull){if(this.objPull[g]._listOptions){for(var c in this.objPull[g]._listOptions){if(c==h){l=String(g).replace(this.idPrefix,"")}}}}return l};dhtmlXToolbarObject.prototype._addItem=function(a,c){this._addItemToStorage(a,c);if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype.addButton=function(l,h,c,a,g){this._addItem({id:l,type:"button",text:c,img:a,imgdis:g},h)};dhtmlXToolbarObject.prototype.addText=function(g,c,a){this._addItem({id:g,type:"text",text:a},c)};dhtmlXToolbarObject.prototype.addButtonSelect=function(h,o,v,a,c,r,n,x,l,m){var w=[];for(var g=0;g<a.length;g++){var s={};if(a[g] instanceof Array){s.id=a[g][0];s.type=(a[g][1]=="obj"?"button":"separator");s.text=(a[g][2]||null);s.img=(a[g][3]||null)}else{if(a[g] instanceof Object&&a[g]!=null&&typeof(a[g].id)!="undefined"&&typeof(a[g].type)!="undefined"){s.id=a[g].id;s.type=(a[g].type=="obj"?"button":"separator");s.text=a[g].text;s.img=a[g].img}}w.push(s)}this._addItem({id:h,type:"buttonSelect",text:v,img:c,imgdis:r,renderSelect:n,openAll:x,options:w,maxOpen:l,mode:m},o)};dhtmlXToolbarObject.prototype.addButtonTwoState=function(l,h,c,a,g){this._addItem({id:l,type:"buttonTwoState",img:a,imgdis:g,text:c},h)};dhtmlXToolbarObject.prototype.addSeparator=function(c,a){this._addItem({id:c,type:"separator"},a)};dhtmlXToolbarObject.prototype.addSlider=function(c,n,l,h,q,g,m,a,o){this._addItem({id:c,type:"slider",length:l,valueMin:h,valueMax:q,valueNow:g,textMin:m,textMax:a,toolTip:o},n)};dhtmlXToolbarObject.prototype.addInput=function(h,g,c,a){this._addItem({id:h,type:"buttonInput",value:c,width:a},g)};dhtmlXToolbarObject.prototype.forEachItem=function(g){for(var c in this.objPull){if(this.inArray(this.rootTypes,this.objPull[c]["type"])){g(this.objPull[c]["id"].replace(this.idPrefix,""))}}};(function(){var m="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 g=[false,"","",false,"","","","","","","","","",false,"","","",null,"",[null,null],"",[null,null],"",null];var c=function(n,o){return function(s,r,q){s=this.idPrefix+s;if(this.objPull[s][n]!=null){return this.objPull[s][n].call(this.objPull[s],r,q)}else{return o}}};for(var l=0;l<m.length;l++){var a=m[l];var h=g[l];dhtmlXToolbarObject.prototype[a]=c(a,h)}})();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(l,g){if(this.objPull[this.idPrefix+l]==null){return null}var h=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==l){h=a}a++}}if(!h&&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==l){h=a}a++}}}return h};dhtmlXToolbarObject.prototype.setPosition=function(a,c){this._setPosition(a,c)};dhtmlXToolbarObject.prototype._setPosition=function(l,h){if(this.objPull[this.idPrefix+l]==null){return}if(isNaN(h)){h=this.base.childNodes.length}if(h<0){h=0}var a=null;if(this._spacer){a=this._spacer.idd;this.removeSpacer()}var g=this.objPull[this.idPrefix+l];this.base.removeChild(g.obj);if(g.arw){this.base.removeChild(g.arw)}var c=this._getIdByPosition(h,true);if(c[0]==null){this.base.appendChild(g.obj);if(g.arw){this.base.appendChild(g.arw)}}else{this.base.insertBefore(g.obj,this.base.childNodes[c[1]]);if(g.arw){this.base.insertBefore(g.arw,this.base.childNodes[c[1]+1])}}if(a!=null){this.addSpacer(a)}};dhtmlXToolbarObject.prototype._getIdByPosition=function(m,c){var l=null;var a=0;var g=0;for(var h=0;h<this.base.childNodes.length;h++){if(this.base.childNodes[h]["idd"]!=null&&l==null){if((a++)==m){l=this.base.childNodes[h]["idd"]}}if(l==null){g++}}g=(l==null?null:g);return(c==true?new Array(l,g):l)};dhtmlXToolbarObject.prototype.removeItem=function(a){this._removeItem(a);if(this.conf.skin=="dhx_terrace"){this._improveTerraceSkin()}};dhtmlXToolbarObject.prototype._removeItem=function(l){var g=this.getType(l);l=this.idPrefix+l;var h=this.objPull[l];if(g=="button"){h.obj._doOnMouseOver=null;h.obj._doOnMouseOut=null;h.obj._doOnMouseUp=null;h.obj._doOnMouseUpOnceAnywhere=null;h.obj.onclick=null;h.obj.onmouseover=null;h.obj.onmouseout=null;h.obj.onmouseup=null;h.obj.onmousedown=null;h.obj.onselectstart=null;h.obj.renderAs=null;h.obj.idd=null;h.obj.parentNode.removeChild(h.obj);h.obj=null;h.id=null;h.state=null;h.img=null;h.imgEn=null;h.imgDis=null;h.type=null;h.enableItem=null;h.disableItem=null;h.isEnabled=null;h.showItem=null;h.hideItem=null;h.isVisible=null;h.setItemText=null;h.getItemText=null;h.setItemImage=null;h.clearItemImage=null;h.setItemImageDis=null;h.clearItemImageDis=null;h.setItemToolTip=null;h.getItemToolTip=null}if(g=="buttonTwoState"){h.obj._doOnMouseOver=null;h.obj._doOnMouseOut=null;h.obj.onmouseover=null;h.obj.onmouseout=null;h.obj.onmousedown=null;h.obj.onselectstart=null;h.obj.renderAs=null;h.obj.idd=null;h.obj.parentNode.removeChild(h.obj);h.obj=null;h.id=null;h.state=null;h.img=null;h.imgEn=null;h.imgDis=null;h.type=null;h.enableItem=null;h.disableItem=null;h.isEnabled=null;h.showItem=null;h.hideItem=null;h.isVisible=null;h.setItemText=null;h.getItemText=null;h.setItemImage=null;h.clearItemImage=null;h.setItemImageDis=null;h.clearItemImageDis=null;h.setItemToolTip=null;h.getItemToolTip=null;h.setItemState=null;h.getItemState=null}if(g=="buttonSelect"){for(var c in h._listOptions){this.removeListOption(l,c)}h._listOptions=null;if(h.polygon._ie6cover){document.body.removeChild(h.polygon._ie6cover);h.polygon._ie6cover=null}h.p_tbl.removeChild(h.p_tbody);h.polygon.removeChild(h.p_tbl);h.polygon.onselectstart=null;document.body.removeChild(h.polygon);h.p_tbody=null;h.p_tbl=null;h.polygon=null;h.obj.onclick=null;h.obj.onmouseover=null;h.obj.onmouseout=null;h.obj.onmouseup=null;h.obj.onmousedown=null;h.obj.onselectstart=null;h.obj.idd=null;h.obj.iddPrefix=null;h.obj.parentNode.removeChild(h.obj);h.obj=null;h.arw.onclick=null;h.arw.onmouseover=null;h.arw.onmouseout=null;h.arw.onmouseup=null;h.arw.onmousedown=null;h.arw.onselectstart=null;h.arw.parentNode.removeChild(h.arw);h.arw=null;h.renderSelect=null;h.state=null;h.type=null;h.id=null;h.img=null;h.imgEn=null;h.imgDis=null;h.openAll=null;h._isListButton=null;h._separatorButtonSelectObject=null;h._buttonButtonSelectObject=null;h.setWidth=null;h.enableItem=null;h.disableItem=null;h.isEnabled=null;h.showItem=null;h.hideItem=null;h.isVisible=null;h.setItemText=null;h.getItemText=null;h.setItemImage=null;h.clearItemImage=null;h.setItemImageDis=null;h.clearItemImageDis=null;h.setItemToolTip=null;h.getItemToolTip=null;h.addListOption=null;h.removeListOption=null;h.showListOption=null;h.hideListOption=null;h.isListOptionVisible=null;h.enableListOption=null;h.disableListOption=null;h.isListOptionEnabled=null;h.setListOptionPosition=null;h.getListOptionPosition=null;h.setListOptionImage=null;h.getListOptionImage=null;h.clearListOptionImage=null;h.setListOptionText=null;h.getListOptionText=null;h.setListOptionToolTip=null;h.getListOptionToolTip=null;h.forEachListOption=null;h.getAllListOptions=null;h.setListOptionSelected=null;h.getListOptionSelected=null}if(g=="buttonInput"){h.obj.childNodes[0].onkeydown=null;h.obj.removeChild(h.obj.childNodes[0]);h.obj.w=null;h.obj.idd=null;h.obj.parentNode.removeChild(h.obj);h.obj=null;h.id=null;h.type=null;h.enableItem=null;h.disableItem=null;h.isEnabled=null;h.showItem=null;h.hideItem=null;h.isVisible=null;h.setItemToolTip=null;h.getItemToolTip=null;h.setWidth=null;h.getWidth=null;h.setValue=null;h.getValue=null;h.setItemText=null;h.getItemText=null}if(g=="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",h.pen._doOnMouseMoveStart,false);window.removeEventListener("mouseup",h.pen._doOnMouseMoveEnd,false)}else{document.body.detachEvent("onmousemove",h.pen._doOnMouseMoveStart);document.body.detachEvent("onmouseup",h.pen._doOnMouseMoveEnd)}}h.pen.allowMove=null;h.pen.initXY=null;h.pen.maxX=null;h.pen.minX=null;h.pen.nowX=null;h.pen.newNowX=null;h.pen.valueMax=null;h.pen.valueMin=null;h.pen.valueNow=null;h.pen._definePos=null;h.pen._detectLimits=null;h.pen._doOnMouseMoveStart=null;h.pen._doOnMouseMoveEnd=null;h.pen.onmousedown=null;h.obj.removeChild(h.pen);h.pen=null;h.label.tip=null;document.body.removeChild(h.label);h.label=null;h.obj.onselectstart=null;h.obj.idd=null;while(h.obj.childNodes.length>0){h.obj.removeChild(h.obj.childNodes[0])}h.obj.parentNode.removeChild(h.obj);h.obj=null;h.id=null;h.type=null;h.state=null;h.enableItem=null;h.disableItem=null;h.isEnabled=null;h.setItemToolTipTemplate=null;h.getItemToolTipTemplate=null;h.setMaxValue=null;h.setMinValue=null;h.getMaxValue=null;h.getMinValue=null;h.setValue=null;h.getValue=null;h.showItem=null;h.hideItem=null;h.isVisible=null}if(g=="separator"){h.obj.onselectstart=null;h.obj.idd=null;h.obj.parentNode.removeChild(h.obj);h.obj=null;h.id=null;h.type=null;h.showItem=null;h.hideItem=null;h.isVisible=null}if(g=="text"){h.obj.onselectstart=null;h.obj.idd=null;h.obj.parentNode.removeChild(h.obj);h.obj=null;h.id=null;h.type=null;h.showItem=null;h.hideItem=null;h.isVisible=null;h.setWidth=null;h.setItemText=null;h.getItemText=null}g=null;h=null;this.objPull[this.idPrefix+l]=null;delete this.objPull[this.idPrefix+l]};(function(){var h="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(l){return function(s,n,m,r,q,o){s=this.idPrefix+s;if(this.objPull[s]==null){return}if(this.objPull[s]["type"]!="buttonSelect"){return}return this.objPull[s][l].call(this.objPull[s],n,m,r,q,o)}};for(var g=0;g<h.length;g++){var a=h[g];dhtmlXToolbarObject.prototype[a]=c(a)}})();dhtmlXToolbarObject.prototype._rtlParseBtn=function(c,a){return c+a};dhtmlXToolbarObject.prototype._separatorObject=function(a,g,c){this.id=a.idPrefix+g;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_sep";this.obj.style.display=(c.hidden!=null?"none":"");this.obj.idd=String(g);this.obj.title=(c.title||"");this.obj.onselectstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}};if(window.dhx4.isIPad){this.obj.ontouchstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}h.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,g,c){this.id=a.idPrefix+g;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_text";this.obj.style.display=(c.hidden!=null?"none":"");this.obj.idd=String(g);this.obj.title=(c.title||"");this.obj.onselectstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}};if(window.dhx4.isIPad){this.obj.ontouchstart=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}h.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(h){this.obj.innerHTML=h};this.getItemText=function(){return this.obj.innerHTML};this.setWidth=function(h){this.obj.style.width=h+"px"};this.setItemToolTip=function(h){this.obj.title=h};this.getItemToolTip=function(){return this.obj.title};return this};dhtmlXToolbarObject.prototype._buttonObject=function(a,h,c){this.id=a.idPrefix+h;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(h);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 g=this;this.obj.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}};this.obj.onmouseover=function(){this._doOnMouseOver()};this.obj.onmouseout=function(){this._doOnMouseOut()};this.obj._doOnMouseOver=function(){this.allowClick=true;if(g.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(g.state==false){return}if(a.anyUsed!="none"){return}this.className="dhx_toolbar_btn dhxtoolbar_btn_def";this.renderAs=this.renderAs};this.obj.onclick=function(l){if(g.state==false){return}if(this.allowClick==false){return}l=l||event;var m=this.idd.replace(a.idPrefix,"");if(this.extAction){try{window[this.extAction](m)}catch(l){}}if(a&&a.callEvent){a.callEvent("onClick",[m])}};this.obj[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(l){if(g.state==false){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}l.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(m){if(g.state==false){return}if(a.anyUsed!="none"){if(a.anyUsed!=this.idd){return}}var l=a.anyUsed;this._doOnMouseUp();if(window.dhx4.isIPad&&l!="none"){a.callEvent("onClick",[this.idd.replace(a.idPrefix,"")])}};if(window.dhx4.isIPad){this.obj.ontouchmove=function(l){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(l){a._setItemText(this,l)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(l){a._setItemImage(this,l,true)};this.clearItemImage=function(){a._clearItemImage(this,true)};this.setItemImageDis=function(l){a._setItemImage(this,l,false)};this.clearItemImageDis=function(){a._clearItemImage(this,false)};this.setItemToolTip=function(l){this.obj.title=l};this.getItemToolTip=function(){return this.obj.title};return this};dhtmlXToolbarObject.prototype._buttonSelectObject=function(g,m,l){this.id=g.idPrefix+m;this.state=(l.enabled!=null?(l.enabled=="true"?true:false):true);this.imgEn=(l.img||"");this.imgDis=(l.imgdis||"");this.img=(this.state?(this.imgEn!=""?this.imgEn:""):(this.imgDis!=""?this.imgDis:""));this.mode=(l.mode||"button");if(this.mode=="select"){this.openAll=true;this.renderSelect=false;if(!l.text||l.text.length==0){l.text=" "}}else{this.openAll=(window.dhx4.s2b(l.openAll)==true);this.renderSelect=(l.renderSelect==null?true:window.dhx4.s2b(l.renderSelect))}this.maxOpen=(!isNaN(l.maxOpen?l.maxOpen:"")?l.maxOpen:null);this._maxOpenTest=function(){if(!isNaN(this.maxOpen)){if(!g._sbw){var o=document.createElement("DIV");o.className="dhxtoolbar_maxopen_test";document.body.appendChild(o);var n=document.createElement("DIV");n.className="dhxtoolbar_maxopen_test2";o.appendChild(n);g._sbw=o.offsetWidth-n.offsetWidth;o.removeChild(n);n=null;document.body.removeChild(o);o=null}}};this._maxOpenTest();this.obj=document.createElement("DIV");this.obj.allowClick=false;this.obj.extAction=(l.action||null);this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_"+(this.state?"def":"dis");this.obj.style.display=(l.hidden!=null?"none":"");this.obj.renderAs=this.obj.className;this.obj.onselectstart=function(n){n=n||event;if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}};this.obj.idd=String(m);this.obj.title=(l.title||"");this.obj.pressed=false;this.callEvent=false;this.obj.innerHTML=g._rtlParseBtn((this.img!=""?"<img src='"+g.conf.icons_path+this.img+"'>":""),(l.text!=null?"<div class='dhxtoolbar_text'>"+l.text+"</div>":""));g.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'> </div>";this.arw.title=this.obj.title;this.arw.onselectstart=function(n){n=n||event;if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}};g.base.appendChild(this.arw);var a=this;this.obj.onmouseover=function(n){n=n||event;if(g.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(g.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(n){n=n||event;if(!a.obj.allowClick){return}if(!a.state){return}if(g.anyUsed!="none"){return}var o=a.obj.idd.replace(g.idPrefix,"");if(a.obj.extAction){try{window[a.obj.extAction](o)}catch(n){}}g.callEvent("onClick",[o])};this.obj[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(n){n=n||event;if(g.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(n){n=n||event;n.cancelBubble=true;if(g.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&&a.callEvent){var o=a.obj.idd.replace(g.idPrefix,"");g.callEvent("onClick",[o])}}}if(window.dhx4.isIPad){this.obj.ontouchmove=this.obj.onmouseout}this.arw[window.dhx4.isIPad?"ontouchstart":"onmousedown"]=function(q){q=q||event;var x=(this.className.indexOf("dhx_toolbar_arw")===0?this:this.nextSibling);if(x._skip){q=q||event;q.cancelBubble=true}else{x._skip=true}x=null;if(!a.state){return}if(g.anyUsed==a.obj.idd){a.obj.className=a.obj.renderAs;a.arw.className=String(a.obj.renderAs).replace("btn","arw");g.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(g.conf.skin=="dhx_terrace"){g._improveTerraceButtonSelect(a.id,true)}}else{if(g.anyUsed!="none"){if(g.objPull[g.idPrefix+g.anyUsed]["type"]=="buttonSelect"){var w=g.objPull[g.idPrefix+g.anyUsed];if(w.polygon.style.display!="none"){w.obj.renderAs="dhx_toolbar_btn dhxtoolbar_btn_def";w.obj.className=w.obj.renderAs;w.arw.className=String(a.obj.renderAs).replace("btn","arw");window.dhx4.zim.clear(w.polygon._idd);w.polygon.style.display="none";if(w.polygon._ie6cover){w.polygon._ie6cover.style.display="none"}if(g.conf.skin=="dhx_terrace"){g._improveTerraceButtonSelect(w.id,true)}}}}a.obj.className="dhx_toolbar_btn dhxtoolbar_btn_over";a.arw.className="dhx_toolbar_arw dhxtoolbar_btn_pres";g.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(g.conf.skin=="dhx_terrace"){g._improveTerraceButtonSelect(a.id,false)}a._fixMaxOpenHeight(a.maxOpen||null);g._autoDetectVisibleArea();var r=window.dhx4.absTop(a.obj)+a.obj.offsetHeight+g.conf.sel_ofs_y;var u=a.polygon.offsetHeight;if(r+u>g.tY2){var s=(a.maxOpen!=null?Math.floor((g.tY2-r)/22):0);if(s>=1){a._fixMaxOpenHeight(s)}else{r=window.dhx4.absTop(a.obj)-u-g.conf.sel_ofs_y;if(r<0){r=0}}}a.polygon.style.top=r+"px";if(g.rtl){a.polygon.style.left=window.dhx4.absLeft(a.obj)+a.obj.offsetWidth-a.polygon.offsetWidth+g.conf.sel_ofs_x+"px"}else{var o=document.body.scrollLeft;var n=o+(window.innerWidth||document.body.clientWidth);var v=window.dhx4.absLeft(a.obj)+g.conf.sel_ofs_x;if(v+a.polygon.offsetWidth>n){v=window.dhx4.absLeft(a.arw)+a.arw.offsetWidth-a.polygon.offsetWidth}a.polygon.style.left=Math.max(v,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=""}}return false};this.arw.onclick=function(n){n=n||event;n.cancelBubble=true};this.arw[window.dhx4.isIPad?"ontouchend":"onmouseup"]=function(n){n=n||event;n.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=g.idPrefix;this._listOptions={};this._fixMaxOpenHeight=function(s){var r="auto";var q=false;if(s!==null){var o=0;for(var n in this._listOptions){o++}if(o>s){this._ph=22*s;r=this._ph+"px"}else{q=true}}this.polygon.style.width="auto";this.polygon.style.height="auto";if(!q&&a.maxOpen!=null){this.polygon.style.width=this.p_tbl.offsetWidth+g._sbw+"px";this.polygon.style.height=r}};this._separatorButtonSelectObject=function(q,n,o){this.obj={};this.obj.tr=document.createElement("TR");this.obj.tr.className="tr_sep";this.obj.tr.onselectstart=function(r){r=r||event;if(r.preventDefault){r.preventDefault()}else{r.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(r){r=r||event;if(r.preventDefault){r.preventDefault()}else{r.returnValue=false}return false};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.tr.appendChild(this.obj.td);this.obj.sep=document.createElement("DIV");this.obj.sep.className="btn_sep";this.obj.sep.onselectstart=function(r){r=r||event;if(r.preventDefault){r.preventDefault()}else{r.returnValue=false}return false};this.obj.td.appendChild(this.obj.sep);a._listOptions[q]=this.obj;return this};this._buttonButtonSelectObject=function(s,q,r){var o=true;if(typeof(q.enabled)!="undefined"){o=window.dhx4.s2b(q.enabled)}else{if(typeof(q.disabled)!="undefined"){o=window.dhx4.s2b(q.disabled)}}this.obj={};this.obj.tr=document.createElement("TR");this.obj.tr.en=o;this.obj.tr.extAction=(q.action||null);this.obj.tr._selected=(q.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(u){u=u||event;if(u.preventDefault){u.preventDefault()}else{u.returnValue=false}return false};this.obj.tr.idd=String(s);if(isNaN(r)){r=a.p_tbody.childNodes.length+1}else{if(r<1){r=1}}if(r>a.p_tbody.childNodes.length){a.p_tbody.appendChild(this.obj.tr)}else{a.p_tbody.insertBefore(this.obj.tr,a.p_tbody.childNodes[r-1])}this.obj.td_a=document.createElement("TD");this.obj.td_a.className="td_btn_img";this.obj.td_a.onselectstart=function(u){u=u||event;if(u.preventDefault){u.preventDefault()}else{u.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(u){u=u||event;if(u.preventDefault){u.preventDefault()}else{u.returnValue=false}return false};if(g.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(q.img!=null){this.obj.td_a.innerHTML="<img class='btn_sel_img' src='"+g.conf.icons_path+q.img+"' border='0'>";this.obj.tr._img=q.img}else{this.obj.td_a.innerHTML=" "}var n=(q.text!=null?q.text:(q.itemText||""));this.obj.td_b.innerHTML="<div class='btn_sel_text'>"+n+"</div>";this.obj.tr[window.dhx4.isIPad?"ontouchstart":"onmouseover"]=function(){if(!this.en||(this._selected&&a.renderSelect)){return}this.className="tr_btn tr_btn_over"};this.obj.tr.onmouseout=function(){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[window.dhx4.isIPad?"ontouchend":"onclick"]=function(u){u=u||event;u.cancelBubble=true;if(!this.en){return}a.setListOptionSelected(this.idd.replace(g.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");window.dhx4.zim.clear(a.polygon._idd);a.polygon.style.display="none";if(a.polygon._ie6cover){a.polygon._ie6cover.style.display="none"}if(g.conf.skin=="dhx_terrace"){g._improveTerraceButtonSelect(a.id,true)}g.anyUsed="none";var v=this.idd.replace(g.idPrefix,"");if(this.extAction){try{window[this.extAction](v)}catch(u){}}g.callEvent("onClick",[v])};a._listOptions[s]=this.obj;return this};this.polygon=document.createElement("DIV");this.polygon.dir="ltr";this.polygon.style.display="none";this.polygon.className="dhx_toolbar_poly_"+g.conf.skin+" dhxtoolbar_icons_"+g.conf.iconSize;this.polygon.onselectstart=function(n){n=n||event;if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}};this.polygon.onmousedown=function(n){n=n||event;n.cancelBubble=true};this.polygon.style.overflowY="auto";this.polygon._idd=window.dhx4.newId();if(window.dhx4.isIPad){this.polygon.ontouchstart=function(n){n=n||event;if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}n.cancelBubble=true;return false}}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(l.options!=null){for(var h=0;h<l.options.length;h++){var c="_"+(l.options[h].type||"")+"ButtonSelectObject";if(l.options[h].id==null){l.options[h].id=g._genStr(24)}if(typeof(this[c])=="function"){new this[c](l.options[h].id,l.options[h])}}}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(n){this.obj.style.width=n-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(){g._enableItem(this)};this.disableItem=function(){g._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(n){g._setItemText(this,n)};this.getItemText=function(){return g._getItemText(this)};this.setItemImage=function(n){g._setItemImage(this,n,true)};this.clearItemImage=function(){g._clearItemImage(this,true)};this.setItemImageDis=function(n){g._setItemImage(this,n,false)};this.clearItemImageDis=function(){g._clearItemImage(this,false)};this.setItemToolTip=function(n){this.obj.title=n;this.arw.title=n};this.getItemToolTip=function(){return this.obj.title};this.addListOption=function(u,s,q,r,n){if(!(q=="button"||q=="separator")){return}var o={id:u,type:q,text:r,img:n};new this["_"+q+"ButtonSelectObject"](u,o,s)};this.removeListOption=function(q){if(!this._isListButton(q,true)){return}var n=this._listOptions[q];if(n.td_a!=null&&n.td_b!=null){n.td_a.onselectstart=null;n.td_b.onselectstart=null;while(n.td_a.childNodes.length>0){n.td_a.removeChild(n.td_a.childNodes[0])}while(n.td_b.childNodes.length>0){n.td_b.removeChild(n.td_b.childNodes[0])}n.tr.onselectstart=null;n.tr.onmouseover=null;n.tr.onmouseout=null;n.tr.onclick=null;while(n.tr.childNodes.length>0){n.tr.removeChild(n.tr.childNodes[0])}n.tr.parentNode.removeChild(n.tr);n.td_a=null;n.td_b=null;n.tr=null}else{n.sep.onselectstart=null;n.td.onselectstart=null;n.tr.onselectstart=null;while(n.td.childNodes.length>0){n.td.removeChild(n.td.childNodes[0])}while(n.tr.childNodes.length>0){n.tr.removeChild(n.tr.childNodes[0])}n.tr.parentNode.removeChild(n.tr);n.sep=null;n.td=null;n.tr=null}n=null;this._listOptions[q]=null;try{delete this._listOptions[q]}catch(o){}};this.showListOption=function(n){if(!this._isListButton(n,true)){return}this._listOptions[n].tr.style.display=""};this.hideListOption=function(n){if(!this._isListButton(n,true)){return}this._listOptions[n].tr.style.display="none"};this.isListOptionVisible=function(n){if(!this._isListButton(n,true)){return}return(this._listOptions[n].tr.style.display!="none")};this.enableListOption=function(n){if(!this._isListButton(n)){return}this._listOptions[n].tr.en=true;this._listOptions[n].tr.className="tr_btn"+(this._listOptions[n].tr._selected&&g.renderSelect?" tr_btn_selected":"")};this.disableListOption=function(n){if(!this._isListButton(n)){return}this._listOptions[n].tr.en=false;this._listOptions[n].tr.className="tr_btn tr_btn_disabled"};this.isListOptionEnabled=function(n){if(!this._isListButton(n)){return}return this._listOptions[n].tr.en};this.setListOptionPosition=function(q,o){if(!this._listOptions[q]||this.getListOptionPosition(q)==o||isNaN(o)){return}if(o<1){o=1}var n=this._listOptions[q].tr;this.p_tbody.removeChild(n);if(o>this.p_tbody.childNodes.length){this.p_tbody.appendChild(n)}else{this.p_tbody.insertBefore(n,this.p_tbody.childNodes[o-1])}n=null};this.getListOptionPosition=function(r){var o=-1;if(!this._listOptions[r]){return o}for(var n=0;n<this.p_tbody.childNodes.length;n++){if(this.p_tbody.childNodes[n]==this._listOptions[r].tr){o=n+1}}return o};this.setListOptionImage=function(r,n){if(!this._isListButton(r)){return}var q=this._listOptions[r].tr.childNodes[(g.rtl?1:0)];if(q.childNodes.length>0){q.childNodes[0].src=g.conf.icons_path+n}else{var o=document.createElement("IMG");o.className="btn_sel_img";o.src=g.conf.icons_path+n;q.appendChild(o)}q=null};this.getListOptionImage=function(q){if(!this._isListButton(q)){return}var o=this._listOptions[q].tr.childNodes[(g.rtl?1:0)];var n=null;if(o.childNodes.length>0){n=o.childNodes[0].src}o=null;return n};this.clearListOptionImage=function(o){if(!this._isListButton(o)){return}var n=this._listOptions[o].tr.childNodes[(g.rtl?1:0)];while(n.childNodes.length>0){n.removeChild(n.childNodes[0])}n.innerHTML=" ";n=null};this.setListOptionText=function(o,n){if(!this._isListButton(o)){return}this._listOptions[o].tr.childNodes[(g.rtl?0:1)].childNodes[0].innerHTML=n};this.getListOptionText=function(n){if(!this._isListButton(n)){return}return this._listOptions[n].tr.childNodes[(g.rtl?0:1)].childNodes[0].innerHTML};this.setListOptionToolTip=function(o,n){if(!this._isListButton(o)){return}this._listOptions[o].tr.title=n};this.getListOptionToolTip=function(n){if(!this._isListButton(n)){return}return this._listOptions[n].tr.title};this.forEachListOption=function(o){for(var n in this._listOptions){o(n)}};this.getAllListOptions=function(){var o=new Array();for(var n in this._listOptions){o[o.length]=n}return o};this.setListOptionSelected=function(q){for(var n in this._listOptions){var o=this._listOptions[n];if(o.td_a!=null&&o.td_b!=null&&o.tr.en){if(n==q){o.tr._selected=true;o.tr.className="tr_btn"+(this.renderSelect?" tr_btn_selected":"");if(this.mode=="select"){if(o.tr._img){this.setItemImage(o.tr._img)}else{this.clearItemImage()}this.setItemText(this.getListOptionText(q))}}else{o.tr._selected=false;o.tr.className="tr_btn"}}o=null}};this.getListOptionSelected=function(){var o=null;for(var n in this._listOptions){if(this._listOptions[n].tr._selected==true){o=n}}return o};this._isListButton=function(o,n){if(this._listOptions[o]==null){return false}if(!n&&this._listOptions[o].tr.className=="tr_sep"){return false}return true};this.setMaxOpen=function(n){this._ph=null;if(typeof(n)=="number"){this.maxOpen=n;this._maxOpenTest();return}this.maxOpen=null};if(l.width){this.setWidth(l.width)}if(this.mode=="select"&&typeof(l.selected)!="undefined"){this.setListOptionSelected(l.selected)}return this};dhtmlXToolbarObject.prototype._buttonInputObject=function(g,l,h){this.id=g.idPrefix+l;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_btn dhxtoolbar_btn_def";this.obj.style.display=(h.hidden!=null?"none":"");this.obj.idd=String(l);this.obj.w=(h.width!=null?h.width:100);this.obj.title=(h.title!=null?h.title:"");this.obj.innerHTML="<input class='dhxtoolbar_input' type='text' style='width:"+this.obj.w+"px;'"+(h.value!=null?" value='"+h.value+"'":"")+">";var c=g;var a=this;this.obj.childNodes[0].onkeydown=function(m){m=m||event;if(m.keyCode==13){c.callEvent("onEnter",[a.obj.idd,this.value])}};g.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(m){this.obj.childNodes[0].value=m};this.getValue=function(){return this.obj.childNodes[0].value};this.setWidth=function(m){this.obj.w=m;this.obj.childNodes[0].style.width=this.obj.w+"px"};this.getWidth=function(){return this.obj.w};this.setItemToolTip=function(m){this.obj.title=m};this.getItemToolTip=function(){return this.obj.title};this.getInput=function(){return this.obj.firstChild};if(typeof(h.enabled)!="undefined"&&window.dhx4.s2b(h.enabled)==false){this.disableItem()}return this};dhtmlXToolbarObject.prototype._buttonTwoStateObject=function(a,h,c){this.id=a.idPrefix+h;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(h);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 g=this;this.obj.onselectstart=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}};this.obj.onmouseover=function(){this._doOnMouseOver()};this.obj.onmouseout=function(){this._doOnMouseOut()};this.obj._doOnMouseOver=function(){if(g.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(g.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(l){if(a.checkEvent("onBeforeStateChange")){if(!a.callEvent("onBeforeStateChange",[this.idd.replace(a.idPrefix,""),this.pressed])){return}}if(g.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 m=this.idd.replace(a.idPrefix,"");if(this.extAction){try{window[this.extAction](m,this.pressed)}catch(l){}}a.callEvent("onStateChange",[m,this.pressed]);return false};this.setItemState=function(l,n){if(this.obj.pressed!=l){if(l==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(n==true){var o=this.obj.idd.replace(a.idPrefix,"");if(this.obj.extAction){try{window[this.obj.extAction](o,this.obj.pressed)}catch(m){}}a.callEvent("onStateChange",[o,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(l){a._setItemText(this,l)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(l){a._setItemImage(this,l,true)};this.clearItemImage=function(){a._clearItemImage(this,true)};this.setItemImageDis=function(l){a._setItemImage(this,l,false)};this.clearItemImageDis=function(){a._clearItemImage(this,false)};this.setItemToolTip=function(l){this.obj.title=l};this.getItemToolTip=function(){return this.obj.title};return this};dhtmlXToolbarObject.prototype._sliderObject=function(h,m,l){this.id=h.idPrefix+m;this.state=(l.enabled!=null?(l.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=(l.hidden!=null?"none":"");this.obj.onselectstart=function(n){n=n||event;if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}};this.obj.idd=String(m);this.obj.len=(l.length!=null?Number(l.length):50);this.obj.innerHTML="<div class='dhxtoolbar_text'>"+(l.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'>"+(l.textMax||"")+"</div>";h.base.appendChild(this.obj);var a=this;this.pen=document.createElement("DIV");this.pen.className="dhxtoolbar_sl_pen";this.obj.appendChild(this.pen);var g=this.pen;this.label=document.createElement("DIV");this.label.dir="ltr";this.label.className="dhx_toolbar_slider_label_"+h.conf.skin+(h.rtl?"_rtl":"");this.label.style.display="none";this.label.tip=(l.toolTip||"%v");this.label._zi=window.dhx4.newId();document.body.appendChild(this.label);var c=this.label;this.pen.valueMin=(l.valueMin!=null?Number(l.valueMin):0);this.pen.valueMax=(l.valueMax!=null?Number(l.valueMax):100);if(this.pen.valueMin>this.pen.valueMax){this.pen.valueMin=this.pen.valueMax}this.pen.valueNow=(l.valueNow!=null?Number(l.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(n){if(a.state==false){return}n=n||event;this.initXY=(window.dhx4.isIPad?n.touches[0].clientX:n.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(o){o=o||event;if(!g.allowMove){return}var n=(window.dhx4.isIPad?o.touches[0].clientX:o.clientX);var q=n-g.initXY;if(n<window.dhx4.absLeft(g)+Math.round(g.offsetWidth/2)&&g.nowX==g.minX){return}if(n>window.dhx4.absLeft(g)+Math.round(g.offsetWidth/2)&&g.nowX==g.maxX){return}g.newNowX=g.nowX+q;if(g.newNowX<g.minX){g.newNowX=g.minX}if(g.newNowX>g.maxX){g.newNowX=g.maxX}g.nowX=g.newNowX;g.style.left=g.nowX+"px";g.initXY=n;g.newValueNow=Math.round((g.valueMax-g.valueMin)*(g.newNowX-g.minX)/(g.maxX-g.minX)+g.valueMin);if(c.tip!=""){c.innerHTML=c.tip.replace(/%v/gi,g.newValueNow);c.style.left=Math.round(window.dhx4.absLeft(g)+g.offsetWidth/2-c.offsetWidth/2)+"px";c.style.top=window.dhx4.absTop(g)-c.offsetHeight-3+"px"}o.cancelBubble=true;if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}return false};this.pen._doOnMouseMoveEnd=function(){if(!g.allowMove){return}g.className="dhxtoolbar_sl_pen";g.allowMove=false;g.nowX=g.newNowX;g.valueNow=g.newValueNow;if(c.tip!=""){c.style.display="none";window.dhx4.zim.clear(c._zi)}h.callEvent("onValueChange",[a.obj.idd.replace(h.idPrefix,""),g.valueNow])};if(window.dhx4.isIPad){document.addEventListener("touchmove",g._doOnMouseMoveStart,false);document.addEventListener("touchend",g._doOnMouseMoveEnd,false)}else{if(typeof(window.addEventListener)!="undefined"){window.addEventListener("mousemove",g._doOnMouseMoveStart,false);window.addEventListener("mouseup",g._doOnMouseMoveEnd,false)}else{document.body.attachEvent("onmousemove",g._doOnMouseMoveStart);document.body.attachEvent("onmouseup",g._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(n,o){n=Number(n);if(n<this.pen.valueMin){n=this.pen.valueMin}if(n>this.pen.valueMax){n=this.pen.valueMax}this.pen.valueNow=n;this.pen._definePos();if(o==true){h.callEvent("onValueChange",[this.obj.idd.replace(h.idPrefix,""),this.pen.valueNow])}};this.getValue=function(){return this.pen.valueNow};this.setMinValue=function(o,n){o=Number(o);if(o>this.pen.valueMax){return}this.obj.childNodes[0].innerHTML=n;this.obj.childNodes[0].style.display=(n.length>0?"":"none");this.pen.valueMin=o;if(this.pen.valueNow<this.pen.valueMin){this.pen.valueNow=this.pen.valueMin}this.pen._detectLimits();this.pen._definePos()};this.setMaxValue=function(o,n){o=Number(o);if(o<this.pen.valueMin){return}this.obj.childNodes[4].innerHTML=n;this.obj.childNodes[4].style.display=(n.length>0?"":"none");this.pen.valueMax=o;if(this.pen.valueNow>this.pen.valueMax){this.pen.valueNow=this.pen.valueMax}this.pen._detectLimits();this.pen._definePos()};this.getMinValue=function(){var n=this.obj.childNodes[0].innerHTML;var o=this.pen.valueMin;return new Array(o,n)};this.getMaxValue=function(){var n=this.obj.childNodes[4].innerHTML;var o=this.pen.valueMax;return new Array(o,n)};this.setItemToolTipTemplate=function(n){this.label.tip=n};this.getItemToolTipTemplate=function(){return this.label.tip};return this};dhtmlXToolbarObject.prototype.unload=function(){if(this.conf.isIPad){document.removeEventListener("touchstart",this._doOnClick,false)}else{if(typeof(window.addEventListener)=="function"){window.removeEventListener("mousedown",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(v){var o=[];var A=v.getElementsByTagName("toolbar");if(A!=null&&A[0]!=null){A=A[0];var E=["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<A.childNodes.length;c++){if(A.childNodes[c].tagName=="item"){var n={};for(var C=0;C<E.length;C++){var l=A.childNodes[c].getAttribute(E[C]);if(l!=null){n[E[C]]=l}}for(var y=0;y<A.childNodes[c].childNodes.length;y++){if(A.childNodes[c].childNodes[y].tagName=="item"&&n.type=="buttonSelect"){var D={};for(var C=0;C<g.length;C++){var l=A.childNodes[c].childNodes[y].getAttribute(g[C]);if(l!=null){D[g[C]]=l}}var x=A.childNodes[c].childNodes[y].getElementsByTagName("itemText");if(x!=null&&x[0]!=null){D.itemText=x[0].firstChild.nodeValue}var s=A.childNodes[c].childNodes[y].getElementsByTagName("userdata");for(var C=0;C<s.length;C++){if(!D.userdata){D.userdata={}}var a={};try{a.name=s[C].getAttribute("name")}catch(m){a.name=null}try{a.value=s[C].firstChild.nodeValue}catch(m){a.value=""}if(a.name!=null){D.userdata[a.name]=a.value}}if(n.options==null){n.options=[]}n.options.push(D)}if(A.childNodes[c].childNodes[y].tagName=="userdata"){if(n.userdata==null){n.userdata={}}var D={};try{D.name=A.childNodes[c].childNodes[y].getAttribute("name")}catch(m){D.name=null}try{D.value=A.childNodes[c].childNodes[y].firstChild.nodeValue}catch(m){D.value=""}if(D.name!=null){n.userdata[D.name]=D.value}}}o.push(n)}}}return o};dhtmlXToolbarObject.prototype._addItemToStorage=function(m,o){var n=(m.id||this._genStr(24));var h=(m.type||"");if(h!=""&&this["_"+h+"Object"]!=null){if(h=="buttonSelect"){if(m.options!=null){for(var l=0;l<m.options.length;l++){if(m.options[l].type=="obj"){m.options[l].type="button"}if(m.options[l].type=="sep"){m.options[l].type="separator"}}}}if(h=="slider"){var g={tip_template:"toolTip",value_min:"valueMin",value_max:"valueMax",value_now:"valueNow",text_min:"textMin",text_max:"textMax"};for(var c in g){if(m[g[c]]==null&&m[c]!=null){m[g[c]]=m[c]}}}if(h=="buttonInput"){if(m.value==null&&m.text!=null){m.value=m.text}}if(h=="buttonTwoState"){if(typeof(m.selected)=="undefined"&&typeof(m.pressed)!="undefined"&&window.dhx4.s2b(m.pressed)){m.selected=true}}if(typeof(m.enabled)=="undefined"&&typeof(m.disabled)!="undefined"&&window.dhx4.s2b(m.disabled)){m.enabled=false}if(m.imgDis==null&&m.img_disabled!=null){m.imgdis=m.img_disabled}if((typeof(m.openAll)=="undefined"||m.openAll==null)&&this.conf.skin=="dhx_terrace"){m.openAll=true}this.objPull[this.idPrefix+n]=new this["_"+h+"Object"](this,n,m);this.objPull[this.idPrefix+n]["type"]=h;this.setPosition(n,o)}if(m.userdata!=null){for(var c in m.userdata){this.setUserData(n,c,m.userdata[c])}}if(m.options!=null){for(var l=0;l<m.options.length;l++){if(m.options[l].userdata!=null){for(var c in m.options[l].userdata){this.setListOptionUserData(m.id,m.options[l].id,c,m.options[l].userdata[c])}}}}};dhtmlXToolbarObject.prototype.setSkin=function(l,g){if(g===true){this.cont.className=this.cont.className.replace(/dhxtoolbar_icons_\d{1,}/,"dhxtoolbar_icons_"+this.conf.iconSize)}else{this.conf.skin=l;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 h=this.objPull[c];if(h.type=="slider"){h.pen._detectLimits();h.pen._definePos();h.label.className="dhx_toolbar_slider_label_"+this.conf.skin}if(h.type=="buttonSelect"){h.polygon.className="dhx_toolbar_poly_"+this.conf.skin+" dhxtoolbar_icons_"+this.conf.iconSize}}if(l=="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(g,a,c){g=this.idPrefix+g;if(this.objPull[g]!=null){if(this.objPull[g].userData==null){this.objPull[g].userData={}}this.objPull[g].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,g){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[g]==null){return false}return true};dhtmlXToolbarObject.prototype.setListOptionUserData=function(a,l,c,h){if(!this._isListOptionExists(a,l)){return}var g=this.objPull[this.idPrefix+a]._listOptions[l];if(g.userData==null){g.userData={}}g.userData[c]=h};dhtmlXToolbarObject.prototype.getListOptionUserData=function(a,h,c){if(!this._isListOptionExists(a,h)){return null}var g=this.objPull[this.idPrefix+a]._listOptions[h];if(!g.userData){return null}return(g.userData[c]?g.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 m=[this.base];if(this._spacer!=null){m.push(this._spacer)}for(var o=0;o<m.length;o++){g[o]=[];for(var c=0;c<m[o].childNodes.length;c++){if(m[o].childNodes[c].idd!=null&&m[o].childNodes[c].style.display!="none"){var n=this.idPrefix+m[o].childNodes[c].idd;if(this.objPull[n]!=null&&this.objPull[n].obj==m[o].childNodes[c]){g[o].push({a:n,type:this.objPull[n].type,node:this.objPull[n][this.objPull[n].type=="buttonSelect"?"arw":"obj"]})}}}m[o]=null}for(var o=0;o<g.length;o++){for(var c=0;c<g[o].length;c++){var r=g[o][c];var s=false;var l=false;if(!h[r.type]){if(c==g[o].length-1||(g[o][c+1]!=null&&h[g[o][c+1].type])){s=true}if(c==0||(c-1>=0&&g[o][c-1]!=null&&h[g[o][c-1].type])){l=true}}r.node.style.borderRightWidth=(s?"1px":"0px");r.node.style.borderTopRightRadius=r.node.style.borderBottomRightRadius=(s?this.conf.terrace_radius:"0px");if(r.type=="buttonSelect"){r.node.previousSibling.style.borderTopLeftRadius=r.node.previousSibling.style.borderBottomLeftRadius=(l?this.conf.terrace_radius:"0px");r.node.previousSibling._br=s;r.node.previousSibling._bl=l}else{r.node.style.borderTopLeftRadius=r.node.style.borderBottomLeftRadius=(l?this.conf.terrace_radius:"0px")}r.node._br=s;r.node._bl=l}}for(var o=0;o<g.length;o++){for(var c=0;c<g[o].length;c++){for(var n in g[o][c]){g[o][c][n]=null}g[o][c]=null}g[o]=null}g=m=null};dhtmlXToolbarObject.prototype._improveTerraceButtonSelect=function(g,c){var a=this.objPull[g];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};function dhtmlXEditor(g,h){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"]};this._doOnFocusChanged=null;this._doOnAccess=null;if(typeof(g)=="object"&&g!=null&&g.tagName==null){h=g.skin;if(g.content!=null){this.conf.content=g.content}if(g.contentHTML!=null){this.conf.contentHTML=g.contentHTML}if(g.iconsPath!=null){this.conf.iconsPath=g.iconsPath}if(g.toolbar!=null){this.conf.toolbar=window.dhx4.s2b(g.toolbar)}if(g.onFocusChanged!=null){this._doOnFocusChanged=g.onFocusChanged}if(g.onAccess!=null){this._doOnAccess=g.onAccess}g=g.parent}this.conf.skin=(h||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxeditor")||"dhx_skyblue");if(typeof(g)=="string"){g=document.getElementById(g)}this.base=g;this.base.className+=" dhxeditor_"+this.conf.skin;while(this.base.childNodes.length>0){this.base.removeChild(this.base.childNodes[0])}var l=(window.dhx4.isIE?this.base.currentStyle.position:window.getComputedStyle(this.base,null).getPropertyValue("position"));if(!(l=="relative"||l=="absolute")){this.base.style.position="relative"}this.cell=new dhtmlXEditorCell(window.dhx4.newId(),this);this.base.appendChild(this.cell.cell);this.setSizes();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"}var a=this.editor;if(typeof(window.addEventListener)!="undefined"){a.onload=function(){for(var m=0;m<c.conf.evs.length;m++){a.contentWindow.addEventListener(c.conf.evs[m],c._ev,false)}}}else{a.onreadystatechange=function(m){if(typeof(a.readyState)!="undefined"&&a.readyState=="complete"){try{for(var n=0;n<c.conf.evs.length;n++){a.contentWindow.document.body.attachEvent("on"+c.conf.evs[n],c._ev)}}catch(o){}}}}this._ev=function(n){n=n||event;var m=n.type;c.callEvent("onAccess",[m,n]);if(typeof(c._doOnAccess)=="function"){c._doOnAccess(m,n)}else{if(typeof(c._doOnAccess)=="string"&&typeof(window[c._doOnAccess])=="function"){window[c._doOnAccess](m,n)}}};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(o,r){var n="";if(o===true&&this.getContent!=null){n=this.getContent()}var m=this.editor.contentWindow.document;m.open("text/html","replace");if(window.dhx4.isOpera){m.write("<html><head><style> html, body { overflow:auto;-webkit-overflow-scrolling: touch; padding:0px; padding-left:5px !important; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color:#ffffff;} </style></head><body "+(r!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}else{if(window.dhx4.isKHTML){m.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; padding-left:5px !important; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color:#ffffff;} </style></head><body "+(r!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}else{if(window.dhx4.isIE){m.write("<html><head><style> html {overflow-y: auto;} body {overflow-y: scroll;-webkit-overflow-scrolling: touch;} html,body { overflow-x: auto; padding:0px; padding-left:5px !important; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color: #ffffff; outline: none;} </style></head><body "+(r!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}else{m.write("<html><head><style> html,body { overflow-x: auto; overflow-y:-webkit-overflow-scrolling: touch; scroll; padding:0px; padding-left:5px !important; height:100%; margin:0px; font-family:Tahoma; font-size:12px; background-color:#ffffff;} </style></head><body "+(r!==true?"contenteditable='true'":"")+" tabindex='0'></body></html>")}}}m.close();if(window.dhx4.isIE){m.contentEditable=(r!==true)}else{m.designMode=(r!==true?"On":"Off")}if(window.dhx4.isFF){try{m.execCommand("useCSS",false,true)}catch(q){}}if(o===true&&this.setContent!=null){this.setContent(n)}};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(o,r){if(this.conf.roMode===true){return}if(arguments.length<2){r=null}if(window.dhx4.isIE){this.edWin.focus()}try{var n=this.editor.contentWindow.document;n.execCommand(o,false,r)}catch(q){}if(window.dhx4.isIE){this.edWin.focus();var m=this;window.setTimeout(function(){m.edWin.focus();m=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")};this._doOnClick=function(o){var n=o||window.event;var m=n.target||n.srcElement;c._showInfo(m)};this._doOnMouseDown=function(o){var n=o||window.event;var m=n.target||n.srcElement;c._showInfo(m)};this._doOnKeyUp=function(q){var o=q||window.event;var m=o.keyCode;var n=o.target||o.srcElement;if({37:1,38:1,39:1,40:1,13:1}[m]==1){c._showInfo(n)}};this._getParentByTag=function(m,o){o=o.toLowerCase();var n=m;do{if(o==""||n.nodeName.toLowerCase()==o){return n}}while(n=n.parentNode);return m};this._isStyleProperty=function(o,r,m,q){r=r.toLowerCase();var s=o;do{if((s.nodeName.toLowerCase()==r)&&(s.style[m]==q)){return true}}while(s=s.parentNode);return false};this._setStyleProperty=function(m,q){this.style[q]=false;var o=this._getParentByTag(m,q);if(o&&(o.tagName.toLowerCase()==q)){this.style[q]=true}if(q=="del"&&this._getParentByTag(m,"strike")&&this._getParentByTag(m,"strike").tagName.toLowerCase()=="strike"){this.style.del=true}};this._showInfo=function(n){var n=(this._getSelectionBounds().end)?this._getSelectionBounds().end:n;if(!n||!this._setStyleProperty){return}try{if(this.edWin.getComputedStyle){var m=this.edWin.getComputedStyle(n,null);var o=((m.getPropertyValue("font-weight")==401)?700:m.getPropertyValue("font-weight"));this.style={fontStyle:m.getPropertyValue("font-style"),fontSize:m.getPropertyValue("font-size"),textDecoration:m.getPropertyValue("text-decoration"),fontWeight:o,fontFamily:m.getPropertyValue("font-family"),textAlign:m.getPropertyValue("text-align")};if(window.dhx4.isKHTML){this.style.fontStyle=m.getPropertyValue("font-style");this.style.vAlign=m.getPropertyValue("vertical-align");this.style.del=this._isStyleProperty(n,"span","textDecoration","line-through");this.style.u=this._isStyleProperty(n,"span","textDecoration","underline")}}else{var m=n.currentStyle;this.style={fontStyle:m.fontStyle,fontSize:m.fontSize,textDecoration:m.textDecoration,fontWeight:m.fontWeight,fontFamily:m.fontFamily,textAlign:m.textAlign}}this._setStyleProperty(n,"h1");this._setStyleProperty(n,"h2");this._setStyleProperty(n,"h3");this._setStyleProperty(n,"h4");if(!window.dhx4.isKHTML){this._setStyleProperty(n,"del");this._setStyleProperty(n,"sub");this._setStyleProperty(n,"sup");this._setStyleProperty(n,"u")}this.callEvent("onFocusChanged",[this.style,m])}catch(q){return null}};this._getSelectionBounds=function(){var r,o,u,n;if(this.edWin.getSelection){var s=this.edWin.getSelection();r=s.getRangeAt(s.rangeCount-1);u=r.startContainer;n=r.endContainer;o=r.commonAncestorContainer;if(u.nodeName=="#text"){o=o.parentNode}if(u.nodeName=="#text"){u=u.parentNode}if(u.nodeName.toLowerCase()=="body"){u=u.firstChild}if(n.nodeName=="#text"){n=n.parentNode}if(n.nodeName.toLowerCase()=="body"){n=n.lastChild}if(u==n){o=u}return{root:o,start:u,end:n}}else{if(this.edWin.document.selection){r=this.edDoc.selection.createRange();if(!r.duplicate){return null}o=r.parentElement();var q=r.duplicate();var m=r.duplicate();q.collapse(true);m.moveToElementText(q.parentElement());m.setEndPoint("EndToStart",q);u=q.parentElement();q=r.duplicate();m=r.duplicate();m.collapse(false);q.moveToElementText(m.parentElement());q.setEndPoint("StartToEnd",m);n=m.parentElement();if(u.nodeName.toLowerCase()=="body"){u=u.firstChild}if(n.nodeName.toLowerCase()=="body"){n=n.lastChild}if(u==n){o=u}return{root:o,start:u,end:n}}}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(o){o=o||"";if(this.edDoc.body){var n=false;if(window.dhx4.isFF){var m=navigator.userAgent.match(/Firefox\/(\d*)/);n=(m!=null&&m[1]<28)}if(n){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=o}else{this.editor.contentWindow.document.body.innerHTML="";if(o.length==0){o=" "}this._runCommand("InsertHTML",o)}}else{this.editor.contentWindow.document.body.innerHTML=o}this.callEvent("onContentSet",[])}else{if(!this.conf.firstLoadEv){this.conf.firstLoadEv=true;this.conf.firstLoadData=o;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(m){window.dhx4.ajax.get(m,function(n){if(n.xmlDoc.responseText!=null){c.setContent(n.xmlDoc.responseText)}})};window.dhx4._eventable(this);this.attachEvent("onFocusChanged",function(m){if(typeof(this._doOnFocusChanged)=="function"){this._doOnFocusChanged(m)}else{if(typeof(this._doOnFocusChanged)=="string"&&typeof(window[this._doOnFocusChanged])=="function"){window[this._doOnFocusChanged](m)}}});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 m=0;m<c.conf.evs.length;m++){a.contentWindow.removeEventListener(c.conf.evs[m],c._ev,false)}}else{window.detachEvent("onresize",this._doOnResize,false);this.edDoc.detachEvent("onclick",this._doOnClick);this.edDoc.detachEvent("onkeyup",this._doOnKeyUp);for(var m=0;m<c.conf.evs.length;m++){a.contentWindow.document.body.detachEvent("on"+c.conf.evs[m],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)}this.setIconsPath=function(m){this.conf.iconsPath=m};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)};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(g,a){dhtmlXCellObject.apply(this,[g,"_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 m=this;var l=document.createElement("DIV");l.className="dhx_cell_stb";this.cell.insertBefore(l,this.cell.childNodes[this.conf.idx.cont]);l.onselectstart=function(a){a=a||event;a.cancelBubble=true;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};var h={bold:"applyBold",italic:"applyItalic",underline:"applyUnderscore",clearformat:"clearFormatting"};for(var g in h){var c=document.createElement("A");c.href="javascript:void(0);";c.tabIndex=-1;l.appendChild(c);c.onmousedown=c.onclick=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};var n=document.createElement("DIV");n.className="dhx_cell_stb_button btn_"+g;n._actv=g.charAt(0);n._cmd=h[g];c.appendChild(n);n.onclick=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};n.onmousedown=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}m.editor[this._cmd]();m.editor.callEvent("onToolbarClick",[this._actv])};n=c=null}l=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=m=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};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 m=0;m<this._availFonts.length;m++){var h=String(this._availFonts[m]).replace(/\s/g,"_");this._xmlFonts+='<item type="button" id="applyFontFamily:'+h+'"><itemText><![CDATA[<img src="'+this.tb.imagePath+"font_"+String(h).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 g in this._availSizes){this._xmlSizes+='<item type="button" id="applyFontSize:'+g+":"+this._availSizes[g]+'" text="'+this._availSizes[g]+'"/>'}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(o){if(!o.h1&&!o.h2&&!o.h3&&!o.h4){var a=(String(o.fontWeight).search(/bold/i)!=-1)||(Number(o.fontWeight)>=700);this.tb.setItemState("applyBold",a)}else{this.tb.setItemState("applyBold",false)}var n="alignLeft";if(String(o.textAlign).search(/center/)!=-1){n="alignCenter"}if(String(o.textAlign).search(/right/)!=-1){n="alignRight"}if(String(o.textAlign).search(/justify/)!=-1){n="alignJustify"}this.tb.setItemState(n,true);this._checkAlign(n);this.tb.setItemState("applyH1",o.h1);this.tb.setItemState("applyH2",o.h2);this.tb.setItemState("applyH3",o.h3);this.tb.setItemState("applyH4",o.h4);if(window._KHTMLrv){o.sub=(o.vAlign=="sub");o.sup=(o.vAlign=="super")}this.tb.setItemState("applyItalic",(o.fontStyle=="italic"));this.tb.setItemState("applyStrikethrough",o.del);this.tb.setItemState("applySub",o.sub);this.tb.setItemState("applySuper",o.sup);this.tb.setItemState("applyUnderscore",o.u)};this._doOnToolbarClick=function(n){var a=String(n).split(":");if(this[a[0]]!=null){if(typeof(this[a[0]])=="function"){this[a[0]](a[1]);this.callEvent("onToolbarClick",[n])}}};this._doOnStateChange=function(n,a){this[n]();switch(n){case"alignLeft":case"alignCenter":case"alignRight":case"alignJustify":this._checkAlign(n);break;case"applyH1":case"applyH2":case"applyH3":case"applyH4":this._checkH(n);break}this.callEvent("onToolbarClick",[n])};this._doOnBeforeStateChange=function(n,a){if((n=="alignLeft"||n=="alignCenter"||n=="alignRight"||n=="alignJustify")&&a==true){return false}return true};var l=this;this.tb.attachEvent("onClick",function(a){l._doOnToolbarClick(a)});this.tb.attachEvent("onStateChange",function(n,a){l._doOnStateChange(n,a)});this.tb.attachEvent("onBeforeStateChange",function(n,a){return l._doOnBeforeStateChange(n,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)}};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.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 g=0;a.each(function(h){g+=c(h)*1});return g},min:function(g,c){g=dhtmlx.Template.setter(g);c=c||this.data;var a=Infinity;c.each(function(h){if(g(h)*1<a){a=g(h)*1}});return a*1},max:function(g,c){g=dhtmlx.Template.setter(g);c=c||this.data;var a=-Infinity;c.each(function(h){if(g(h)*1>a){a=g(h)*1}});return a},_split_data_by:function(l){var m=function(r,q){r=dhtmlx.Template.setter(r);return r(q[0])};var h=dhtmlx.Template.setter(l.by);if(!l.map[h]){l.map[h]=[h,m]}var a={};var o=[];this.data.each(function(q){var r=h(q);if(!a[r]){o.push({id:r});a[r]=dhtmlx.toArray()}a[r].push(q)});for(var n in l.map){var c=(l.map[n][1]||m);if(typeof c!="function"){c=this[c]}for(var g=0;g<o.length;g++){o[g][n]=c.call(this,l.map[n][0],a[o[g].id])}}this._not_grouped_data=this.data;this.data=new dhtmlx.DataStore();this.data.provideApi(this,true);this._init_group_data_event(this.data,this);this.parse(o,"json")},group:function(a,c){this.ungroup(false);this._split_data_by(a);if(c!==false){this.render()}},ungroup:function(a){if(this._not_grouped_data){this.data=this._not_grouped_data;this.data.provideApi(this,true)}if(a!==false){this.render()}},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,g,h){var a=new Date(c.valueOf());switch(h){case"day":a.setDate(a.getDate()+g);break;case"week":a.setDate(a.getDate()+7*g);break;case"month":a.setMonth(a.getMonth()+g);break;case"year":a.setYear(a.getFullYear()+g);break;case"hour":a.setHours(a.getHours()+g);break;case"minute":a.setMinutes(a.getMinutes()+g);break;default:return dhtmlx.Date["add_"+h](c,g,h)}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(g){switch(g){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 g}});if(a){c=c.replace(/date\.get/g,"date.getUTC")}return new Function("date",'return "'+c+'";')},str_to_date:function(l,g){var m="var temp=date.split(/[^0-9a-zA-Z]+/g);";var a=l.match(/%[a-zA-Z]/g);for(var c=0;c<a.length;c++){switch(a[c]){case"%j":case"%d":m+="set[2]=temp["+c+"]||1;";break;case"%n":case"%m":m+="set[1]=(temp["+c+"]||1)-1;";break;case"%y":m+="set[0]=temp["+c+"]*1+(temp["+c+"]>50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":m+="set[3]=temp["+c+"]||0;";break;case"%i":m+="set[4]=temp["+c+"]||0;";break;case"%Y":m+="set[0]=temp["+c+"]||0;";break;case"%a":case"%A":m+="set[3]=set[3]%12+((temp["+c+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":m+="set[5]=temp["+c+"]||0;";break}}var h="set[0],set[1],set[2],set[3],set[4],set[5]";if(g){h=" Date.UTC("+h+")"}return new Function("date","var set=[0,0,1,0,0,0]; "+m+" return new Date("+h+");")},getISOWeek:function(g){if(!g){return false}var c=g.getDay();if(c===0){c=7}var h=new Date(g.valueOf());h.setDate(g.getDate()+(4-c));var a=h.getFullYear();var m=Math.floor((h.getTime()-new Date(a,0,1).getTime())/86400000);var l=1+Math.floor(m/7);return l},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 l,h,a,m;if(typeof(c)!="string"){l=c[0];h=c[1];a=c[2]}else{if(c.indexOf("rgb")!=-1){m=c.substr(c.indexOf("(")+1,c.lastIndexOf(")")-c.indexOf("(")-1).split(",");l=m[0];h=m[1];a=m[2]}else{if(c.substr(0,1)=="#"){c=c.substr(1)}l=this.hexToDec(c.substr(0,2));h=this.hexToDec(c.substr(2,2));a=this.hexToDec(c.substr(4,2))}}l=(parseInt(l,10)||0);h=(parseInt(h,10)||0);a=(parseInt(a,10)||0);if(l<0||l>255){l=0}if(h<0||h>255){h=0}if(a<0||a>255){a=0}return[l,h,a]};dhtmlx.math.hsvToRgb=function(n,A,x){var m,u,l,c,y,a,o,w;m=Math.floor((n/60))%6;u=n/60-m;l=x*(1-A);c=x*(1-u*A);y=x*(1-(1-u)*A);a=0;o=0;w=0;switch(m){case 0:a=x;o=y;w=l;break;case 1:a=c;o=x;w=l;break;case 2:a=l;o=x;w=y;break;case 3:a=l;o=c;w=x;break;case 4:a=y;o=l;w=x;break;case 5:a=x;o=l;w=c;break}a=Math.floor(a*255);o=Math.floor(o*255);w=Math.floor(w*255);return[a,o,w]};dhtmlx.math.rgbToHsv=function(c,o,q){var m,l,u,a,w,y,n,x;m=c/255;l=o/255;u=q/255;var a=Math.min(m,l,u);var w=Math.max(m,l,u);n=0;y=w==0?0:(1-a/w);x=w;if(w==a){n=0}else{if(w==m&&l>=u){n=60*(l-u)/(w-a)+0}else{if(w==m&&l<u){n=60*(l-u)/(w-a)+360}else{if(w==l){n=60*(u-m)/(w-a)+120}else{if(w==u){n=60*(m-l)/(w-a)+240}}}}}return[n,y,x]};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=[]};dhtmlx.ui.Map.prototype={addRect:function(g,c,a){this._createMapArea(g,"RECT",c,a)},addPoly:function(g,c,a){this._createMapArea(g,"POLY",c,a)},_createMapArea:function(l,c,h,g){var a="";if(arguments.length==4){a="userdata='"+g+"'"}this._map.push("<area "+this._key+"='"+l+"' shape='"+c+"' coords='"+h.join()+"' "+a+"></area>")},addSector:function(a,r,q,n,l,g,h,m){var o=[];o.push(n);o.push(Math.floor(l*h));for(var c=r;c<q;c+=Math.PI/18){o.push(Math.floor(n+g*Math.cos(c)));o.push(Math.floor((l+g*Math.sin(c))*h))}o.push(Math.floor(n+g*Math.cos(q)));o.push(Math.floor((l+g*Math.sin(q))*h));o.push(n);o.push(Math.floor(l*h));return this.addPoly(a,o,m)},render:function(a){var g=dhtmlx.html.create("DIV");g.style.cssText="position:absolute; width:100%; height:100%; top:0px; left:0px;";a.appendChild(g);var c=dhtmlx._isIE?"":"src='data:image/gif;base64,R0lGODlhEgASAIAAAP///////yH5BAUUAAEALAAAAAASABIAAAIPjI+py+0Po5y02ouz3pwXADs='";g.innerHTML="<map id='"+this._id+"' name='"+this._id+"'>"+this._map.join("\n")+"</map><img "+c+" class='dhx_map_img' usemap='#"+this._id+"'>";a._htmlmap=g;this._map=[]}};dhtmlx.chart={};dhtmlx.chart.scatter={pvt_render_scatter:function(r,m,q,o,n,a){if(!this._settings.xValue){return dhtmlx.log("warning","Undefined propery: xValue")}var g=this._getLimits();var l=this._getLimits("h","xValue");if(!n){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(),m,q,o,g.min,g.max);this._drawHXAxis(this.canvases.x.getCanvas(),m,q,o,l.min,l.max)}g={min:this._settings.yAxis.start,max:this._settings.yAxis.end};l={min:this._settings.xAxis.start,max:this._settings.xAxis.end};var c=this._getScatterParams(r,m,q,o,l,g);this._mapStart=q;for(var h=0;h<m.length;h++){this._drawScatterItem(r,a,q,o,c,l,g,m[h],n)}},_getScatterParams:function(a,h,g,c,n,m){var l={};l.totalHeight=c.y-g.y;l.totalWidth=c.x-g.x;this._calcScatterUnit(l,n.min,n.max,l.totalWidth,"X");this._calcScatterUnit(l,m.min,m.max,l.totalHeight,"Y");return l},_drawScatterItem:function(s,a,q,o,g,l,h,m,n){var c=this._calculateScatterItemPosition(g,o,q,l,m,"X");var r=this._calculateScatterItemPosition(g,q,o,h,m,"Y");this._drawItem(s,c,r,m,this._settings.label.call(this,m),n,a)},_calculateScatterItemPosition:function(g,o,n,a,l,c){var r=this._settings[c=="X"?"xValue":"value"].call(this,l);var h=g["valueFactor"+c];var s=(parseFloat(r||0)-a.min)*h;var q=g["unit"+c];var m=n[c.toLowerCase()]-(c=="X"?(-1):1)*Math.floor(q*s);if(s<0){m=n[c.toLowerCase()]}if(r>a.max){m=o[c.toLowerCase()]}if(r<a.min){m=n[c.toLowerCase()]}return m},_calcScatterUnit:function(m,g,a,c,h){var l=this._getRelativeValue(g,a);h=(h||"");m["relValue"+h]=l[0];m["valueFactor"+h]=l[1];m["unit"+h]=(m["relValue"+h]?c/m["relValue"+h]:10)}};dhtmlx.chart.radar={pvt_render_radar:function(c,h,a,m,g,l){this._renderRadarChart(c,h,a,m,g,l)},_renderRadarChart:function(v,l,s,r,q,a){if(!l.length){return}var n=this._getPieParameters(s,r);var o=(this._settings.radius?this._settings.radius:n.radius);var c=(this._settings.x?this._settings.x:n.x);var u=(this._settings.y?this._settings.y:n.y);var g=[];for(var h=0;h<l.length;h++){g.push(1)}var m=this._getRatios(g,l.length);this._mapStart=s;if(!q){this._drawRadarAxises(m,c,u,o,l)}this._drawRadarData(v,m,c,u,o,l,q,a)},_drawRadarData:function(D,u,o,n,l,O,E,N){var C,w,M,K,F,J,h,g,H,L,I,v,c,A,r,q,a,s,m;M=this._settings;F=M.yAxis.start;J=M.yAxis.end;m=this._getRelativeValue(F,J);v=m[0];s=(v?l/v:l/2);a=m[1];c=-Math.PI/2;C=w=c;H=[];g=0;for(K=0;K<O.length;K++){if(!q){A=M.value(O[K]);r=(parseFloat(A||0)-F)*a}else{r=q}L=Math.floor(s*r);A=M.value((K!=(O.length-1))?O[K+1]:O[0]);q=(parseFloat(A||0)-F)*a;I=Math.floor(s*q);C=w;w=((K!=(O.length-1))?(c+u[K]-0.0001):c);h=(g||this._getPositionByAngle(C,o,n,L));g=this._getPositionByAngle(w,o,n,I);H.push(h)}if(M.fill){this._fillRadarChart(D,H,O)}if(!M.disableLines){this._strokeRadarChart(D,H,O)}if(!M.disableItems){this._drawRadarItemMarkers(D,H,O,E,N)}H=null},_drawRadarItemMarkers:function(a,g,l,h,m){for(var c=0;c<g.length;c++){this._drawItem(a,g[c].x,g[c].y,l[c],this._settings.label.call(this,l),h,m)}},_fillRadarChart:function(a,h,m){var l,g;a.globalAlpha=this._settings.alpha.call(this,{});a.beginPath();for(var c=0;c<h.length;c++){a.fillStyle=this._settings.fill.call(this,m[c]);l=h[c];g=(h[c+1]||h[0]);if(!c){a.moveTo(l.x,l.y)}a.lineTo(g.x,g.y)}a.fill();a.globalAlpha=1},_strokeRadarChart:function(a,h,m){var l,g;for(var c=0;c<h.length;c++){l=h[c];g=(h[c+1]||h[0]);this._drawLine(a,l.x,l.y,g.x,g.y,this._settings.line.color.call(this,m[c]),this._settings.line.width)}},_drawRadarAxises:function(C,w,v,n,P){var a=this._settings.yAxis;var h=this._settings.xAxis;var o=a.start;var m=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);o=D.start;m=D.end;r=D.step;a.end=m;a.start=o}var J=[];var M,L,E;var N=0;var g=n*r/(m-o);var u,A;if(r<1){u=Math.min(this._log10(r),(o<=0?0:this._log10(o)));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=m;M>=o;M-=r){if(D.fixNum){M=parseFloat((new Number(M)).toFixed(D.fixNum))}J.push(Math.floor(N*g)+0.5);if(A){M=Math.round(M*A)/A}var q=v-n+J[J.length-1];this.canvases.scale.renderTextAt("middle","left",w,q,a.template(M.toString()),"dhx_axis_item_y dhx_radar");if(C.length<2){this._drawScaleSector(I,"arc",w,v,n-J[J.length-1],-Math.PI/2,3*Math.PI/2,M);return}var l=-Math.PI/2;var H=l;var F;for(L=0;L<C.length;L++){if(M==m){K.push(H)}F=l+C[L]-0.0001;this._drawScaleSector(I,(O.lineShape||"line"),w,v,n-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,n);if(h.lines.call(this,P[M],M)){this._drawLine(I,w,v,E.x,E.y,(h?h.lineColor.call(this,P[M]):"#cfcfcf"),1)}this._drawRadarScaleLabel(I,w,v,n,K[M],(h?h.template.call(this,P[M]):" "))}},_drawScaleSector:function(u,m,s,q,l,c,a,h,g){var r,o;if(l<0){return false}r=this._getPositionByAngle(c,s,q,l);o=this._getPositionByAngle(a,s,q,l);var n=this._settings.yAxis;if(n.bg){u.beginPath();u.moveTo(s,q);if(m=="arc"){u.arc(s,q,l,c,a,false)}else{u.lineTo(r.x,r.y);u.lineTo(o.x,o.y)}u.fillStyle=n.bg(h,g);u.moveTo(s,q);u.fill();u.closePath()}if(n.lines.call(this,h)){u.lineWidth=1;u.beginPath();if(m=="arc"){u.arc(s,q,l,c,a,false)}else{u.moveTo(r.x,r.y);u.lineTo(o.x,o.y)}u.strokeStyle=n.lineColor.call(this,h);u.stroke()}},_drawRadarScaleLabel:function(A,q,n,c,o,v){var w=this.canvases.scale.renderText(0,0,v,"dhx_axis_radar_title",1);var g=w.scrollWidth;var u=w.offsetHeight;var s=0.001;var m=this._getPositionByAngle(o,q,n,c+5);var l=0,h=0;if(o<0||o>Math.PI){h=-u}if(o>Math.PI/2){l=-g}if(Math.abs(o+Math.PI/2)<s||Math.abs(o-Math.PI/2)<s){l=-g/2}else{if(Math.abs(o)<s||Math.abs(o-Math.PI)<s){h=-u/2}}w.style.top=m.y+h+"px";w.style.left=m.x+l+"px";w.style.width=g+"px";w.style.whiteSpace="nowrap"}};dhtmlx.chart.area={pvt_render_area:function(o,F,l,h,q,C){var s,A,u,r,m,y,n,E,D,x,w,c,v,a,g;y=this._calculateLineParams(o,F,l,h,q);A=this._settings;r=(A.eventRadius||Math.floor(y.cellWidth/2));if(F.length){n=[];x=(!A.offset?l.x:l.x+y.cellWidth*0.5);for(u=0;u<F.length;u++){m=F[u];D=this._getPointY(m,l,h,y);v=x+y.cellWidth*u;if(D){a=(typeof D=="object"?D.y0:D);if(u&&this._settings.fixOverflow){E=this._getPointY(F[u-1],l,h,y);if(E.out&&E.out==D.out){continue}w=y.cellWidth*(u-1)-0.5+x;c=(typeof E=="object"?E.y0:E);if(E.out){g=(E.out=="min"?h.y:l.y);n.push([this._calcOverflowX(w,v,c,a,g),g])}if(D.out){g=(D.out=="min"?h.y:l.y);n.push([this._calcOverflowX(w,v,c,a,g),g]);if(u==(F.length-1)&&g==l.y){n.push([v,l.y])}}}if(!D.out){n.push([v,a]);C.addRect(m.id,[v-r-l.x,a-r-l.y,v+r-l.x,a+r-l.y],q)}if(!A.yAxis){s=(!A.offset&&(u==F.length-1)?"left":"center");this.canvases[q].renderTextAt(false,s,v,a-A.labelOffset,A.label(m))}}}if(n.length){n.push([v,h.y]);n.push([n[0][0],h.y])}o.globalAlpha=this._settings.alpha.call(this,F[0]);o.fillStyle=this._settings.color.call(this,F[0]);o.beginPath();this._path(o,n);o.fill();if(A.border){o.lineWidth=A.borderWidth||1;if(A.borderColor){o.strokeStyle=A.borderColor.call(this,F[0])}else{this._setBorderStyles(o,o.fillStyle)}o.beginPath();this._path(o,n);o.stroke()}o.lineWidth=1;o.globalAlpha=1}}};dhtmlx.chart.stackedArea={pvt_render_stackedArea:function(q,H,c,a,r,E){var J,I,v,D,A,w,l,u,m,C,o,h,g,n;C=this._calculateLineParams(q,H,c,a,r);D=this._settings;u=(D.eventRadius||Math.floor(C.cellWidth/2));if(H.length){o=[];n=[];h=(!D.offset?c.x:c.x+C.cellWidth*0.5);var F=function(x,K){return r?(H[x].$startY?K-a.y+H[x].$startY:0):K};var s=function(y,M,L){var K=(L.y-M.y)/(L.x-M.x);return K*y+M.y-K*M.x};for(A=0;A<H.length;A++){m=H[A];if(!A){g=F(A,a.y);o.push([h,g])}else{h+=C.cellWidth}g=F(A,this._getPointY(m,c,a,C));n.push((isNaN(g)&&!A)?(H[A].$startY||a.y):g);if(g){o.push([h,g]);E.addRect(m.id,[h-u-c.x,g-u-c.y,h+u-c.x,g+u-c.y],r);if(!D.yAxis){v=(!D.offset&&l?"left":"center");this.canvases[r].renderTextAt(false,v,h,g-D.labelOffset,D.label(m))}}}o.push([h,F(A-1,a.y)]);if(r){for(A=H.length-2;A>0;A--){h-=C.cellWidth;g=H[A].$startY;if(g){o.push([h,g])}}}o.push([o[0][0],o[0][1]]);q.globalAlpha=this._settings.alpha.call(this,H[0]);q.fillStyle=this._settings.color.call(this,H[0]);q.beginPath();this._path(q,o);q.fill();for(A=0;A<H.length;A++){g=n[A];if(!g){if(A==H.length-1){g=H[A].$startY}for(w=A+1;w<H.length;w++){if(n[w]){J={x:c.x,y:n[0]};I={x:(c.x+C.cellWidth*w),y:n[w]};g=s(c.x+C.cellWidth*A,J,I);break}}}H[A].$startY=g}}}};dhtmlx.chart.spline={pvt_render_spline:function(q,I,h,g,r,H){var F,u,o,s,E,n,m,A,w,v,l,c,a;E=this._calculateLineParams(q,I,h,g,r);F=this._settings;this._mapStart=h;o=[];if(I.length){A=(F.offset?h.x+E.cellWidth*0.5:h.x);for(u=0;u<I.length;u++){l=this._getPointY(I[u],h,g,E);if(l){m=((!u)?A:E.cellWidth*u-0.5+A);o.push({x:m,y:l,index:u})}}n=this._getSplineParameters(o);for(u=0;u<o.length;u++){w=o[u].x;c=o[u].y;if(u<o.length-1){v=o[u+1].x;a=o[u+1].y;for(s=w;s<v;s++){var D=this._getSplineYPoint(s,w,u,n.a,n.b,n.c,n.d);if(D<h.y){D=h.y}if(D>g.y){D=g.y}var C=this._getSplineYPoint(s+1,w,u,n.a,n.b,n.c,n.d);if(C<h.y){C=h.y}if(C>g.y){C=g.y}this._drawLine(q,s,D,s+1,C,F.line.color(I[u]),F.line.width)}this._drawLine(q,v-1,this._getSplineYPoint(s,w,u,n.a,n.b,n.c,n.d),v,a,F.line.color(I[u]),F.line.width)}this._drawItem(q,w,c,I[o[u].index],F.label(I[o[u].index]),r,H)}}},_getSplineParameters:function(A){var o,D,C,E,y,x,w,r,q=[],l=[],g=A.length;for(o=0;o<g-1;o++){q[o]=A[o+1].x-A[o].x;l[o]=(A[o+1].y-A[o].y)/q[o]}D=[];C=[];D[0]=0;D[1]=2*(q[0]+q[1]);C[0]=0;C[1]=6*(l[1]-l[0]);for(o=2;o<g-1;o++){D[o]=2*(q[o-1]+q[o])-q[o-1]*q[o-1]/D[o-1];C[o]=6*(l[o]-l[o-1])-q[o-1]*C[o-1]/D[o-1]}E=[];E[g-1]=E[0]=0;for(o=g-2;o>=1;o--){E[o]=(C[o]-q[o]*E[o+1])/D[o]}y=[];x=[];w=[];r=[];for(o=0;o<g-1;o++){y[o]=A[o].y;x[o]=-q[o]*E[o+1]/6-q[o]*E[o]/3+(A[o+1].y-A[o].y)/q[o];w[o]=E[o]/2;r[o]=(E[o+1]-E[o])/(6*q[o])}return{a:y,b:x,c:w,d:r}},_getSplineYPoint:function(h,m,n,l,g,q,o){return l[n]+(h-m)*(g[n]+(h-m)*(q[n]+(h-m)*o[n]))}};dhtmlx.chart.barH={pvt_render_barH:function(A,N,m,l,C,M){var r,u,E,D,a,H,o,K,v,L,c,x,n,I,w,h,y,s,J,g,q;E=(l.y-m.y)/N.length;o=this._getLimits("h");K=o.max;v=o.min;h=l.x-m.x;q=!!this._settings.yAxis;if(!C){this._drawHScales(A,N,m,l,v,K,E)}if(q){K=parseFloat(this._settings.xAxis.end);v=parseFloat(this._settings.xAxis.start)}I=this._getRelativeValue(v,K);x=I[0];c=I[1];s=(x?h/x:10);if(!q){w=10;s=(x?(h-w)/x:10)}u=parseInt(this._settings.width,10);if((u*this._series.length+4)>E){u=E/this._series.length-4}r=Math.floor((E-u*this._series.length)/2);n=(typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(u/5));L=false;a=this._settings.gradient;if(a&&typeof(a)!="function"){L=a;a=false}else{if(a){a=A.createLinearGradient(m.x,m.y,l.x,m.y);this._settings.gradient(a)}}if(!q){this._drawLine(A,m.x-0.5,m.y,m.x-0.5,l.y,"#000000",1)}for(H=0;H<N.length;H++){y=parseFloat(this._settings.value(N[H]||0));if(y>K){y=K}y-=v;y*=c;J=m.x;g=m.y+r+H*E+(u+1)*C;if((y<0&&this._settings.origin=="auto")||(this._settings.xAxis&&y===0&&!(this._settings.origin!="auto"&&this._settings.origin>v))){this.canvases[C].renderTextAt("middle","right",J+10,g+u/2+r,this._settings.label(N[H]));continue}if(y<0&&this._settings.origin!="auto"&&this._settings.origin>v){y=0}if(!q){y+=w/s}D=a||this._settings.color.call(this,N[H]);if(this._settings.border){this._drawBarHBorder(A,J,g,u,v,n,s,y,D)}A.globalAlpha=this._settings.alpha.call(this,N[H]);var F=this._drawBarH(A,l,J,g,u,v,n,s,y,D,a,L);if(L!=false){this._drawBarHGradient(A,J,g,u,v,n,s,y,D,L)}A.globalAlpha=1;if(F[3]==g){this.canvases[C].renderTextAt("middle","left",F[0]-5,F[3]+Math.floor(u/2),this._settings.label(N[H]));M.addRect(N[H].id,[F[0]-m.x,F[3]-m.y,F[2]-m.x,F[3]+u-m.y],C)}else{this.canvases[C].renderTextAt("middle",false,F[2]+5,F[1]+Math.floor(u/2),this._settings.label(N[H]));M.addRect(N[H].id,[F[0]-m.x,g-m.y,F[2]-m.x,F[3]-m.y],C)}}},_setBarHPoints:function(x,h,v,y,n,w,u,m,l){var c=0;if(n>w*u){var s=(n-w*u)/n;c=-Math.asin(s)+Math.PI/2}x.moveTo(h,v+m);var g=h+w*u-n-(n?0:m);if(n<w*u){x.lineTo(g,v+m)}var r=v+n;if(n&&n>0){x.arc(g,r,n-m,-Math.PI/2+c,0,false)}var q=v+y-n-(n?0:m);var a=g+n-(n?m:0);x.lineTo(a,q);if(n&&n>0){x.arc(g,q,n-m,0,Math.PI/2-c,false)}var o=v+y-m;x.lineTo(h,o);if(!l){x.lineTo(h,v+m)}return[a,o]},_drawHScales:function(g,n,m,l,o,c,h){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(),n,m,l,o,c)}if(this._settings.yAxis){if(!this.canvases.y){this.canvases.y=new dhtmlx.ui.Canvas(this._obj)}this._drawHYAxis(this.canvases.y.getCanvas(),n,m,l,h,a)}},_drawHYAxis:function(u,l,q,n,g,a){if(!this._settings.yAxis){return}var m;var c=parseInt((a?a:q.x),10)-0.5;var r=n.y+0.5;var o=q.y;this._drawLine(u,c,r,c,o,this._settings.yAxis.color,1);for(var h=0;h<l.length;h++){var s=((this._settings.origin!="auto")&&(this._settings.view=="barH")&&(parseFloat(this._settings.value(l[h]))<this._settings.origin));m=o+g/2+h*g;this.canvases.y.renderTextAt("middle",(s?false:"left"),(s?c+5:c-5),m,this._settings.yAxis.template(l[h]),"dhx_axis_item_y",(s?0:c-10));if(this._settings.yAxis.lines.call(this,l[h])){this._drawLine(u,q.x,m,n.x,m,this._settings.yAxis.lineColor.call(this,l[h]),1)}}this._drawLine(u,q.x+0.5,o+0.5,n.x,o+0.5,this._settings.yAxis.lineColor.call(this,{}),1);this._setYAxisTitle(q,n)},_drawHXAxis:function(C,u,y,x,g,q){var n;var l={};var o=this._settings.xAxis;if(!o){return}var A=x.y+0.5;var h=y.x-0.5;var a=x.x-0.5;var s=y.x;this._drawLine(C,h,A,a,A,o.color,1);if(o.step){n=parseFloat(o.step)}if(typeof this._configXAxis.step=="undefined"||typeof this._configXAxis.start=="undefined"||typeof this._configXAxis.end=="undefined"){l=this._calculateScale(g,q);g=l.start;q=l.end;n=l.step;this._settings.xAxis.end=q;this._settings.xAxis.start=g;this._settings.xAxis.step=n}if(n===0){return}var m=(a-h)*n/(q-g);var w=0;for(var r=g;r<=q;r+=n){if(l.fixNum){r=parseFloat((new Number(r)).toFixed(l.fixNum))}var v=Math.floor(h+w*m)+0.5;if(!(r==g&&this._settings.origin=="auto")&&o.lines.call(this,r)){this._drawLine(C,v,A,v,y.y,this._settings.xAxis.lineColor.call(this,r),1)}if(r==this._settings.origin){s=v+1}this.canvases.x.renderTextAt(false,true,v,A+2,o.template(r.toString()),"dhx_axis_item_x");w++}this.canvases.x.renderTextAt(true,false,h,x.y+this._settings.padding.bottom-3,this._settings.xAxis.title,"dhx_axis_title_x",x.x-y.x);if(!o.lines.call(this,{})){this._drawLine(C,h,y.y-0.5,a,y.y-0.5,this._settings.xAxis.color,0.2)}return s},_correctBarHParams:function(o,l,g,m,n,q,h){var a=this._settings.yAxis;var c=l;if(!!a&&this._settings.origin!="auto"&&(this._settings.origin>h)){l+=(this._settings.origin-h)*n;c=l;m=m-(this._settings.origin-h);if(m<0){m*=(-1);o.translate(l,g+q);o.rotate(Math.PI);l=0.5;g=0}l+=0.5}return{value:m,x0:l,y0:g,start:c}},_drawBarH:function(v,l,C,h,q,r,m,o,u,w,a,n){v.save();var s=this._correctBarHParams(v,C,h,u,o,q,r);v.fillStyle=w;v.beginPath();var x=this._setBarHPoints(v,s.x0,s.y0,q,m,o,s.value,(this._settings.border?1:0));if(a&&!n){v.lineTo(l.x,s.y0+(this._settings.border?1:0))}v.fill();v.restore();var g=s.y0;var c=(s.y0!=h?h:x[1]);var A=(s.y0!=h?(s.start-x[0]):s.start);var y=(s.y0!=h?s.start:x[0]);return[A,g,y,c]},_drawBarHBorder:function(q,c,n,r,l,h,o,m,g){q.save();var a=this._correctBarHParams(q,c,n,m,o,r,l);q.beginPath();this._setBorderStyles(q,g);q.globalAlpha=0.9;this._setBarHPoints(q,a.x0,a.y0,r,h,o,a.value,q.lineWidth/2,1);q.stroke();q.restore()},_drawBarHGradient:function(s,g,q,u,n,m,r,o,h,a){s.save();var c=this._correctBarHParams(s,g,q,o,r,u,n);var l=this._setBarGradient(s,c.x0,c.y0+u,c.x0+r*c.value,c.y0,a,h,"x");s.fillStyle=l.gradient;s.beginPath();this._setBarHPoints(s,c.x0,c.y0+l.offset,u-l.offset*2,m,r,c.value,l.offset);s.fill();s.globalAlpha=1;s.restore()}};dhtmlx.assert(dhtmlx.chart.barH);dhtmlx.chart.stackedBarH={pvt_render_stackedBarH:function(D,Q,l,h,E,P){var O,w;var c;var x;var A=h.x-l.x;var o=!!this._settings.yAxis;var n=this._getStackedLimits(Q);O=n.max;w=n.min;var H=Math.floor((h.y-l.y)/Q.length);if(!E){this._drawHScales(D,Q,l,h,w,O,H)}if(o){O=parseFloat(this._settings.xAxis.end);w=parseFloat(this._settings.xAxis.start)}var L=this._getRelativeValue(w,O);x=L[0];c=L[1];var u=(x?A/x:10);if(!o){var y=10;u=(x?(A-y)/x:10)}var v=parseInt(this._settings.width,10);if((v+4)>H){v=H-4}var q=(H-v)/2;var m=0;var r=false;var a=this._settings.gradient;if(a){r=true}if(!o){this._drawLine(D,l.x-0.5,l.y,l.x-0.5,h.y,"#000000",1)}var N=0;var K=0;for(J=0;J<this._series.length;J++){if(J==E){K=N}if(this._series[J].view=="stackedBarH"){N++}}for(var J=0;J<Q.length;J++){if(!K){Q[J].$startX=l.x}var C=parseFloat(this._settings.value(Q[J]||0));if(C>O){C=O}C-=w;C*=c;var M=l.x;var g=l.y+q+J*H;if(!K){Q[J].$startX=M}else{M=Q[J].$startX}if(C<0||(this._settings.yAxis&&C===0)){this.canvases.y.renderTextAt("middle",true,M+10,g+v/2,this._settings.label(Q[J]));continue}if(!o){C+=y/u}var F=this._settings.color.call(this,Q[J]);D.globalAlpha=this._settings.alpha.call(this,Q[J]);D.fillStyle=this._settings.color.call(this,Q[J]);D.beginPath();var I=this._setBarHPoints(D,M,g,v,m,u,C,(this._settings.border?1:0));if(a&&!r){D.lineTo(l.x+A,g+(this._settings.border?1:0))}D.fill();if(r!=false){var s=this._setBarGradient(D,M,g+v,M,g,r,F,"x");D.fillStyle=s.gradient;D.beginPath();I=this._setBarHPoints(D,M,g,v,m,u,C,0);D.fill()}if(this._settings.border){this._drawBarHBorder(D,M,g,v,w,m,u,C,F)}D.globalAlpha=1;this.canvases[E].renderTextAt("middle",true,Q[J].$startX+(I[0]-Q[J].$startX)/2-1,g+(I[1]-g)/2,this._settings.label(Q[J]));P.addRect(Q[J].id,[Q[J].$startX-l.x,g-l.y,I[0]-l.x,I[1]-l.y],E);Q[J].$startX=I[0]}}};dhtmlx.chart.stackedBar={pvt_render_stackedBar:function(y,M,h,g,A,L){var J,u;var a;var v;var w=g.y-h.y;var m=!!this._settings.yAxis;var K=!!this._settings.xAxis;var l=this._getStackedLimits(M);J=l.max;u=l.min;var D=Math.floor((g.x-h.x)/M.length);if(!A){this._drawScales(M,h,g,u,J,D)}if(m){J=parseFloat(this._settings.yAxis.end);u=parseFloat(this._settings.yAxis.start)}var H=this._getRelativeValue(u,J);v=H[0];a=H[1];var r=(v?w/v:10);var s=parseInt(this._settings.width,10);if(s+4>D){s=D-4}var n=Math.floor((D-s)/2);var o=(this._settings.gradient?this._settings.gradient:false);if(!K){this._drawLine(y,h.x,g.y+0.5,g.x,g.y+0.5,"#000000",1)}for(var F=0;F<M.length;F++){var x=parseFloat(this._settings.value(M[F]||0));if(!x){if(!A||!M[F].$startY){M[F].$startY=g.y}continue}if(!A){x-=u}x*=a;var I=h.x+n+F*D;var c=g.y;if(!A){M[F].$startY=c}else{c=M[F].$startY}if(c<(h.y+1)){continue}if(x<0||(this._settings.yAxis&&x===0)){this.canvases.y.renderTextAt(true,true,I+Math.floor(s/2),c,this._settings.label(M[F]));continue}var C=this._settings.color.call(this,M[F]);y.globalAlpha=this._settings.alpha.call(this,M[F]);y.fillStyle=this._settings.color.call(this,M[F]);y.beginPath();var E=this._setStakedBarPoints(y,I-(this._settings.border?0.5:0),c,s+(this._settings.border?0.5:0),r,x,0,h.y);y.fill();if(o){y.save();var q=this._setBarGradient(y,I,c,I+s,E[1],o,C,"y");y.fillStyle=q.gradient;y.beginPath();E=this._setStakedBarPoints(y,I+q.offset,c,s-q.offset*2,r,x,(this._settings.border?1:0),h.y);y.fill();y.restore()}if(this._settings.border){y.save();this._setBorderStyles(y,C);y.beginPath();this._setStakedBarPoints(y,I-0.5,c,s+1,r,x,0,h.y,1);y.stroke();y.restore()}y.globalAlpha=1;this.canvases[A].renderTextAt(false,true,I+Math.floor(s/2),(E[1]+(c-E[1])/2)-7,this._settings.label(M[F]));L.addRect(M[F].id,[I-h.x,E[1]-h.y,E[0]-h.x,(M[F].$startY||c)-h.y],A);M[F].$startY=(this._settings.border?(E[1]+1):E[1])}},_setStakedBarPoints:function(u,c,q,v,r,o,h,g,l){u.moveTo(c,q);var n=q-r*o+h;if(n<g){n=g}u.lineTo(c,n);var a=c+v;var m=n;u.lineTo(a,m);var s=c+v;u.lineTo(s,q);if(!l){u.lineTo(c,q)}return[s,m-2*h]}};dhtmlx.chart.line={pvt_render_line:function(n,C,l,h,o,y){var x,q,m,v,u,s,r,c,a,g,A,w;v=this._calculateLineParams(n,C,l,h,o);x=this._settings;if(C.length){u=(x.offset?l.x+v.cellWidth*0.5:l.x);m=[];for(q=0;q<C.length;q++){w=this._getPointY(C[q],l,h,v);if(w){r=((!q)?u:v.cellWidth*q-0.5+u);a=(typeof w=="object"?w.y0:w);if(q&&this._settings.fixOverflow){A=this._getPointY(C[q-1],l,h,v);if(A.out&&A.out==w.out){continue}s=v.cellWidth*(q-1)-0.5+u;c=(typeof A=="object"?A.y0:A);if(A.out){g=(A.out=="min"?h.y:l.y);m.push({x:this._calcOverflowX(s,r,c,a,g),y:g})}if(w.out){g=(w.out=="min"?h.y:l.y);m.push({x:this._calcOverflowX(s,r,c,a,g),y:g})}}if(!w.out){m.push({x:r,y:w,index:q})}}}this._mapStart=l;for(q=1;q<=m.length;q++){s=m[q-1].x;c=m[q-1].y;if(q<m.length){r=m[q].x;a=m[q].y;this._drawLine(n,s,c,r,a,x.line.color.call(this,C[q-1]),x.line.width);if(x.line&&x.line.shadow){n.globalAlpha=0.3;this._drawLine(n,s+2,c+x.line.width+8,r+2,a+x.line.width+8,"#eeeeee",x.line.width+3);n.globalAlpha=1}}if(typeof m[q-1].index!="undefined"){this._drawItem(n,s,c,C[m[q-1].index],x.label(C[m[q-1].index]),o,y,l)}}}},_calcOverflowX:function(c,a,h,g,l){return c+(l-h)*(a-c)/(g-h)},_drawItem:function(v,g,u,q,s,r,c){var h=this._settings.item;var o=parseInt(h.radius.call(this,q),10)||0;var n=this._mapStart;if(o){v.save();if(h.shadow){v.lineWidth=1;v.strokeStyle="#bdbdbd";v.fillStyle="#bdbdbd";var a=[0.1,0.2,0.3];for(var m=(a.length-1);m>=0;m--){v.globalAlpha=a[m];v.strokeStyle="#d0d0d0";v.beginPath();this._strokeChartItem(v,g,u+2*o/3,o+m+1,h.type);v.stroke()}v.beginPath();v.globalAlpha=0.3;v.fillStyle="#bdbdbd";this._strokeChartItem(v,g,u+2*o/3,o+1,h.type);v.fill()}v.restore();v.lineWidth=h.borderWidth;v.fillStyle=h.color.call(this,q);v.strokeStyle=h.borderColor.call(this,q);v.globalAlpha=h.alpha.call(this,q);v.beginPath();this._strokeChartItem(v,g,u,o+1,h.type);v.fill();v.stroke();v.globalAlpha=1}if(s){this.canvases[r].renderTextAt(false,true,g,u-o-this._settings.labelOffset,this._settings.label.call(this,q))}var l=(this._settings.eventRadius||o+1);c.addRect(q.id,[g-l-n.x,u-l-n.y,g+l-n.x,u+l-n.y],r)},_strokeChartItem:function(a,c,l,h,g){var m=[];c=parseInt(c,10);l=parseInt(l,10);if(g&&(g=="square"||g=="s")){h*=Math.sqrt(2)/2;m=[[c-h-a.lineWidth/2,l-h],[c+h,l-h],[c+h,l+h],[c-h,l+h],[c-h,l-h]]}else{if(g&&(g=="diamond"||g=="d")){var n=(a.lineWidth>1?a.lineWidth*Math.sqrt(2)/4:0);m=[[c,l-h],[c+h,l],[c,l+h],[c-h,l],[c+n,l-h-n]]}else{if(g&&(g=="triangle"||g=="t")){m=[[c,l-h],[c+Math.sqrt(3)*h/2,l+h/2],[c-Math.sqrt(3)*h/2,l+h/2],[c,l-h]]}else{m=[[c,l,h,0,Math.PI*2,true]]}}}this._path(a,m)},_getPointY:function(g,o,m,a){var n=a.minValue;var h=a.maxValue;var r=a.unit;var c=a.valueFactor;var q=this._settings.value(g);var s=(parseFloat(q||0)-n)*c;if(!this._settings.yAxis){s+=a.startValue/r}var l=m.y-r*s;if(this._settings.fixOverflow&&(this._settings.view=="line"||this._settings.view=="area")){if(q>h){l={y:o.y,y0:l,out:"max"}}else{if(s<0||q<n){l={y:m.y,y0:l,out:"min"}}}}else{if(q>h){l=o.y}if(s<0||q<n){l=m.y}}return l},_calculateLineParams:function(q,h,n,m,l){var c={};var r;c.totalHeight=m.y-n.y;c.cellWidth=(m.x-n.x)/((!this._settings.offset)?(h.length-1):h.length);var g=!!this._settings.yAxis;var a=(this._settings.view.indexOf("stacked")!=-1?this._getStackedLimits(h):this._getLimits());c.maxValue=a.max;c.minValue=a.min;if(!l){this._drawScales(h,n,m,c.minValue,c.maxValue,c.cellWidth)}if(g){c.maxValue=parseFloat(this._settings.yAxis.end);c.minValue=parseFloat(this._settings.yAxis.start)}var o=this._getRelativeValue(c.minValue,c.maxValue);r=o[0];c.valueFactor=o[1];c.unit=(r?c.totalHeight/r:10);c.startValue=0;if(!g){c.startValue=10;if(c.unit!=c.totalHeight){c.unit=(r?(c.totalHeight-c.startValue)/r:10)}}return c}};dhtmlx.chart.bar={pvt_render_bar:function(A,Q,l,h,C,P){var u,E,I,n,N,v,w,c,J,x,s,M,o,O=h.y-l.y;o=!!this._settings.yAxis;M=!!this._settings.xAxis;n=this._getLimits();N=n.max;v=n.min;E=(h.x-l.x)/Q.length;if(!C&&!(this._settings.origin!="auto"&&!o)){this._drawScales(Q,l,h,v,N,E)}if(o){N=parseFloat(this._settings.yAxis.end);v=parseFloat(this._settings.yAxis.start)}J=this._getRelativeValue(v,N);w=J[0];c=J[1];s=(w?O/w:w);if(!o&&!(this._settings.origin!="auto"&&M)){x=10;s=(w?(O-x)/w:x)}if(!C&&(this._settings.origin!="auto"&&!o)&&this._settings.origin>v){this._drawXAxis(A,Q,l,h,E,h.y-s*(this._settings.origin-v))}u=parseInt(this._settings.width,10);var L=0;var H=0;for(I=0;I<this._series.length;I++){if(I==C){H=L}if(this._series[I].view=="bar"){L++}}if(this._series&&(u*L+4)>E){u=parseInt(E/L-4,10)}var q=(E-u*L)/2;var m=(typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(u/5));var r=false;var a=this._settings.gradient;if(a&&typeof(a)!="function"){r=a;a=false}else{if(a){a=A.createLinearGradient(0,h.y,0,l.y);this._settings.gradient(a)}}if(!M){this._drawLine(A,l.x,h.y+0.5,h.x,h.y+0.5,"#000000",1)}for(I=0;I<Q.length;I++){var y=parseFloat(this._settings.value(Q[I])||0);if(isNaN(y)){continue}if(y>N){y=N}y-=v;y*=c;var K=l.x+q+parseInt(I*E,10)+(u+1)*H;var g=h.y;if(y<0||(this._settings.yAxis&&y===0&&!(this._settings.origin!="auto"&&this._settings.origin>v))){this.canvases[C].renderTextAt(true,true,K+Math.floor(u/2),g,this._settings.label(Q[I]));continue}if(!o&&!(this._settings.origin!="auto"&&M)){y+=x/s}var D=a||this._settings.color.call(this,Q[I]);A.globalAlpha=this._settings.alpha.call(this,Q[I]);var F=this._drawBar(A,l,K,g,u,v,m,s,y,D,a,r);if(r){this._drawBarGradient(A,K,g,u,v,m,s,y,D,r)}if(this._settings.border){this._drawBarBorder(A,K,g,u,v,m,s,y,D)}A.globalAlpha=1;if(F[0]!=K){this.canvases[C].renderTextAt(false,true,K+Math.floor(u/2),F[1],this._settings.label(Q[I]))}else{this.canvases[C].renderTextAt(true,true,K+Math.floor(u/2),F[3],this._settings.label(Q[I]))}P.addRect(Q[I].id,[K-l.x,F[3]-l.y,F[2]-l.x,F[1]-l.y],C)}},_correctBarParams:function(o,l,g,m,n,q,h){var a=this._settings.xAxis;var c=g;if(!!a&&this._settings.origin!="auto"&&(this._settings.origin>h)){g-=(this._settings.origin-h)*n;c=g;m=m-(this._settings.origin-h);if(m<0){m*=(-1);o.translate(l+q,g);o.rotate(Math.PI);l=0;g=0}g-=0.5}return{value:m,x0:l,y0:g,start:c}},_drawBar:function(v,l,C,h,q,r,m,o,u,w,a,n){v.save();v.fillStyle=w;var s=this._correctBarParams(v,C,h,u,o,q,r);var x=this._setBarPoints(v,s.x0,s.y0,q,m,o,s.value,(this._settings.border?1:0));if(a&&!n){v.lineTo(s.x0+(this._settings.border?1:0),l.y)}v.fill();v.restore();var A=s.x0;var y=(s.x0!=C?C+x[0]:x[0]);var g=(s.x0!=C?(s.start-x[1]-s.y0):s.y0);var c=(s.x0!=C?s.start-s.y0:x[1]);return[A,g,y,c]},_drawBarBorder:function(q,c,n,r,l,h,o,m,g){var a;q.save();a=this._correctBarParams(q,c,n,m,o,r,l);this._setBorderStyles(q,g);this._setBarPoints(q,a.x0,a.y0,r,h,o,a.value,q.lineWidth/2,1);q.stroke();q.restore()},_drawBarGradient:function(u,h,r,v,o,n,s,q,l,c){u.save();var g=this._correctBarParams(u,h,r,q,s,v,o);var m=this._setBarGradient(u,g.x0,g.y0,g.x0+v,g.y0-s*g.value+2,c,l,"y");var a=this._settings.border?1:0;u.fillStyle=m.gradient;this._setBarPoints(u,g.x0+m.offset,g.y0,v-m.offset*2,n,s,g.value,m.offset+a);u.fill();u.restore()},_setBarPoints:function(x,h,u,y,o,v,s,l,n){x.beginPath();var c=0;if(o>v*s){var m=(o-v*s)/o;if(m<=1&&m>=-1){c=-Math.acos(m)+Math.PI/2}}x.moveTo(h+l,u);var r=u-Math.floor(v*s)+o+(o?0:l);if(o<v*s){x.lineTo(h+l,r)}var g=h+o;if(o&&o>0){x.arc(g,r,o-l,-Math.PI+c,-Math.PI/2,false)}var a=h+y-o-l;var q=r-o+(o?l:0);x.lineTo(a,q);if(o&&o>0){x.arc(a,r,o-l,-Math.PI/2,0-c,false)}var w=h+y-l;x.lineTo(w,u);if(!n){x.lineTo(h+l,u)}return[w,q]}};dhtmlx.chart.pie={pvt_render_pie:function(c,h,a,m,g,l){this._renderPie(c,h,a,m,1,l,g)},_renderPie:function(s,F,l,h,D,E,u){if(!F.length){return}var v=this._getPieParameters(l,h);var n=(this._settings.radius?this._settings.radius:v.radius);if(n<0){return}var a=this._getValues(F);var m=this._getTotalValue(a);var o=this._getRatios(a,m);var C=(this._settings.x?this._settings.x:v.x);var g=(this._settings.y?this._settings.y:v.y);if(D==1&&this._settings.shadow){this._addShadow(s,C,g,n)}g=g/D;var r=-Math.PI/2;var x=[];s.scale(1,D);if(this._settings.gradient){var A=(D!=1?C+n/3:C);var c=(D!=1?g+n/3:g);this._showRadialGradient(s,C,g,n,A,c)}for(var y=0;y<F.length;y++){if(!a[y]){continue}s.strokeStyle=this._settings.lineColor.call(this,F[y]);s.beginPath();s.moveTo(C,g);x.push(r);alpha1=-Math.PI/2+o[y]-0.0001;s.arc(C,g,n,r,alpha1,false);s.lineTo(C,g);var w=this._settings.color.call(this,F[y]);s.fillStyle=w;s.fill();if(this._settings.pieInnerText){this._drawSectorLabel(C,g,5*n/6,r,alpha1,D,this._settings.pieInnerText(F[y],m),true)}if(this._settings.label){this._drawSectorLabel(C,g,n+this._settings.labelOffset,r,alpha1,D,this._settings.label(F[y]))}if(D!=1){this._createLowerSector(s,C,g,r,alpha1,n,true);s.fillStyle="#000000";s.globalAlpha=0.2;this._createLowerSector(s,C,g,r,alpha1,n,false);s.globalAlpha=1;s.fillStyle=w}E.addSector(F[y].id,r,alpha1,C-l.x,g-l.y/D,n,D,u);r=alpha1}s.globalAlpha=0.8;var q;for(y=0;y<x.length;y++){q=this._getPositionByAngle(x[y],C,g,n);this._drawLine(s,C,g,q.x,q.y,this._settings.lineColor.call(this,F[y]),2)}if(D==1){s.lineWidth=2;s.strokeStyle="#ffffff";s.beginPath();s.arc(C,g,n+1,0,2*Math.PI,false);s.stroke()}s.globalAlpha=1;s.scale(1,1/D)},_getValues:function(g){var a=[];for(var c=0;c<g.length;c++){a.push(parseFloat(this._settings.value(g[c])||0))}return a},_getTotalValue:function(a){var g=0;for(var c=0;c<a.length;c++){g+=a[c]}return g},_getRatios:function(c,a){var m;var l=[];var h=0;a=a||this._getTotalValue(c);for(var g=0;g<c.length;g++){m=c[g];l[g]=Math.PI*2*(a?((m+h)/a):(1/c.length));h+=m}return l},_getPieParameters:function(n,l){var h=l.x-n.x;var c=l.y-n.y;var g=n.x+h/2;var m=n.y+c/2;var a=Math.min(h/2,c/2);return{x:g,y:m,radius:a}},_createLowerSector:function(h,l,n,g,a,m,c){h.lineWidth=1;if(!((g<=0&&a>=0)||(g>=0&&a<=Math.PI)||(Math.abs(g-Math.PI)>0.003&&g<=Math.PI&&a>=Math.PI))){return}if(g<=0&&a>=0){g=0;c=false;this._drawSectorLine(h,l,n,m,g,a)}if(g<=Math.PI&&a>=Math.PI){a=Math.PI;c=false;this._drawSectorLine(h,l,n,m,g,a)}var o=(this._settings.height||Math.floor(m/4))/this._settings.cant;h.beginPath();h.arc(l,n,m,g,a,false);h.lineTo(l+m*Math.cos(a),n+m*Math.sin(a)+o);h.arc(l,n+o,m,a,g,true);h.lineTo(l+m*Math.cos(g),n+m*Math.sin(g));h.fill();if(c){h.stroke()}},_drawSectorLine:function(g,h,m,l,c,a){g.beginPath();g.arc(h,m,l,c,a,false);g.stroke()},_addShadow:function(c,a,m,h){c.globalAlpha=0.5;var l=["#c4c4c4","#c6c6c6","#cacaca","#dcdcdc","#dddddd","#e0e0e0","#eeeeee","#f5f5f5","#f8f8f8"];for(var g=l.length-1;g>-1;g--){c.beginPath();c.fillStyle=l[g];c.arc(a+1,m+1,h+g,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(g,c,n,a,h,l){g.beginPath();var m;if(typeof this._settings.gradient!="function"){m=g.createRadialGradient(h,l,a/4,c,n,a);m=this._getGrayGradient(m)}else{m=this._settings.gradient(m)}g.fillStyle=m;g.arc(c,n,a,0,Math.PI*2,true);g.fill();g.globalAlpha=0.7},_drawSectorLabel:function(E,c,h,A,w,F,v,a){var u=this.canvases[0].renderText(0,0,v,0,1);if(!u){return}var H=u.scrollWidth;u.style.width=H+"px";if(H>E){H=E}var C=(w-A<0.2?4:8);if(a){C=H/1.8}var g=A+(w-A)/2;h=h-(C-8)/2;var o=-C;var n=-8;var D="right";if(g>=Math.PI/2&&g<Math.PI||g<=3*Math.PI/2&&g>=Math.PI){o=-H-o+1;D="left"}var l=0;if(!a&&F<1&&(g>0&&g<Math.PI)){l=(this._settings.height||Math.floor(h/4))/F}var q=(c+Math.floor((h+l)*Math.sin(g)))*F+n;var r=E+Math.floor((h+C/2)*Math.cos(g))+o;var m=(w<Math.PI/2+0.01);var s=(A<Math.PI/2);if(s&&m){r=Math.max(r,E+3)}else{if(!s&&!m){r=Math.min(r,E-H)}else{if(!a&&(g>=Math.PI/2&&g<Math.PI||g<=3*Math.PI/2&&g>=Math.PI)){r+=H/3}}}u.style.top=q+"px";u.style.left=r+"px";u.style.width=H+"px";u.style.textAlign=D;u.style.whiteSpace="nowrap"}};dhtmlx.chart.pie3D={pvt_render_pie3D:function(c,h,a,m,g,l){this._renderPie(c,h,a,m,this._settings.cant,l)}};dhtmlx.chart.donut={pvt_render_donut:function(u,l,r,q,n,c){if(!l.length){return}this._renderPie(u,l,r,q,1,c);var h=this._settings;var m=this._getPieParameters(r,q);var a=(h.radius?h.radius:m.radius);var o=((h.innerRadius&&(h.innerRadius<a))?h.innerRadius:a/3);var g=(h.x?h.x:m.x);var s=(h.y?h.y:m.y);u.fillStyle="#ffffff";u.beginPath();u.arc(g,s,o,0,Math.PI*2,true);u.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(g){var a={};for(var c=0;c<this._grid.getColumnsNum();c++){a["data"+c]=this._grid[this._grid_getter](g,c)}return a},getInfo:function(a){return{_size:0,_from:0}}};dhtmlx.ui.Canvas=function(c,g,l){this._canvas_labels=[];this._canvas_name=g;this._obj=c;var h=c.offsetWidth*(window.devicePixelRatio||1);var a=c.offsetHeight*(window.devicePixelRatio||1);var l=l||"";l+=";width:"+c.offsetWidth+"px;height:"+c.offsetHeight+"px;";this._prepareCanvas(g,l,h,a)};dhtmlx.ui.Canvas.prototype={_prepareCanvas:function(c,h,g,a){this._canvas=dhtmlx.html.create("canvas",{width:g,height:a,canvas_id:c,style:(h||"")});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,m,l,h,c){if(!l){return}var g=dhtmlx.html.create("DIV",{"class":"dhx_canvas_text"+(h?(" "+h):""),style:"left:"+a+"px; top:"+m+"px;"},l);this._obj.appendChild(g);this._canvas_labels.push(g);if(c){g.style.width=c+"px"}return g},renderTextAt:function(l,q,a,o,h,n,g){var m=this.renderText.call(this,a,o,h,n,g);if(m){if(l){if(l=="middle"){m.style.top=parseInt(o-m.offsetHeight/2,10)+"px"}else{m.style.top=o-m.offsetHeight+"px"}}if(q){if(q=="left"){m.style.left=a-m.offsetWidth+"px"}else{m.style.left=parseInt(a-m.offsetWidth/2,10)+"px"}}}return m},clearCanvas:function(a){var c=[],g;for(g=0;g<this._canvas_labels.length;g++){this._obj.removeChild(this._canvas_labels[g])}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._obj.offsetWidth*(window.devicePixelRatio||1),this._obj.offsetWidth*(window.devicePixelRatio||1))},toggleCanvas:function(){this._toggleCanvas(this._canvas.style.display=="none")},showCanvas:function(){this._toggleCanvas(true)},hideCanvas:function(){this._toggleCanvas(false)},_toggleCanvas:function(a){var c,g;for(g=0;g<this._canvas_labels.length;g++){this._canvas_labels[g].style.display=(a?"":"none")}if(this._obj._htmlmap){c=this._getMapAreas();for(g=0;g<c.length;g++){if(a){c[g].removeAttribute("disabled")}else{c[g].setAttribute("disabled","true")}}}this._canvas.style.display=(a?"":"none")},_getMapAreas:function(){var g=[],a,c;a=this._obj._htmlmap.getElementsByTagName("AREA");for(c=0;c<a.length;c++){if(a[c].getAttribute("userdata")==this._canvas_name){g.push(a[c])}}return g}};dhtmlXChart=function(a){this.name="Chart";this.version="3.0";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(m,n,l){var h=l.getAttribute("series_id");if(this.callEvent("onLegendClick",[m,h,l])){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(l.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 g,c,h,l,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)}g=this._getChartBounds(this._obj.offsetWidth,this._obj.offsetHeight);l=new dhtmlx.ui.Map(this._id);a=this._settings;h=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(),h,g.start,g.end,c,l)}l.render(this._obj);this._obj.lastChild.style.zIndex=1000;this._applyBounds(this._obj.lastChild,g);this.callEvent("onAfterRender",[]);this._settings=a},_applyBounds:function(g,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 h in a){g.style[h]=a[h]+"px"}},_getChartData:function(){var h,n,g,l,m,r,a,o,q,c;l=this.data.getRange();h=(this._settings.view.toLowerCase().indexOf("barh")!=-1?"yAxis":"xAxis");n=this._settings[h];if(n&&n.units&&(typeof n.units=="object")){g=n.units;o=[];if(typeof g.start!="undefined"&&typeof g.end!="undefined"&&typeof g.next!="undefined"){a=g.start;while(a<=g.end){o.push(a);a=g.next.call(this,a)}}else{if(Object.prototype.toString.call(g)==="[object Array]"){o=g}}r=[];if(o.length){q=n.value;c={};for(m=0;m<l.length;m++){c[q(l[m])]=m}for(m=0;m<o.length;m++){if(typeof c[o[m]]!="undefined"){l[c[o[m]]].$unit=o[m];r.push(l[c[o[m]]])}else{r.push({$unit:o[m]})}}}return r}return l},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(l){var g,c,h;this.defaults=dhtmlx.extend({},this.defaults);if(typeof dhtmlx.presets.chart[l]=="object"){h=dhtmlx.presets.chart[l];for(g in h){if(typeof h[g]=="object"){if(!this.defaults[g]||typeof this.defaults[g]!="object"){this.defaults[g]=dhtmlx.extend({},h[g])}else{this.defaults[g]=dhtmlx.extend({},this.defaults[g]);for(c in h[g]){this.defaults[g][c]=h[g][c]}}}else{this.defaults[g]=h[g]}}return l}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"},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 g=["alpha","borderColor","color","radius"];for(var c=0;c<g.length;c++){a[g[c]]=dhtmlx.Template.setter(a[g[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 g=0;g<a.length;g++){c[a[g]]=dhtmlx.Template.setter(c[a[g]])}},_drawScales:function(l,h,g,n,a,c){var m=0;if(this._settings.yAxis){if(!this.canvases.y){this.canvases.y=new dhtmlx.ui.Canvas(this._obj,"axis_y")}m=this._drawYAxis(this.canvases.y.getCanvas(),l,h,g,n,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(),l,h,g,c,m)}return m},_drawXAxis:function(v,m,s,r,h,q){var g=s.x-0.5;var u=parseInt((q?q:r.y),10)+0.5;var c=r.x;var n;var a=true;for(var l=0;l<m.length;l++){if(this._settings.offset===true){n=g+h/2+l*h}else{n=(l==m.length-1)?r.x:g+l*h;a=!!l}n=Math.ceil(n)-0.5;var o=((this._settings.origin!="auto")&&(this._settings.view=="bar")&&(parseFloat(this._settings.value(m[l]))<this._settings.origin));this._drawXAxisLabel(n,u,m[l],a,o);if((this._settings.offset||l)&&this._settings.xAxis.lines.call(this,m[l])){this._drawXAxisLine(v,n,r.y,s.y,m[l])}}this.canvases.x.renderTextAt(true,false,g,r.y+this._settings.padding.bottom-3,this._settings.xAxis.title,"dhx_axis_title_x",r.x-s.x);this._drawLine(v,g,u,c,u,this._settings.xAxis.color,1);if(!this._settings.xAxis.lines.call(this,{})||!this._settings.offset){return}this._drawLine(v,c+0.5,r.y,c+0.5,s.y+0.5,this._settings.xAxis.color,0.2)},_drawYAxis:function(x,E,m,l,o,n){var q;var v={};if(!this._settings.yAxis){return}var A=m.x-0.5;var h=l.y;var g=m.y;var w=l.y;if(this._settings.yAxis.step){q=parseFloat(this._settings.yAxis.step)}if(typeof this._configYAxis.step=="undefined"||typeof this._configYAxis.start=="undefined"||typeof this._configYAxis.end=="undefined"){v=this._calculateScale(o,n);o=v.start;n=v.end;q=v.step;this._settings.yAxis.end=n;this._settings.yAxis.start=o}this._setYAxisTitle(m,l);if(q===0){n=o;q=1}var a=(n==o?h-g:(h-g)*q/(n-o));var C=0;for(var y=o;y<=n;y+=q){if(v.fixNum){y=parseFloat((new Number(y)).toFixed(v.fixNum))}var D=Math.floor(h-C*a)+0.5;if(!(y==o&&this._settings.origin=="auto")&&this._settings.yAxis.lines.call(this,y)){this._drawLine(x,A,D,l.x,D,this._settings.yAxis.lineColor.call(this,y),1)}if(y==this._settings.origin){w=D}var r=y;if(q<1){var s=Math.min(this._log10(q),(o<=0?0:this._log10(o)));var u=Math.pow(10,-s);r=Math.round(y*u)/u;y=r}this.canvases.y.renderText(0,D-5,this._settings.yAxis.template(r.toString()),"dhx_axis_item_y",m.x-5);C++}this._drawLine(x,A,h+1,A,g,this._settings.yAxis.color,1);return w},_setYAxisTitle:function(g,c){var a="dhx_axis_title_y"+(dhtmlx._isIE&&dhtmlx._isIE!=9?" dhx_ie_filter":"");var h=this.canvases.y.renderTextAt("middle",false,0,parseInt((c.y-g.y)/2+g.y,10),this._settings.yAxis.title,a);if(h){h.style.left=(dhtmlx.env.transform?(h.offsetHeight-h.offsetWidth)/2:0)+"px"}},_calculateScale:function(r,c){if(this._settings.origin!="auto"&&this._settings.origin<r){r=this._settings.origin}var l,h,n;l=((c-r)/8)||1;var g=Math.floor(this._log10(l));var a=Math.pow(10,g);var m=l/a;m=(m>5?10:5);l=parseInt(m,10)*a;if(l>Math.abs(r)){h=(r<0?-l:0)}else{var s=Math.abs(r);var q=Math.floor(this._log10(s));var o=s/Math.pow(10,q);h=Math.ceil(o*10)/10*Math.pow(10,q)-l;if(s>1&&l>0.1){h=Math.ceil(h)}while(r<0?h<=r:h>=r){h-=l}if(r<0){h=-h-2*l}}n=h;while(n<c){n+=l;n=parseFloat((new Number(n)).toFixed(Math.abs(g)))}return{start:h,end:n,step:l,fixNum:Math.abs(g)}},_getLimits:function(c,n){var o,m;var l=((arguments.length&&c=="h")?this._configXAxis:this._configYAxis);n=n||"value";if(l&&(typeof l.end!="undefined")&&(typeof l.start!="undefined")&&l.step){o=parseFloat(l.end);m=parseFloat(l.start)}else{o=this.max(this._series[0][n]);m=(l&&(typeof l.start!="undefined"))?parseFloat(l.start):this.min(this._series[0][n]);if(this._series.length>1){for(var h=1;h<this._series.length;h++){var a=this.max(this._series[h][n]);var g=this.min(this._series[h][n]);if(a>o){o=a}if(g<m){m=g}}}}return{max:o,min:m}},_log10:function(c){var a="log";return Math.floor((Math[a](c)/Math.LN10))},_drawXAxisLabel:function(c,m,l,a,h){if(!this._settings.xAxis){return}var g=this.canvases.x.renderTextAt(h,a,c,m-(h?2:0),this._settings.xAxis.template(l));if(g){g.className+=" dhx_axis_item_x"}},_drawXAxisLine:function(c,a,h,g,l){if(!this._settings.xAxis||!this._settings.xAxis.lines){return}this._drawLine(c,a,h,a,g,this._settings.xAxis.lineColor.call(this,l),1)},_drawLine:function(a,h,n,g,l,c,m){a.strokeStyle=c;a.lineWidth=m;a.beginPath();a.moveTo(h,n);a.lineTo(g,l);a.stroke();a.lineWidth=1},_getRelativeValue:function(h,l){var g,a;var c=1;if(l!=h){g=l-h}else{g=h}return[g,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(h,a){var g;this._active_serie=a.getAttribute("userdata");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()}}},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()},_setBorderStyles:function(a,c){var h,g;g=dhtmlx.math.toRgb(c);h=dhtmlx.math.rgbToHsv(g[0],g[1],g[2]);h[2]/=2;c="rgb("+dhtmlx.math.hsvToRgb(h[0],h[1],h[2])+")";a.strokeStyle=c;if(a.globalAlpha==1){a.globalAlpha=0.9}},_drawLegend:function(h,c){var l,r,A,s,m,u,a,o=0,n=0,w,q,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:"+o+"px; top:"+n+"px;"+a},"");if(r.padding){A.style.padding=r.padding+"px"}this.legendObj=A;this._obj.appendChild(A);m=[];if(!r.values){for(l=0;l<h.length;l++){m.push(this._drawLegendText(A,r.template(h[l])))}}else{for(l=0;l<r.values.length;l++){m.push(this._drawLegendText(A,r.values[l].text,(typeof r.values[l].id!="undefined"?typeof r.values[l].id:l),r.values[l].$hidden))}}u=A.offsetWidth;s=A.offsetHeight;if(u<this._obj.offsetWidth){if(r.layout=="x"&&r.align=="center"){o=(this._obj.offsetWidth-u)/2}if(r.align=="right"){o=this._obj.offsetWidth-u}if(r.margin&&r.align!="center"){o+=(r.align=="left"?1:-1)*r.margin}}if(s<this._obj.offsetHeight){if(r.valign=="middle"&&r.align!="center"&&r.layout!="x"){n=(this._obj.offsetHeight-s)/2}else{if(r.valign=="bottom"){n=this._obj.offsetHeight-s}}if(r.margin&&r.valign!="middle"){n+=(r.valign=="top"?1:-1)*r.margin}}A.style.left=o+"px";A.style.top=n+"px";w.save();for(l=0;l<m.length;l++){v=m[l];if(r.values&&r.values[l].$hidden){g=true;q=(r.values[l].disableColor?r.values[l].disableColor:"#d9d9d9")}else{g=false;q=(r.values?r.values[l].color:this._settings.color.call(this,h[l]))}this._drawLegendMarker(w,v.offsetLeft+o,v.offsetTop+n,q,v.offsetHeight,g,l)}w.restore();m=null},_drawLegendText:function(a,l,c,h){var g="";if(this._settings.legend.layout=="x"){g="float:left;"}var m=dhtmlx.html.create("DIV",{style:g+"padding-left:"+(10+this._settings.legend.marker.width)+"px","class":"dhx_chart_legend_item"+(h?" hidden":"")},l);if(arguments.length>2){m.setAttribute("series_id",c)}a.appendChild(m);return m},_drawLegendMarker:function(C,u,s,l,A,m,o){var c=[];var n=this._settings.legend.marker;var w=this._settings.legend.values;var r=(w&&w[o].markerType?w[o].markerType:n.type);if(l){C.fillStyle=l;C.strokeStyle=this._getDarkenColor(l,0.75)}C.beginPath();if(r=="round"||!n.radius){C.lineWidth=n.height;C.lineCap=r;u+=C.lineWidth/2+5;s+=A/2;C.moveTo(u,s);var a=u+n.width-n.height+1;C.lineTo(a,s)}else{if(r=="item"){if(this._settings.line&&this._settings.view!="scatter"&&!this._settings.disableLines){C.beginPath();C.lineWidth=this._series[o].line.width;C.strokeStyle=m?l:this._series[o].line.color.call(this,{});var g=u+5;var v=s+A/2;C.moveTo(g,v);var a=g+n.width;C.lineTo(a,v);C.stroke()}var h=this._series[o].item;var q=parseInt(h.radius.call(this,{}),10)||0;if(q){C.beginPath();if(m){C.lineWidth=h.borderWidth;C.strokeStyle=l;C.fillStyle=l}else{C.lineWidth=h.borderWidth;C.fillStyle=h.color.call(this,{});C.strokeStyle=h.borderColor.call(this,{});C.globalAlpha=h.alpha.call(this,{})}C.beginPath();u+=n.width/2+5;s+=A/2;this._strokeChartItem(C,u,s,q+1,h.type);C.fill();C.stroke()}C.globalAlpha=1}else{C.lineWidth=1;u+=5;s+=parseInt(A/2-n.height/2,10);c=[[u+n.radius,s+n.radius,n.radius,Math.PI,3*Math.PI/2,false],[u+n.width-n.radius,s],[u+n.width-n.radius,s+n.radius,n.radius,-Math.PI/2,0,false],[u+n.width,s+n.height-n.radius],[u+n.width-n.radius,s+n.height-n.radius,n.radius,0,Math.PI/2,false],[u+n.radius,s+n.height],[u+n.radius,s+n.height-n.radius,n.radius,Math.PI/2,Math.PI,false],[u,s+n.radius]];this._path(C,c)}}C.stroke();C.fill()},_getDarkenColor:function(a,h){var g,c;c=dhtmlx.math.toRgb(a);g=dhtmlx.math.rgbToHsv(c[0],c[1],c[2]);g[2]=g[2]*h;return"rgb("+dhtmlx.math.hsvToRgb(g[0],g[1],g[2])+")"},_getChartBounds:function(a,n){var q,g,o,c;q=this._settings.padding.left;g=this._settings.padding.top;o=a-this._settings.padding.right;c=n-this._settings.padding.bottom;if(this._settings.legend){var l=this._settings.legend;var m=this._settings.legend.width;var h=this._settings.legend.height;if(l.layout=="x"){if(l.valign=="center"){if(l.align=="right"){o-=m}else{if(l.align=="left"){q+=m}}}else{if(l.valign=="bottom"){c-=h}else{g+=h}}}else{if(l.align=="right"){o-=m}else{if(l.align=="left"){q+=m}}}}return{start:{x:q,y:g},end:{x:o,y:c}}},_getStackedLimits:function(l){var c,a,m,h,g;if(this._settings.yAxis&&(typeof this._settings.yAxis.end!="undefined")&&(typeof this._settings.yAxis.start!="undefined")&&this._settings.yAxis.step){m=parseFloat(this._settings.yAxis.end);h=parseFloat(this._settings.yAxis.start)}else{for(c=0;c<l.length;c++){l[c].$sum=0;l[c].$min=Infinity;for(a=0;a<this._series.length;a++){g=parseFloat(this._series[a].value(l[c])||0);if(isNaN(g)){continue}if(this._series[a].view.toLowerCase().indexOf("stacked")!=-1){l[c].$sum+=g}if(g<l[c].$min){l[c].$min=g}}}m=-Infinity;h=Infinity;for(c=0;c<l.length;c++){if(l[c].$sum>m){m=l[c].$sum}if(l[c].$min<h){h=l[c].$min}}if(h>0){h=0}}return{max:m,min:h}},_setBarGradient:function(w,c,s,a,q,o,h,g){var r,l,n,m,v,u;if(o=="light"){if(g=="x"){r=w.createLinearGradient(c,s,a,s)}else{r=w.createLinearGradient(c,s,c,q)}u=[[0,"#FFFFFF"],[0.9,h],[1,h]];l=2}else{if(o=="falling"||o=="rising"){if(g=="x"){r=w.createLinearGradient(c,s,a,s)}else{r=w.createLinearGradient(c,s,c,q)}n=dhtmlx.math.toRgb(h);m=dhtmlx.math.rgbToHsv(n[0],n[1],n[2]);m[1]*=1/2;v="rgb("+dhtmlx.math.hsvToRgb(m[0],m[1],m[2])+")";if(o=="falling"){u=[[0,v],[0.7,h],[1,h]]}else{if(o=="rising"){u=[[0,h],[0.3,h],[1,v]]}}l=0}else{w.globalAlpha=0.37;l=0;if(g=="x"){r=w.createLinearGradient(c,q,c,s)}else{r=w.createLinearGradient(c,s,a,s)}u=[[0,"#9d9d9d"],[0.3,"#e8e8e8"],[0.45,"#ffffff"],[0.55,"#ffffff"],[0.7,"#e8e8e8"],[1,"#9d9d9d"]]}}this._gradient(r,u);return{gradient:r,offset:l}},_getPositionByAngle:function(g,c,l,h){g*=(-1);c=c+Math.cos(g)*h;l=l-Math.sin(g)*h;return{x:c,y:l}},_gradient:function(g,c){for(var a=0;a<c.length;a++){g.addColorStop(c[a][0],c[a][1])}},_path:function(a,g){var c,h;for(c=0;c<g.length;c++){h=(c?"lineTo":"moveTo");if(g[c].length>2){h="arc"}a[h].apply(a,g[c])}},_circle:function(c,a,h,g){c.arc(a,h,g,Math.PI*2,true)},_addMapRect:function(h,l,a,g,c){h.addRect(l,[a[0].x-g.x,a[0].y-g.y,a[1].x-g.x,a[1].y-g.y],c)}};dhtmlx.compat("layout");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(g){var c="";if(g.page==-1){return""}g.min=g.page-Math.round((g.group-1)/2);g.max=g.min+g.group-1;if(g.min<0){g.max+=g.min*(-1);g.min=0}if(g.max>=g.limit){g.min-=Math.min(g.min,g.max-g.limit+1);g.max=g.limit-1}for(var a=(g.min||0);a<=g.max;a++){c+=this.button({id:a,index:(a+1),selected:(a==g.page?"_selected":"")})}return c},page:function(a){return a.page+1},first:function(){return this.button({id:"first",index:" << ",selected:""})},last:function(){return this.button({id:"last",index:" >> ",selected:""})},prev:function(){return this.button({id:"prev",index:"<",selected:""})},next:function(){return this.button({id:"next",index:">",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(g){c.setUpdated(g,true,"inserted")});this.data.attachEvent("onStoreLoad",dhtmlx.bind(function(h,g){if(h.getUserData){h.getUserData(g,this._userdata)}},this));this.attachEvent("onBeforeDelete",function(h){if(c._silent_mode){return true}var g=c.getState(h);if(g=="inserted"){c.setUpdated(h,false);return true}if(g=="deleted"){return false}if(g=="true_deleted"){return true}c.setUpdated(h,true,"deleted");return false});this.attachEvent("onAfterEditStop",function(g){c.setUpdated(g,true,"updated")});this.attachEvent("onBindUpdate",function(g){window.setTimeout(function(){c.setUpdated(g.id,true,"updated")},1)});a="_getRowData";c[a]=function(n,g){var l=this.obj.data.get(n);var m={};for(var h in l){if(h.indexOf("_")===0){continue}m[h]=l[h]}return m};a="_clearUpdateFlag";c[a]=function(){};this._userdata={};c.attachEvent("insertCallback",this._dp_callback);c.attachEvent("updateCallback",this._dp_callback);c.attachEvent("deleteCallback",function(g,h){this.obj.setUserData(h,this.action_param,"true_deleted");this.obj.remove(h)});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(g,a){var c=this._locateHTML(g);if(c){c.style.cssText+=";"+a}},changeId:function(c,a){this.data.changeId(c,a);this.refresh()},setUserData:function(g,a,c){if(g){this.data.get(g)[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 o="_dragged";var h=dhtmlDragAndDropObject.prototype.checkLanding;dhtmlDragAndDropObject.prototype.checkLanding=function(r,s,q){h.apply(this,arguments);if(!q){var u=dhtmlx.DragControl._drag_context=dhtmlx.DragControl._drag_context||{};if(!u.from){u.from=this.dragStartObject}dhtmlx.DragControl._checkLand(r,s,true)}};var c=dhtmlDragAndDropObject.prototype.stopDrag;dhtmlDragAndDropObject.prototype.stopDrag=function(s,q,r){if(!r){if(dhtmlx.DragControl._last){dhtmlx.DragControl._active=n.dragStartNode;dhtmlx.DragControl._stopDrag(s,true)}}c.apply(this,arguments)};var n=new dhtmlDragAndDropObject();var l=dhtmlx.DragControl._startDrag;dhtmlx.DragControl._startDrag=function(){l.apply(this,arguments);var u=dhtmlx.DragControl._drag_context;if(!u){return}var s=[];var r=[];for(var q=0;q<u.source.length;q++){s[q]={idd:u.source[q]};r.push(u.source[q])}n.dragStartNode={parentNode:{},parentObject:{idd:s,id:(r.length==1?r[0]:r),treeNod:{object:u.from}}};n.dragStartNode.parentObject.treeNod[o]=s;n.dragStartObject=u.from};var m=dhtmlx.DragControl._checkLand;dhtmlx.DragControl._checkLand=function(r,s,q){m.apply(this,arguments);if(!this._last&&!q){r=n.checkLanding(r,s,true)}};var a=dhtmlx.DragControl._stopDrag;dhtmlx.DragControl._stopDrag=function(r,q){a.apply(this,arguments);if(n.lastLanding&&!q){n.stopDrag(r,false,true)}};var g=dhtmlx.DragControl.getMaster;dhtmlx.DragControl.getMaster=function(r){var s=null;if(r){s=g.apply(this,arguments)}if(!s){s=n.dragStartObject;var u=[];var v=s[o];for(var q=0;q<v.length;q++){u.push(v[q].idd||v[q].id)}dhtmlx.DragControl._drag_context.source=u}return s}}};dhtmlx.DataMove={_init:function(){dhtmlx.assert(this.data,"DataMove :: Component doesn't have DataStore")},copy:function(c,l,a,h){var g=this.get(c);if(!g){dhtmlx.log("Warning","Incorrect ID in DataMove::copy");return}if(a){dhtmlx.assert(a.externalData,"DataMove :: External object doesn't support operation");g=a.externalData(g)}a=a||this;return a.add(a.externalData(g,h),l)},move:function(g,n,c,m){if(g instanceof Array){for(var h=0;h<g.length;h++){var a=(c||this).indexById(this.move(g[h],n,c,dhtmlx.uid()));if(g[h+1]){n=a+(this.indexById(g[h+1])<a?0:1)}}return}nid=g;if(n<0){dhtmlx.log("Info","DataMove::move - moving outside of bounds is ignored");return}var l=this.get(g);if(!l){dhtmlx.log("Warning","Incorrect ID in DataMove::move");return}if(!c||c==this){this.data.move(this.indexById(g),n)}else{dhtmlx.assert(c.externalData,"DataMove :: External object doesn't support operation");nid=c.add(c.externalData(l,m),n);this.remove(g)}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,g){var c=dhtmlx.extend({},a);c.id=g||dhtmlx.uid();c.$selected=c.$template=null;return c}};dhtmlx.DragControl={_drag_masters:dhtmlx.toArray(["dummy"]),addDrop:function(c,g,a){c=dhtmlx.toNode(c);c.dhx_drop=this._getCtrl(g);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(l){var g=dhtmlx.DragControl._active;var h=this._drag_masters[g.dhx_drag];var c;if(h.onDragCreate){c=h.onDragCreate(g,l);c.style.position="absolute";c.style.zIndex=dhtmlx.zIndex.drag;c.onmousemove=dhtmlx.DragControl._skip_mark}else{var m=dhtmlx.DragControl.onDrag(g,l);if(!m){return false}var c=document.createElement("DIV");c.innerHTML=m;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 g=this._drag_masters[c.dhx_drag];if(g&&g.onDragDestroy){g.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,l,h){var a=this._drag_masters[c.dhx_drop];if(a.onDragOut&&a!=this){return a.onDragOut(g,c,l,h)}c.className=c.className.replace("dhx_drop_zone","");return null},onDrop:function(g,c,l,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,l,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,l){var n=this.locate(l)||null;var c=dhtmlx.DragControl._drag_context;var m=dhtmlx.DragControl.getMaster(h);var a=(this._locateHTML(n)||this._obj);if(a==dhtmlx.DragControl._landing){return a}c.target=n;c.to=m;if(!this.callEvent("onBeforeDragIn",[c,l])){c.id=null;return null}dhtmlx.html.addCss(a,"dhx_drag_over");return a},onDragOut:function(h,g,o,l){var m=this.locate(l)||null;if(o!=this._dataobj){m=null}var c=(this._locateHTML(m)||(o?dhtmlx.DragControl.getMaster(o)._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,l]);return null},onDrop:function(g,c,l,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,l){var m=this.locate(l);var h=[m];if(m){if(this.getSelected){var c=this.getSelected();if(dhtmlx.PowerArray.find.call(c,m)!=-1){h=c}}var a=dhtmlx.DragControl._drag_context={source:h,start:m};a.from=this;if(this.callEvent("onBeforeDrag",[a,l])){return a.html||this._toHTML(this.get(m))}}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(g,h,c){if(g==13&&!c){this.stopEdit()}else{if(g==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(g,l){if(!this._edit_id){return true}if(this._edit_id==l){return false}var a={};if(!g){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(!g){this._edit_bind(false,c)}var h=this._edit_id;this._edit_bind=this._edit_id=null;this.data.refresh(h);this.callEvent("onAfterEditStop",[h,a]);return true},_save_binding:function(o){var a=this._locateHTML(o);var g="";var m="";var l=[];if(a){var h=a.getElementsByTagName("*");var n="";for(var c=0;c<h.length;c++){if(h[c].nodeType==1&&(n=h[c].getAttribute("bind"))){g+="els["+l.length+"].value="+n+";";m+=n+"=els["+l.length+"].value;";l.push(h[c]);h[c].className+=" dhx_allow_selection";h[c].onselectstart=this._block_native}}h=null}g=Function("obj","els",g);m=Function("obj","els",m);this._edit_bind=function(r,q){if(r){g(q,l);if(l.length&&l[0].select){l[0].select()}}else{m(q,l)}}},_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(g,a){for(var c=this._selected.length-1;c>=0;c--){if(this._selected[c]==g){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 g=this._selected[a]}var c=this.item(g);if(c){delete c.$selected}this._selected.splice(a,1);this.callEvent("onSelectChange",[g])}},_data_updated:function(g,c,a){if(a=="delete"){this._selected.remove(g)}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(g,c,a){if(!a&&!this.callEvent("onBeforeSelect",[g,c])){return false}this.data.item(g).$selected=c;if(a){a.push(g)}else{if(c){this._selected.push(g)}else{this._selected.remove(g)}this._refresh_selection(g)}return true},select:function(h,g,a){if(!h){return this.selectAll()}if(h instanceof Array){for(var c=0;c<h.length;c++){this.select(h[c],g,a)}return}if(!this.data.exists(h)){dhtmlx.error("Incorrect id in select command: "+h);return}if(a&&this._selected.length){return this.selectAll(this._selected[this._selected.length-1],h)}if(!g&&(this._selected.length!=1||this._selected[0]!=h)){this._silent_selection=true;this.unselectAll();this._silent_selection=false}if(this.isSelected(h)){if(g){this.unselect(h)}return}if(this._select_mark(h,true)){this.callEvent("onAfterSelect",[h])}},unselect:function(a){if(!a){return this.unselectAll()}if(!this.isSelected(a)){return}this._select_mark(a,false)},selectAll:function(h,g){var a;var c=[];if(h||g){a=this.data.getRange(h||null,g||null)}else{a=this.data.getRange()}a.each(function(l){var m=this.data.item(l.id);if(!m.$selected){this._selected.push(l.id);this._select_mark(l.id,true,c)}return l.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 g=this._dataobj.childNodes;for(var c=0;c<g.length;c++){var h=g[c].getAttribute(this._id);if(h){this._htmlmap[h]=g[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(m,h,g,l){if(m){var a=this._locateHTML(m);switch(g){case"update":if(!a){return}var c=this._htmlmap[m]=this._toHTMLObject(h);dhtmlx.html.insertBefore(c,a);dhtmlx.html.remove(a);break;case"delete":if(!a){return}dhtmlx.html.remove(a);delete this._htmlmap[m];break;case"add":var c=this._htmlmap[m]=this._toHTMLObject(h);dhtmlx.html.insertBefore(c,this._locateHTML(this.data.next(m)),this._dataobj);break;case"move":this.render(m,h,"delete");this.render(m,h,"add");break;default:dhtmlx.error("Unknown render command: "+g);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 h=this._settings.pager._settings;if(h.page==-1){return false}this.data.min=h.page*h.size;this.data.max=(h.page+1)*h.size-1;return true});var a=new dhtmlx.ui.pager(c);var g=dhtmlx.bind(function(){this.data.refresh()},this);a.attachEvent("onRefresh",g);this.data.attachEvent("onStoreUpdated",function(l){var h=this.dataCount();if(h!=a._settings.count){a._settings.count=h;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 g=this._getDimension();var a=dhtmlx.$customScroll?0:18;this._dataobj.style.width=g.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(g){range=this._getVisibleRange();var c=this.data.indexById(g);var a=Math.floor(c/range._dx)*range._y;this._dataobj.scrollTop=a},_getIndexRange:function(l,h){if(h!==0){h=Math.min((h||Infinity),this.dataCount()-1)}var a=dhtmlx.toArray();for(var c=(l||0);c<=h;c++){var g=this.item(this.order[c]);if(this.order.length>c){if(!g){this.order[c]=dhtmlx.uid();g={id:this.order[c],$template:"loading"};this._unrendered_area.push(this.order[c])}else{if(g.$template=="loading"){this._unrendered_area.push(this.order[c])}}a.push(g)}}return a},render:function(m,h,g,l){if(m){var a=this._locateHTML(m);switch(g){case"update":if(!a){return}var c=this._htmlmap[m]=this._toHTMLObject(h);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.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 l=Math.max(y._from,0);var x=(this.data.max||this.data.max===0)?this.data.max:Infinity;while(l<=y._height){while(this._htmlrows[l]&&this._htmlrows[l]._filled&&l<=y._height){l++}if(l>y._height){break}var o=l;while(!this._htmlrows[o]){o--}var a=this._htmlrows[o];var g=l*y._dx+(this.data.min||0);if(g>x){break}var m=Math.min(g+y._dx-1,x);var r=this._create_placeholder(y._y);var n=this.data.getIndexRange(g,m);if(!n.length){break}r.innerHTML=n.map(this._toHTML,this).join("");for(var v=0;v<n.length;v++){this._htmlmap[this.data.idByIndex(g+v)]=r.childNodes[v]}var w=parseInt(a.style.height,10);var D=(l-o)*y._y;var u=(w-D-y._y);dhtmlx.html.insertBefore(r,D?a.nextSibling:a,this._dataobj);this._htmlrows[l]=r;r._filled=true;if(D<=0&&u>0){a.style.height=u+"px";this._htmlrows[l+1]=a}else{if(D<0){dhtmlx.html.remove(a)}else{a.style.height=D+"px"}if(u>0){var q=this._htmlrows[l+1]=this._create_placeholder(u);dhtmlx.html.insertBefore(q,r.nextSibling,this._dataobj)}}l++}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 n=this._dataobj.scrollTop;var a=Math.max(this._dataobj.scrollWidth,this._dataobj.offsetWidth)-c;var o=this._dataobj.offsetHeight;var r=this.type;var h=this._getDimension();var s=Math.floor(a/h.x)||1;var g=Math.floor(n/h.y);var q=Math.ceil((o+n)/h.y)-1;var l=this.data.max?(this.data.max-this.data.min):this.data.dataCount();var m=Math.ceil(l/s)*h.y;return{_from:g,_height:q,_top:n,_max:m,_y:h.y,_dx:s}}};dhtmlXDataView=function(a){this.name="DataView";this.version="3.0";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(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(g,l){var h=this._locateHTML(g.target);if(this.type.drag_marker){if(this._drag_marker){this._drag_marker.style.backgroundImage="";this._drag_marker.style.backgroundRepeat=""}if(h){h.style.backgroundImage="url("+(dhtmlx.image_path||"")+this.type.drag_marker+")";h.style.backgroundRepeat="no-repeat";this._drag_marker=h}}if(h&&this._settings.auto_scroll){var a=h.offsetTop;var m=h.offsetHeight;var c=this._obj.scrollTop;var n=this._obj.offsetHeight;if(a-m>=0&&a-m*0.75<c){c=Math.max(a-m,0)}else{if(a+m/0.75>c+n){c=c+m}}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");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(h,n,m,l){var g=this.d.childNodes;var o=new xmlPointer();if(g.length){for(l=l||0;l<g.length;l++){if(g[l].tagName==h){o.d=g[l];if(n.apply(m,[o,l])==-1){return}}}}},get_all:function(){var g={};var c=this.d.attributes;for(var h=0;h<c.length;h++){g[c[h].name]=c[h].value}return g},sub:function(h){var g=this.d.childNodes;var m=new xmlPointer();if(g.length){for(var l=0;l<g.length;l++){if(g[l].tagName==h){m.d=g[l];return m}}}},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(g){var c=this.d.childNodes;if(c.length){for(var h=0;h<c.length;h++){if(c[h].tagName==g){return true}}}return false},through:function(g,n,r,l,s){var o=this.d.childNodes;if(o.length){for(var h=0;h<o.length;h++){if(o[h].tagName==g&&o[h].getAttribute(n)!=null&&o[h].getAttribute(n)!=""&&(!r||o[h].getAttribute(n)==r)){var m=new xmlPointer(o[h]);l.apply(s,[m,h])}var q=this.d;this.d=o[h];this.through(g,n,r,l,s);this.d=q}}}};function dhtmlXTreeObject(m,h,c,a){if(_isIE){try{document.execCommand("BackgroundImageCache",false,true)}catch(l){}}if(typeof(m)!="object"){this.parentObject=document.getElementById(m)}else{this.parentObject=m}this.parentObject.style.overflow="hidden";this._itim_dg=true;this.dlmtr=",";this.dropLower=false;this.enableIEImageFix();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._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";dhtmlxEventable(this);this.dragger=new dhtmlDragAndDropObject();this.htmlNode=new dhtmlXTreeItemObject(this.rootId,"",0,this);this.htmlNode.htmlNode.childNodes[0].childNodes[0].style.display="none";this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[0].className="hiddenRow";this.allTree=this._createSelf();this.allTree.appendChild(this.htmlNode.htmlNode);if(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(n){return g._doContClick(n||window.event,true)}}this.allTree.onmousedown=function(n){return g._doContClick(n||window.event)};this.XMLLoader=new dtmlXMLLoaderObject(this._parseXMLTree,this,true,this.no_cashe);if(_isIE){this.preventIECashing(true)}this.selectionBar=document.createElement("DIV");this.selectionBar.className="selectionBar";this.selectionBar.innerHTML=" ";this.selectionBar.style.display="none";this.allTree.appendChild(this.selectionBar);if(window.addEventListener){window.addEventListener("unload",function(){try{g.destructor()}catch(n){}},false)}if(window.attachEvent){window.attachEvent("onunload",function(){try{g.destructor()}catch(n){}})}this.setImagesPath=this.setImagePath;this.setIconsPath=this.setIconPath;if(dhtmlx.image_path){this.setImagePath(dhtmlx.image_path)}if(dhtmlx.skin){this.setSkin(dhtmlx.skin)}return this}dhtmlXTreeObject.prototype.setDataMode=function(a){this._datamode=a};dhtmlXTreeObject.prototype._doContClick=function(n,a){if(!a&&n.button!=2){if(this._acMenu){if(this._acMenu.hideContextMenu){this._acMenu.hideContextMenu()}else{this.cMenu._contextEnd()}}return true}var c=(_isIE?n.srcElement:n.target);while((c)&&(c.tagName!="BODY")){if(c.parentObject){break}c=c.parentNode}if((!c)||(!c.parentObject)){return true}var l=c.parentObject;if(!this.callEvent("onRightClick",[l.id,n])){(n.srcElement||n.target).oncontextmenu=function(r){(r||event).cancelBubble=true;return false}}this._acMenu=(l.cMenu||this.cMenu);if(this._acMenu){if(!(this.callEvent("onBeforeContextMenu",[l.id]))){return true}if(!_isMacOS){(n.srcElement||n.target).oncontextmenu=function(r){(r||event).cancelBubble=true;return false}}if(this._acMenu.showContextMenu){var h=window.document.documentElement;var g=window.document.body;var o=new Array((h.scrollLeft||g.scrollLeft),(h.scrollTop||g.scrollTop));if(_isIE){var q=n.clientX+o[0];var m=n.clientY+o[1]}else{var q=n.pageX;var m=n.pageY}this._acMenu.showContextMenu(q-1,m-1);this.contextID=l.id;n.cancelBubble=true;this._acMenu._skip_hide=true}else{c.contextMenuId=l.id;c.contextMenu=this._acMenu;c.a=this._acMenu._contextStart;c.a(c,n);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(g,c){g.src=c};this._getSrc=function(c){return c.src}}else{this._getImg=function(){var c=document.createElement("DIV");c.innerHTML=" ";c.className="dhx_bg_img_fix";return c};this._setSrc=function(g,c){g.style.backgroundImage="url("+c+")"};this._getSrc=function(c){var g=c.style.backgroundImage;return g.substr(4,g.length-5).replace(/(^")|("$)/g,"")}}};dhtmlXTreeObject.prototype.destructor=function(){for(var c in this._idpull){var g=this._idpull[c];if(!g){continue}g.parentObject=null;g.treeNod=null;g.childNodes=null;g.span=null;g.tr.nodem=null;g.tr=null;g.htmlNode.objBelong=null;g.htmlNode=null;this._idpull[c]=null}this.parentObject.innerHTML="";if(this.XMLLoader){this.XMLLoader.destructor()}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(m,c,g,a,h,l){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=g;this.actionHandler=h;this.images=new Array(a.imageArray[0],a.imageArray[1],a.imageArray[2]);this.id=a._globalIdStorageAdd(m,this);if(this.treeNod.checkBoxOff){this.htmlNode=this.treeNod._createItem(1,this,l)}else{this.htmlNode=this.treeNod._createItem(0,this,l)}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(m,a,g,h){var l=this._idpull[m];if(l){if((l.unParsed)&&(!g)){this.reParse(l,0)}if(this._srnd&&!l.htmlNode){this._buildSRND(l,g)}if((h)&&(this._edsbpsA)){for(var c=0;c<this._edsbpsA.length;c++){if(this._edsbpsA[c][2]==m){dhtmlxError.throwError("getItem","Requested item still in parsing process.",m);return null}}}return l}if((this.slowParse)&&(m!=0)&&(!a)){return this.preParse(m)}else{return null}};dhtmlXTreeObject.prototype._getSubItemsXML=function(a){var c=[];a.each("item",function(g){c.push(g.get("id"))},this);return c.join(this.dlmtr)};dhtmlXTreeObject.prototype.enableSmartXMLParsing=function(a){this.slowParse=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.findXML=function(c,a,g){};dhtmlXTreeObject.prototype._getAllCheckedXML=function(c,a,h){var g=[];if(h==2){c.through("item","checked",-1,function(l){g.push(l.get("id"))},this)}if(h==1){c.through("item","id",null,function(l){if(l.get("checked")&&(l.get("checked")!=-1)){g.push(l.get("id"))}},this)}if(h==0){c.through("item","id",null,function(l){if(!l.get("checked")||l.get("checked")==0){g.push(l.get("id"))}},this)}if(g.length){return a+(a?this.dlmtr:"")+g.join(this.dlmtr)}if(a){return a}else{return""}};dhtmlXTreeObject.prototype._setSubCheckedXML=function(a,c){var g=a?"1":"";c.through("item","id",null,function(h){if(!h.get("disabled")||h.get("disabled")==0){h.set("checked",g)}},this)};dhtmlXTreeObject.prototype._getAllScraggyItemsXML=function(g,a){var h=[];var c=function(l){if(!l.sub_exists("item")){h.push(l.get("id"))}else{l.each("item",c,this)}};c(g);return h.join(",")};dhtmlXTreeObject.prototype._getAllFatItemsXML=function(g,a){var h=[];var c=function(l){if(!l.sub_exists("item")){return}h.push(l.get("id"));l.each("item",c,this)};c(g);return h.join(",")};dhtmlXTreeObject.prototype._getAllSubItemsXML=function(g,c,a){var c=[];a.through("item","id",null,function(h){c.push(h.get("id"))},this);return c.join(",")};dhtmlXTreeObject.prototype.reParse=function(g){var m=this;if(!this.parsCount){m.callEvent("onXLS",[m,g.id])}this.xmlstate=1;var h=g.unParsed;g.unParsed=0;this.XMLloadingWarning=1;var a=this.parsingOn;var o=this.waitUpdateXML;var q=this.parsedArray;this.parsedArray=new Array();this.waitUpdateXML=false;this.parsingOn=g.id;this.parsedArray=new Array();this.setCheckList="";this._parse(h,g.id,2);var r=this.setCheckList.split(this.dlmtr);for(var l=0;l<this.parsedArray.length;l++){g.htmlNode.childNodes[0].appendChild(this.parsedArray[l])}if(h.get("order")&&h.get("order")!="none"){this._reorderBranch(g,h.get("order"),true)}this.oldsmcheck=this.smcheck;this.smcheck=false;for(var c=0;c<r.length;c++){if(r[c]){this.setCheck(r[c],1)}}this.smcheck=this.oldsmcheck;this.parsingOn=a;this.waitUpdateXML=o;this.parsedArray=q;this.XMLloadingWarning=0;this._redrawFrom(this,g);if(this._srnd&&!g._sready){this.prepareSR(g.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(h){this._globalIdStorageFind(h.up().get("id"));return a=true},this);if(a){var g=this._globalIdStorageFind(c,true,false);if(!g){dhtmlxError.throwError("getItem","The item "+c+" not operable. Seems you have non-unique|incorrect IDs in tree's XML.",c)}}return g};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(l,g){var h=document.createElement("tr");var c=document.createElement("td");var a=document.createElement("td");c.appendChild(document.createTextNode(" "));a.colSpan=3;a.appendChild(l);h.appendChild(c);h.appendChild(a);return h};dhtmlXTreeObject.prototype.loadXMLString=function(g,c){var a=this;if(!this.parsCount){this.callEvent("onXLS",[a,null])}this.xmlstate=1;if(c){this.XMLLoader.waitCall=c}this.XMLLoader.loadXMLString(g)};dhtmlXTreeObject.prototype.loadXML=function(a,g){if(this._datamode&&this._datamode!="xml"){return this["load"+this._datamode.toUpperCase()](a,g)}var c=this;if(!this.parsCount){this.callEvent("onXLS",[c,this._ld_id])}this._ld_id=null;this.xmlstate=1;this.XMLLoader=new dtmlXMLLoaderObject(this._parseXMLTree,this,true,this.no_cashe);if(g){this.XMLLoader.waitCall=g}this.XMLLoader.loadXML(a)};dhtmlXTreeObject.prototype._attachChildNode=function(o,m,h,q,E,D,C,r,g,v,w){if(v&&v.parentObject){o=v.parentObject}if(((o.XMLload==0)&&(this.XMLsource))&&(!this.XMLloadingWarning)){o.XMLload=1;this._loadDynXML(o.id)}var s=o.childsCount;var F=o.childNodes;if(w&&w.tr.previousSibling){if(w.tr.previousSibling.previousSibling){v=w.tr.previousSibling.nodem}else{r=r.replace("TOP","")+",TOP"}}if(v){var l,A;for(l=0;l<s;l++){if(F[l]==v){for(A=s;A!=l;A--){F[1+A]=F[A]}break}}l++;s=l}if(r){var x=r.split(",");for(var y=0;y<x.length;y++){switch(x[y]){case"TOP":if(o.childsCount>0){v=new Object;v.tr=o.childNodes[0].tr.previousSibling}o._has_top=true;for(l=s;l>0;l--){F[l]=F[l-1]}s=0;break}}}var u;if(!(u=this._idpull[m])||u.span!=-1){u=F[s]=new dhtmlXTreeItemObject(m,h,o,this,q,1);m=F[s].id;o.childsCount++}if(!u.htmlNode){u.label=h;u.htmlNode=this._createItem((this.checkBoxOff?1:0),u);u.htmlNode.objBelong=u}if(E){u.images[0]=E}if(D){u.images[1]=D}if(C){u.images[2]=C}var c=this._drawNewTr(u.htmlNode);if((this.XMLloadingWarning)||(this._hAdI)){u.htmlNode.parentNode.parentNode.style.display="none"}if((v)&&v.tr&&(v.tr.nextSibling)){o.htmlNode.childNodes[0].insertBefore(c,v.tr.nextSibling)}else{if(this.parsingOn==o.id){this.parsedArray[this.parsedArray.length]=c}else{o.htmlNode.childNodes[0].appendChild(c)}}if((v)&&(!v.span)){v=null}if(this.XMLsource){if((g)&&(g!=0)){u.XMLload=0}else{u.XMLload=1}}u.tr=c;c.nodem=u;if(o.itemId==0){c.childNodes[0].className="hiddenRow"}if((o._r_logic)||(this._frbtr)){this._setSrc(u.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0],this.imPath+this.radioArray[0])}if(r){var x=r.split(",");for(var y=0;y<x.length;y++){switch(x[y]){case"SELECT":this.selectItem(m,false);break;case"CALL":this.selectItem(m,true);break;case"CHILD":u.XMLload=0;break;case"CHECKED":if(this.XMLloadingWarning){this.setCheckList+=this.dlmtr+m}else{this.setCheck(m,1)}break;case"HCHECKED":this._setCheck(u,"unsure");break;case"OPEN":u.openMe=1;break}}}if(!this.XMLloadingWarning){if((this._getOpenState(o)<0)&&(!this._hAdI)){this.openItem(o.id)}if(v){this._correctPlus(v);this._correctLine(v)}this._correctPlus(o);this._correctLine(o);this._correctPlus(u);if(o.childsCount>=2){this._correctPlus(F[o.childsCount-2]);this._correctLine(F[o.childsCount-2])}if(o.childsCount!=2){this._correctPlus(F[0])}if(this.tscheck){this._correctCheckStates(o)}if(this._onradh){if(this.xmlstate==1){var a=this.onXLE;this.onXLE=function(n){this._onradh(m);if(a){a(n)}}}else{this._onradh(m)}}}return u};dhtmlXTreeObject.prototype.enableContextMenu=function(a){if(a){this.cMenu=a}};dhtmlXTreeObject.prototype.setItemContextMenu=function(m,h){var a=m.toString().split(this.dlmtr);for(var g=0;g<a.length;g++){var c=this._globalIdStorageFind(a[g]);if(!c){continue}c.cMenu=h}};dhtmlXTreeObject.prototype.insertNewItem=function(h,o,r,g,n,m,l,c,a){var s=this._globalIdStorageFind(h);if(!s){return(-1)}var q=this._attachChildNode(s,o,r,g,n,m,l,c,a);if(!this._idpull[this.rootId].XMLload){this._idpull[this.rootId].XMLload=1}if((!this.XMLloadingWarning)&&(this.childCalc)){this._fixChildCountLabel(s)}return q};dhtmlXTreeObject.prototype.insertNewChild=function(h,o,q,g,n,m,l,c,a){return this.insertNewItem(h,o,q,g,n,m,l,c,a)};dhtmlXTreeObject.prototype._parseXMLTree=function(h,g,o,n,l){var m=new xmlPointer(l.getXMLTopNode("tree"));h._parse(m);h._p=m};dhtmlXTreeObject.prototype._parseItem=function(m,r,l,o){var g;if(this._srnd&&(!this._idpull[g=m.get("id")]||!this._idpull[g].span)){this._addItemSRND(r.id,g,m);return}var n=m.get_all();if((typeof(this.waitUpdateXML)=="object")&&(!this.waitUpdateXML[n.id])){this._parse(m,n.id,1);return}if((n.text===null)||(typeof(n.text)=="undefined")){n.text=m.sub("itemtext");if(n.text){n.text=n.text.content()}}var u=[];if(n.select){u.push("SELECT")}if(n.top){u.push("TOP")}if(n.call){this.nodeAskingCall=n.id}if(n.checked==-1){u.push("HCHECKED")}else{if(n.checked){u.push("CHECKED")}}if(n.open){u.push("OPEN")}if(this.waitUpdateXML){if(this._globalIdStorageFind(n.id)){var q=this.updateItem(n.id,n.text,n.im0,n.im1,n.im2,n.checked,n.child)}else{if(this.npl==0){u.push("TOP")}else{l=r.childNodes[this.npl]}var q=this._attachChildNode(r,n.id,n.text,0,n.im0,n.im1,n.im2,u.join(","),n.child,0,l);n.id=q.id;l=null}}else{var q=this._attachChildNode(r,n.id,n.text,0,n.im0,n.im1,n.im2,u.join(","),n.child,(o||0),l)}if(n.tooltip){q.span.parentNode.parentNode.title=n.tooltip}if(n.style){if(q.span.style.cssText){q.span.style.cssText+=(";"+n.style)}else{q.span.setAttribute("style",q.span.getAttribute("style")+"; "+n.style)}}if(n.radio){q._r_logic=true}if(n.nocheckbox){var s=q.span.parentNode.previousSibling.previousSibling;s.style.display="none";q.nocheckbox=true}if(n.disabled){if(n.checked!=null){this._setCheck(q,n.checked)}this.disableCheckbox(q,1)}q._acc=n.child||0;if(this.parserExtension){this.parserExtension._parseExtension.call(this,m,n,(r?r.id:0))}this.setItemColor(q,n.aCol,n.sCol);if(n.locked=="1"){this.lockItem(q.id,true,true)}if((n.imwidth)||(n.imheight)){this.setIconSize(n.imwidth,n.imheight,q)}if((n.closeable=="0")||(n.closeable=="1")){this.setItemCloseable(q,n.closeable)}var h="";if(n.topoffset){this.setItemTopOffset(q,n.topoffset)}if((!this.slowParse)||(typeof(this.waitUpdateXML)=="object")){if(m.sub_exists("item")){h=this._parse(m,n.id,1)}}else{if((!q.childsCount)&&m.sub_exists("item")){q.unParsed=m.clone()}m.each("userdata",function(a){this.setUserData(n.id,a.get("name"),a.content())},this)}if(h!=""){this.nodeAskingCall=h}m.each("userdata",function(a){this.setUserData(m.get("id"),a.get("name"),a.content())},this)};dhtmlXTreeObject.prototype._parse=function(g,m,a,c){if(this._srnd&&!this.parentObject.offsetHeight){var w=this;return window.setTimeout(function(){w._parse(g,m,a,c)},100)}if(!g.exists()){return}this.skipLock=true;if(!m){m=g.get("id");var u=g.get("dhx_security");if(u){dhtmlx.security_key=u}if(g.get("radio")){this.htmlNode._r_logic=true}this.parsingOn=m;this.parsedArray=new Array();this.setCheckList="";this.nodeAskingCall=""}var v=this._globalIdStorageFind(m);if(!v){return dhtmlxError.throwError("DataStructure","XML refers to not existing parent")}this.parsCount=this.parsCount?(this.parsCount+1):1;this.XMLloadingWarning=1;if((v.childsCount)&&(!c)&&(!this._edsbps)&&(!v._has_top)){var o=0}else{var o=0}this.npl=0;g.each("item",function(x,n){v.XMLload=1;this._parseItem(x,v,0,o);if((this._edsbps)&&(this.npl==this._edsbpsC)){this._distributedStart(g,n+1,m,a,v.childsCount);return -1}this.npl++},this,c);if(!a){g.each("userdata",function(n){this.setUserData(g.get("id"),n.get("name"),n.content())},this);v.XMLload=1;if(this.waitUpdateXML){this.waitUpdateXML=false;for(var l=v.childsCount-1;l>=0;l--){if(v.childNodes[l]._dmark){this.deleteItem(v.childNodes[l].id)}}}var r=this._globalIdStorageFind(this.parsingOn);for(var l=0;l<this.parsedArray.length;l++){v.htmlNode.childNodes[0].appendChild(this.parsedArray[l])}this.parsedArray=[];this.lastLoadedXMLId=m;this.XMLloadingWarning=0;var s=this.setCheckList.split(this.dlmtr);for(var h=0;h<s.length;h++){if(s[h]){this.setCheck(s[h],1)}}if((this.XMLsource)&&(this.tscheck)&&(this.smcheck)&&(v.id!=this.rootId)){if(v.checkstate===0){this._setSubChecked(0,v)}else{if(v.checkstate===1){this._setSubChecked(1,v)}}}this._redrawFrom(this,null,c);if(g.get("order")&&g.get("order")!="none"){this._reorderBranch(v,g.get("order"),true)}if(this.nodeAskingCall!=""){this.callEvent("onClick",[this.nodeAskingCall,this.getSelectedItemId()])}if(this._branchUpdate){this._branchUpdateNext(g)}}if(this.parsCount==1){this.parsingOn=null;if(this._srnd&&v.id!=this.rootId){this.prepareSR(v.id);if(this.XMLsource){this.openItem(v.id)}}g.through("item","open",null,function(n){this.openItem(n.get("id"))},this);if((!this._edsbps)||(!this._edsbpsA.length)){var q=this;window.setTimeout(function(){q.callEvent("onXLE",[q,m])},1);this.xmlstate=0}this.skipLock=false}this.parsCount--;var q=this;if(this._edsbps){window.setTimeout(function(){q._distributedStep(m)},this._edsbpsD)}if(!a&&this.onXLE){this.onXLE(this,m)}return this.nodeAskingCall};dhtmlXTreeObject.prototype._branchUpdateNext=function(a){a.each("item",function(h){var g=h.get("id");if(this._idpull[g]&&(!this._idpull[g].XMLload)){return}this._branchUpdate++;this.smartRefreshItem(h.get("id"),h)},this);this._branchUpdate--};dhtmlXTreeObject.prototype.checkUserData=function(c,g){if((c.nodeType==1)&&(c.tagName=="userdata")){var a=c.getAttribute("name");if((a)&&(c.childNodes[0])){this.setUserData(g,a,c.childNodes[0].data)}}};dhtmlXTreeObject.prototype._redrawFrom=function(o,c,n,g){if(!c){var l=o._globalIdStorageFind(o.lastLoadedXMLId);o.lastLoadedXMLId=-1;if(!l){return 0}}else{l=c}var m=0;for(var h=(n?n-1:0);h<l.childsCount;h++){if((!this._branchUpdate)||(this._getOpenState(l)==1)){if((!c)||(g==1)){l.childNodes[h].htmlNode.parentNode.parentNode.style.display=""}}if(l.childNodes[h].openMe==1){this._openItem(l.childNodes[h]);l.childNodes[h].openMe=0}o._redrawFrom(o,l.childNodes[h]);if(this.childCalc!=null){if((l.childNodes[h].unParsed)||((!l.childNodes[h].XMLload)&&(this.XMLsource))){if(l.childNodes[h]._acc){l.childNodes[h].span.innerHTML=l.childNodes[h].label+this.htmlcA+l.childNodes[h]._acc+this.htmlcB}else{l.childNodes[h].span.innerHTML=l.childNodes[h].label}}if((l.childNodes[h].childNodes.length)&&(this.childCalc)){if(this.childCalc==1){l.childNodes[h].span.innerHTML=l.childNodes[h].label+this.htmlcA+l.childNodes[h].childsCount+this.htmlcB}if(this.childCalc==2){var a=l.childNodes[h].childsCount-(l.childNodes[h].pureChilds||0);if(a){l.childNodes[h].span.innerHTML=l.childNodes[h].label+this.htmlcA+a+this.htmlcB}if(l.pureChilds){l.pureChilds++}else{l.pureChilds=1}}if(this.childCalc==3){l.childNodes[h].span.innerHTML=l.childNodes[h].label+this.htmlcA+l.childNodes[h]._acc+this.htmlcB}if(this.childCalc==4){var a=l.childNodes[h]._acc;if(a){l.childNodes[h].span.innerHTML=l.childNodes[h].label+this.htmlcA+a+this.htmlcB}}}else{if(this.childCalc==4){m++}}m+=l.childNodes[h]._acc;if(this.childCalc==3){m++}}}if((!l.unParsed)&&((l.XMLload)||(!this.XMLsource))){l._acc=m}o._correctLine(l);o._correctPlus(l);if((this.childCalc)&&(!c)){o._fixChildCountLabel(l)}};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 h=c.htmlNode.childNodes[0].childNodes;var a=h.length;for(var g=1;g<a;g++){h[g].style.display="none"}this._correctPlus(c)}for(var g=0;g<c.childsCount;g++){if(c.childNodes[g].childsCount){this._xcloseAll(c.childNodes[g])}}};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 g=c.htmlNode.childNodes[0].childNodes[0].childNodes[0].lastChild;var l=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(l,this.iconURL+c.images[2]);if(this._txtimg){return(g.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(l,this.iconURL+c.images[1]);if(this._txtimg){return(g.innerHTML="[-]")}}else{if(!c.wsign){var a=this.plusArray}this._setSrc(l,this.iconURL+c.images[2]);if(this._txtimg){return(g.innerHTML="[+]")}}}else{this._setSrc(l,this.iconURL+c.images[0])}}var h=2;if(!c.treeNod.treeLinesOn){this._setSrc(g,this.imPath+a[3])}else{if(c.parentObject){h=this._getCountStatus(c.id,c.parentObject)}this._setSrc(g,this.imPath+a[h])}};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 g=1;g<=c.childsCount;g++){if(!c.htmlNode.childNodes[0].childNodes[g]){break}c.htmlNode.childNodes[0].childNodes[g].childNodes[0].style.backgroundImage="";c.htmlNode.childNodes[0].childNodes[g].childNodes[0].style.backgroundRepeat=""}}else{for(var g=1;g<=c.childsCount;g++){if(!c.htmlNode.childNodes[0].childNodes[g]){break}c.htmlNode.childNodes[0].childNodes[g].childNodes[0].style.backgroundImage="url("+this.imPath+this.lineArray[5]+")";c.htmlNode.childNodes[0].childNodes[g].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,l){if((this.XMLsource)&&(!c.XMLload)){if(l==1){return}c.XMLload=1;this._loadDynXML(c.id);return}if(c.unParsed){this.reParse(c)}var h=c.htmlNode.childNodes[0].childNodes;var a=h.length;if(a>1){if(((h[1].style.display!="none")||(l==1))&&(l!=2)){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0";nodestyle="none"}else{nodestyle=""}for(var g=1;g<a;g++){h[g].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,g,a){if(g!=this.rootId){this.callEvent("onOpenEnd",[g,c.getOpenState(g)])}c.onXLE=c._oie_onXLE.pop();if(!a&&!c._oie_onXLE.length){if(c.onXLE){c.onXLE(c,g)}}};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(m,n){if(this.checkEvent("onSelect")){this._onSSCFold=this.getSelectedItemId()}if((!this._amsel)||(!n)||((!n.ctrlKey)&&(!n.metaKey)&&(!n.shiftKey))){this._unselectItems()}if((m.i_sel)&&(this._amsel)&&(n)&&(n.ctrlKey||n.metaKey)){this._unselectItem(m)}else{if((!m.i_sel)&&((!this._amselS)||(this._selected.length==0)||(this._selected[0].parentObject==m.parentObject))){if((this._amsel)&&(n)&&(n.shiftKey)&&(this._selected.length!=0)&&(this._selected[this._selected.length-1].parentObject==m.parentObject)){var h=this._getIndex(this._selected[this._selected.length-1]);var g=this._getIndex(m);if(g<h){var q=h;h=g;g=q}for(var l=h;l<=g;l++){if(!m.parentObject.childNodes[l].i_sel){this._markItem(m.parentObject.childNodes[l])}}}else{this._markItem(m)}}}if(this.checkEvent("onSelect")){var o=this.getSelectedItemId();if(o!=this._onSSCFold){this.callEvent("onSelect",[o])}}};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 g=a.parentObject;for(var c=0;c<g.childsCount;c++){if(g.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,m){h=h||window.event;var c=this.parentObject;if(g){c=g.parentObject}var a=c.treeNod;var l=a.getSelectedItemId();if((!h)||(!h.skipUnSel)){a._selectItem(c,h)}if(!m){if(c.actionHandler){c.actionHandler(c.id,l)}else{a.callEvent("onClick",[c.id,l])}}};dhtmlXTreeObject.prototype._correctCheckStates=function(l){if(!this.tscheck){return}if(!l){return}if(l.id==this.rootId){return}var g=l.childNodes;var c=0;var a=0;if(l.childsCount==0){return}for(var h=0;h<l.childsCount;h++){if(g[h].dscheck){continue}if(g[h].checkstate==0){c=1}else{if(g[h].checkstate==1){a=1}else{c=1;a=1;break}}}if((c)&&(a)){this._setCheck(l,"unsure")}else{if(c){this._setCheck(l,false)}else{this._setCheck(l,true)}}this._correctCheckStates(l.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(u,s,o){var v=document.createElement("table");v.cellSpacing=0;v.cellPadding=0;v.border=0;if(this.hfMode){v.style.tableLayout="fixed"}v.style.margin=0;v.style.padding=0;var n=document.createElement("tbody");var r=document.createElement("tr");var h=document.createElement("td");h.className="standartTreeImage";if(this._txtimg){var l=document.createElement("div");h.appendChild(l);l.className="dhx_tree_textSign"}else{var l=this._getImg(s.id);l.border="0";if(l.tagName=="IMG"){l.align="absmiddle"}h.appendChild(l);l.style.padding=0;l.style.margin=0;l.style.width=this.def_line_img_x;l.style.height=this.def_line_img_y}var g=document.createElement("td");var q=this._getImg(this.cBROf?this.rootId:s.id);q.checked=0;this._setSrc(q,this.imPath+this.checkArray[0]);q.style.width="18px";q.style.height="18px";if(!u){g.style.display="none"}g.appendChild(q);if((!this.cBROf)&&(q.tagName=="IMG")){q.align="absmiddle"}q.onclick=this.onCheckBoxClick;q.treeNod=this;q.parentObject=s;if(!window._KHTMLrv){g.width="20px"}else{g.width="16px"}var c=document.createElement("td");c.className="standartTreeImage";var m=this._getImg(this.timgen?s.id:this.rootId);m.onmousedown=this._preventNsDrag;m.ondragstart=this._preventNsDrag;m.border="0";if(this._aimgs){m.parentObject=s;if(m.tagName=="IMG"){m.align="absmiddle"}m.onclick=this.onRowSelect}if(!o){this._setSrc(m,this.iconURL+this.imageArray[0])}c.appendChild(m);m.style.padding=0;m.style.margin=0;if(this.timgen){c.style.width=m.style.width=this.def_img_x;m.style.height=this.def_img_y}else{m.style.width="0px";m.style.height="0px";if(_isOpera||window._KHTMLrv){c.style.display="none"}}var a=document.createElement("td");a.className="standartTreeRow";s.span=document.createElement("span");s.span.className="standartTreeRow";if(this.mlitems){s.span.style.width=this.mlitems;s.span.style.display="block"}else{a.noWrap=true}if(_isIE&&_isIE>7){a.style.width="999999px"}else{if(!window._KHTMLrv){a.style.width="100%"}}s.span.innerHTML=s.label;a.appendChild(s.span);a.parentObject=s;h.parentObject=s;a.onclick=this.onRowSelect;h.onclick=this.onRowClick;a.ondblclick=this.onRowClick2;if(this.ettip){r.title=s.label}if(this.dragAndDropOff){if(this._aimgs){this.dragger.addDraggableItem(c,this);c.parentObject=s}this.dragger.addDraggableItem(a,this)}s.span.style.paddingLeft="5px";s.span.style.paddingRight="5px";a.style.verticalAlign="";a.style.fontSize="10pt";a.style.cursor=this.style_pointer;r.appendChild(h);r.appendChild(g);r.appendChild(c);r.appendChild(a);n.appendChild(r);v.appendChild(n);if(this.ehlt||this.checkEvent("onMouseIn")||this.checkEvent("onMouseOut")){r.onmousemove=this._itemMouseIn;r[(_isIE)?"onmouseleave":"onmouseout"]=this._itemMouseOut}return v};dhtmlXTreeObject.prototype.setImagePath=function(a){this.imPath=a;this.iconURL=a};dhtmlXTreeObject.prototype.setIconPath=function(a){this.iconURL=a};dhtmlXTreeObject.prototype._getLeafCount=function(h){var g=0;for(var c=0;c<h.childsCount;c++){if(h.childNodes[c].childsCount==0){g++}}return g};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(m,h){if(this.childCalc==null){return}if((m.unParsed)||((!m.XMLload)&&(this.XMLsource))){if(m._acc){m.span.innerHTML=m.label+this.htmlcA+m._acc+this.htmlcB}else{m.span.innerHTML=m.label}return}switch(this.childCalc){case 1:if(m.childsCount!=0){m.span.innerHTML=m.label+this.htmlcA+m.childsCount+this.htmlcB}else{m.span.innerHTML=m.label}break;case 2:var l=this._getLeafCount(m);if(l!=0){m.span.innerHTML=m.label+this.htmlcA+l+this.htmlcB}else{m.span.innerHTML=m.label}break;case 3:if(m.childsCount!=0){var g=0;for(var c=0;c<m.childsCount;c++){if(!m.childNodes[c]._acc){m.childNodes[c]._acc=0}g+=m.childNodes[c]._acc*1}g+=m.childsCount*1;m.span.innerHTML=m.label+this.htmlcA+g+this.htmlcB;m._acc=g}else{m.span.innerHTML=m.label;m._acc=0}if((m.parentObject)&&(m.parentObject!=this.htmlNode)){this._fixChildCountLabel(m.parentObject)}break;case 4:if(m.childsCount!=0){var g=0;for(var c=0;c<m.childsCount;c++){if(!m.childNodes[c]._acc){m.childNodes[c]._acc=1}g+=m.childNodes[c]._acc*1}m.span.innerHTML=m.label+this.htmlcA+g+this.htmlcB;m._acc=g}else{m.span.innerHTML=m.label;m._acc=1}if((m.parentObject)&&(m.parentObject!=this.htmlNode)){this._fixChildCountLabel(m.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(h,c,g){var a=this._globalIdStorageFind(h,0,true);if(!a){return}if(c=="hint"){a.htmlNode.childNodes[0].childNodes[0].title=g}if(typeof(a.userData["t_"+c])=="undefined"){if(!a._userdatalist){a._userdatalist=c}else{a._userdatalist+=","+c}}a.userData["t_"+c]=g};dhtmlXTreeObject.prototype.getUserData=function(g,c){var a=this._globalIdStorageFind(g,0,true);if(!a){return}return a.userData["t_"+c]};dhtmlXTreeObject.prototype.getItemColor=function(g){var a=this._globalIdStorageFind(g);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(g,c,h){if((g)&&(g.span)){var a=g}else{var a=this._globalIdStorageFind(g)}if(!a){return 0}else{if(a.i_sel){if(h){a.span.style.color=h}}else{if(c){a.span.style.color=c}}if(h){a.scolor=h}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,g){if(c==g){return}var a=this._globalIdStorageFind(c);if(!a){return 0}a.id=g;a.span.contextMenuId=g;this._idpull[g]=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(g){var a=this._globalIdStorageFind(g);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 m=this.dadmodec;if(m==1){var l=c;if(this.dadmodefix<0){while(true){l=this._getPrevNode(l);if((l==-1)){l=this.htmlNode;break}if((l.tr==0)||(l.tr.style.display=="")||(!l.parentObject)){break}}var h=l;var g=c}else{if((l.tr)&&(l.tr.nextSibling)&&(l.tr.nextSibling.nodem)&&(this._getOpenState(l)<1)){l=l.tr.nextSibling.nodem}else{l=this._getNextNode(l);if((l==-1)){l=this.htmlNode}}var g=l;var h=c}if(this._getNodeLevel(h,0)>this._getNodeLevel(g,0)){if(!this.dropLower){return this._moveNodeTo(a,h.parentObject)}else{if(g.id!=this.rootId){return this._moveNodeTo(a,g.parentObject,g)}else{return this._moveNodeTo(a,this.htmlNode,null)}}}else{return this._moveNodeTo(a,g.parentObject,g)}}else{return this._moveNodeTo(a,c)}};dhtmlXTreeObject.prototype._fixNodesCollection=function(o,m){var c=0;var h=0;var n=o.childNodes;var a=o.childsCount-1;if(m==n[a]){return}for(var l=0;l<a;l++){if(n[l]==n[a]){n[l]=n[l+1];n[l+1]=n[a]}}for(var l=0;l<a+1;l++){if(c){var g=n[l];n[l]=c;c=g}else{if(n[l]==m){c=n[l];n[l]=n[a]}}}};dhtmlXTreeObject.prototype._recreateBranch=function(m,o,l,a){var c;var q="";if(l){for(c=0;c<o.childsCount;c++){if(o.childNodes[c]==l){break}}if(c!=0){l=o.childNodes[c-1]}else{q="TOP";l=""}}var g=this._onradh;this._onradh=null;var n=this._attachChildNode(o,m.id,m.label,0,m.images[0],m.images[1],m.images[2],q,0,l);n._userdatalist=m._userdatalist;n.userData=m.userData.clone();if(m._attrs){n._attrs={};for(var h in m._attrs){n._attrs[h]=m._attrs[h]}}n.XMLload=m.XMLload;if(g){this._onradh=g;this._onradh(n.id)}if(m.treeNod.dpcpy){m.treeNod._globalIdStorageFind(m.id)}else{n.unParsed=m.unParsed}this._correctPlus(n);for(var c=0;c<m.childsCount;c++){this._recreateBranch(m.childNodes[c],n,0,1)}if((!a)&&(this.childCalc)){this._redrawFrom(this,o)}return n};dhtmlXTreeObject.prototype._moveNodeTo=function(u,w,s){if(u.treeNod._nonTrivialNode){return u.treeNod._nonTrivialNode(this,w,s,u)}if(this._checkPNodes(w,u)){return false}if(w.mytype){var n=(u.treeNod.lWin!=w.lWin)}else{var n=(u.treeNod.lWin!=w.treeNod.lWin)}if(!this.callEvent("onDrag",[u.id,w.id,(s?s.id:null),u.treeNod,w.treeNod])){return false}if((w.XMLload==0)&&(this.XMLsource)){w.XMLload=1;this._loadDynXML(w.id)}this.openItem(w.id);var g=u.treeNod;var q=u.parentObject.childsCount;var r=u.parentObject;if((n)||(g.dpcpy)){var h=u.id;u=this._recreateBranch(u,w,s);if(!g.dpcpy){g.deleteItem(h)}}else{var l=w.childsCount;var v=w.childNodes;if(l==0){w._open=true}g._unselectItem(u);v[l]=u;u.treeNod=w.treeNod;w.childsCount++;var o=this._drawNewTr(v[l].htmlNode);if(!s){w.htmlNode.childNodes[0].appendChild(o);if(this.dadmode==1){this._fixNodesCollection(w,s)}}else{w.htmlNode.childNodes[0].insertBefore(o,s.tr);this._fixNodesCollection(w,s);v=w.childNodes}}if((!g.dpcpy)&&(!n)){var a=u.tr;if((document.all)&&(navigator.appVersion.search(/MSIE\ 5\.0/gi)!=-1)){window.setTimeout(function(){a.parentNode.removeChild(a)},250)}else{u.parentObject.htmlNode.childNodes[0].removeChild(u.tr)}if((!s)||(w!=u.parentObject)){for(var m=0;m<r.childsCount;m++){if(r.childNodes[m].id==u.id){r.childNodes[m]=0;break}}}else{r.childNodes[r.childsCount-1]=0}g._compressChildList(r.childsCount,r.childNodes);r.childsCount--}if((!n)&&(!g.dpcpy)){u.tr=o;o.nodem=u;u.parentObject=w;if(g!=w.treeNod){if(u.treeNod._registerBranch(u,g)){return}this._clearStyles(u);this._redrawFrom(this,u.parentObject);if(this._onradh){this._onradh(u.id)}}this._correctPlus(w);this._correctLine(w);this._correctLine(u);this._correctPlus(u);if(s){this._correctPlus(s)}else{if(w.childsCount>=2){this._correctPlus(v[w.childsCount-2]);this._correctLine(v[w.childsCount-2])}}this._correctPlus(v[w.childsCount-1]);if(this.tscheck){this._correctCheckStates(w)}if(g.tscheck){g._correctCheckStates(r)}}if(q>1){g._correctPlus(r.childNodes[q-2]);g._correctLine(r.childNodes[q-2])}g._correctPlus(r);g._correctLine(r);this._fixChildCountLabel(w);g._fixChildCountLabel(r);this.callEvent("onDrop",[u.id,w.id,(s?s.id:null),g,w.treeNod]);return u.id};dhtmlXTreeObject.prototype._clearStyles=function(a){if(!a.htmlNode){return}var h=a.htmlNode.childNodes[0].childNodes[0].childNodes[1];var c=h.nextSibling.nextSibling;a.span.innerHTML=a.label;a.i_sel=false;if(a._aimgs){this.dragger.removeDraggableItem(h.nextSibling)}if(this.checkBoxOff){h.childNodes[0].style.display="";h.childNodes[0].onclick=this.onCheckBoxClick;this._setSrc(h.childNodes[0],this.imPath+this.checkArray[a.checkstate])}else{h.style.display="none"}h.childNodes[0].treeNod=this;this.dragger.removeDraggableItem(c);if(this.dragAndDropOff){this.dragger.addDraggableItem(c,this)}if(this._aimgs){this.dragger.addDraggableItem(h.nextSibling,this)}c.childNodes[0].className="standartTreeRow";c.onclick=this.onRowSelect;c.ondblclick=this.onRowClick2;h.previousSibling.onclick=this.onRowClick;this._correctLine(a);this._correctPlus(a);for(var g=0;g<a.childsCount;g++){this._clearStyles(a.childNodes[g])}};dhtmlXTreeObject.prototype._registerBranch=function(c,a){if(a){a._globalIdStorageSub(c.id)}c.id=this._globalIdStorageAdd(c.id,c);c.treeNod=this;for(var g=0;g<c.childsCount;g++){this._registerBranch(c.childNodes[g],a)}return 0};dhtmlXTreeObject.prototype.enableThreeStateCheckboxes=function(a){this.tscheck=convertStringToBoolean(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=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableTreeImages=function(a){this.timgen=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableFixedMode=function(a){this.hfMode=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableCheckBoxes=function(c,a){this.checkBoxOff=convertStringToBoolean(c);this.cBROf=(!(this.checkBoxOff||convertStringToBoolean(a)))};dhtmlXTreeObject.prototype.setStdImages=function(a,g,c){this.imageArray[0]=a;this.imageArray[1]=g;this.imageArray[2]=c};dhtmlXTreeObject.prototype.enableTreeLines=function(a){this.treeLinesOn=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.setImageArrays=function(h,a,m,l,g,c){switch(h){case"plus":this.plusArray[0]=a;this.plusArray[1]=m;this.plusArray[2]=l;this.plusArray[3]=g;this.plusArray[4]=c;break;case"minus":this.minusArray[0]=a;this.minusArray[1]=m;this.minusArray[2]=l;this.minusArray[3]=g;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(g,a){a=convertStringToBoolean(a);if((g)&&(g.span)){var c=g}else{var c=this._globalIdStorageFind(g)}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(h){var g=0;for(var c=0;c<h.childsCount;c++){if(h.childNodes[c].childsCount==0){g++}}return g};dhtmlXTreeObject.prototype.setItemText=function(h,g,c){var a=this._globalIdStorageFind(h);if(!a){return 0}a.label=g;a.span.innerHTML=g;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.deleteChildItems(c);this._loadDynXML(c)};dhtmlXTreeObject.prototype.setItemImage2=function(h,a,l,g){var c=this._globalIdStorageFind(h);if(!c){return 0}c.images[1]=l;c.images[2]=g;c.images[0]=a;this._correctPlus(c)};dhtmlXTreeObject.prototype.setItemImage=function(g,a,h){var c=this._globalIdStorageFind(g);if(!c){return 0}if(h){c.images[1]=a;c.images[2]=h}else{c.images[0]=a}this._correctPlus(c)};dhtmlXTreeObject.prototype.getSubItems=function(g){var a=this._globalIdStorageFind(g,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(g){var h="";for(var c=0;c<g.childsCount;c++){if((g.childNodes[c].unParsed)||(g.childNodes[c].childsCount>0)){if(g.childNodes[c].unParsed){var a=this._getAllScraggyItemsXML(g.childNodes[c].unParsed,1)}else{var a=this._getAllScraggyItems(g.childNodes[c])}if(a){if(h){h+=this.dlmtr+a}else{h=a}}}else{if(!h){h=""+g.childNodes[c].id}else{h+=this.dlmtr+g.childNodes[c].id}}}return h};dhtmlXTreeObject.prototype._getAllFatItems=function(g){var h="";for(var c=0;c<g.childsCount;c++){if((g.childNodes[c].unParsed)||(g.childNodes[c].childsCount>0)){if(!h){h=""+g.childNodes[c].id}else{h+=this.dlmtr+g.childNodes[c].id}if(g.childNodes[c].unParsed){var a=this._getAllFatItemsXML(g.childNodes[c].unParsed,1)}else{var a=this._getAllFatItems(g.childNodes[c])}if(a){h+=this.dlmtr+a}}}return h};dhtmlXTreeObject.prototype._getAllSubItems=function(m,l,h){if(h){c=h}else{var c=this._globalIdStorageFind(m)}if(!c){return 0}l="";for(var g=0;g<c.childsCount;g++){if(!l){l=""+c.childNodes[g].id}else{l+=this.dlmtr+c.childNodes[g].id}var a=this._getAllSubItems(0,l,c.childNodes[g]);if(a){l+=this.dlmtr+a}}if(c.unParsed){l=this._getAllSubItemsXML(m,l,c.unParsed)}return l};dhtmlXTreeObject.prototype.selectItem=function(h,g,c){g=convertStringToBoolean(g);var a=this._globalIdStorageFind(h);if((!a)||(!a.parentObject)){return 0}if(this.XMLloadingWarning){a.parentObject.openMe=1}else{this._openItem(a.parentObject)}var l=null;if(c){l=new Object;l.ctrlKey=true;if(a.i_sel){l.skipUnSel=true}}if(g){this.onRowSelect(l,a.htmlNode.childNodes[0].childNodes[0].childNodes[3],false)}else{this.onRowSelect(l,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,g){a--;for(var c=0;c<a;c++){if(g[c]==0){g[c]=g[c+1];g[c+1]=0}}};dhtmlXTreeObject.prototype._deleteNode=function(n,l,q){if((!l)||(!l.parentObject)){return 0}var a=0;var c=0;if(l.tr.nextSibling){a=l.tr.nextSibling.nodem}if(l.tr.previousSibling){c=l.tr.previousSibling.nodem}var m=l.parentObject;var g=m.childsCount;var o=m.childNodes;for(var h=0;h<g;h++){if(o[h].id==n){if(!q){m.htmlNode.childNodes[0].removeChild(o[h].tr)}o[h]=0;break}}this._compressChildList(g,o);if(!q){m.childsCount--}if(a){this._correctPlus(a);this._correctLine(a)}if(c){this._correctPlus(c);this._correctLine(c)}if(this.tscheck){this._correctCheckStates(m)}if(!q){this._globalIdStorageRecSub(l)}};dhtmlXTreeObject.prototype.setCheck=function(g,c){var a=this._globalIdStorageFind(g,0,1);if(!a){return}if(c==="unsure"){this._setCheck(a,c)}else{c=convertStringToBoolean(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,g){if(!a){return}if(((a.parentObject._r_logic)||(this._frbtr))&&(g)){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 h=a.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];if(g=="unsure"){a.checkstate=2}else{if(g){a.checkstate=1}else{a.checkstate=0}}if(a.dscheck){a.checkstate=a.dscheck}this._setSrc(h,this.imPath+((a.parentObject._r_logic||this._frbtr)?this.radioArray:this.checkArray)[a.checkstate])};dhtmlXTreeObject.prototype.setSubChecked=function(g,c){var a=this._globalIdStorageFind(g);this._setSubChecked(c,a);this._correctCheckStates(a.parentObject)};dhtmlXTreeObject.prototype._setSubChecked=function(g,a){g=convertStringToBoolean(g);if(!a){return}if(((a.parentObject._r_logic)||(this._frbtr))&&(g)){for(var c=0;c<a.parentObject.childsCount;c++){this._setSubChecked(0,a.parentObject.childNodes[c])}}if(a.unParsed){this._setSubCheckedXML(g,a.unParsed)}if(a._r_logic||this._frbtr){this._setSubChecked(g,a.childNodes[0])}else{for(var c=0;c<a.childsCount;c++){this._setSubChecked(g,a.childNodes[c])}}var h=a.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];if(g){a.checkstate=1}else{a.checkstate=0}if(a.dscheck){a.checkstate=a.dscheck}this._setSrc(h,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(h){var a=this._globalIdStorageFind(h);if(!a){return}var c=a.childsCount;for(var g=0;g<c;g++){this._deleteNode(a.childNodes[0].id,a.childNodes[0])}};dhtmlXTreeObject.prototype.deleteItem=function(g,a){if((!this._onrdlh)||(this._onrdlh(g))){var c=this._deleteItem(g,a);if(c){this._fixChildCountLabel(c)}}this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"};dhtmlXTreeObject.prototype._deleteItem=function(m,c,l){c=convertStringToBoolean(c);var a=this._globalIdStorageFind(m);if(!a){return}var g=this.getParentId(m);var h=a.parentObject;this._deleteNode(m,a,l);if(this._editCell&&this._editCell.id==m){this._editCell=null}this._correctPlus(h);this._correctLine(h);if((c)&&(g!=this.rootId)){this.selectItem(g,1)}return h};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 g=a;g.span=null;g.tr.nodem=null;g.tr=null;g.htmlNode=null};dhtmlXTreeObject.prototype.insertNewNext=function(o,s,r,g,m,l,h,c,a){var n=this._globalIdStorageFind(o);if((!n)||(!n.parentObject)){return(0)}var q=this._attachChildNode(0,s,r,g,m,l,h,c,a,n);if((!this.XMLloadingWarning)&&(this.childCalc)){this._fixChildCountLabel(n.parentObject)}return q};dhtmlXTreeObject.prototype.getItemIdByIndex=function(g,a){var c=this._globalIdStorageFind(g);if((!c)||(a>=c.childsCount)){return null}return c.childNodes[a].id};dhtmlXTreeObject.prototype.getChildItemIdByIndex=function(g,a){var c=this._globalIdStorageFind(g);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=convertStringToBoolean(c);if(this.dragAndDropOff){this.dragger.addDragLanding(this.allTree,this)}if(arguments.length>1){this._ddronr=(!convertStringToBoolean(a))}};dhtmlXTreeObject.prototype._setMove=function(l,g,n){if(l.parentObject.span){var h=getAbsoluteTop(l);var c=getAbsoluteTop(this.allTree)-this.allTree.scrollTop;this.dadmodec=this.dadmode;this.dadmodefix=0;if(this.dadmode==2){var m=n-h+(document.body.scrollTop||document.documentElement.scrollTop)-2-l.offsetHeight/2;if((Math.abs(m)-l.offsetHeight/6)>0){this.dadmodec=1;if(m<0){this.dadmodefix=0-l.offsetHeight}}else{this.dadmodec=0}}if(this.dadmodec==0){var a=l.parentObject.span;a.className+=" dragAndDropRow";this._lastMark=a}else{this._clearMove();this.selectionBar.style.top=(h-c+((parseInt(l.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,h,c)}};dhtmlXTreeObject.prototype._autoScroll=function(g,c,a){if(this.autoScroll){if(g){c=getAbsoluteTop(g);a=getAbsoluteTop(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(l,h){if(!this.dADTempOff){return null}var g=l.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 m=new Array();if(this._itim_dg){for(var a=0;a<this._selected.length;a++){m[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{m=this.getSelectedItemText().split(this.dlmtr)}c.innerHTML=m.join("");c.style.position="absolute";c.className="dragSpanDiv";this._dragged=(new Array()).concat(this._selected);return c};dhtmlXTreeObject.prototype._focusNode=function(a){var c=getAbsoluteTop(a.htmlNode)-getAbsoluteTop(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(n,o,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 m=n.parentObject.treeNod;if((m)&&(m._clearMove)){m._clearMove("")}if((!this.dragMove)||(this.dragMove())){if((!m)||(!m._clearMove)||(!m._dragged)){var h=new Array(n.parentObject)}else{var h=m._dragged}var c=a.parentObject;for(var l=0;l<h.length;l++){var g=this._moveNode(h[l],c);if((this.dadmodec)&&(g!==false)){c=this._globalIdStorageFind(g,true,true)}if((g)&&(!this._sADnD)){this.selectItem(g,0,1)}}}if(m){m._dragged=new Array()}};dhtmlXTreeObject.prototype._dragIn=function(m,h,a,o){if(!this.dADTempOff){return 0}var n=h.parentObject;var c=m.parentObject;if((!c)&&(this._ddronr)){return}if(!this.callEvent("onDragIn",[n.id,c?c.id:null,n.treeNod,this])){if(c){this._autoScroll(m)}return 0}if(!c){this.allTree.className+=" selectionBox"}else{if(n.childNodes==null){this._setMove(m,a,o);return m}var l=n.treeNod;for(var g=0;g<l._dragged.length;g++){if(this._checkPNodes(c,l._dragged[g])){this._autoScroll(m);return 0}}this.selectionBar.parentNode.removeChild(this.selectionBar);c.span.parentNode.appendChild(this.selectionBar);this._setMove(m,a,o);if(this._getOpenState(c)<=0){this._autoOpenId=c.id;this._autoOpenTimer=window.setTimeout(new callerFunction(this._autoOpenItem,this),1000)}}return m};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,g,c){var h=this._findNodeByLabel(a,g,(c?this.htmlNode:null));if(h){this.selectItem(h.id,true);this._focusNode(h);return h.id}else{return null}};dhtmlXTreeObject.prototype.findItemIdByLabel=function(a,g,c){var h=this._findNodeByLabel(a,g,(c?this.htmlNode:null));if(h){return h.id}else{return null}};dhtmlXTreeObject.prototype.findStrInXML=function(c,g,l){if(!c.childNodes&&c.item){return this.findStrInJSON(c,g,l)}if(!c.childNodes){return false}for(var a=0;a<c.childNodes.length;a++){if(c.childNodes[a].nodeType==1){var h=c.childNodes[a].getAttribute(g);if(!h&&c.childNodes[a].tagName=="itemtext"){h=c.childNodes[a].firstChild.data}if((h)&&(h.toLowerCase().search(l)!=-1)){return true}if(this.findStrInXML(c.childNodes[a],g,l)){return true}}}return false};dhtmlXTreeObject.prototype.findStrInJSON=function(c,g,l){for(var a=0;a<c.item.length;a++){var h=c.item[a].text;if((h)&&(h.toLowerCase().search(l)!=-1)){return true}if(c.item[a].item&&this.findStrInJSON(c.item[a],g,l)){return true}}return false};dhtmlXTreeObject.prototype._findNodeByLabel=function(a,l,h){var a=a.replace(new RegExp("^( )+"),"").replace(new RegExp("( )+$"),"");a=new RegExp(a.replace(/([\^\.\?\*\+\\\[\]\(\)]{1})/gi,"\\$1").replace(/ /gi,".*"),"gi");if(!h){h=this._selected[0];if(!h){h=this.htmlNode}}var c=h;if(!l){if((h.unParsed)&&(this.findStrInXML(h.unParsed.d,"text",a))){this.reParse(h)}h=this._getNextNode(c);if(h==-1){h=this.htmlNode.childNodes[0]}}else{var g=this._getPrevNode(c);if(g==-1){g=this._lastChild(this.htmlNode)}if((g.unParsed)&&(this.findStrInXML(g.unParsed.d,"text",a))){this.reParse(g);h=this._getPrevNode(c)}else{h=g}if(h==-1){h=this._lastChild(this.htmlNode)}}while((h)&&(h!=c)){if((h.label)&&(h.label.search(a)!=-1)){return(h)}if(!l){if(h==-1){if(c==this.htmlNode){break}h=this.htmlNode.childNodes[0]}if((h.unParsed)&&(this.findStrInXML(h.unParsed.d,"text",a))){this.reParse(h)}h=this._getNextNode(h);if(h==-1){h=this.htmlNode}}else{var g=this._getPrevNode(h);if(g==-1){g=this._lastChild(this.htmlNode)}if((g.unParsed)&&(this.findStrInXML(g.unParsed.d,"text",a))){this.reParse(g);h=this._getPrevNode(h)}else{h=g}if(h==-1){h=this._lastChild(this.htmlNode)}}}return null};dhtmlXTreeObject.prototype.moveItem=function(o,c,q,a){var l=this._globalIdStorageFind(o);if(!l){return(0)}var m=null;switch(c){case"right":alert("Not supported yet");break;case"item_child":var g=(a||this)._globalIdStorageFind(q);if(!g){return(0)}m=(a||this)._moveNodeTo(l,g,0);break;case"item_sibling":var g=(a||this)._globalIdStorageFind(q);if(!g){return(0)}m=(a||this)._moveNodeTo(l,g.parentObject,g);break;case"item_sibling_next":var g=(a||this)._globalIdStorageFind(q);if(!g){return(0)}if((g.tr)&&(g.tr.nextSibling)&&(g.tr.nextSibling.nodem)){m=(a||this)._moveNodeTo(l,g.parentObject,g.tr.nextSibling.nodem)}else{m=(a||this)._moveNodeTo(l,g.parentObject)}break;case"left":if(l.parentObject.parentObject){m=this._moveNodeTo(l,l.parentObject.parentObject,l.parentObject)}break;case"up":var n=this._getPrevNode(l);if((n==-1)||(!n.parentObject)){return null}m=this._moveNodeTo(l,n.parentObject,n);break;case"up_strict":var n=this._getIndex(l);if(n!=0){m=this._moveNodeTo(l,l.parentObject,l.parentObject.childNodes[n-1])}break;case"down_strict":var n=this._getIndex(l);var h=l.parentObject.childsCount-2;if(n==h){m=this._moveNodeTo(l,l.parentObject)}else{if(n<h){m=this._moveNodeTo(l,l.parentObject,l.parentObject.childNodes[n+2])}}break;case"down":var n=this._getNextNode(this._lastChild(l));if((n==-1)||(!n.parentObject)){return}if(n.parentObject==l.parentObject){var n=this._getNextNode(n)}if(n==-1){m=this._moveNodeTo(l,l.parentObject)}else{if((n==-1)||(!n.parentObject)){return}m=this._moveNodeTo(l,n.parentObject,n)}break}if(_isIE&&_isIE<8){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"}return m};dhtmlXTreeObject.prototype.setDragBehavior=function(c,a){this._sADnD=(!convertStringToBoolean(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(g,c){c=c||this.XMLsource;var a=(new Date()).valueOf();this._ld_id=g;if(this.xmlalb=="function"){if(c){c(this._escape(g))}}else{if(this.xmlalb=="name"){this.loadXML(c+this._escape(g))}else{if(this.xmlalb=="xmlname"){this.loadXML(c+this._escape(g)+".xml?uid="+a)}else{this.loadXML(c+getUrlSymbol(c)+"uid="+a+"&id="+this._escape(g))}}}};dhtmlXTreeObject.prototype.enableMultiselection=function(c,a){this._amsel=convertStringToBoolean(c);this._amselS=convertStringToBoolean(a)};dhtmlXTreeObject.prototype._checkMSelectionLogic=function(){var g=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]))){g[g.length]=this._selected[a]}}}for(var c=0;c<g.length;c++){this._unselectItem(g[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=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableDistributedParsing=function(g,c,a){this._edsbps=convertStringToBoolean(g);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(g){var c=this._globalIdStorageFind(g,true,true);if(!c){return 0}if(this._edsbpsA){for(var a=0;a<this._edsbpsA.length;a++){if(this._edsbpsA[a][2]==g){return -1}}}return 1};dhtmlXTreeObject.prototype._distributedStart=function(c,l,h,g,a){if(!this._edsbpsA){this._edsbpsA=new Array()}this._edsbpsA[this._edsbpsA.length]=[c,l,h,g,a]};dhtmlXTreeObject.prototype._distributedStep=function(h){var c=this;if((!this._edsbpsA)||(!this._edsbpsA.length)){c.XMLloadingWarning=0;return}var l=this._edsbpsA[0];this.parsedArray=new Array();this._parse(l[0],l[2],l[3],l[1]);var a=this._globalIdStorageFind(l[2]);this._redrawFrom(this,a,l[4],this._getOpenState(a));var g=this.setCheckList.split(this.dlmtr);for(var m=0;m<g.length;m++){if(g[m]){this.setCheck(g[m],1)}}this._edsbpsA=(new Array()).concat(this._edsbpsA.slice(1));if((!this._edsbpsA.length)){window.setTimeout(function(){if(c.onXLE){c.onXLE(c,h)}c.callEvent("onXLE",[c,h])},1);c.xmlstate=0}};dhtmlXTreeObject.prototype.enableTextSigns=function(a){this._txtimg=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.preventIECaching=function(a){this.no_cashe=convertStringToBoolean(a);this.XMLLoader.rSeed=this.no_cashe};dhtmlXTreeObject.prototype.preventIECashing=dhtmlXTreeObject.prototype.preventIECaching;dhtmlXTreeObject.prototype.disableCheckbox=function(g,c){if(typeof(g)!="object"){var a=this._globalIdStorageFind(g,0,1)}else{var a=g}if(!a){return}a.dscheck=convertStringToBoolean(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(h,g){var a=this._globalIdStorageFind(h);for(var c=0;c<a.childsCount;c++){a.childNodes[c]._dmark=true}this.waitUpdateXML=true;if(g&&g.exists){this._parse(g,h)}else{this._loadDynXML(h,g)}};dhtmlXTreeObject.prototype.refreshItems=function(c,g){var h=c.toString().split(this.dlmtr);this.waitUpdateXML=new Array();for(var a=0;a<h.length;a++){this.waitUpdateXML[h[a]]=true}this.loadXML((g||this.XMLsource)+getUrlSymbol(g||this.XMLsource)+"ids="+this._escape(c))};dhtmlXTreeObject.prototype.updateItem=function(n,m,h,g,c,l,o){var a=this._globalIdStorageFind(n);a.userData=new cObject();if(m){a.label=m}a.images=new Array(h||this.imageArray[0],g||this.imageArray[1],c||this.imageArray[2]);this.setItemText(n,m);if(l){this._setCheck(a,true)}if(o=="1"&&!this.hasChildren(n)){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=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.getXMLState=function(){return(this.xmlstate==1)};dhtmlXTreeObject.prototype.setItemTopOffset=function(m,h){var g;if(typeof(m)!="object"){g=this._globalIdStorageFind(m)}else{g=m}var l=g.span.parentNode.parentNode;g.span.style.paddingBottom="1px";for(var c=0;c<l.childNodes.length;c++){if(c!=0){if(_isIE){l.childNodes[c].style.height="18px";l.childNodes[c].style.paddingTop=parseInt(h)+"px"}else{l.childNodes[c].style.height=18+parseInt(h)+"px"}}else{var a=l.childNodes[c].firstChild;if(l.childNodes[c].firstChild.tagName!="DIV"){a=document.createElement("DIV");l.childNodes[c].insertBefore(a,l.childNodes[c].firstChild)}a.style.height=parseInt(h)+"px";if((g.parentObject.id!=this.rootId||g.parentObject.childNodes[0]!=g)&&this.treeLinesOn){a.style.backgroundImage="url("+this.imPath+this.lineArray[5]+")"}a.innerHTML=" ";a.style.overflow="hidden";if(parseInt(h)==0){l.childNodes[c].removeChild(a)}}if(!_isIE){l.childNodes[c].style.verticalAlign="bottom"}if(_isIE){this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"}}};dhtmlXTreeObject.prototype.setIconSize=function(h,c,l){if(l){if((l)&&(l.span)){var a=l}else{var a=this._globalIdStorageFind(l)}if(!a){return(0)}var g=a.span.parentNode.previousSibling.childNodes[0];if(h){g.style.width=h;if(window._KHTMLrv){g.parentNode.style.width=h}}if(c){g.style.height=c;if(window._KHTMLrv){g.parentNode.style.height=c}}}else{this.def_img_x=h;this.def_img_y=c}};dhtmlXTreeObject.prototype.getItemImage=function(l,h,c){var g=this._globalIdStorageFind(l);if(!g){return""}var a=g.images[h||0];if(c){a=this.iconURL+a}return a};dhtmlXTreeObject.prototype.enableRadioButtons=function(h,g){if(arguments.length==1){this._frbtr=convertStringToBoolean(h);this.checkBoxOff=this.checkBoxOff||this._frbtr;return}var c=this._globalIdStorageFind(h);if(!c){return""}g=convertStringToBoolean(g);if((g)&&(!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((!g)&&(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=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.openOnItemAdded=function(a){this._hAdI=!convertStringToBoolean(a)};dhtmlXTreeObject.prototype.openOnItemAdding=function(a){this._hAdI=!convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableMultiLineItems=function(a){if(a===true){this.mlitems="100%"}else{this.mlitems=a}};dhtmlXTreeObject.prototype.enableAutoTooltips=function(a){this.ettip=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.clearSelection=function(a){if(a){this._unselectItem(this._globalIdStorageFind(a))}else{this._unselectItems()}};dhtmlXTreeObject.prototype.showItemSign=function(h,c){var a=this._globalIdStorageFind(h);if(!a){return 0}var g=a.span.parentNode.previousSibling.previousSibling.previousSibling;if(!convertStringToBoolean(c)){this._openItem(a);a.closeble=false;a.wsign=true}else{a.closeble=true;a.wsign=false}this._correctPlus(a)};dhtmlXTreeObject.prototype.showItemCheckbox=function(l,h){if(!l){for(var c in this._idpull){this.showItemCheckbox(this._idpull[c],h)}}if(typeof(l)!="object"){l=this._globalIdStorageFind(l,0,0)}if(!l){return 0}l.nocheckbox=!convertStringToBoolean(h);var g=l.span.parentNode.previousSibling.previousSibling.childNodes[0];g.parentNode.style.display=(!l.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=convertStringToBoolean(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=convertStringToBoolean(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(g){var h="";for(var c=0;c<g.childsCount;c++){if((g.childNodes[c].unParsed)||(g.childNodes[c].childsCount>0)){if(g.childNodes[c].unParsed){var a=this._getAllScraggyItemsXML(g.childNodes[c].unParsed,1)}else{var a=this._getAllScraggyItems(g.childNodes[c])}if(a){if(h){h+=this.dlmtr+a}else{h=a}}}else{if(!h){h=""+g.childNodes[c].id}else{h+=this.dlmtr+g.childNodes[c].id}}}return h};dhtmlXTreeObject.prototype._getAllFatItems=function(g){var h="";for(var c=0;c<g.childsCount;c++){if((g.childNodes[c].unParsed)||(g.childNodes[c].childsCount>0)){if(!h){h=""+g.childNodes[c].id}else{h+=this.dlmtr+g.childNodes[c].id}if(g.childNodes[c].unParsed){var a=this._getAllFatItemsXML(g.childNodes[c].unParsed,1)}else{var a=this._getAllFatItems(g.childNodes[c])}if(a){h+=this.dlmtr+a}}}return h};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(h,g,l){if(!h){h=this.htmlNode}if(h.checkstate==l){if(!h.nocheckbox){if(g){g+=this.dlmtr+h.id}else{g=""+h.id}}}var a=h.childsCount;for(var c=0;c<a;c++){g=this._getAllChecked(h.childNodes[c],g,l)}if(h.unParsed){g=this._getAllCheckedXML(h.unParsed,g,l)}if(g){return g}else{return""}};dhtmlXTreeObject.prototype.setItemStyle=function(h,g,c){var c=c||false;var a=this._globalIdStorageFind(h);if(!a){return 0}if(!a.span.style.cssText){a.span.setAttribute("style",a.span.getAttribute("style")+"; "+g)}else{a.span.style.cssText=c?g:a.span.style.cssText+";"+g}};dhtmlXTreeObject.prototype.enableImageDrag=function(a){this._itim_dg=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.setOnDragIn=function(a){this.attachEvent("onDragIn",a)};dhtmlXTreeObject.prototype.enableDragAndDropScrolling=function(a){this.autoScroll=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.setSkin=function(a){var 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(h,m,c){var g=this._loader.doXPath(".//item",h);var l=g[0].getAttribute("text");this.obj.insertNewItem(c,m,l,0,0,0,0,"CHILD")});a.attachEvent("updateCallback",function(h,m,c){var g=this._loader.doXPath(".//item",h);var l=g[0].getAttribute("text");this.obj.setItemText(m,l);if(this.obj.getParentId(m)!=c){this.obj.moveItem(m,"item_child",c)}this.setUpdated(m,true,"updated")});a.attachEvent("deleteCallback",function(g,h,c){this.obj.setUserData(h,this.action_param,"true_deleted");this.obj.deleteItem(h,false)});a._methods=["setItemStyle","","changeItemId","deleteItem"];this.attachEvent("onEdit",function(c,g){if(c==3){a.setUpdated(g,true)}return true});this.attachEvent("onDrop",function(m,l,h,g,c){if(g==c){a.setUpdated(m,true)}});this._onrdlh=function(c){var g=a.getState(c);if(g=="inserted"){a.set_invalid(c,false);a.setUpdated(c,false);return true}if(g=="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(l){var h={};var m=this.obj._globalIdStorageFind(l);var g=m.parentObject;var c=0;for(c=0;c<g.childsCount;c++){if(g.childNodes[c]==m){break}}h.tr_id=m.id;h.tr_pid=g.id;h.tr_order=c;h.tr_text=m.span.innerHTML;g=(m._userdatalist||"").split(",");for(c=0;c<g.length;c++){h[g[c]]=m.userData["t_"+g[c]]}return h}};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 g=document.getElementsByTagName("div");for(var a=0;a<g.length;a++){if(g[a].getAttribute("dragInDhtmlXTree")){this.makeDragable(g[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,g,a,h){if(this._customDrop){return this._customDrop(c,h.img.id,g.id,a?a.id:null)}var l=(h.img.getAttribute("image")||"");var n=h.img.id||"new";var m=(h.img.getAttribute("text")||(_isIE?h.img.innerText:h.img.textContent));c[a?"insertNewNext":"insertNewItem"](a?a.id:g.id,n,m,"",l,l,l)}}dhtmlXTreeObject.prototype.enableItemEditor=function(a){this._eItEd=convertStringToBoolean(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(g,c){if(this._edn_dblclick){this._editItem(g,c)}return true});this.setOnClickHandler(function(g,c){this._stopEditItem(g,c);if((this.ed_hist_clcik==g)&&(this._edn_click_IE)){this._editItem(g,c)}this.ed_hist_clcik=g;return true});this._eItEdFlag=true}};dhtmlXTreeObject.prototype.setOnEditHandler=function(a){this.attachEvent("onEdit",a)};dhtmlXTreeObject.prototype.setEditStartAction=function(a,c){this._edn_click_IE=convertStringToBoolean(a);this._edn_dblclick=convertStringToBoolean(c)};dhtmlXTreeObject.prototype._stopEdit=function(c,m){if(this._editCell){this.dADTempOff=this.dADTempOffEd;if(this._editCell.id!=c){var h=true;if(!m){h=this.callEvent("onEdit",[2,this._editCell.id,this,this._editCell.span.childNodes[0].value])}else{h=false;this.callEvent("onEditCancel",[this._editCell.id,this._editCell._oldValue])}if(h===true){h=this._editCell.span.childNodes[0].value}else{if(h===false){h=this._editCell._oldValue}}var l=(h!=this._editCell._oldValue);this._editCell.span.innerHTML=h;this._editCell.label=this._editCell.span.innerHTML;var g=this._editCell.i_sel?"selectedTreeRow":"standartTreeRow";this._editCell.span.className=g;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 n=this._editCell.id;if(this.childCalc){this._fixChildCountLabel(this._editCell)}this._editCell=null;if(!m){this.callEvent("onEdit",[3,n,this,l])}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(l,a){if(this._eItEd){this._stopEdit();var g=this._globalIdStorageFind(l);if(!g){return}var h=this.callEvent("onEdit",[0,l,this,g.span.innerHTML]);if(h===true){h=(typeof g.span.innerText!="undefined"?g.span.innerText:g.span.textContent)}else{if(h===false){return}}this.dADTempOffEd=this.dADTempOff;this.dADTempOff=false;this._editCell=g;g._oldValue=h;g.span.innerHTML="<input type='text' class='intreeeditRow' />";g.span.style.paddingRight=g.span.style.paddingLeft="0px";g.span.onclick=g.span.ondblclick=function(m){(m||event).cancelBubble=true};g.span.childNodes[0].value=h;g.span.childNodes[0].onselectstart=function(m){(m||event).cancelBubble=true;return true};g.span.childNodes[0].onmousedown=function(m){(m||event).cancelBubble=true;return true};g.span.childNodes[0].focus();g.span.childNodes[0].focus();g.span.onclick=function(m){(m||event).cancelBubble=true;return false};g.span.className="";g.span.parentNode.className="";var c=this;g.span.childNodes[0].onkeydown=function(m){if(!m){m=window.event}if(m.keyCode==13){m.cancelBubble=true;c._stopEdit(window.undefined)}else{if(m.keyCode==27){c._stopEdit(window.undefined,true)}}(m||event).cancelBubble=true};this.callEvent("onEdit",[1,l,this])}};function jsonPointer(c,a){this.d=c;this.dp=a}jsonPointer.prototype={text:function(){var a=function(l){var h=[];for(var g=0;g<l.length;g++){h.push("{"+c(l[g])+"}")}return h.join(",")};var c=function(l){var h=[];for(var g in l){if(typeof(l[g])=="object"){if(g.length){h.push('"'+g+'":['+a(l[g])+"]")}else{h.push('"'+g+'":{'+c(l[g])+"}")}}else{h.push('"'+g+'":"'+l[g]+'"')}}return h.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(h,n,m){var g=this.d[h];var o=new jsonPointer();if(g){for(var l=0;l<g.length;l++){o.d=g[l];n.apply(m,[o,l])}}},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(h,o,n,m,l){var g=this.d[h];var q=new jsonPointer(0,this.d);if(g){for(l=l||0;l<g.length;l++){if(g[l][o]){q.d=g[l];if(n.apply(m,[q,l])==-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(g,n,r,l,s){var o=this.d[g];if(o.length){for(var h=0;h<o.length;h++){if(o[h][n]!=null&&o[h][n]!=""&&(!r||o[h][n]==r)){var m=new jsonPointer(o[h],this.d);l.apply(s,[m,h])}var q=this.d;this.d=o[h];if(this.sub_exists(g)){this.through(g,n,r,l,s)}this.d=q}}}};dhtmlXTreeObject.prototype.loadJSArrayFile=function(file,afterCall){if(!this.parsCount){this.callEvent("onXLS",[this,this._ld_id])}this._ld_id=null;this.xmlstate=1;var that=this;this.XMLLoader=new dtmlXMLLoaderObject(function(){eval("var z="+arguments[4].xmlDoc.responseText);that.loadJSArray(z)},this,true,this.no_cashe);if(afterCall){this.XMLLoader.waitCall=afterCall}this.XMLLoader.loadXML(file)};dhtmlXTreeObject.prototype.loadCSV=function(a,g){if(!this.parsCount){this.callEvent("onXLS",[this,this._ld_id])}this._ld_id=null;this.xmlstate=1;var c=this;this.XMLLoader=new dtmlXMLLoaderObject(function(){c.loadCSVString(arguments[4].xmlDoc.responseText)},this,true,this.no_cashe);if(g){this.XMLLoader.waitCall=g}this.XMLLoader.loadXML(a)};dhtmlXTreeObject.prototype.loadJSArray=function(a,h){var m=[];for(var c=0;c<a.length;c++){if(!m[a[c][1]]){m[a[c][1]]=[]}m[a[c][1]].push({id:a[c][0],text:a[c][2]})}var l={id:this.rootId};var g=function(q,o){if(m[q.id]){q.item=m[q.id];for(var n=0;n<q.item.length;n++){o(q.item[n],o)}}};g(l,g);this.loadJSONObject(l,h)};dhtmlXTreeObject.prototype.loadCSVString=function(a,m){var o=[];var c=a.split("\n");for(var h=0;h<c.length;h++){var g=c[h].split(",");if(!o[g[1]]){o[g[1]]=[]}o[g[1]].push({id:g[0],text:g[2]})}var n={id:this.rootId};var l=function(s,r){if(o[s.id]){s.item=o[s.id];for(var q=0;q<s.item.length;q++){r(s.item[q],r)}}};l(n,l);this.loadJSONObject(n,m)};dhtmlXTreeObject.prototype.loadJSONObject=function(a,c){if(!this.parsCount){this.callEvent("onXLS",[this,null])}this.xmlstate=1;var g=new jsonPointer(a);this._parse(g);this._p=g;if(c){c()}};dhtmlXTreeObject.prototype.loadJSON=function(file,afterCall){if(!this.parsCount){this.callEvent("onXLS",[this,this._ld_id])}this._ld_id=null;this.xmlstate=1;var that=this;this.XMLLoader=new dtmlXMLLoaderObject(function(){try{eval("var t="+arguments[4].xmlDoc.responseText)}catch(e){dhtmlxError.throwError("LoadXML","Incorrect JSON",[(arguments[4].xmlDoc),this]);return}var p=new jsonPointer(t);that._parse(p);that._p=p},this,true,this.no_cashe);if(afterCall){this.XMLLoader.waitCall=afterCall}this.XMLLoader.loadXML(file)};dhtmlXTreeObject.prototype.serializeTreeToJSON=function(){var a=['{"id":"'+this.rootId+'", "item":['];var g=[];for(var c=0;c<this.htmlNode.childsCount;c++){g.push(this._serializeItemJSON(this.htmlNode.childNodes[c]))}a.push(g.join(","));a.push("]}");return a.join("")};dhtmlXTreeObject.prototype._serializeItemJSON=function(n){var a=[];if(n.unParsed){return(n.unParsed.text())}if(this._selected.length){var g=this._selected[0].id}else{g=""}var m=n.span.innerHTML;m=m.replace(/\"/g,'\\"',m);if(!this._xfullXML){a.push('{ "id":"'+n.id+'", '+(this._getOpenState(n)==1?' "open":"1", ':"")+(g==n.id?' "select":"1",':"")+' "text":"'+m+'"'+(((this.XMLsource)&&(n.XMLload==0))?', "child":"1" ':""))}else{a.push('{ "id":"'+n.id+'", '+(this._getOpenState(n)==1?' "open":"1", ':"")+(g==n.id?' "select":"1",':"")+' "text":"'+m+'", "im0":"'+n.images[0]+'", "im1":"'+n.images[1]+'", "im2":"'+n.images[2]+'" '+(n.acolor?(', "aCol":"'+n.acolor+'" '):"")+(n.scolor?(', "sCol":"'+n.scolor+'" '):"")+(n.checkstate==1?', "checked":"1" ':(n.checkstate==2?', "checked":"-1"':""))+(n.closeable?', "closeable":"1" ':"")+(((this.XMLsource)&&(n.XMLload==0))?', "child":"1" ':""))}if((this._xuserData)&&(n._userdatalist)){a.push(', "userdata":[');var l=n._userdatalist.split(",");var h=[];for(var c=0;c<l.length;c++){h.push('{ "name":"'+l[c]+'" , "content":"'+n.userData["t_"+l[c]]+'" }')}a.push(h.join(","));a.push("]")}if(n.childsCount){a.push(', "item":[');var h=[];for(var c=0;c<n.childsCount;c++){h.push(this._serializeItemJSON(n.childNodes[c]))}a.push(h.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.loadXMLString("<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,m,g){for(var n=0;n<s.childNodes.length;n++){var r=s.childNodes[n];if((r.nodeType==1)&&(r.tagName.toLowerCase()=="li")){var q="";var o=null;var a=r.getAttribute("checked");for(var l=0;l<r.childNodes.length;l++){var h=r.childNodes[l];if(h.nodeType==3){q+=h.data}else{if(h.tagName.toLowerCase()!="ul"){q+=dhx_outer_html(h)}else{o=h}}}m[m.length]=[g,q,a,(r.id||(m.length+1))];if(o){m=dhx_li2trees(o,m,(r.id||m.length))}}}return m}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)}}dhtmlXTreeObject.prototype.parserExtension={_parseExtension:function(h,c,g){this._idpull[c.id]._attrs=c}};dhtmlXTreeObject.prototype.getAttribute=function(g,a){this._globalIdStorageFind(g);var c=this._idpull[g]._attrs;return c?c[a]:window.undefined};dhtmlXTreeObject.prototype.setAttribute=function(h,a,g){this._globalIdStorageFind(h);var c=(this._idpull[h]._attrs)||{};c[a]=g;this._idpull[h]._attrs=c};dhtmlXTreeObject.prototype.enableKeyboardNavigation=function(g){this._enblkbrd=convertStringToBoolean(g);if(this._enblkbrd){if(_isFF){var c=window.getComputedStyle(this.parentObject,null)["position"];if((c!="absolute")&&(c!="relative")){this.parentObject.style.position="relative"}}this._navKeys=[["up",38],["down",40],["open",39],["close",37],["call",13],["edit",113]];var a=this;var c=document.createElement("INPUT");c.className="a_dhx_hidden_input";c.autocomplete="off";if(window._KHTMLrv){c.style.color="white"}this.parentObject.appendChild(c);this.parentObject[_isOpera?"onkeypress":"onkeydown"]=function(h){if(a.callEvent("onKeyPress",[(h||window.event).keyCode,(h||window.event)])){return a._onKeyDown(h||window.event)}};this.parentObject.onclick=function(h){if(_isFF||_isIE){c.select()}if(window._KHTMLrv||_isOpera){c.focus()}}}else{this.parentObject.onkeydown=null}};dhtmlXTreeObject.prototype._onKeyDown=function(g){if(window.globalActiveDHTMLGridObject&&globalActiveDHTMLGridObject.isActive){return true}var a=this;for(var c=0;c<this._navKeys.length;c++){if(this._navKeys[c][1]==g.keyCode){this["_onkey_"+this._navKeys[c][0]].apply(this,[this.getSelectedItemId()]);if(g.preventDefault){g.preventDefault()}(g||event).cancelBubble=true;return false}}if(this._textSearch){return this._searchItemByKey(g)}return true};dhtmlXTreeObject.prototype._onkey_up=function(g){var a=this._globalIdStorageFind(g);if(!a){return}var c=this._getPrevVisibleNode(a);if(c.id==this.rootId){return}this.focusItem(c.id);this.selectItem(c.id,false)};dhtmlXTreeObject.prototype._onkey_down=function(g){var a=this._globalIdStorageFind(g);if(!a){return}var c=this._getNextVisibleNode(a);if(c.id==this.rootId){return}this.focusItem(c.id);this.selectItem(c.id,false)};dhtmlXTreeObject.prototype._onkey_open=function(a){this.openItem(a)};dhtmlXTreeObject.prototype._onkey_close=function(a){this.closeItem(a)};dhtmlXTreeObject.prototype._onkey_call=function(a){if(this.stopEdit){this.stopEdit();this.parentObject.lastChild.focus();this.parentObject.lastChild.focus();this.selectItem(a,true)}else{this.selectItem(this.getSelectedItemId(),true)}};dhtmlXTreeObject.prototype._onkey_edit=function(a){if(this.editItem){this.editItem(a)}};dhtmlXTreeObject.prototype._getNextVisibleNode=function(a,c){if((!c)&&(this._getOpenState(a)>0)){return a.childNodes[0]}if((a.tr)&&(a.tr.nextSibling)&&(a.tr.nextSibling.nodem)){return a.tr.nextSibling.nodem}if(a.parentObject){return this._getNextVisibleNode(a.parentObject,1)}return a};dhtmlXTreeObject.prototype._getPrevVisibleNode=function(a){if((a.tr)&&(a.tr.previousSibling)&&(a.tr.previousSibling.nodem)){return this._lastVisibleChild(a.tr.previousSibling.nodem)}if(a.parentObject){return a.parentObject}else{return a}};dhtmlXTreeObject.prototype._lastVisibleChild=function(a){if(this._getOpenState(a)>0){return this._lastVisibleChild(a.childNodes[a.childsCount-1])}else{return a}};dhtmlXTreeObject.prototype._searchItemByKey=function(c){if(c.keyCode==8){this._textSearchString="";return true}var a=String.fromCharCode(c.keyCode).toUpperCase();if(a.match(/[A-Z,a-z,0-9\ ]/)){this._textSearchString+=a;this._textSearchInProgress=true;if(!(this.getSelectedItemText()||"").match(RegExp("^"+this._textSearchString,"i"))){this.findItem(this._textSearchString,0)}this._textSearchInProgress=false;if(c.preventDefault){c.preventDefault()}(c||event).cancelBubble=true;return false}return true};dhtmlXTreeObject.prototype.assignKeys=function(a){this._navKeys=a};dhtmlXTreeObject.prototype.enableKeySearch=function(c){this._textSearch=convertStringToBoolean(c);if(!this._textSearch){return}this._textSearchString="";var a=this;this._markItem2=this._markItem;this._markItem=function(g){if(!a._textSearchInProgress){a._textSearchString=""}a._markItem2(g)}};dhtmlXTreeObject.prototype.enableLoadingItem=function(a){this.attachEvent("onXLS",this._showFakeItem);this.attachEvent("onXLE",this._hideFakeItem);this._tfi_text=a||"Loading..."};dhtmlXTreeObject.prototype._showFakeItem=function(a,g){if((g===null)||(this._globalIdStorageFind("fake_load_xml_"+g))){return}var c=this.XMLsource;this.XMLsource=null;this.insertNewItem(g,"fake_load_xml_"+g,this._tfi_text);this.XMLsource=c};dhtmlXTreeObject.prototype._hideFakeItem=function(a,c){if(c===null){return}this.deleteItem("fake_load_xml_"+c)};dhtmlXTreeObject.prototype.isLocked=function(a){if(!this._locker){this._init_lock()}return(this._locker[a]==true)};dhtmlXTreeObject.prototype._lockItem=function(a,l,c){if(!this._locker){this._init_lock()}if(l){if(this._locker[a.id]==true){return}this._locker[a.id]=true;a.bIm0=a.images[0];a.bIm1=a.images[1];a.bIm2=a.images[2];a.images[0]=this.lico0;a.images[1]=this.lico1;a.images[2]=this.lico2;var h=a.span.parentNode;var g=h.previousSibling;this.dragger.removeDraggableItem(h);this.dragger.removeDraggableItem(g)}else{if(this._locker[a.id]!=true){return}this._locker[a.id]=false;a.images[0]=a.bIm0;a.images[1]=a.bIm1;a.images[2]=a.bIm2;var h=a.span.parentNode;var g=h.previousSibling;this.dragger.addDraggableItem(h,this);this.dragger.addDraggableItem(g,this)}if(!c){this._correctPlus(a)}};dhtmlXTreeObject.prototype.lockItem=function(g,c){if(!this._locker){this._init_lock()}this._lockOn=false;var a=this._globalIdStorageFind(g);this._lockOn=true;this._lockItem(a,convertStringToBoolean(c))};dhtmlXTreeObject.prototype.setLockedIcons=function(g,c,a){if(!this._locker){this._init_lock()}this.lico0=g;this.lico1=c;this.lico2=a};dhtmlXTreeObject.prototype._init_lock=function(){this._locker=new Array();this._locker_count="0";this._lockOn=true;this._globalIdStorageFindA=this._globalIdStorageFind;this._globalIdStorageFind=this._lockIdFind;if(this._serializeItem){this._serializeItemA=this._serializeItem;this._serializeItem=this._serializeLockItem;this._serializeTreeA=this.serializeTree;this.serializeTree=this._serializeLockTree}this.setLockedIcons(this.imageArray[0],this.imageArray[1],this.imageArray[2])};dhtmlXTreeObject.prototype._lockIdFind=function(g,a,c){if(!this.skipLock){if((!c)&&(this._lockOn==true)&&(this._locker[g]==true)){return null}}return this._globalIdStorageFindA(g,a,c)};dhtmlXTreeObject.prototype._serializeLockItem=function(a){if(this._locker[a.id]==true){return""}return this._serializeItemA(a)};dhtmlXTreeObject.prototype._serializeLockTree=function(){var a=this._serializeTreeA();return a.replace(/<item[^>]+locked\=\"1\"[^>]+\/>/g,"")};dhtmlXTreeObject.prototype._moveNodeToA=dhtmlXTreeObject.prototype._moveNodeTo;dhtmlXTreeObject.prototype._moveNodeTo=function(a,g,c){if((g.treeNod.isLocked)&&(g.treeNod.isLocked(g.id))){return false}return this._moveNodeToA(a,g,c)};dhtmlXTreeObject.prototype.lockTree=function(a){if(convertStringToBoolean(a)){this._initTreeLocker()}else{if(this._TreeLocker){this._TreeLocker.parentNode.removeChild(this._TreeLocker);this._TreeLocker=null}}};dhtmlXTreeObject.prototype._initTreeLocker=function(a){if(this._TreeLocker){return}this.parentObject.style.overflow="hidden";if(this.parentObject.style.position!="absolute"){this.parentObject.style.position="relative"}var c=document.createElement("div");c.style.position="absolute";c.style.left="0px";c.style.top="0px";c.className="dhx_tree_opacity";c.style.width=this.allTree.offsetWidth+"px";c.style.backgroundColor="#FFFFFF";c.style.height=this.allTree.offsetHeight+"px";this._TreeLocker=c;this.parentObject.appendChild(this._TreeLocker)};dhtmlXTreeObject.prototype.enableRTL=function(c){var a=convertStringToBoolean(c);if(((a)&&(!this.rtlMode))||((!a)&&(this.rtlMode))){this.rtlMode=a;this._switchToRTL(this.rtlMode)}};dhtmlXTreeObject.prototype._switchToRTL=function(a){if(a){this.allTree.className=this._ltr_line=this.lineArray;this._ltr_min=this.minusArray;this._ltr_plus=this.plusArray;this.lineArray=new Array("line2_rtl.gif","line3_rtl.gif","line4_rtl.gif","blank.gif","blank.gif","line1_rtl.gif");this.minusArray=new Array("minus2_rtl.gif","minus3_rtl.gif","minus4_rtl.gif","minus.gif","minus5_rtl.gif");this.plusArray=new Array("plus2_rtl.gif","plus3_rtl.gif","plus4_rtl.gif","plus.gif","plus5_rtl.gif");this.allTree.className="containerTableStyleRTL"}else{this.allTree.className="containerTableStyle";this.lineArray=this._ltr_line;this.minusArray=this._ltr_min;this.plusArray=this._ltr_plus}if(this.htmlNode.childsCount){this._redrawFrom(this,this.htmlNode)}};dhtmlXTreeObject.prototype.sortTree=function(h,c,g){var a=this._globalIdStorageFind(h);if(!a){return false}this._reorderBranch(a,(c.toString().toLowerCase()=="asc"),convertStringToBoolean(g))};dhtmlXTreeObject.prototype.setCustomSortFunction=function(a){this._csfunca=a};dhtmlXTreeObject.prototype._reorderBranch=function(o,c,q){var a=[];var n=o.childsCount;if(!n){return}var l=o.childNodes[0].tr.parentNode;for(var h=0;h<n;h++){a[h]=o.childNodes[h];l.removeChild(a[h].tr)}var g=this;if(c==1){if(this._csfunca){a.sort(function(r,m){return g._csfunca(r.id,m.id)})}else{a.sort(function(r,m){return((r.span.innerHTML.toUpperCase()>m.span.innerHTML.toUpperCase())?1:((r.span.innerHTML.toUpperCase()==m.span.innerHTML.toUpperCase())?0:-1))})}}else{if(this._csfunca){a.sort(function(r,m){return g._csfunca(m.id,r.id)})}else{a.sort(function(r,m){return((r.span.innerHTML.toUpperCase()<m.span.innerHTML.toUpperCase())?1:((r.span.innerHTML.toUpperCase()==m.span.innerHTML.toUpperCase())?0:-1))})}}for(var h=0;h<n;h++){l.appendChild(a[h].tr);o.childNodes[h]=a[h];if((q)&&(a[h].unParsed)){a[h].unParsed.set("order",c?1:-1)}else{if((q)&&(a[h].childsCount)){this._reorderBranch(a[h],c,q)}}}for(var h=0;h<n;h++){this._correctPlus(a[h]);this._correctLine(a[h])}};dhtmlXTreeObject.prototype._reorderXMLBranch=function(n){var o=n.getAttribute("order");if(o=="none"){return}var c=(o==1);var l=n.childNodes.length;if(!l){return}var a=new Array();var g=0;for(var h=0;h<l;h++){if(n.childNodes[h].nodeType==1){a[g]=n.childNodes[h];g++}}for(var h=l-1;h!=0;h--){n.removeChild(n.childNodes[h])}if(c){a.sort(function(q,m){return((q.getAttribute("text")>m.getAttribute("text"))?1:((q.getAttribute("text")==m.getAttribute("text"))?0:-1))})}else{a.sort(function(q,m){return((q.getAttribute("text")<m.getAttribute("text"))?1:((q.getAttribute("text")==m.getAttribute("text"))?0:-1))})}for(var h=0;h<g;h++){a[h].setAttribute("order",o);n.appendChild(a[h])}n.setAttribute("order","none")};dhtmlXTreeObject.prototype._serEnts=[["&","&"],["<","<"],[">",">"]];dhtmlXTreeObject.prototype.registerXMLEntity=function(a,c){this._serEnts[this._serEnts.length]=[a,c,new RegExp(a,"g")]};dhtmlXTreeObject.prototype.setSerializationLevel=function(a,c,l,m,g){this._xuserData=convertStringToBoolean(a);this._xfullXML=convertStringToBoolean(c);this._dtd=g;this._xescapeEntities=convertStringToBoolean(l);if(convertStringToBoolean(m)){this._apreUC="<![CDATA[";this._apstUC="]]>"}else{}for(var h=0;h<this._serEnts.length;h++){this._serEnts[h][2]=new RegExp(this._serEnts[h][0],"g")}};dhtmlXTreeObject.prototype.serializeTree=function(){if(this.stopEdit){this.stopEdit()}this._apreUC=this._apreUC||"";this._apstUC=this._apstUC||"";var a='<?xml version="1.0"?>';if(this._dtd){a+='<!DOCTYPE tree SYSTEM "'+this._dtd+'">'}a+='<tree id="'+this.rootId+'">';if((this._xuserData)&&(this._idpull[this.rootId]._userdatalist)){var g=this._idpull[this.rootId]._userdatalist.split(",");for(var c=0;c<g.length;c++){a+='<userdata name="'+g[c]+'">'+this._apreUC+this._idpull[this.rootId].userData["t_"+g[c]]+this._apstUC+"</userdata>"}}for(var c=0;c<this.htmlNode.childsCount;c++){a+=this._serializeItem(this.htmlNode.childNodes[c])}a+="</tree>";return a};dhtmlXTreeObject.prototype._serializeItem=function(n){if(n.unParsed){if(document.all){return n.unParsed.d.xml}else{var a=new XMLSerializer();return a.serializeToString(n.unParsed.d)}}var c="";if(this._selected.length){var h=this._selected[0].id}else{h='"'}var m=n.span.innerHTML;if(this._xescapeEntities){for(var g=0;g<this._serEnts.length;g++){m=m.replace(this._serEnts[g][2],this._serEnts[g][1])}}if(!this._xfullXML){c='<item id="'+n.id+'" '+(this._getOpenState(n)==1?' open="1" ':"")+(h==n.id?' select="1"':"")+' text="'+m+'"'+(((this.XMLsource)&&(n.XMLload==0))?' child="1" ':"")+">"}else{c='<item id="'+n.id+'" '+(this._getOpenState(n)==1?' open="1" ':"")+(h==n.id?' select="1"':"")+' text="'+m+'" im0="'+n.images[0]+'" im1="'+n.images[1]+'" im2="'+n.images[2]+'" '+(n.acolor?('aCol="'+n.acolor+'" '):"")+(n.scolor?('sCol="'+n.scolor+'" '):"")+(n.checkstate==1?'checked="1" ':(n.checkstate==2?'checked="-1"':""))+(n.closeable?'closeable="1" ':"")+(((this.XMLsource)&&(n.XMLload==0))?' child="1" ':"")+">"}if((this._xuserData)&&(n._userdatalist)){var l=n._userdatalist.split(",");for(var g=0;g<l.length;g++){c+='<userdata name="'+l[g]+'">'+this._apreUC+n.userData["t_"+l[g]]+this._apstUC+"</userdata>"}}for(var g=0;g<n.childsCount;g++){c+=this._serializeItem(n.childNodes[g])}c+="</item>";return c};dhtmlXTreeObject.prototype.saveSelectedItem=function(c,a){c=c||"";this.setCookie("treeStateSelected"+c,this.getSelectedItemId(),a)};dhtmlXTreeObject.prototype.restoreSelectedItem=function(a){a=a||"";var c=this.getCookie("treeStateSelected"+a);this.selectItem(c,false)};dhtmlXTreeObject.prototype.enableAutoSavingSelected=function(a,c){this.assMode=convertStringToBoolean(a);if((this.assMode)&&(!this.oldOnSelect)){this.oldOnSelect=this.onRowSelect;this.onRowSelect=function(h,g,l){if(!g){g=this}g.parentObject.treeNod.oldOnSelect(h,g,l);if(g.parentObject.treeNod.assMode){g.parentObject.treeNod.saveSelectedItem(g.parentObject.treeNod.assCookieName)}}}this.assCookieName=c};dhtmlXTreeObject.prototype.saveState=function(g,c){var l=this._escape(this.serializeTree());var a=4000;if(l.length>a){if(navigator.appName.indexOf("Microsoft")!=-1){return false}this.setCookie("treeStatex"+g,Math.ceil(l.length/a));for(var h=0;h<Math.ceil(l.length/a);h++){this.setCookie("treeStatex"+g+"x"+h,l.substr(h*a,a),c)}}else{this.setCookie("treeStatex"+g,l,c)}var l=this.getCookie("treeStatex"+g);if(!l){this.setCookie("treeStatex"+g,"",c);return false}return true};dhtmlXTreeObject.prototype.loadState=function(a){var h=this.getCookie("treeStatex"+a);if(!h){return false}if(h.length){if(h.toString().length<4){var g="";for(var c=0;c<h;c++){g+=this.getCookie("treeStatex"+a+"x"+c)}h=g}this.loadXMLString((this.utfesc=="utf8")?decodeURI(h):unescape(h))}return true};dhtmlXTreeObject.prototype.setCookie=function(c,g,a){var h=c+"="+g+(a?("; "+a):"");document.cookie=h};dhtmlXTreeObject.prototype.getCookie=function(c){var g=c+"=";if(document.cookie.length>0){var h=document.cookie.indexOf(g);if(h!=-1){h+=g.length;var a=document.cookie.indexOf(";",h);if(a==-1){a=document.cookie.length}return document.cookie.substring(h,a)}}};dhtmlXTreeObject.prototype.saveOpenStates=function(c,a){var h=[];for(var g=0;g<this.htmlNode.childsCount;g++){h=h.concat(this._collectOpenStates(this.htmlNode.childNodes[g]))}h=h.join(this.dlmtr);this.setCookie("treeOpenStatex"+c,h,a)};dhtmlXTreeObject.prototype.loadOpenStates=function(c){for(var g=0;g<this.htmlNode.childsCount;g++){this._xcloseAll(this.htmlNode.childNodes[g])}this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0";var l=getCookie("treeOpenStatex"+c);if(l){var a=l.split(this.dlmtr);for(var g=0;g<a.length;g++){var h=this._globalIdStorageFind(a[g]);if(h){if((this.XMLsource)&&(!h.XMLload)&&(h.id!=this.rootId)){this._delayedLoad(h,"loadOpenStates('"+c+"')");return}else{this.openItem(a[g])}}}}this.callEvent("onAllOpenDynamic",[])};dhtmlXTreeObject.prototype._delayedLoad=function(c,a){this.afterLoadMethod=a;this.onLoadReserve=this.onXLE;this.onXLE=this._delayedLoadStep2;this._loadDynXML(c.id)};dhtmlXTreeObject.prototype._delayedLoadStep2=function(tree){tree.onXLE=tree.onLoadReserve;window.setTimeout(function(){dhtmlx.temp=tree;eval("dhtmlx.temp."+tree.afterLoadMethod)},100);if(tree.onXLE){tree.onXLE(tree)}tree.callEvent("onXLE",[tree])};dhtmlXTreeObject.prototype._collectOpenStates=function(c){var g=[];if(this._getOpenState(c)==1){g.push(c.id);for(var a=0;a<c.childsCount;a++){g=g.concat(this._collectOpenStates(c.childNodes[a]))}}return g};function setCookie(a,c){document.cookie=a+"="+c}function getCookie(c){var g=c+"=";if(document.cookie.length>0){var h=document.cookie.indexOf(g);if(h!=-1){h+=g.length;var a=document.cookie.indexOf(";",h);if(a==-1){a=document.cookie.length}return(document.cookie.substring(h,a))}}}dhtmlXTreeObject.prototype.openAllItemsDynamic=function(a){this.ClosedElem=new Array();this.G_node=null;var c=this._globalIdStorageFind(a||this.rootId);if(c.id!=this.rootId&&this.getOpenState(c.id)!=0){this.openItem(a)}this._openAllNodeChilds(c,0);if(this.ClosedElem.length>0){this.onLoadReserve=this.onXLE;this.onXLE=this._loadAndOpen;this._loadAndOpen(this)}};dhtmlXTreeObject.prototype._openAllNodeChilds=function(c){if((c.XMLload==0)||(c.unParsed)){this.ClosedElem.push(c)}for(var a=0;a<c.childsCount;a++){if(this._getOpenState(c.childNodes[a])<0){this._HideShow(c.childNodes[a],2)}if(c.childNodes[a].childsCount>0){this._openAllNodeChilds(c.childNodes[a])}if((c.childNodes[a].XMLload==0)||(c.childNodes[a].unParsed)){this.ClosedElem.push(c.childNodes[a])}}};dhtmlXTreeObject.prototype._loadAndOpen=function(a){if(a.G_node){a._openItem(a.G_node);a._openAllNodeChilds(a.G_node);a.G_node=null}if(a.ClosedElem.length>0){a.G_node=a.ClosedElem.shift()}if(a.G_node){if(a.G_node.unParsed){a.reParse(a.G_node)}else{window.setTimeout(function(){a._loadDynXML(a.G_node.id)},100)}}else{a.onXLE=a.onLoadReserve;if(a.onXLE){a.onXLE(a)}a.callEvent("onAllOpenDynamic",[a])}};dhtmlXTreeObject.prototype.openItemsDynamic=function(c,a){if(this.onXLE==this._stepOpen){return}this._opnItmsDnmcFlg=convertStringToBoolean(a);this.onLoadReserve=this.onXLE;this.onXLE=this._stepOpen;this.ClosedElem=c.split(",").reverse();this._stepOpen(this)};dhtmlXTreeObject.prototype._stepOpen=function(c){if(!c.ClosedElem.length){c.onXLE=c.onLoadReserve;if(c._opnItmsDnmcFlg){c.selectItem(c.G_node,true)}if((c.onXLE)&&(arguments[1])){c.onXLE.apply(c,arguments)}c.callEvent("onOpenDynamicEnd",[]);return}c.G_node=c.ClosedElem.pop();c.skipLock=true;var a=c._globalIdStorageFind(c.G_node);if(a){if(a.XMLload===0){c.openItem(c.G_node)}else{c.openItem(c.G_node);c._stepOpen(c)}}c.skipLock=false};var globalActiveDHTMLGridObject;String.prototype._dhx_trim=function(){return this.replace(/ /g," ").replace(/(^[ \t]*)|([ \t]*$)/g,"")};function dhtmlxArray(a){return dhtmlXHeir((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(g,c){this[this.length]=null;for(var a=this.length-1;a>=g;a--){this[a]=this[a-1]}this[g]=c},_dhx_removeAt:function(a){this.splice(a,1)},_dhx_swapItems:function(a,g){var c=this[a];this[a]=this[g];this[g]=c}};function dhtmlXGridObject(id){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="";dhtmlxEventable(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=new dtmlXMLLoaderObject(this.doLoadDetails,this,true,this.no_cashe);this._maskArr=[];this.selectedRows=dhtmlxArray();this.UserData={};this._sizeFix=this._borderFix=0;this.entBox.className+=" gridbox";this.entBox.style.width=this.entBox.getAttribute("width")||(window.getComputedStyle?(this.entBox.style.width||window.getComputedStyle(this.entBox,null)["width"]):(this.entBox.currentStyle?this.entBox.currentStyle.width:this.entBox.style.width||0))||"100%";this.entBox.style.height=this.entBox.getAttribute("height")||(window.getComputedStyle?(this.entBox.style.height||window.getComputedStyle(this.entBox,null)["height"]):(this.entBox.currentStyle?this.entBox.currentStyle.height:this.entBox.style.height||0))||"100%";this.entBox.style.cursor="default";this.entBox.onselectstart=function(){return 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.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"clear":this._topMb=document.createElement("DIV");this._topMb.className="topMumba";this._topMb.innerHTML="<img style='left:0px' src='"+this.imgURL+"skinC_top_left.gif'><img style='right:20px' src='"+this.imgURL+"skinC_top_right.gif'>";this.entBox.appendChild(this._topMb);this._botMb=document.createElement("DIV");this._botMb.className="bottomMumba";this._botMb.innerHTML="<img style='left:0px' src='"+this.imgURL+"skinD_bottom_left.gif'><img style='right:20px' src='"+this.imgURL+"skinD_bottom_right.gif'>";this.entBox.appendChild(this._botMb);if(this.entBox.style.position!="absolute"){this.entBox.style.position="relative"}this.skin_h_correction=20;break;case"dhx_terrace":this._srdh=33;this.forceDivInHeader=true;break;case"dhx_skyblue":case"dhx_web":case"glassy_blue":case"dhx_black":case"dhx_blue":case"modern":case"light":this._srdh=27;this.forceDivInHeader=true;break;case"xp":this.forceDivInHeader=true;if((_isIE)&&(document.compatMode!="BackCompat")){this._srdh=26}else{this._srdh=22}break;case"mt":if((_isIE)&&(document.compatMode!="BackCompat")){this._srdh=26}else{this._srdh=22}break;case"gray":if((_isIE)&&(document.compatMode!="BackCompat")){this._srdh=22}break;case"sbdark":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=new dhtmlxHierarchy();if((this._fake)&&(!this._realfake)){this._fake._h2=this._h2}this._tgc={imgURL:null}}if(!this._hstyles){return}if(!this.skin_name){this.setSkin("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()}if(this._init_point){this._init_point()}};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){var splitOuterBorder=(this.globalBox.offsetWidth-this.globalBox.clientWidth)/2;if(this._delta_x&&!this._realfake){var ow=this.globalBox.clientWidth;this.globalBox.style.width=this._delta_x;this.entBox.style.width=Math.max(0,(this.globalBox.clientWidth+(quirks?splitOuterBorder*2:0))-this._fake.entBox.clientWidth)+"px";if(ow!=this.globalBox.clientWidth){this._fake._correctSplit(this._fake.entBox.clientWidth)}}if(this._delta_y&&!this._realfake){this.globalBox.style.height=this._delta_y;this.entBox.style.overflow=this._fake.entBox.style.overflow="hidden";this.entBox.style.height=this._fake.entBox.style.height=this.globalBox.clientHeight+(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.setSizes_clear=function(){var y=this.hdr.offsetHeight;var x=this.entBox.offsetWidth;var y2=y+this.objBox.offsetHeight;this._topMb.style.top=(y||0)+"px";this._topMb.style.width=(x+20)+"px";this._botMb.style.top=(y2-3)+"px";this._botMb.style.width=(x+20)+"px"};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=convertStringToBoolean(state)};this.enableMultiselect=function(state){this.selMultiRows=convertStringToBoolean(state)};this.setImagePath=function(path){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}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++){this._setColumnSizeR(el._cellIndexS+i*1,a_sizes[i])}}else{this._setColumnSizeR(el._cellIndex,fcolW)}this.doOnScroll(0,1);this.setSizes();if(this._fake&&this._awdth){this._fake._correctSplit()}};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()}}};this.setSortImgState=function(state,ind,order,row){order=(order||"asc").toLowerCase();if(!convertStringToBoolean(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].className.indexOf("rowselected")==-1&&(this._realfake||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._realfake||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();c.className+=" editable";this.editor.edit();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;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.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=convertStringToBoolean(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[col]}}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=new dhtmlxHierarchy();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]]){dhtmlxError.throwError("Configuration","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=convertStringToBoolean(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]=convertStringToBoolean(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.getHeaderCol(i)+"]]>"}else{out+=this.getHeaderCol(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=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.objBox.ontouchend=function(){this.hdrBox.scrollLeft=this.objBox.scrollLeft};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||event).cancelBubble=true};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||event).cancelBubble=true};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(g,a,c){this.getRowById(g)._attrs[a]=c},isTreeGrid:function(){return(this.cellType._dhx_find("tree")!=-1)},setRowHidden:function(m,g){var c=convertStringToBoolean(g);var l=this.getRowById(m);if(!l){return}if(l.expand===""){this.collapseKids(l)}if((g)&&(l.style.display!="none")){l.style.display="none";var h=this.selectedRows._dhx_find(l);if(h!=-1){l.className=l.className.replace("rowselected","");for(var a=0;a<l.childNodes.length;a++){l.childNodes[a].className=l.childNodes[a].className.replace(/cellselected/g,"")}this.selectedRows._dhx_removeAt(h)}this.callEvent("onGridReconstructed",[])}if((!g)&&(l.style.display=="none")){l.style.display="";this.callEvent("onGridReconstructed",[])}this.callEvent("onRowHide",[m,g]);this.setSizes()},setColumnHidden:function(g,c){if(!this.hdr.rows.length){if(!this._ivizcol){this._ivizcol=[]}return this._ivizcol[g]=c}if((this.fldSorted)&&(this.fldSorted.cellIndex==g)&&(c)){this.sortImg.style.display="none"}var a=convertStringToBoolean(c);if(a){if(!this._hrrar){this._hrrar=new Array()}else{if(this._hrrar[g]){return}}this._hrrar[g]="display:none;";this._hideShowColumn(g,"none")}else{if((!this._hrrar)||(!this._hrrar[g])){return}this._hrrar[g]="";this._hideShowColumn(g,"")}if((this.fldSorted)&&(this.fldSorted.cellIndex==g)&&(!c)){this.sortImg.style.display="inline"}this.setSortImgPos();this.callEvent("onColumnHidden",[g,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(o,g,a,c,m){m=m||"_cellIndex";var n=o.rows.length;for(var l=0;l<n;l++){var q=o.rows[l].childNodes;if(q.length!=this._cCount){for(var h=0;h<q.length;h++){if(q[h][m]==g){q[h].style[a]=c;break}}}else{q[g].style[a]=c}}},_hideShowColumn:function(l,h){var a=l;if(this.hdr.rows[1]&&(this.hdr.rows[1]._childIndexes)&&(this.hdr.rows[1]._childIndexes[l]!=l)){a=this.hdr.rows[1]._childIndexes[l]}if(h=="none"){this.hdr.rows[0].cells[l]._oldWidth=this.hdr.rows[0].cells[l].style.width||(this.initCellWidth[l]+"px");this.hdr.rows[0].cells[l]._oldWidthP=this.cellWidthPC[l];this.obj.rows[0].cells[l].style.width="0px";var c={rows:[this.obj.rows[0]]};this.forEachRow(function(m){if(this.rowsAr[m].tagName=="TR"){c.rows.push(this.rowsAr[m])}});this._fixHiddenRowsAll(c,l,"display","none");if(this.isTreeGrid()){this._fixHiddenRowsAllTG(l,"none")}if((_isOpera&&_OperaRv<9)||_isKHTML||(_isFF)){this._fixHiddenRowsAll(this.hdr,l,"display","none","_cellIndexS")}if(this.ftr){this._fixHiddenRowsAll(this.ftr.childNodes[0],l,"display","none")}this._fixHiddenRowsAll(this.hdr,l,"whiteSpace","nowrap","_cellIndexS");if(!this.cellWidthPX.length&&!this.cellWidthPC.length){this.cellWidthPX=[].concat(this.initCellWidth)}if(this.cellWidthPX[l]){this.cellWidthPX[l]=0}if(this.cellWidthPC[l]){this.cellWidthPC[l]=0}}else{if(this.hdr.rows[0].cells[l]._oldWidth){var g=this.hdr.rows[0].cells[l];if(_isOpera||_isKHTML||(_isFF)){this._fixHiddenRowsAll(this.hdr,l,"display","","_cellIndexS")}if(this.ftr){this._fixHiddenRowsAll(this.ftr.childNodes[0],l,"display","")}var c={rows:[this.obj.rows[0]]};this.forEachRow(function(m){if(this.rowsAr[m].tagName=="TR"){c.rows.push(this.rowsAr[m])}});this._fixHiddenRowsAll(c,l,"display","");if(this.isTreeGrid()){this._fixHiddenRowsAllTG(l,"")}this._fixHiddenRowsAll(this.hdr,l,"whiteSpace","normal","_cellIndexS");if(g._oldWidthP){this.cellWidthPC[l]=g._oldWidthP}if(g._oldWidth){this.cellWidthPX[l]=parseInt(g._oldWidth)}}}this.setSizes();if((!_isIE)&&(!_isFF)){this.obj.border=1;this.obj.border=0}},enableColSpan:function(a){this._ecspn=convertStringToBoolean(a)},enableRowsHover:function(c,a){this._unsetRowHover(false,true);this._hvrCss=a;if(convertStringToBoolean(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,g,a){this._sclE=convertStringToBoolean(c);this._dclE=convertStringToBoolean(g);this._f2kE=convertStringToBoolean(a)},enableLightMouseNavigation:function(a){if(convertStringToBoolean(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(g,a,c){if(convertStringToBoolean(g)){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 g=0;g<this.formInputs.length;g++){this.parentForm.removeChild(this.formInputs[g])}}var c;this.xmlLoader=this.xmlLoader.destructor();for(var g=0;g<this.rowsCol.length;g++){if(this.rowsCol[g]){this.rowsCol[g].grid=null}}for(g in this.rowsAr){if(this.rowsAr[g]){this.rowsAr[g]=null}}this.rowsCol=new dhtmlxArray();this.rowsAr={};this.entBox.innerHTML="";var h=function(){};this.entBox.onclick=this.entBox.onmousedown=this.entBox.onbeforeactivate=this.entBox.onbeforedeactivate=this.entBox.onbeforedeactivate=this.entBox.onselectstart=h;this.setSizes=this._update_srnd_view=this.callEvent=h;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=h;this.globalBox.onclick=this.globalBox.onmousedown=this.globalBox.onbeforeactivate=this.globalBox.onbeforedeactivate=this.globalBox.onbeforedeactivate=this.globalBox.onselectstart=h}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(g,c,a){this._ahgr=convertStringToBoolean(g);this._ahgrF=convertStringToBoolean(a);this._ahgrM=c||null;if(arguments.length==1){this.objBox.style.overflowY=g?"hidden":"auto"}if(c=="auto"){this._ahgrM=null;this._ahgrMA=true;this._setAutoResize()}},enableStableSorting:function(a){this._sst=convertStringToBoolean(a);this.rowsCol.stablesort=function(m){var l=this.length-1;for(var h=0;h<this.length-1;h++){for(var g=0;g<l;g++){if(m(this[g],this[g+1])>0){var c=this[g];this[g]=this[g+1];this[g+1]=c}}l--}}},enableKeyboardSupport:function(a){this._htkebl=!convertStringToBoolean(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]=convertStringToBoolean(this._enbTts[a])}},enableResizing:function(c){this._drsclmn=c.split(",");for(var a=0;a<this._drsclmn.length;a++){this._drsclmn[a]=convertStringToBoolean(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=convertStringToBoolean(a)},lockRow:function(a,g){var c=this.getRowById(a);if(c){c._locked=convertStringToBoolean(g);if((this.cell)&&(this.cell.parentNode.idd==a)){this.editStop()}}},_getRowArray:function(l){var h=new Array();for(var g=0;g<l.childNodes.length;g++){var c=this.cells3(l,g);h[g]=c.getValue()}return h},setDateFormat:function(c,a){this._dtmask=c;this._dtmask_inc=a},setNumberFormat:function(o,g,l,n){var h=o.replace(/[^0\,\.]*/g,"");var a=h.indexOf(".");if(a>-1){a=h.length-a-1}var c=h.indexOf(",");if(c>-1){c=h.length-a-2-c}if(typeof l!="string"){l=this.i18n.decimal_separator}if(typeof n!="string"){n=this.i18n.group_separator}var q=o.split(h)[0];var m=o.split(h)[1];this._maskArr[g]=[a,c,q,m,l,n]},_aplNFb:function(l,h){var c=this._maskArr[h];if(!c){return l}var g=parseFloat(l.toString().replace(/[^0-9]*/g,""));if(l.toString().substr(0,1)=="-"){g=g*-1}if(c[0]>0){g=g/Math.pow(10,c[0])}return g},_aplNF:function(m,l){var g=this._maskArr[l];if(!g){return m}var n=(parseFloat(m)<0?"-":"")+g[2];m=Math.abs(Math.round(parseFloat(m)*Math.pow(10,g[0]>0?g[0]:0))).toString();m=(m.length<g[0]?Math.pow(10,g[0]+1-m.length).toString().substr(1,g[0]+1)+m.toString():m).split("").reverse();m[g[0]]=(m[g[0]]||"0")+g[4];if(g[1]>0){for(var h=(g[0]>0?0:1)+g[0]+g[1];h<m.length;h+=g[1]){m[h]+=g[5]}}return n+m.reverse().join("")+g[3]},_launchCommands:function(a){for(var h=0;h<a.length;h++){var g=new Array();for(var c=0;c<a[h].childNodes.length;c++){if(a[h].childNodes[c].nodeType==1){g[g.length]=a[h].childNodes[c].firstChild.data}}this[a[h].getAttribute("command")].apply(this,g)}},_parseHead:function(l){var h=this.xmlLoader.doXPath("./head",l);if(h.length){var m=this.xmlLoader.doXPath("./column",h[0]);var n=this.xmlLoader.doXPath("./settings",h[0]);var C="setInitWidths";var w=false;if(n[0]){for(var o=0;o<n[0].childNodes.length;o++){switch(n[0].childNodes[o].tagName){case"colwidth":if(n[0].childNodes[o].firstChild&&n[0].childNodes[o].firstChild.data=="%"){C="setInitWidthsP"}break;case"splitat":w=(n[0].childNodes[o].firstChild?n[0].childNodes[o].firstChild.data:false);break}}}this._launchCommands(this.xmlLoader.doXPath("./beforeInit/call",h[0]));if(m.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<m.length;A++){for(var y=1;y<v.length;y++){a[y].push(m[A].getAttribute(v[y]))}a[0].push((m[A].firstChild?m[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<m.length;A++){if((this.cellType[A].indexOf("co")==0)||(this.cellType[A]=="clist")){var q=this.xmlLoader.doXPath("./option",m[A]);if(q.length){var x=new Array();if(this.cellType[A]=="clist"){for(var y=0;y<q.length;y++){x[x.length]=q[y].firstChild?q[y].firstChild.data:""}this.registerCList(A,x)}else{var D=this.getCombo(A);for(var y=0;y<q.length;y++){D.put(q[y].getAttribute("value"),q[y].firstChild?q[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 g=a[7].join(this.delim);if(this.setColHidden&&g.replace(/,/g,"")!=""){this.setColHidden(g)}if((w)&&(this.splitAt)){this.splitAt(w)}}this._launchCommands(this.xmlLoader.doXPath("./afterInit/call",h[0]))}var c=this.xmlLoader.doXPath("//rows/userdata",l);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(h){var g=this.cells(h,a);if(g.changeState&&g.getValue()!=0){c.push(h)}},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(g){if(this.cells(g,c).isCheckbox()){this.cells(g,c).setValue(a)}})},_drawTooltip:function(l){var m=this.grid.getFirstParentOfType(l?l.target:event.srcElement,"TD");if(!m||((this.grid.editor)&&(this.grid.editor.cell==m))){return true}var h=m.parentNode;if(!h.idd||h.idd=="__filler__"){return}var g=(l?l.target:event.srcElement);if(h.idd==window.unknown){return true}if(!this.grid.callEvent("onMouseOver",[h.idd,m._cellIndex,(l||window.event)])){return true}if((this.grid._enbTts)&&(!this.grid._enbTts[m._cellIndex])){if(g.title){g.title=""}return true}if(m._cellIndex>=this.grid._cCount){return}var a=this.grid.cells3(h,m._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(g){var a=[];for(var c=0;c<this.rowsBuffer.length;c++){if(this.rowsBuffer[c]){a.push(this.rowsBuffer[c].idd)}}return a.join(g||this.delim)},getAllItemIds:function(){return this.getAllRowIds()},setColspan:function(g,x,h){if(!this._ecspn){return}var a=this.getRowById(g);if((a._childIndexes)&&(a.childNodes[a._childIndexes[x]])){var q=a._childIndexes[x];var l=a.childNodes[q];var o=l.colSpan;l.colSpan=1;if((o)&&(o!=1)){for(var u=1;u<o;u++){var w=document.createElement("TD");if(l.nextSibling){a.insertBefore(w,l.nextSibling)}else{a.appendChild(w)}a._childIndexes[x+u]=q+u;w._cellIndex=x+u;w.style.textAlign=this.cellAlign[u];w.style.verticalAlign=this.cellVAlign[u];l=w;this.cells3(a,x+u).setValue("")}}for(var v=x*1+1*o;v<a._childIndexes.length;v++){a._childIndexes[v]+=(o-1)*1}}if((h)&&(h>1)){if(a._childIndexes){var q=a._childIndexes[x]}else{var q=x;a._childIndexes=new Array();for(var v=0;v<a.childNodes.length;v++){a._childIndexes[v]=v}}a.childNodes[q].colSpan=h;for(var v=1;v<h;v++){a._childIndexes[a.childNodes[q+1]._cellIndex]=q;a.removeChild(a.childNodes[q+1])}var s=a.childNodes[a._childIndexes[x]]._cellIndex;for(var v=s*1+1*h;v<a._childIndexes.length;v++){a._childIndexes[v]-=(h-1)}}},preventIECaching:function(a){this.no_cashe=convertStringToBoolean(a);this.xmlLoader.rSeed=this.no_cashe},enableColumnAutoSize:function(a){this._eCAS=convertStringToBoolean(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(q,c){if(this._hrrar&&this._hrrar[q]){return}this._notresize=true;var g=0;this._setColumnSizeR(q,20);for(var n=1;n<this.hdr.rows.length;n++){var s=this.hdr.rows[n];s=s.childNodes[(s._childIndexes)?s._childIndexes[q]:q];if((s)&&((!s.colSpan)||(s.colSpan<2))&&s._cellIndex==q){if((s.childNodes[0])&&(s.childNodes[0].className=="hdrcell")){s=s.childNodes[0]}g=Math.max(g,s.scrollWidth)}}var h=this.obj.rows.length;var r=0;var v=this.cellType._dhx_find("tree");for(var o=1;o<h;o++){var u=this.obj.rows[o];if(!this.rowsAr[u.idd]){continue}if(u._childIndexes&&u._childIndexes[q]!=q||!u.childNodes[q]){continue}r=(u.childNodes[q].innerText||u.childNodes[q].textContent||"").length*this.fontWidth;if(this._h2&&q==v){r+=this._h2.get[u.idd].level*22}if(r>g){g=r}}g+=20+(c||0);this._setColumnSizeR(q,g);this._notresize=false;this.setSizes()},detachHeader:function(a,g){g=g||this.hdr;var c=g.rows[a+1];if(c){c.parentNode.removeChild(c)}this.setSizes()},detachFooter:function(a){this.detachHeader(a,this.ftr)},attachHeader:function(a,h,c){if(typeof(a)=="string"){a=this._eSplit(a)}if(typeof(h)=="string"){h=h.split(this.delim)}c=c||"_aHead";if(this.hdr.rows.length){if(a){this._createHRow([a,h],this[(c=="_aHead")?"hdr":"ftr"])}else{if(this[c]){for(var g=0;g<this[c].length;g++){this.attachHeader.apply(this,this[c][g])}}}}else{if(!this[c]){this[c]=new Array()}this[c][this[c].length]=[a,h,c]}},_createHRow:function(g,r){if(!r){if(this.entBox.style.position!="absolute"){this.entBox.style.position="relative"}var n=document.createElement("DIV");n.className="c_ftr".substr(2);this.entBox.appendChild(n);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";n.appendChild(v);v.appendChild(document.createElement("TBODY"));this.ftr=r=v;var m=v.insertRow(0);var a=((this.hdrLabels.length<=1)?g[0].length:this.hdrLabels.length);for(var h=0;h<a;h++){m.appendChild(document.createElement("TH"));m.childNodes[h]._cellIndex=h}if(_isIE&&_isIE<8){m.style.position="absolute"}else{m.style.height="auto"}}var l=g[1];var n=document.createElement("TR");r.rows[0].parentNode.appendChild(n);for(var h=0;h<g[0].length;h++){if(g[0][h]=="#cspan"){var o=n.cells[n.cells.length-1];o.colSpan=(o.colSpan||1)+1;continue}if((g[0][h]=="#rspan")&&(r.rows.length>1)){var y=r.rows.length-2;var x=false;var o=null;while(!x){var o=r.rows[y];for(var c=0;c<o.cells.length;c++){if(o.cells[c]._cellIndex==h){x=c+1;break}}y--}o=o.cells[x-1];o.rowSpan=(o.rowSpan||1)+1;continue}var q=document.createElement("TD");q._cellIndex=q._cellIndexS=h;if(this._hrrar&&this._hrrar[h]&&!_isIE){q.style.display="none"}if(typeof g[0][h]=="object"){q.appendChild(g[0][h])}else{if(this.forceDivInHeader){q.innerHTML="<div class='hdrcell'>"+(g[0][h]||" ")+"</div>"}else{q.innerHTML=(g[0][h]||" ")}if((g[0][h]||"").indexOf("#")!=-1){var v=g[0][h].match(/(^|{)#([^}]+)(}|$)/);if(v){var s="_in_header_"+v[2];if(this[s]){this[s]((this.forceDivInHeader?q.firstChild:q),h,g[0][h].split(v[0]))}}}}if(l){q.style.cssText=l[h]}n.appendChild(q)}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(g,a,c){this.changeCellType(this.getRowById(g),a,c)},changeCellType:function(g,h,c){c=c||this.cellType[h];var l=this.cells3(g,h);var a=l.getValue();l.cell._cellType=c;var l=this.cells3(g,h);l.setValue(a)},setRowExcellType:function(g,c){var h=this.rowsAr[g];for(var a=0;a<h.childNodes.length;a++){this.changeCellType(h,a,c)}},setColumnExcellType:function(a,g){for(var c=0;c<this.rowsBuffer.length;c++){if(this.rowsBuffer[c]&&this.rowsBuffer[c].tagName=="TR"){this.changeCellType(this.rowsBuffer[c],a,g)}}if(this.cellType[a]=="math"){this._strangeParams[c]=g}else{this.cellType[a]=g}},forEachRow:function(g){for(var c in this.rowsAr){if(this.rowsAr[c]&&this.rowsAr[c].idd){g.apply(this,[this.rowsAr[c].idd])}}},forEachRowA:function(g){for(var c=0;c<this.rowsBuffer.length;c++){if(this.rowsBuffer[c]){g.call(this,this.render_row(c).idd)}}},forEachCell:function(g,c){var h=this.getRowById(g);if(!h){return}for(var a=0;a<this._cCount;a++){c(this.cells3(h,a),a)}},enableAutoWidth:function(g,a,c){this._awdth=[convertStringToBoolean(g),parseInt(a||99999),parseInt(c||0)];if(arguments.length==1){this.objBox.style.overflowX=g?"hidden":"auto"}},updateFromXML:function(a,h,c,g){if(typeof h=="undefined"){h=true}this._refresh_mode=[true,h,c];this.load(a,g)},_refreshFromXML:function(h){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");h.getXMLTopNode("rows");var l=h.doXPath("//rows")[0].getAttribute("parent")||0;var n={};if(this._refresh_mode[2]){if(r!=-1){this._h2.forEachChild(l,function(s){n[s.id]=true},this)}else{this.forEachRow(function(s){n[s]=true})}}var q=h.doXPath("//row");for(var g=0;g<q.length;g++){var o=q[g];var a=o.getAttribute("id");n[a]=false;var l=o.parentNode.getAttribute("id")||l;if(this.rowsAr[a]&&this.rowsAr[a].tagName!="TR"){if(this._h2){this._h2.get[a].buff.data=o}else{this.rowsBuffer[this.getRowIndex(a)].data=o}this.rowsAr[a]=o}else{if(this.rowsAr[a]){this._process_xml_row(this.rowsAr[a],o,-1);this._postRowProcessing(this.rowsAr[a],true);if(this._fake&&this._fake.rowsAr[a]){this._fake._process_xml_row(this._fake.rowsAr[a],o,-1)}}else{if(this._refresh_mode[1]){var m={idd:a,data:o,_parser:this._process_xml_row,_locator:this._get_xml_data};var c=this.rowsBuffer.length;if(this._refresh_mode[1]=="top"){this.rowsBuffer.unshift(m);c=0}else{this.rowsBuffer.push(m)}if(this._h2){reset=true;(this._h2.add(a,(o.parentNode.getAttribute("id")||o.parentNode.getAttribute("parent")))).buff=this.rowsBuffer[this.rowsBuffer.length-1]}else{if(this._srnd){reset=true}}this.rowsAr[a]=o;o=this.render_row(c);this._insertRowAt(o,c?-1:0)}}}}if(this._refresh_mode[2]){for(a in n){if(n[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(g,c){var a=this.cells(g,c).cell;if(!a._combo){a._combo=new dhtmlXGridComboObject()}return a._combo},setTabOrder:function(c){var h=c.split(this.delim);this._tabOrder=[];var a=this._cCount||c.length;for(var g=0;g<a;g++){h[g]={c:parseInt(h[g]),ind:g}}h.sort(function(m,l){return(m.c>l.c?1:-1)});for(var g=0;g<a;g++){if(!h[g+1]||(typeof h[g].c=="undefined")){this._tabOrder[h[g].ind]=(h[0].ind+1)*-1}else{this._tabOrder[h[g].ind]=h[g+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 g=this._nextRow(a,1);if(g){c._r_select=null;this.selectCell(g,this.cell._cellIndex,true);if(c.pagingOn){c.showRow(g.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 g=this._nextRow(a-1,-1);this.selectCell(g,this.cell._cellIndex,true);if(c.pagingOn&&g){c.showRow(g.idd)}}else{this._key_events.k33_0_0.apply(this,[])}}this._still_active=true}},_build_master_row:function(){var g=document.createElement("DIV");var c=["<table><tr>"];for(var a=0;a<this._cCount;a++){c.push("<td></td>")}c.push("</tr></table>");g.innerHTML=c.join("");this._master_row=g.firstChild.rows[0]},_prepareRow:function(a){if(!this._master_row){this._build_master_row()}var g=this._master_row.cloneNode(true);for(var c=0;c<g.childNodes.length;c++){g.childNodes[c]._cellIndex=c;if(this._enbCid){g.childNodes[c].id="c_"+a+"_"+c}if(this.dragAndDropOff){this.dragger.addDraggableItem(g.childNodes[c],this)}}g.idd=a;g.grid=this;return g},_process_jsarray_row:function(c,g){c._attrs={};for(var a=0;a<c.childNodes.length;a++){c.childNodes[a]._attrs={}}this._fillRow(c,(this._c_order?this._swapColumns(g):g));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,g){c._attrs={};for(var a=0;a<c.childNodes.length;a++){c.childNodes[a]._attrs={}}this._fillRow(c,g);return c},_get_json_data:function(c,a){return c.data[a]},_process_js_row:function(g,h){var a=[];for(var c=0;c<this.columnIds.length;c++){a[c]=h[this.columnIds[c]];if(!a[c]&&a[c]!==0){a[c]=""}}this._process_some_row(g,a);g._attrs=h;return g},_get_js_data:function(c,a){return c[this.columnIds[a]]},_process_csv_row:function(c,g){c._attrs={};for(var a=0;a<c.childNodes.length;a++){c.childNodes[a]._attrs={}}this._fillRow(c,(this._c_order?this._swapColumns(g.split(this.csv.cell)):g.split(this.csv.cell)));return c},_get_csv_data:function(c,a){return c.split(this.csv.cell)[a]},_process_store_row:function(l,h){var a=[];for(var g=0;g<this.columnIds.length;g++){a[g]=h[this.columnIds[g]]}for(var c=0;c<l.childNodes.length;c++){l.childNodes[c]._attrs={}}l._attrs=h;this._fillRow(l,a)},_process_xml_row:function(a,m){var u=this.xmlLoader.doXPath(this.xml.cell,m);var q=[];a._attrs=this._xml_attrs(m);if(this._ud_enabled){var s=this.xmlLoader.doXPath("./userdata",m);for(var l=s.length-1;l>=0;l--){var o="";for(var g=0;g<s[l].childNodes.length;g++){o+=s[l].childNodes[g].nodeValue}this.setUserData(a.idd,s[l].getAttribute("name"),o)}}for(var g=0;g<u.length;g++){var h=u[this._c_order?this._c_order[g]:g];if(!h){continue}var c=a._childIndexes?a._childIndexes[g]:g;var n=h.getAttribute("type");if(a.childNodes[c]){if(n){a.childNodes[c]._cellType=n}a.childNodes[c]._attrs=this._xml_attrs(h)}if(!h.getAttribute("xmlcontent")){if(h.firstChild){h=h.firstChild.data}else{h=""}}q.push(h)}for(g<u.length;g<a.childNodes.length;g++){a.childNodes[g]._attrs={}}if(a.parentNode&&a.parentNode.tagName=="row"){a._attrs.parent=a.parentNode.getAttribute("idd")}this._fillRow(a,q);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(h,m){if(this.editor){this.editStop()}for(var c=0;c<h.childNodes.length;c++){if((c<m.length)||(this.defVal[c])){var g=h.childNodes[c]._cellIndex;var l=m[g];var a=this.cells4(h.childNodes[c]);if((this.defVal[g])&&((l=="")||(typeof(l)=="undefined"))){l=this.defVal[g]}if(a){a.setValue(l)}}else{h.childNodes[c].innerHTML=" ";h.childNodes[c]._clearCell=true}}return h},_postRowProcessing:function(m,o){if(m._attrs["class"]){m._css=m.className=m._attrs["class"]}if(m._attrs.locked){m._locked=true}if(m._attrs.bgColor){m.bgColor=m._attrs.bgColor}var n=0;for(var g=0;g<m.childNodes.length;g++){var q=m.childNodes[g];var l=q._cellIndex;var h=q._attrs.style||m._attrs.style;if(h){q.style.cssText+=";"+h}if(q._attrs["class"]){q.className=q._attrs["class"]}h=q._attrs.align||this.cellAlign[l];if(h){q.align=h}q.vAlign=q._attrs.valign||this.cellVAlign[l];var a=q._attrs.bgColor||this.columnColor[l];if(a){q.bgColor=a}if(q._attrs.colspan&&!o){this.setColspan(m.idd,g+n,q._attrs.colspan);n+=(q._attrs.colspan-1)}if(this._hrrar&&this._hrrar[l]&&!o){q.style.display="none"}}this.callEvent("onRowCreated",[m.idd,m,null])},load:function(a,g,c){this.callEvent("onXLS",[this]);if(arguments.length==2&&typeof g!="function"){c=g;g=null}c=c||"xml";if(!this.xmlFileUrl){this.xmlFileUrl=a}this._data_type=c;this.xmlLoader=new dtmlXMLLoaderObject(this.doLoadDetails,this,true,this.no_cashe);this.xmlLoader.onloadAction=function(m,h,o,n,l){if(!m.callEvent){return}l=m["_process_"+c](l);if(!m._contextCallTimer){m.callEvent("onXLE",[m,0,0,l])}if(g){g();g=null}};this.xmlLoader.loadXML(a)},loadXMLString:function(g,c){var a=new dtmlXMLLoaderObject(function(){});a.loadXMLString(g);this.parse(a,c,"xml")},loadXML:function(a,c){this.load(a,c,"xml")},parse:function(g,c,a){if(arguments.length==2&&typeof c!="function"){a=c;c=null}a=a||"xml";this._data_type=a;g=this["_process_"+a](g);if(!this._contextCallTimer){this.callEvent("onXLE",[this,0,0,g])}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 g={};if(c.attributes.length){for(var a=0;a<c.attributes.length;a++){g[c.attributes[a].name]=c.attributes[a].value}}return g},_process_xml:function(l){if(!l.doXPath){var s=new dtmlXMLLoaderObject(function(){});if(typeof l=="string"){s.loadXMLString(l)}else{if(l.responseXML){s.xmlDoc=l}else{s.xmlDoc={}}s.xmlDoc.responseXML=l}l=s}if(this._refresh_mode){return this._refreshFromXML(l)}this._parsing=true;var o=l.getXMLTopNode(this.xml.top);if(o.tagName!=this.xml.top){return}var r=o.getAttribute("dhx_security");if(r){dhtmlx.security_key=r}this._parseHead(o);var u=l.doXPath(this.xml.row,o);var n=parseInt(l.doXPath("//"+this.xml.top)[0].getAttribute("pos")||0);var q=parseInt(l.doXPath("//"+this.xml.top)[0].getAttribute("total_count")||0);var q=Math.min(q,32000000/this._srdh);var m=false;if(q&&q!=this.rowsBuffer.length){if(!this.rowsBuffer[q-1]){if(this.rowsBuffer.length){m=true}this.rowsBuffer[q-1]=null}if(q<this.rowsBuffer.length){this.rowsBuffer.splice(q,this.rowsBuffer.length-q);m=true}}if(this.isTreeGrid()){return this._process_tree_xml(l)}for(var c=0;c<u.length;c++){if(this.rowsBuffer[c+n]){continue}var a=u[c].getAttribute("id")||(c+n+1);this.rowsBuffer[c+n]={idd:a,data:u[c],_parser:this._process_xml_row,_locator:this._get_xml_data};this.rowsAr[a]=u[c]}this.callEvent("onDataReady",[]);if(m&&this._srnd){var g=this.objBox.scrollTop;this._reset_view();this.objBox.scrollTop=g}else{this.render_dataset()}this._parsing=false;return l.xmlDoc.responseXML?l.xmlDoc.responseXML:l.xmlDoc},_process_jsarray:function(data){this._parsing=true;if(data&&data.xmlDoc){eval("dhtmlx.temp="+data.xmlDoc.responseText+";");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(h){this._parsing=true;if(h.xmlDoc){h=h.xmlDoc.responseText}h=h.replace(/\r/g,"");h=h.split(this.csv.row);if(this._csvHdr){this.clearAll();var g=h.splice(0,1)[0].split(this.csv.cell);if(!this._csvAID){g.splice(0,1)}this.setHeader(g.join(this.delim));this.init()}for(var c=0;c<h.length;c++){if(!h[c]&&c==h.length-1){continue}if(this._csvAID){var l=c+1;this.rowsBuffer.push({idd:l,data:h[c],_parser:this._process_csv_row,_locator:this._get_csv_data})}else{var a=h[c].split(this.csv.cell);var l=a.splice(0,1)[0];this.rowsBuffer.push({idd:l,data:a,_parser:this._process_jsarray_row,_locator:this._get_jsarray_data})}this.rowsAr[l]=h[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;if(data&&data.xmlDoc){eval("dhtmlx.temp="+data.xmlDoc.responseText+";");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{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(h,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){h=Math.max((h||0),(this.currentPage-1)*this.rowsBufferOutSize);a=Math.min(this.currentPage*this.rowsBufferOutSize,this.rowsBuffer.length)}else{h=h||0;a=a||this.rowsBuffer.length}for(var g=h;g<a;g++){var m=this.render_row(g);if(m==-1){if(this.xmlFileUrl){if(this.callEvent("onDynXLS",[g,(this._dpref?this._dpref:(a-g))])){this.load(this.xmlFileUrl+getUrlSymbol(this.xmlFileUrl)+"posStart="+g+"&count="+(this._dpref?this._dpref:(a-g)),this._data_type)}}a=g;break}if(!m.parentNode||!m.parentNode.tagName){this._insertRowAt(m,g);if(m._attrs.selected||m._attrs.select){this.selectRow(m,m._attrs.call?true:false,true);m._attrs.selected=m._attrs.select=null}}if(this._ads_count&&g-h==this._ads_count){var l=this;this._context_parsing=this._context_parsing||this._parsing;return this._contextCallTimer=window.setTimeout(function(){l._contextCallTimer=null;l.render_dataset(g,a);if(!l._contextCallTimer){if(l._context_parsing){l.callEvent("onXLE",[])}else{l._fixAlterCss()}l.callEvent("onDistributedEnd",[]);l._context_parsing=false}},this._ads_time)}}if(this._ads_count&&g==a){this.callEvent("onDistributedEnd",[])}if(this._srnd&&!this._fillers){var c=this.rowsBuffer.length-a;this._fillers=[];if(this._fake){this._fake._fillers=[]}while(c>0){var o=(_isIE||window._FFrv)?Math.min(c,50000):c;var n=this._add_filler(a,o);if(n){this._fillers.push(n)}c-=o;a+=o}}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 g=this._prepareRow(a.idd);this.rowsBuffer[c]=g;this.rowsAr[a.idd]=g;a._parser.call(this,g,a.data);this._postRowProcessing(g);return g}return this.rowsBuffer[c]},_get_cell_value:function(c,a,g){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)[g?g:"getValue"]()},sortRows:function(g,m,c){this.editStop();c=(c||"asc").toLowerCase();m=(m||this.fldSort[g]);g=g||0;if(this.isTreeGrid()){this.sortTreeRows(g,m,c)}else{var a={};var l=this.cellType[g];var n="getValue";if(l=="link"){n="getContent"}if(l=="dhxCalendar"||l=="dhxCalendarA"){n="getDate"}for(var h=0;h<this.rowsBuffer.length;h++){a[this.rowsBuffer[h].idd]=this._get_cell_value(this.rowsBuffer[h],g,n)}this._sortRows(g,m,c,a)}this.callEvent("onAfterSorting",[g,m,c])},_sortCore:function(g,m,c,a,l){var h="sort";if(this._sst){l.stablesort=this.rowsCol.stablesort;h="stablesort"}if(m.length>4){m=window[m]}if(m=="cus"){var n=this._customSorts[g];l[h](function(q,o){return n(a[q.idd],a[o.idd],c,q.idd,o.idd)})}else{if(typeof(m)=="function"){l[h](function(q,o){return m(a[q.idd],a[o.idd],c,q.idd,o.idd)})}else{if(m=="str"){l[h](function(q,o){if(c=="asc"){return a[q.idd]>a[o.idd]?1:(a[q.idd]<a[o.idd]?-1:0)}else{return a[q.idd]<a[o.idd]?1:(a[q.idd]>a[o.idd]?-1:0)}})}else{if(m=="int"){l[h](function(r,q){var o=parseFloat(a[r.idd]);o=isNaN(o)?-99999999999999:o;var s=parseFloat(a[q.idd]);s=isNaN(s)?-99999999999999:s;if(c=="asc"){return o-s}else{return s-o}})}else{if(m=="date"){l[h](function(r,q){var o=Date.parse(a[r.idd])||(Date.parse("01/01/1900"));var s=Date.parse(a[q.idd])||(Date.parse("01/01/1900"));if(c=="asc"){return o-s}else{return s-o}})}}}}}},_sortRows:function(g,h,c,a){this._sortCore(g,h,c,a,this.rowsBuffer);this._reset_view();this.callEvent("onGridReconstructed",[])},_reset_view:function(g){if(!this.obj.rows[0]){return}if(this._lahRw){this._unsetRowHover(0,true)}this.callEvent("onResetView",[]);var a=this.obj.rows[0].parentNode;var h=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(h);this.rowsCol=dhtmlxArray();if(this._sst){this.enableStableSorting(true)}this._fillers=this.undefined;if(!g){if(_isIE&&this._srnd){this.render_dataset()}else{this.render_dataset()}}},deleteRow:function(c,h){if(!h){h=this.getRowById(c)}if(!h){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(h)}else{if(h.parentNode){h.parentNode.removeChild(h)}var m=this.rowsCol._dhx_find(h);if(m!=-1){this.rowsCol._dhx_removeAt(m)}for(var g=0;g<this.rowsBuffer.length;g++){if(this.rowsBuffer[g]&&this.rowsBuffer[g].idd==c){this.rowsBuffer._dhx_removeAt(g);m=g;break}}}this.rowsAr[c]=null;for(var g=0;g<this.selectedRows.length;g++){if(this.selectedRows[g].idd==c){this.selectedRows._dhx_removeAt(g)}}if(this._srnd){for(var g=0;g<this._fillers.length;g++){var l=this._fillers[g];if(!l){continue}if(l[0]>=m){this._update_fillers(g,0,-1)}else{if(l[0]+l[1]>m){this._update_fillers(g,-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(m,n,c){if(c==-1||typeof c=="undefined"){c=this.rowsBuffer.length}if(typeof n=="string"){n=n.split(this.delim)}var o=this._prepareRow(m);o._attrs={};for(var g=0;g<o.childNodes.length;g++){o.childNodes[g]._attrs={}}this.rowsAr[o.idd]=o;if(this._h2){this._h2.get[o.idd].buff=o}this._fillRow(o,n);this._postRowProcessing(o);if(this._skipInsert){this._skipInsert=false;return this.rowsAr[o.idd]=o}if(this.pagingOn){this.rowsBuffer._dhx_insertAt(c,o);this.rowsAr[o.idd]=o;return o}if(this._fillers){this.rowsCol._dhx_insertAt(c,null);this.rowsBuffer._dhx_insertAt(c,o);if(this._fake){this._fake.rowsCol._dhx_insertAt(c,null)}this.rowsAr[o.idd]=o;var q=false;for(var h=0;h<this._fillers.length;h++){var l=this._fillers[h];if(l&&l[0]<=c&&(l[0]+l[1])>=c){l[1]=l[1]+1;var a=l[2].firstChild.style.height=parseInt(l[2].firstChild.style.height)+this._srdh+"px";q=true;if(this._fake){this._fake._fillers[h][1]++;this._fake._fillers[h][2].firstChild.style.height=a}}if(l&&l[0]>c){l[0]=l[0]+1;if(this._fake){this._fake._fillers[h][0]++}}}if(!q){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 o}this.rowsBuffer._dhx_insertAt(c,o);return this._insertRowAt(o,c)},addRow:function(a,h,g){var c=this._addRow(a,h,g);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._ahgr){this.setSizes()}this.callEvent("onGridReconstructed",[]);return c},_insertRowAt:function(g,h,c){this.rowsAr[g.idd]=g;if(this._skipInsert){this._skipInsert=false;return g}if((h<0)||((!h)&&(parseInt(h)!==0))){h=this.rowsCol.length}else{if(h>this.rowsCol.length){h=this.rowsCol.length}}if(this._cssEven){var a=g.className.replace(this._cssUnEven,"");if((this._cssSP?this.getLevel(g.idd):h)%2==1){g.className=a+" "+this._cssUnEven+(this._cssSU?(" "+this._cssUnEven+"_"+this.getLevel(g.idd)):"")}else{g.className=a+" "+this._cssEven+(this._cssSU?(" "+this._cssEven+"_"+this.getLevel(g.idd)):"")}}if(!c){if((h==(this.obj.rows.length-1))||(!this.rowsCol[h])){if(_isKHTML){this.obj.appendChild(g)}else{this.obj.firstChild.appendChild(g)}}else{this.rowsCol[h].parentNode.insertBefore(g,this.rowsCol[h])}}this.rowsCol._dhx_insertAt(h,g);this.callEvent("onRowInserted",[g,h]);return g},getRowById:function(g){var c=this.rowsAr[g];if(c){if(c.tagName!="TR"){for(var a=0;a<this.rowsBuffer.length;a++){if(this.rowsBuffer[a]&&this.rowsBuffer[a].idd==g){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(h,g){if(arguments.length==0){return this.cells4(this.cell)}else{var l=this.getRowById(h)}var a=(l._childIndexes?l.childNodes[l._childIndexes[g]]:l.childNodes[g]);if(!a&&l._childIndexes){a=l.firstChild||{}}return this.cells4(a)},cellByIndex:function(c,a){return this.cells2(c,a)},cells2:function(h,g){var l=this.render_row(h);var a=(l._childIndexes?l.childNodes[l._childIndexes[g]]:l.childNodes[g]);if(!a&&l._childIndexes){a=l.firstChild||{}}return this.cells4(a)},cells3:function(g,c){var a=(g._childIndexes?g.childNodes[g._childIndexes[c]]:g.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,g){var g=g||(a._cellType||this.cellType[a._cellIndex]);if(!this._ecache[g]){if(!window["eXcell_"+g]){var c=eXcell_ro}else{var c=window["eXcell_"+g]}this._ecache[g]=new c(a)}this._ecache[g].cell=a;return this._ecache[g]},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=convertStringToBoolean(a)}else{this.smartTabOrder=true}},setExternalTabOrder:function(l,a){var c=this;this.tabStart=(typeof(l)=="object")?l:document.getElementById(l);var g=this.tabStart.onkeydown;this.tabStart.onkeydown=function(n){if(g){g.call(this,n)}var m=(n||window.event);if(m.keyCode==9&&!m.shiftKey){m.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 h=this.tabEnd.onkeydown;this.tabEnd.onkeydown=this.tabEnd.onkeypress=function(n){if(h){h.call(this,n)}var m=(n||window.event);if(m.keyCode==9&&m.shiftKey){m.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(){var a=this._pgn_skin;this._pgn_skin=null;this.clearAll();this._pgn_skin=a;this.load.apply(this,arguments)},getStateOfView:function(){if(this.pagingOn){var a=(this.currentPage-1)*this.rowsBufferOutSize;return[this.currentPage,a,Math.min(a+this.rowsBufferOutSize,this.rowsBuffer.length),this.rowsBuffer.length]}return[Math.floor(this.objBox.scrollTop/this._srdh),Math.ceil(parseInt(this.objBox.offsetHeight)/this._srdh),this.rowsBuffer.length]}};(function(){function h(n,o){this[n]=o}function m(n,o){this[n].call(this,o)}function g(n,o){this[n].call(this,o.join(this.delim))}function a(n,r){for(var q=0;q<r.length;q++){if(typeof r[q]=="object"){var s=this.getCombo(q);for(var o in r[q]){s.put(o,r[q][o])}}}}function l(n,w,r){var y=1;var v=[];function x(C,A,D){if(!v[A]){v[A]=[]}if(typeof D=="object"){D.toString=function(){return this.text}}v[A][C]=D}for(var s=0;s<w.length;s++){if(typeof(w[s])=="object"&&w[s].length){for(var q=0;q<w[s].length;q++){x(s,q,w[s][q])}}else{x(s,0,w[s])}}for(var s=0;s<v.length;s++){for(var q=0;q<v[0].length;q++){var u=v[s][q];v[s][q]=(u||"").toString()||" ";if(u&&u.colspan){for(var o=1;o<u.colspan;o++){x(q+o,s,"#cspan")}}if(u&&u.rowspan){for(var o=1;o<u.rowspan;o++){x(q,s+o,"#rspan")}}}}this.setHeader(v[0]);for(var s=1;s<v.length;s++){this.attachHeader(v[s])}}var c=[{name:"label",def:" ",operation:"setHeader",type:l},{name:"id",def:"",operation:"columnIds",type:h},{name:"width",def:"*",operation:"setInitWidths",type:g},{name:"align",def:"left",operation:"cellAlign",type:h},{name:"valign",def:"middle",operation:"cellVAlign",type:h},{name:"sort",def:"na",operation:"fldSort",type:h},{name:"type",def:"ro",operation:"setColTypes",type:g},{name:"options",def:"",operation:"",type:a}];dhtmlx.extend_api("dhtmlXGridObject",{_init:function(n){return[n.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(s){for(var n=0;n<c.length;n++){var r=[];for(var o=0;o<s.length;o++){r[o]=s[o][c[n].name]||c[n].def}var q=c[n].type||m;q.call(this,c[n].operation,r,s)}this.init()},rows:function(n){},headers:function(o){for(var n=0;n<o.length;n++){this.attachHeader(o[n])}}})})();dhtmlXGridObject.prototype._dp_init=function(a){a.attachEvent("insertCallback",function(c,h){if(this.obj._h2){this.obj.addRow(h,g,null,parent)}else{this.obj.addRow(h,[],0)}var g=this.obj.getRowById(h);if(g){this.obj._process_xml_row(g,c.firstChild);this.obj._postRowProcessing(g)}});a.attachEvent("updateCallback",function(c,h){var g=this.obj.getRowById(h);if(g){this.obj._process_xml_row(g,c.firstChild);this.obj._postRowProcessing(g)}});a.attachEvent("deleteCallback",function(c,g){this.obj.setUserData(g,this.action_param,"true_deleted");this.obj.deleteRow(g)});a._methods=["setRowTextStyle","setCellTextStyle","changeRowId","deleteRow"];this.attachEvent("onEditCell",function(h,l,g){if(a._columns&&!a._columns[g]){return true}var c=this.cells(l,g);if(h==1){if(c.isCheckbox()){a.setUpdated(l,true)}}else{if(h==2){if(c.wasChanged()){a.setUpdated(l,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(h,c){var g=a.findRow(h);if(g<a.updatedRows.length){a.updatedRows[g]=c}});this.attachEvent("onSelectStateChanged",function(c){if(a.updateMode=="row"){a.sendData()}return true});this.attachEvent("onEnter",function(g,c){if(a.updateMode=="row"){a.sendData()}return true});this.attachEvent("onBeforeRowDeleted",function(c){if(!this.rowsAr[c]){return true}if(this.dragContext&&a.dnd){window.setTimeout(function(){a.setUpdated(c,true)},1);return true}var g=a.getState(c);if(this._h2){this._h2.forEachChild(c,function(h){a.setUpdated(h.id,false);a.markRow(h.id,true,"deleted")},this)}if(g=="inserted"){a.set_invalid(c,false);a.setUpdated(c,false);return true}if(g=="deleted"){return false}if(g=="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(h,u){var n=[];n.gr_id=h;if(this.obj.isTreeGrid()){n.gr_pid=this.obj.getParentId(h)}var g=this.obj.getRowById(h);for(var o=0;o<this.obj._cCount;o++){if(this.obj._c_order){var q=this.obj._c_order[o]}else{var q=o}var s=this.obj.cells(g.idd,o);if(this._changed&&!s.wasChanged()){continue}if(this._endnm){n[this.obj.getColumnId(o)]=s.getValue()}else{n["c"+q]=s.getValue()}}var l=this.obj.UserData[h];if(l){for(var m=0;m<l.keys.length;m++){if(l.keys[m]&&l.keys[m].indexOf("__")!=0){n[l.keys[m]]=l.values[m]}}}var l=this.obj.UserData.gridglobaluserdata;if(l){for(var m=0;m<l.keys.length;m++){n[l.keys[m]]=l.values[m]}}return n};a._clearUpdateFlag=function(g){var h=this.obj.getRowById(g);if(h){for(var c=0;c<this.obj._cCount;c++){this.obj.cells(g,c).cell.wasChanged=false}}};a.checkBeforeUpdate=function(m){var l=true;var c=[];for(var h=0;h<this.obj._cCount;h++){if(this.mandatoryFields[h]){var g=this.mandatoryFields[h].call(this.obj,this.obj.cells(m,h).getValue(),m,h);if(typeof g=="string"){this.messages.push(g);l=false}else{l&=g;c[h]=!g}}}if(!l){this.set_invalid(m,"invalid",c);this.setUpdated(m,false)}return l}};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.firstChild)&&(this.cell.firstChild.tagName=="TEXTAREA")){return this.cell.firstChild.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(){if(this.cell.bgColor){return this.cell.bgColor}else{return"#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=" ";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(h){var a=h;var g=0;var c=0;while(a.tagName!="BODY"){g+=a.offsetLeft;c+=a.offsetTop;a=a.offsetParent}return new Array(g,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)&&(_isKHTML||_isMacOS||_isFF))?"INPUT":"TEXTAREA";this.val=this.getValue();this.obj=document.createElement(this.cell.atag);this.obj.setAttribute("autocomplete","off");this.obj.style.height=(this.cell.offsetHeight-(_isIE?4:6))+"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(" ",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(l){(l||event).cancelBubble=true};var g=this.grid.getPosition(this.cell);this.obj.value=this.val;this.obj.style.display="";this.obj.style.textAlign=this.cell.style.textAlign;if(_isFF){var c=document.createElement("DIV");c.appendChild(this.obj);c.style.overflow="auto";c.className="dhx_textarea";this.obj.style.margin="0px 0px 0px 0px";this.obj.style.border="0px";this.obj=c}document.body.appendChild(this.obj);if(_isOpera){this.obj.onkeypress=function(l){if(l.keyCode==9){return false}}}this.obj.onkeydown=function(m){var l=(m||event);if(l.keyCode==9){globalActiveDHTMLGridObject.entBox.focus();globalActiveDHTMLGridObject.doKey({keyCode:l.keyCode,shiftKey:l.shiftKey,srcElement:"0"});return false}};this.obj.style.left=g[0]+"px";this.obj.style.top=g[1]+this.cell.offsetHeight+"px";if(this.cell.offsetWidth<200){var h=200}else{var h=this.cell.offsetWidth}this.obj.style.width=h+(_isFF?18:16)+"px";if(_isFF){this.obj.firstChild.style.width=parseInt(this.obj.style.width)+"px";this.obj.firstChild.style.height=this.obj.offsetHeight-3+"px"}if(_isIE){this.obj.select();this.obj.value=this.obj.value}if(_isFF){this.obj.firstChild.focus()}else{this.obj.focus()}};this.detach=function(){var c="";if(_isFF){c=this.obj.firstChild.value}else{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){if(_isFF){return this.obj.firstChild.value}else{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=" ";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 h=this.grid.getPosition(this.cell);this.obj=document.createElement("TEXTAREA");this.obj.className="dhx_combo_edit";this.obj.style.height=(this.cell.offsetHeight-4)+"px";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.style.textAlign;this.obj.onclick=function(q){(q||event).cancelBubble=true};this.obj.onmousedown=function(q){(q||event).cancelBubble=true};this.obj.value=this.text;this.obj.onselectstart=function(q){if(!q){q=event}q.cancelBubble=true;return true};var m=this;this.obj.onkeyup=function(s){var r=(s||event).keyCode;if(r==38||r==40||r==9){return}var u=this.readonly?String.fromCharCode(r):this.value;var v=m.list.options;for(var q=0;q<v.length;q++){if(v[q].text.indexOf(u)==0){return v[q].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=h[0]+"px";this.list.style.top=h[1]+this.cell.offsetHeight+"px";this.list.onclick=function(s){var r=s||window.event;var q=r.target||r.srcElement;if(q.tagName=="OPTION"){q=q.parentNode}m.editable=false;m.grid.editStop();r.cancelBubble=true};var c=this.combo.getKeys();var l=false;var o=0;for(var g=0;g<c.length;g++){var n=this.combo.get(c[g]);this.list.options[this.list.options.length]=new Option(n,c[g]);if(c[g]==this.val){o=this.list.options.length-1;l=true}}if(l==false){this.list.options[this.list.options.length]=new Option(this.text,this.val===null?"":this.val);o=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[o].selected=true;if((!_isFF)||(this.editable)){this.obj.focus();this.obj.focus()}if(!this.editable){this.obj.style.visibility="hidden";this.list.focus();this.list.onkeydown=function(q){q=q||window.event;m.grid.setActive(true);if(q.keyCode<30){return m.grid.doKey({target:m.cell,keyCode:q.keyCode,shiftKey:q.shiftKey,ctrlKey:q.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 g=(this.cell._combo||this.grid.getCombo(this.cell._cellIndex));var h=g.values._dhx_find(this.obj.value);if(h!=-1){this.setValue(g.keys[h])}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(h){if(typeof(h)=="object"){var g=this.grid.xmlLoader.doXPath("./option",h);if(g.length){this.cell._combo=new dhtmlXGridComboObject()}for(var c=0;c<g.length;c++){this.cell._combo.put(g[c].getAttribute("value"),g[c].firstChild?g[c].firstChild.data:"")}h=h.firstChild.data}if((h||"").toString()._dhx_trim()==""){h=null}this.cell.combo_value=h;if(h!==null){var a=(this.cell._combo||this.grid.getCombo(this.cell._cellIndex)).get(h);this.setCValue(a===null?h:a,h)}else{this.setCValue(" ",h)}};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(g){if(typeof(g)=="object"){var c=this.grid.xmlLoader.doXPath("./option",g);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:"")}g=g.firstChild.data}if((g||"").toString()._dhx_trim()==""){g=null}if(g!==null){this.setCTxtValue((this.cell._combo||this.grid.getCombo(this.cell._cellIndex)).get(g)||g,g)}else{this.setCTxtValue(" ",g)}this.cell.combo_value=g};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 g=this.grid.getPosition(this.cell);this.colorPanel(4,this.obj);document.body.appendChild(this.obj);this.obj.style.left=g[0]+"px";this.obj.style.zIndex=1000;this.obj.style.top=g[1]+this.cell.offsetHeight+"px"};this.toolDNum=function(g){if(g.length==1){g="0"+g}return g};this.colorPanel=function(s,w){var o=document.createElement("TABLE");w.appendChild(o);o.cellSpacing=0;o.editor_obj=this;o.style.cursor="default";o.onclick=function(y){var x=y||window.event;var n=x.target||x.srcElement;var r=n.parentNode.parentNode.parentNode.editor_obj;r.setValue(n._bg);r.grid.editStop()};var l=256/s;for(var m=0;m<=(256/l);m++){var g=o.insertRow(m);for(var q=0;q<=(256/l);q++){for(var h=0;h<=(256/l);h++){R=new Number(l*m)-(m==0?0:1);G=new Number(l*q)-(q==0?0:1);B=new Number(l*h)-(h==0?0:1);var v=this.toolDNum(R.toString(16))+""+this.toolDNum(G.toString(16))+""+this.toolDNum(B.toString(16));var u=g.insertCell(q);u.width="10px";u.innerHTML=" ";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?this.cell.offsetHeight-2:16))+";background-color:"+(a||"")+";border:0px;'> </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 g=this.cell.firstChild.firstChild.src+(this.cell.titFl!=null?"^"+this.cell._brval:"");g+="^"+this.cell.lnk;if(this.cell.trg){g+="^"+this.cell.trg}return g}}};this.isDisabled=function(){return true}}eXcell_img.prototype=new eXcell;eXcell_img.prototype.getTitle=function(){return this.cell._brval};eXcell_img.prototype.setValue=function(g){var c=g;if((g||"").indexOf("^")!=-1){var a=g.split("^");g=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"}this.setCValue("<img src='"+this.grid.iconURL+(g||"")._dhx_trim()+"' border='0'>",g);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(g){if(!g||isNaN(Number(g))){if(g!==""){g=0}}if(g>0){var c="green";var a="dyn_up.gif"}else{if(g==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+";'>"+g+"</span></div>",g)};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.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(" ");return this.cell._clearCell=true}}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,g){for(var a=0;a<this.keys.length;a++){if(this.keys[a]==c){this.values[a]=g;return true}}this.values[this.values.length]=g;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;dhtmlXGridObject.prototype.enableDragAndDrop=function(a){if(a=="temporary_disabled"){this.dADTempOff=false;a=true}else{this.dADTempOff=true}this.dragAndDropOff=convertStringToBoolean(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=convertStringToBoolean(a)};dhtmlXGridObject.prototype._checkParent=function(h,c){var g=this._h2.get[h.idd].parent;if(!g.parent){return}for(var a=0;a<c.length;a++){if(c[a]==g.id){return true}}return this._checkParent(this.rowsAr[g.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 o=this.callEvent("onBeforeDrag",[g.parentNode.idd,g._cellIndex,h]);if(!o){return null}var l=new Array();l=this.getSelectedId();l=(((l)&&(l!=""))?l.split(this.delim):[]);var m=false;for(var c=0;c<l.length;c++){if(l[c]==g.parentNode.idd){m=true}}if(!m){this.selectRow(this.rowsAr[g.parentNode.idd],false,h.ctrlKey,false);if(!h.ctrlKey){l=[]}l[this.selMultiRows?l.length:0]=g.parentNode.idd}if(this.isTreeGrid()){for(var c=l.length-1;c>=0;c--){if(this._checkParent(this.rowsAr[l[c]],l)){l.splice(c,1)}}}var q=this;if(l.length&&this._dndorder){l.sort(function(s,r){return(q.rowsAr[s].rowIndex>q.rowsAr[r].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<l.length;c++){if(this.rowsAr[l[c]]){this._dragged[this._dragged.length]=this.rowsAr[l[c]];this.rowsAr[l[c]].treeNod=this}}g.parentObject.parentNode=g.parentNode;var n=document.createElement("div");n.innerHTML=(o!==true?o:this.rowToDragElement(g.parentNode.idd));n.style.position="absolute";n.className="dragSpanDiv";return n};dhtmlXGridObject.prototype._createSdrgc=function(){this._sdrgc=document.createElement("DIV");this._sdrgc.innerHTML=" ";this._sdrgc.className="gridDragLine";this.objBox.appendChild(this._sdrgc)};function dragContext(w,v,u,s,r,q,n,o,m,g){this.source=w||"grid";this.target=v||"grid";this.mode=u||"move";this.dropmode=s||"child";this.sid=r||0;this.tid=q;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(g,c){this[g]=c;return this};dragContext.prototype.uid=function(g,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 g=this.tobj._h2.get[c.nextSibling.idd].parent.id;if(g==this.tid){return this.tid}if(g!=a){return g}}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(s,l,r,u){if(this._realfake){return this._fake._drag()}var q=(this.lastLanding);if(this._autoOpenTimer){window.clearTimeout(this._autoOpenTimer)}var h=r.parentNode;var g=s.parentObject;if(!h.idd){h.grid=this;this.dadmodefix=0}var o=new dragContext(0,0,0,((h.grid.dadmode==1||h.grid.dadmodec)?"sibling":"child"));if(g&&g.childNodes){o.set("source","tree").set("sobj",g.treeNod).set("sid",o.sobj._dragged)}else{if(!g){return true}if(g.treeNod.isTreeGrid&&g.treeNod.isTreeGrid()){o.set("source","treeGrid")}o.set("sobj",g.treeNod).set("sid",o.sobj._dragged)}if(h.grid.isTreeGrid()){o.set("target","treeGrid")}else{o.set("dropmode","sibling")}o.set("tobj",h.grid).set("tid",h.idd);if(((o.tobj.dadmode==2)&&(o.tobj.dadmodec==1))&&(o.tobj.dadmodefix<0)){if(o.tobj.obj.rows[1].idd!=o.tid){o.tid=h.previousSibling.idd}else{o.tid=0}}var a=this.getFirstParentOfType(u,"TD");if(a){o.set("tExtra",a._cellIndex)}if(a){o.set("sExtra",o.sobj._dndExtra)}if(o.sobj.dpcpy){o.set("mode","copy")}if(o.tobj._realfake){o.tobj=o.tobj._fake}if(o.sobj._realfake){o.sobj=o.sobj._fake}o.tobj._clearMove();if(g&&g.treeNod&&g.treeNod._nonTrivialRow){g.treeNod._nonTrivialRow(this,o.tid,o.dropmode,g)}else{o.tobj.dragContext=o;if(!o.tobj.callEvent("onDrag",[o.slist(),o.tid,o.sobj,o.tobj,o.sExtra,o.tExtra])){return o.tobj.dragContext=null}var v=new Array();if(typeof(o.sid)=="object"){var n=o.copy();for(var m=0;m<o.sid.length;m++){if(!n.set("alfa",(!m)).set("sid",o.sid[m][(o.source=="tree"?"id":"idd")]).valid()){continue}n.tobj._dragRoutine(n);if(n.target=="treeGrid"&&n.dropmode=="child"){n.tobj.openItem(n.tid)}v[v.length]=n.nid;n.set("dropmode","sibling").set("tid",n.nid)}n.close()}else{o.tobj._dragRoutine(o)}if(o.tobj.laterLink){o.tobj.laterLink()}o.tobj.callEvent("onDrop",[o.slist(),o.tid,v.join(","),o.sobj,o.tobj,o.sExtra,o.tExtra])}o.tobj.dragContext=null;o.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 q=s.sobj.rowsAr[s.sid];var r=s.sobj.rowsCol._dhx_find(q);s.sobj.rowsCol._dhx_removeAt(s.sobj.rowsCol._dhx_find(q));s.sobj.rowsBuffer._dhx_removeAt(s.sobj.rowsBuffer._dhx_find(q));s.sobj.rowsBuffer._dhx_insertAt(s.ind(),q);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(q,s.ind());s.nid=s.sid;s.sobj.callEvent("onGridReconstructed",[]);return}var o;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);o=s.uid().tobj.addRowBefore(s.nid,s.data(),this._h2.get[s.tid].childs[0].id,s.img(),s.childs())}else{o=s.uid().tobj.addRowAfter(s.nid,s.data(),s.tid,s.img(),s.childs())}}else{o=s.uid().tobj.addRow(s.nid,s.data(),s.ind(),s.pid(),s.img(),s.childs())}o._attrs=s.attrs();if(s.source=="tree"){this.callEvent("onRowAdded",[s.nid]);var a=s.sobj._globalIdStorageFind(s.sid);if(a.childsCount){var n=s.copy().set("tid",s.nid).set("dropmode",s.target=="grid"?"sibling":"child");for(var h=0;h<a.childsCount;h++){s.tobj._dragRoutine(n.set("sid",a.childNodes[h].id));if(s.mode=="move"){h--}}n.close()}}else{s.tobj._copyUserData(s);this.callEvent("onRowAdded",[s.nid]);if((s.source=="treeGrid")){if(s.sobj==s.tobj){o._xml=s.sobj.rowsAr[s.sid]._xml}var m=s.sobj._h2.get[s.sid];if((m)&&(m.childs.length)){var n=s.copy().set("tid",s.nid);if(s.target=="grid"){n.set("dropmode","sibling")}else{n.tobj.openItem(s.tid);n.set("dropmode","child")}var g=m.childs.length;for(var h=0;h<g;h++){s.sobj.render_row_tree(null,m.childs[h].id);s.tobj._dragRoutine(n.set("sid",m.childs[h].id));if(g!=m.childs.length){h--;g=m.childs.length}}n.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(h,a,g){var l=new Array();for(var c=0;c<a.hdr.rows[0].cells.length;c++){l[c]=a.cells(h,c).getValue()}return l};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(l,g,c,m){if(!this.dADTempOff){return 0}var a=this.isTreeGrid();var h=g.parentNode.idd?g.parentNode:g.parentObject;if(this._drag_validate){if(l.parentNode==g.parentNode){return 0}if((a)&&(this==h.grid)&&((this.checkParentLine(this._h2.get[l.parentNode.idd],g.parentNode.idd)))){return 0}}if(!this.callEvent("onDragIn",[h.idd||h.id,l.parentNode.idd,h.grid||h.treeNod,(l.grid||l.parentNode.grid)])){return this._setMove(l,c,m,true)}this._setMove(l,c,m);if((a)&&(l.parentNode.expand!="")){this._autoOpenTimer=window.setTimeout(new callerFunction(this._autoOpenItem,this),1000);this._autoOpenId=l.parentNode.idd}else{if(this._autoOpenTimer){window.clearTimeout(this._autoOpenTimer)}}return l};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(m,c,o,l){if(!m.parentNode.idd){return}var g=getAbsoluteTop(m);var a=getAbsoluteTop(this.objBox);if((g-a)>(parseInt(this.objBox.offsetHeight)-50)){this.objBox.scrollTop=parseInt(this.objBox.scrollTop)+20}if((g-a+parseInt(this.objBox.scrollTop))<(parseInt(this.objBox.scrollTop)+30)){this.objBox.scrollTop=parseInt(this.objBox.scrollTop)-20}if(l){return 0}if(this.dadmode==2){var n=o-g+(document.body.scrollTop||document.documentElement.scrollTop)-2-m.offsetHeight/2;if((Math.abs(n)-m.offsetHeight/6)>0){this.dadmodec=1;if(n<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=g-a+parseInt(this.objBox.scrollTop)+((this.dadmodefix>=0)?m.offsetHeight:0)+"px"}else{this._llSelD=m;if(m.parentNode.tagName=="TR"){for(var h=0;h<m.parentNode.childNodes.length;h++){var n=m.parentNode.childNodes[h];n._bgCol=n.style.backgroundColor;n.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(h){if(!h.tobj.UserData[h.nid]||h.tobj!=h.sobj){h.tobj.UserData[h.nid]=new Hashtable()}else{return}var g=h.sobj.UserData[h.sid];var a=h.tobj.UserData[h.nid];if(g){a.keys=a.keys.concat(g.keys);a.values=a.values.concat(g.values)}};dhtmlXGridObject.prototype.moveRow=function(g,h,a,c){switch(h){case"row_sibling":this.moveRowTo(g,a,"move","sibling",this,c);break;case"up":this.moveRowUp(g);break;case"down":this.moveRowDown(g);break}};dhtmlXGridObject.prototype._nonTrivialNode=function(s,r,n,o,g){if((s.callEvent)&&(!g)){if(!s.callEvent("onDrag",[o.idd,r.id,(n?n.id:null),this,s])){return false}}var q=o.idd;var a=q;while(s._idpull[a]){a+=(new Date()).getMilliseconds().toString()}var l=(this.isTreeGrid()?this.getItemImage(q):"");if(n){for(h=0;h<r.childsCount;h++){if(r.childNodes[h]==n){break}}if(h!=0){n=r.childNodes[h-1]}else{st="TOP";n=""}}var c=s._attachChildNode(r,a,this.gridToTreeElement(s,a,q),"",l,l,l,"","",n);if(this._h2){var m=this._h2.get[q];if(m.childs.length){for(var h=0;h<m.childs.length;h++){this._nonTrivialNode(s,c,0,this.rowsAr[m.childs[h].id],1);if(!this.dpcpy){h--}}}}if(!this.dpcpy){this.deleteRow(q)}if((s.callEvent)&&(!g)){s.callEvent("onDrop",[a,r.id,(n?n.id:null),this,s])}};dhtmlXGridObject.prototype.gridToTreeElement=function(c,g,a){return this.cells(a,0).getValue()};dhtmlXGridObject.prototype.treeToGridElement=function(h,l,a){var c=new Array();var m=this.cellType._dhx_find("tree");if(m==-1){m=0}for(var g=0;g<this.getColumnCount();g++){c[c.length]=(g!=m)?(h.getUserData(l,this.getColumnId(g))||""):h.getItemText(l)}return c};dhtmlXGridObject.prototype.moveRowTo=function(h,g,n,m,a,l){var o=new dragContext((a||this).isTreeGrid()?"treeGrid":"grid",(l||this).isTreeGrid()?"treeGrid":"grid",n,m||"sibling",h,g,a||this,l||this);o.tobj._dragRoutine(o);o.close();return o.nid};dhtmlXGridObject.prototype.enableMercyDrag=function(a){this.dpcpy=convertStringToBoolean(a)};dhtmlXGridObject.prototype.toPDF=function(h,r,w,u,o,C){var l={row:this.getSelectedRowId(),col:this.getSelectedCellIndex()};if(l.row===null||l.col===-1){l=false}else{var c=this.cells(l.row,l.col).cell;c.parentNode.className=c.parentNode.className.replace(" rowselected","");c.className=c.className.replace(" cellselected","");l.el=c}r=r||"color";var x=r=="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(w){L+=" header='"+w+"'"}if(u){L+=" footer='"+u+"'"}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+=q();return L}function g(){var D=[];if(o){for(var E=0;E<o.length;E++){D.push(v(a.getRowIndex(o[E])))}}else{for(var E=0;E<a.getRowsNum();E++){D.push(v(E))}}return D.join("\n")}function q(){var J=["<foot>"];if(!a.ftr){return""}for(var I=1;I<a.ftr.rows.length;I++){J.push("<columns>");var M=a.ftr.rows[I];for(var H=0;H<a._cCount;H++){if(a._srClmn&&!a._srClmn[H]){continue}var E=(a._fake&&H<a._fake.hdrLabels.length);if(a._hrrar[H]&&!E){continue}var K=E?a._fake.ftr.rows[I]:M;for(var F=0;F<K.cells.length;F++){var D="";var L="";if(K.cells[F]._cellIndexS==H){D=_isIE?K.cells[F].innerText:K.cells[F].textContent;D=D.replace(/[ \n\r\t\xA0]+/," ");if(K.cells[F].colSpan&&K.cells[F].colSpan!=1){L=" colspan='"+K.cells[F].colSpan+"' "}if(K.cells[F].rowSpan&&K.cells[F].rowSpan!=1){L=" rowspan='"+K.cells[F].rowSpan+"' "}break}}J.push("<column"+L+"><![CDATA["+D+"]]></column>")}J.push("</columns>")}J.push("</foot>");return J.join("\n")}function n(E,D){return(window.getComputedStyle?(window.getComputedStyle(E,null)[D]):(E.currentStyle?E.currentStyle[D]:null))||""}function v(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=n(P.cell,"color");var O=n(P.cell,"backgroundColor");var N=n(P.cell,"font-weight")||n(P.cell,"fontWeight");var K=n(P.cell,"font-style")||n(P.cell,"fontStyle");var M=n(P.cell,"text-align")||n(P.cell,"textAlign");var F=n(P.cell,"font-family")||n(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 s(){var D="</rows>";return D}var y=document.createElement("div");y.style.display="none";document.body.appendChild(y);var m="form_"+a.uid();y.innerHTML='<form id="'+m+'" method="post" action="'+h+'" accept-charset="utf-8" enctype="application/x-www-form-urlencoded"'+this.target+'><input type="hidden" name="grid_xml" id="grid_xml"/> </form>';document.getElementById(m).firstChild.value=encodeURIComponent(A(r).replace("\u2013","-")+g()+s());document.getElementById(m).submit();y.parentNode.removeChild(y);a=null;if(l){l.el.parentNode.className+=" rowselected";l.el.className+=" cellselected"}l=null};dhtmlXGridObject.prototype._serialiseExportConfig=function(m){function l(r){if(typeof(r)!=="string"){return r}r=r.replace(/&/g,"&");r=r.replace(/"/g,""");r=r.replace(/'/g,"'");r=r.replace(/</g,"<");r=r.replace(/>/g,">");return r}var c="<head>";for(var g=0;g<this.hdr.rows[0].cells.length;g++){if(this._srClmn&&!this._srClmn[g]){continue}if(this._hrrar[g]&&(!this._fake||g>=this._fake.hdrLabels.length)){continue}var h=this.fldSort[g];if(h=="cus"){h=this._customSorts[g].toString();h=h.replace(/function[\ ]*/,"").replace(/\([^\f]*/,"")}var q=m[1][g];var n=((q[1]&&q[1]>1)?' rowspan="'+q[1]+'" ':"")+((q[0]&&q[0]>1)?' colspan="'+q[0]+'" ':"");c+="<column "+n+" width='"+this.getColWidth(g)+"' align='"+this.cellAlign[g]+"' type='"+this.cellType[g]+"' hidden='"+((this.isColumnHidden&&this.isColumnHidden(g))?"true":"false")+"' sort='"+(h||"na")+"' color='"+(this.columnColor[g]||"")+"'"+(this.columnIds[g]?(" id='"+this.columnIds[g]+"'"):"")+">";if(this._asCDATA){c+="<![CDATA["+this.getHeaderCol(g)+"]]>"}else{c+=this.getHeaderCol(g)}var o=this.combos[g]?this.getCombo(g):null;if(o){for(var a=0;a<o.keys.length;a++){c+="<option value='"+l(o.keys[a])+"'><![CDATA["+o.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,h,n,m,c){if(!document.getElementById("ifr")){var l=document.createElement("iframe");l.style.display="none";l.setAttribute("name","dhx_export_iframe");l.setAttribute("src","");l.setAttribute("id","dhx_export_iframe");document.body.appendChild(l)}var g=' target="dhx_export_iframe"';this.toPDF(a,h,n,m,c,g)};dhtmlXGridObject.prototype.filterBy=function(g,h,c){if(this.isTreeGrid()){return this.filterTreeBy(g,h,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 l=true;this.dma(true);if(typeof(g)=="object"){for(var a=0;a<h.length;a++){this._filterA(g[a],h[a])}}else{this._filterA(g,h)}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,g){if(g==""){return}var h=true;if(typeof(g)=="function"){h=false}else{g=(g||"").toString().toLowerCase()}if(!this.rowsBuffer.length){return}for(var a=this.rowsBuffer.length-1;a>=0;a--){if(h?(this._get_cell_value(this.rowsBuffer[a],c).toString().toLowerCase().indexOf(g)==-1):(!g.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(h){var r=this.callEvent("onCollectValues",[h]);if(r!==true){return r}if(this.isTreeGrid()){return this.collectTreeValues(h)}this.dma(true);this._build_m_order();h=this._m_order?this._m_order[h]:h;var o={};var m=[];var g=this._f_rowsBuffer||this.rowsBuffer;for(var l=0;l<g.length;l++){var a=this._get_cell_value(g[l],h);if(a&&(!g[l]._childIndexes||g[l]._childIndexes[h]!=g[l]._childIndexes[h-1])){o[a]=true}}this.dma(false);var q=(this.combos[h]||(this._col_combos?this._col_combos[h]:false));for(var n in o){if(o[n]===true){if(q){if(q.get&&q.get(n)){n=q.get(n)}else{if(q.getOption&&q.getOption(n)){n=q.getOption(n).text}}}m.push(n)}}return m.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 g=[];var c=[];this._build_m_order();for(var h=0;h<this.filters.length;h++){var m=this._m_order?this._m_order[this.filters[h][1]]:this.filters[h][1];if(m>=this._cCount){continue}c.push(m);var n=this.filters[h][0].old_value=this.filters[h][0].value;if(this.filters[h][0]._filter){n=this.filters[h][0]._filter()}var l;if(typeof n!="function"&&(l=(this.combos[m]||(this._col_combos?this._col_combos[m]:false)))){if(l.values){m=l.values._dhx_find(n);n=(m==-1)?n:l.keys[m]}else{if(l.getOptionByLabel){n=(l.getOptionByLabel(n)?l.getOptionByLabel(n).value:n)}}}g.push(n)}if(!this.callEvent("onFilterStart",[c,g])){return}this.filterBy(c,g);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(l,g,c){if(!this.filters){this.filters=[]}if(typeof(l)!="object"){l=document.getElementById(l)}if(!l){return}var a=this;if(!l.style.width){l.style.width="90%"}if(l.tagName=="SELECT"){this.filters.push([l,g]);this._loadSelectOptins(l,g);l.onchange=function(){a.filterByAll()};if(_isIE){l.style.marginTop="1px"}this.attachEvent("onEditCell",function(n,m,o){this._build_m_order();if(n==2&&this.filters&&(this._m_order?(o==this._m_order[g]):(o==g))){this._loadSelectOptins(l,g)}return true})}else{if(l.tagName=="INPUT"){this.filters.push([l,g]);l.old_value=l.value="";l.onkeydown=function(){if(this._timer){window.clearTimeout(this._timer)}this._timer=window.setTimeout(function(){if(l.value!=l.old_value){a.filterByAll();l.old_value=l.value}},500)}}else{if(l.tagName=="DIV"&&l.className=="combo"){this.filters.push([l,g]);l.style.padding="0px";l.style.margin="0px";if(!window.dhx_globalImgPath){window.dhx_globalImgPath=this.imgURL}var h=new dhtmlXCombo(l,"_filter","90%");h.filterSelfA=h.filterSelf;h.filterSelf=function(){if(this.getSelectedIndex()==0){this.setComboText("")}this.filterSelfA.apply(this,arguments);this.optionsArr[0].hide(false)};h.enableFilteringMode(true);l.combo=h;l.value="";this._loadComboOptins(l,g);h.attachEvent("onChange",function(){l.value=h.getSelectedValue();if(l.value===null){l.value=""}a.filterByAll()})}}}if(l.parentNode){l.parentNode.className+=" filter"}this._filters_ready()};dhtmlXGridObject.prototype.findCell=function(m,n,h,l){var l=l||(function(q,o){return o.toString().toLowerCase().indexOf(q)!=-1});if(l===true){l=function(q,o){return o.toString().toLowerCase()==q}}var g=new Array();m=m.toString().toLowerCase();if(typeof h!="number"){h=h?1:0}if(!this.rowsBuffer.length){return g}for(var c=(n||0);c<this._cCount;c++){if(this._h2){this._h2.forEachChild(0,function(o){if(h&&g.length==h){return g}if(l(m,this._get_cell_value(o.buff,c))){g.push([o.id,c])}},this)}else{for(var a=0;a<this.rowsBuffer.length;a++){if(l(m,this._get_cell_value(this.rowsBuffer[a],c))){g.push([this.rowsBuffer[a].idd,c]);if(h&&g.length==h){return g}}}}if(typeof(n)!="undefined"){return g}}return g};dhtmlXGridObject.prototype.makeSearch=function(h,g,a){if(typeof(h)!="object"){h=document.getElementById(h)}if(!h){return}var c=this;if(h.tagName=="INPUT"){h.onkeypress=function(){if(this._timer){window.clearTimeout(this._timer)}this._timer=window.setTimeout(function(){if(h.value==""){return}var l=c.findCell(h.value,g,true,a);if(l.length){if(c._h2){c.openItem(l[0][0])}c.selectCell(c.getRowIndex(l[0][0]),(g||0))}},500)}}if(h.parentNode){h.parentNode.className+=" filter"}};dhtmlXGridObject.prototype._loadSelectOptins=function(m,o){var a=this.collectValues(o);var g=m.value;m.innerHTML="";m.options[0]=new Option("","");var n=this._filter_tr?this._filter_tr[o]:null;for(var h=0;h<a.length;h++){m.options[m.options.length]=new Option(n?n(a[h]):a[h],a[h])}m.value=g};dhtmlXGridObject.prototype.setSelectFilterLabel=function(c,a){if(!this._filter_tr){this._filter_tr=[]}this._filter_tr[c]=a};dhtmlXGridObject.prototype._loadComboOptins=function(h,n){if(!h.combo){return}var a=this.collectValues(n);h.combo.clearAll();var m=[["",""]];for(var g=0;g<a.length;g++){m.push([a[g],a[g]])}h.combo.addOption(m)};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(l,h){if(this._f_rowsBuffer){for(var g=0;g<this._f_rowsBuffer.length;g++){if(this._f_rowsBuffer[g].idd==l){return this._f_rowsBuffer[g]=h}}}});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(g){return(g.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(g,c){g.innerHTML="<select style='width:90%; font-size:8pt; font-family:Tahoma;'></select>";g.onclick=function(h){(h||event).cancelBubble=true;return false};this.makeFilter(g.firstChild,c);var a=this.combos;g.firstChild._filter=function(){var h=g.firstChild.value;if(!h){return""}if(a[c]){h=a[c].keys[a[c].values._dhx_find(h)]}h=h.toLowerCase();return function(l){return(l.toString().toLowerCase()==h)}};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(g,c,a){this._search_common(g,c);this.makeSearch(g.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 g=this.value;var l;var n="==";var h=parseFloat(g.replace("=",""));var m=null;if(g){if(g.indexOf("..")!=-1){g=g.split("..");h=parseFloat(g[0]);m=parseFloat(g[1]);return function(o){if(o>=h&&o<=m){return true}return false}}l=g.match(/>=|<=|>|</);if(l){n=l[0];h=parseFloat(g.replace(n,""))}return Function("v"," if (v "+n+" "+h+" ) return true; return false;")}return""}};dhtmlXGridObject.prototype._in_header_master_checkbox=function(h,g,l){h.innerHTML=l[0]+"<input type='checkbox' />"+l[1];var a=this;h.getElementsByTagName("input")[0].onclick=function(m){a._build_m_order();var c=a._m_order?a._m_order[g]:g;var n=this.checked?1:0;a.forEachRowA(function(q){var o=this.cells(q,c);if(o.isCheckbox()){o.setValue(n);o.cell.wasChanged=true}this.callEvent("onEditCell",[1,q,c,n]);this.callEvent("onCheckbox",[q,c,n])});(m||event).cancelBubble=true}};dhtmlXGridObject.prototype._in_header_stat_total=function(g,a,l){var h=function(){var o=0;this._build_m_order();var n=this._m_order?this._m_order[a]:a;for(var m=0;m<this.rowsBuffer.length;m++){var c=parseFloat(this._get_cell_value(this.rowsBuffer[m],n));o+=isNaN(c)?0:c}return this._maskArr[n]?this._aplNF(o,n):(Math.round(o*100)/100)};this._stat_in_header(g,h,a,l,l)};dhtmlXGridObject.prototype._in_header_stat_multi_total=function(l,h,q){var o=q[1].split(":");q[1]="";for(var g=0;g<o.length;g++){o[g]=parseInt(o[g])}var m=function(){var u=0;for(var s=0;s<this.rowsBuffer.length;s++){var r=1;for(var c=0;c<o.length;c++){r*=parseFloat(this._get_cell_value(this.rowsBuffer[s],o[c]))}u+=isNaN(r)?0:r}return this._maskArr[h]?this._aplNF(u,h):(Math.round(u*100)/100)};var a=[];for(var n=0;n<o.length;n++){a[o[n]]=true}this._stat_in_header(l,m,a,q,q)};dhtmlXGridObject.prototype._in_header_stat_max=function(g,a,l){var h=function(){this._build_m_order();var m=this._m_order?this._m_order[a]:a;var n=-999999999;if(this.getRowsNum()==0){return" "}for(var c=0;c<this.rowsBuffer.length;c++){n=Math.max(n,parseFloat(this._get_cell_value(this.rowsBuffer[c],m)))}return this._maskArr[a]?this._aplNF(n,a):n};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_min=function(g,a,l){var h=function(){this._build_m_order();var m=this._m_order?this._m_order[a]:a;var n=999999999;if(this.getRowsNum()==0){return" "}for(var c=0;c<this.rowsBuffer.length;c++){n=Math.min(n,parseFloat(this._get_cell_value(this.rowsBuffer[c],m)))}return this._maskArr[a]?this._aplNF(n,a):n};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_average=function(g,a,l){var h=function(){this._build_m_order();var n=this._m_order?this._m_order[a]:a;var q=0;var o=0;if(this.getRowsNum()==0){return" "}for(var m=0;m<this.rowsBuffer.length;m++){var c=parseFloat(this._get_cell_value(this.rowsBuffer[m],n));q+=isNaN(c)?0:c;o++}return this._maskArr[a]?this._aplNF(q/o,a):(Math.round(q/o*100)/100)};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_count=function(g,a,l){var h=function(){return this.getRowsNum()};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._stat_in_header=function(g,h,a,n){var l=this;var m=function(){this.dma(true);g.innerHTML=(n[0]?n[0]:"")+h.call(this)+(n[1]?n[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 o=0;o<this._stat_events.length;o++){for(var c=0;c<4;c++){this.detachEvent(this._stat_events[o][c])}}this._stat_events=[]}})}this._stat_events.push([this.attachEvent("onGridReconstructed",m),this.attachEvent("onXLE",m),this.attachEvent("onFilterEnd",m),this.attachEvent("onEditCell",function(c,q,o){if(c==2&&(o==a||(a&&a[o]))){m.call(this)}return true})]);g.innerHTML=""};dhtmlXGridObject.prototype.loadCSVFile=function(c,a){this.load(c,a,"csv")};dhtmlXGridObject.prototype.enableCSVAutoID=function(a){this._csvAID=convertStringToBoolean(a)};dhtmlXGridObject.prototype.enableCSVHeader=function(a){this._csvHdr=convertStringToBoolean(a)};dhtmlXGridObject.prototype.setCSVDelimiter=function(a){this.csv.cell=a};dhtmlXGridObject.prototype._csvAID=true;dhtmlXGridObject.prototype.loadCSVString=function(a){this.parse(a,"csv")};dhtmlXGridObject.prototype.serializeToCSV=function(o){this.editStop();if(this._mathSerialization){this._agetm="getMathValue"}else{if(this._strictText||o){this._agetm="getTitle"}else{this._agetm="getValue"}}var m=[];if(this._csvHdr){for(var l=1;l<this.hdr.rows.length;l++){var c=[];for(var n=0;n<this._cCount;n++){if((!this._srClmn)||(this._srClmn[n])){c.push(this.getColumnLabel(n,l-1))}}m.push(this.csvParser.str(c,this.csv.cell,this.csv.row))}}var n=0;var h=this.rowsBuffer.length;for(n;n<h;n++){var g=this._serializeRowToCVS(null,n);if(g!=""){m.push(g)}}return this.csvParser.block(m,this.csv.row)};dhtmlXGridObject.prototype._serializeRowToCVS=function(a,q,g,n){var o=new Array();if(!a){a=this.render_row(q);if(this._fake&&!this._fake.rowsAr[a.idd]){this._fake.render_row(q)}}if(!this._csvAID){o[o.length]=a.idd}g=g||0;n=n||this._cCount;var v=false;var h=g;while(a.childNodes[g]._cellIndex>h&&g){g--}for(var s=g;h<n;s++){if(!a.childNodes[s]){break}var c=a.childNodes[s]._cellIndex;if(((!this._srClmn)||(this._srClmn[c]))&&(!this._serialize_visible||!this._hrrar[c])){var l=a.childNodes[s];var m=this.cells(a.idd,c);while(h!=c){h++;o.push("");if(h>=n){break}}if(h>=n){break}h++;if(m.cell){zxVal=m[this._agetm]()}else{zxVal=""}if((this._chAttr)&&(m.wasChanged())){v=true}o[o.length]=((zxVal===null)?"":zxVal);if(this._ecspn&&l.colSpan&&l.colSpan>1){l=l.colSpan-1;for(var w=0;w<l;w++){o[o.length]="";h++}}}else{h++}}if((this._onlChAttr)&&(!v)){return""}return this.csvParser.str(o,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(g,c){if((!g)||(!c)){if(!this.selectedRows[0]){return}g=this.selectedRows[0].idd;c=this.cell._cellIndex}var a=this.cells(g,c);this.toClipBoard(((a.getLabel?a.getLabel():a.getValue())||"").toString())};dhtmlXGridObject.prototype.updateCellFromClipboard=function(g,c){if((!g)||(!c)){if(!this.selectedRows[0]){return}g=this.selectedRows[0].idd;c=this.cell._cellIndex}var a=this.cells(g,c);a[a.setImage?"setLabel":"setValue"](this.fromClipBoard())};dhtmlXGridObject.prototype.rowToClipboard=function(h){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(h){a=this._serializeRowToCVS(this.getRowById(h))}else{var g=[];for(var c=0;c<this.selectedRows.length;c++){g[g.length]=this._serializeRowToCVS(this.selectedRows[c]);a=this.csvParser.block(g,this.csv.row)}}this._serialize_visible=false;this.toClipBoard(a)};dhtmlXGridObject.prototype.updateRowFromClipboard=function(l){var a=this.fromClipBoard();if(!a){return}if(l){var h=this.getRowById(l)}else{var h=this.selectedRows[0]}if(!h){return}var m=this.csvParser;a=m.unblock(a,this.csv.cell,this.csv.row)[0];if(!this._csvAID){a.splice(0,1)}for(var g=0;g<a.length;g++){var c=this.cells3(h,g);c[c.setImage?"setLabel":"setValue"](a[g])}};dhtmlXGridObject.prototype.csvParser={block:function(a,c){return a.join(c)},unblock:function(m,a,l){var h=(m||"").split(l);for(var c=0;c<h.length;c++){h[c]=(h[c]||"").split(a)}var g=h.length-1;if(h[g].length==1&&h[g][0]==""){h.splice(g,1)}return h},str:function(c,a,g){return c.join(a)}};dhtmlXGridObject.prototype.csvExtParser={_quote:RegExp('"',"g"),_quote_esc:RegExp('\\\\"',"g"),block:function(a,c){return a.join(c)},unblock:function(o,s,v){var g=[[]];var c=0;if(!o){return g}var q=/^[ ]*"/;var n=/"[ ]*$/;var a=new RegExp(".*"+v+".*$");var l=o.split(s);for(var h=0;h<l.length;h++){if(l[h].match(q)){var u=l[h].replace(q,"");while(!l[h].match(n)){h++;u+=l[h]}g[c].push(u.replace(n,"").replace(this._quote_esc,'"'))}else{if(l[h].match(a)){var m=l[h].indexOf(v);g[c].push(l[h].substr(0,m));c++;g[c]=[];l[h]=l[h].substr(m+1);h--}else{if(l[h]||h!=l.length-1){g[c].push(l[h])}}}}var r=g.length-1;if(r>0&&!g[r].length){g.splice(r,1)}return g},str:function(g,a,h){for(var c=0;c<g.length;c++){g[c]='"'+g[c].replace(this._quote,'\\"')+'"'}return g.join(a)}};dhtmlXGridObject.prototype.addRowFromClipboard=function(){var a=this.fromClipBoard();if(!a){return}var g=this.csvParser.unblock(a,this.csv.cell,this.csv.row);for(var c=0;c<g.length;c++){if(g[c]){a=g[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(n){if(!this.xslform){this.xslform=document.createElement("FORM");this.xslform.action=(n||"")+"xls.php";this.xslform.method="post";this.xslform.target=(_isIE?"_blank":"");document.body.appendChild(this.xslform);var m=document.createElement("INPUT");m.type="hidden";m.name="csv";this.xslform.appendChild(m);var h=document.createElement("INPUT");h.type="hidden";h.name="csv_header";this.xslform.appendChild(h)}var o=this.serializeToCSV();this.xslform.childNodes[0].value=o;var g=[];var a=this._cCount;for(var c=0;c<a;c++){g.push(this.getHeaderCol(c))}g=g.join(",");this.xslform.childNodes[1].value=g;this.xslform.submit()};dhtmlXGridObject.prototype.printView=function(s,g){var q="<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 C=null;if(this._fake){C=[].concat(this._hrrar);for(var A=0;A<this._fake._cCount;A++){this._hrrar[A]=null}}q+="<base href='"+document.location.href+"'></base>";if(!this.parentGrid){q+=(s||"")}q+='<table width="100%" border="2px" cellpadding="0" cellspacing="0">';var r=Math.max(this.rowsBuffer.length,this.rowsCol.length);var o=this._cCount;var u=this._printWidth();q+='<tr class="header_row_1">';for(var A=0;A<o;A++){if(this._hrrar&&this._hrrar[A]){continue}var l=this.hdr.rows[1].cells[this.hdr.rows[1]._childIndexes?this.hdr.rows[1]._childIndexes[parseInt(A)]:A];var a=(l.colSpan||1);var H=(l.rowSpan||1);for(var y=1;y<a;y++){u[A]+=u[y]}q+='<td rowspan="'+H+'" width="'+u[A]+'%" style="background-color:lightgrey;" colspan="'+a+'">'+this.getHeaderCol(A)+"</td>";A+=a-1}q+="</tr>";for(var A=2;A<this.hdr.rows.length;A++){if(_isIE){q+="<tr style='background-color:lightgrey' class='header_row_"+A+"'>";var h=this.hdr.rows[A].childNodes;for(var y=0;y<h.length;y++){if(!this._hrrar||!this._hrrar[h[y]._cellIndex]){q+=h[y].outerHTML}}q+="</tr>"}else{q+="<tr class='header_row_"+A+"' style='background-color:lightgrey'>"+(this._fake?this._fake.hdr.rows[A].innerHTML:"")+this.hdr.rows[A].innerHTML+"</tr>"}}for(var A=0;A<r;A++){q+="<tr>";if(this.rowsCol[A]&&this.rowsCol[A]._cntr){q+=this.rowsCol[A].innerHTML.replace(/<img[^>]*>/gi,"")+"</tr>";continue}if(this.rowsCol[A]&&this.rowsCol[A].style.display=="none"){continue}var n;if(this.rowsCol[A]){n=this.rowsCol[A].idd}else{if(this.rowsBuffer[A]){n=this.rowsBuffer[A].idd}else{continue}}for(var y=0;y<o;y++){if(this._hrrar&&this._hrrar[y]){continue}if(this.rowsAr[n]&&this.rowsAr[n].tagName=="TR"){var F=this.cells(n,y);if(F._setState){var v=""}else{if(F.getContent){v=F.getContent()}else{if(F.getImage||F.combo){var v=F.cell.innerHTML}else{var v=F.getValue()}}}}else{var v=this._get_cell_value(this.rowsBuffer[A],y)}var w=this.columnColor[y]?"background-color:"+this.columnColor[y]+";":"";var x=this.cellAlign[y]?"text-align:"+this.cellAlign[y]+";":"";var D=F.getAttribute("colspan");q+='<td style="'+w+x+'" '+(D?'colSpan="'+D+'"':"")+">"+(v===""?" ":v)+"</td>";if(D){y+=D-1}}q+="</tr>";if(this.rowsCol[A]&&this.rowsCol[A]._expanded){var m=this.cells4(this.rowsCol[A]._expanded.ctrl);if(m.getSubGrid){q+='<tr><td colspan="'+o+'">'+m.getSubGrid().printView()+"</td></tr>"}else{q+='<tr><td colspan="'+o+'">'+this.rowsCol[A]._expanded.innerHTML+"</td></tr>"}}}if(this.ftr){for(var A=1;A<this.ftr.childNodes[0].rows.length;A++){q+="<tr style='background-color:lightgrey'>"+((this._fake)?this._fake.ftr.childNodes[0].rows[A].innerHTML:"")+this.ftr.childNodes[0].rows[A].innerHTML+"</tr>"}}q+="</table>";if(this.parentGrid){return q}q+=(g||"");var E=window.open("","_blank");E.document.write(q);E.document.write("<script>window.onerror=function(){return true;}<\/script>");E.document.close();if(this._fake){this._hrrar=C}};dhtmlXGridObject.prototype._printWidth=function(){var l=[];var h=0;for(var g=0;g<this._cCount;g++){var a=this.getColWidth(g);l.push(a);h+=a}var n=[];var c=0;for(var g=0;g<l.length;g++){var m=Math.floor((l[g]/h)*100);c+=m;n.push(m)}n[n.length-1]+=100-c;return n};if(!window.clipboardData){window.clipboardData={_make:function(){var c=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(!c){return null}var a=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(!a){return null}a.addDataFlavor("text/unicode");var g=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);this._p=[c,a,g];return true},setData:function(a,h){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(g){dhtmlxError.throwError("Clipboard","Access to clipboard denied",[a,h]);return""}if(!this._make()){return false}this._p[2].data=h;this._p[1].setTransferData("text/unicode",this._p[2],h.length*2);var c=Components.interfaces.nsIClipboard;this._p[0].setData(this._p[1],null,c.kGlobalClipboard)},getData:function(a){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(g){dhtmlxError.throwError("Clipboard","Access to clipboard denied",[a]);return""}if(!this._make()){return false}this._p[0].getData(this._p[1],this._p[0].kGlobalClipboard);var c=new Object();var h=new Object();try{this._p[1].getTransferData("text/unicode",h,c)}catch(g){return""}if(h){h=h.value.QueryInterface(Components.interfaces.nsISupportsString)}if(h){return h.data.substring(0,c.value/2)}return""}}}dhtmlXGridObject.prototype.enableBlockSelection=function(g){if(typeof this._bs_mode=="undefined"){var a=this;this.obj.onmousedown=function(h){if(a._bs_mode){a._OnSelectionStart((h||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(g===false){this._bs_mode=false;return this._HideSelection()}else{this._bs_mode=true}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(h){h=h||event;if(h.keyCode==86&&(h.ctrlKey||h.metaKey)){a.pasteBlockFromClipboard()}};document.body.insertBefore(this._clip_area,document.body.firstChild);dhtmlxEvent(this.entBox,"click",function(){if(!a.editor){a._clip_area.select()}})};dhtmlXGridObject.prototype.forceLabelSelection=function(a){this._strictText=convertStringToBoolean(a)};dhtmlXGridObject.prototype._OnSelectionStart=function(g,h){var c=this;if(g.button==2){return}var l=g.srcElement||g.target;if(this.editor){if(l.tagName&&(l.tagName=="INPUT"||l.tagName=="TEXTAREA")){return}this.editStop()}c.setActive(true);var n=this.getPosition(this.obj);var a=g.clientX-n[0]+(document.body.scrollLeft||(document.documentElement?document.documentElement.scrollLeft:0));var m=g.clientY-n[1]+(document.body.scrollTop||(document.documentElement?document.documentElement.scrollTop:0));this._CreateSelection(a-4,m-4);if(l==this._selectionObj){this._HideSelection();this._startSelectionCell=null}else{while(l&&(!l.tagName||l.tagName.toLowerCase()!="td")){l=l.parentNode}this._startSelectionCell=l}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(o){if(c._blsTimer){window.clearTimeout(c._blsTimer)}};this.obj.onmmold=this.obj.onmousemove;this._init_pos=[a,m];this._selectionObj.onmousemove=this.obj.onmousemove=function(o){o=o||g;if(o.preventDefault){o.preventDefault()}else{o.returnValue=false}c._OnSelectionMove(o)};this._oldDMP=document.body.onmouseup;document.body.onmouseup=function(o){o=o||g;c._OnSelectionStop(o,this);return true};this.callEvent("onBeforeBlockSelection",[]);document.body.onselectstart=function(){return false}};dhtmlXGridObject.prototype._getCellByPos=function(a,h){a=a;if(this._fake){a+=this._fake.objBox.scrollWidth}h=h;var c=0;for(var g=0;g<this.obj.rows.length;g++){h-=this.obj.rows[g].offsetHeight;if(h<=0){c=this.obj.rows[g];break}}if(!c||!c.idd){return null}for(var g=0;g<this._cCount;g++){a-=this.getColWidth(g);if(a<=0){while(true){if(c._childIndexes&&c._childIndexes[g+1]==c._childIndexes[g]){c=c.previousSibling}else{return this.cells(c.idd,g).cell}}}}return null};dhtmlXGridObject.prototype._OnSelectionMove=function(h){var x=this;this._ShowSelection();var s=this.getPosition(this.obj);var n=h.clientX-s[0]+(document.body.scrollLeft||(document.documentElement?document.documentElement.scrollLeft:0));var m=h.clientY-s[1]+(document.body.scrollTop||(document.documentElement?document.documentElement.scrollTop:0));if((Math.abs(this._init_pos[0]-n)<5)&&(Math.abs(this._init_pos[1]-m)<5)){return this._HideSelection()}var v=this._endSelectionCell;if(this._startSelectionCell==null){this._endSelectionCell=this._startSelectionCell=this.getFirstParentOfType(h.srcElement||h.target,"TD")}else{if(h.srcElement||h.target){if((h.srcElement||h.target).className=="dhtmlxGrid_selection"){this._endSelectionCell=(this._getCellByPos(n,m)||this._endSelectionCell)}else{var w=this.getFirstParentOfType(h.srcElement||h.target,"TD");if(w.parentNode.idd){this._endSelectionCell=w}}}}if(this._endSelectionCell){if(!this.callEvent("onBeforeBlockSelected",[this._endSelectionCell.parentNode.idd,this._endSelectionCell._cellIndex])){this._endSelectionCell=v}}var l=this.objBox.scrollLeft+this.objBox.clientWidth;var c=this.objBox.scrollTop+this.objBox.clientHeight;var q=this.objBox.scrollLeft;var o=this.objBox.scrollTop;var g=false;if(this._blsTimer){window.clearTimeout(this._blsTimer)}if(n+20>=l){this.objBox.scrollLeft=this.objBox.scrollLeft+20;g=true}else{if(n-20<q){this.objBox.scrollLeft=this.objBox.scrollLeft-20;g=true}}if(m+20>=c&&!this._realfake){this.objBox.scrollTop=this.objBox.scrollTop+20;g=true}else{if(m-20<o&&!this._realfake){this.objBox.scrollTop=this.objBox.scrollTop-20;g=true}}this._selectionArea=this._RedrawSelectionPos(this._startSelectionCell,this._endSelectionCell);if(g){var u=h.clientX;var r=h.clientY;this._blsTimer=window.setTimeout(function(){x._OnSelectionMove({clientX:u,clientY:r})},100)}};dhtmlXGridObject.prototype._OnSelectionStop=function(c){var a=this;if(this._blsTimer){window.clearTimeout(this._blsTimer)}this.obj.onmousedown=function(h){if(a._bs_mode){a._OnSelectionStart((h||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 g=this.getFirstParentOfType(c.srcElement||c.target,"TD");if((!g)||(!g.parentNode.idd)){g=this._endSelectionCell}while(g&&(!g.tagName||g.tagName.toLowerCase()!="td")){g=g.parentNode}if(!g){return this._HideSelection()}this._stopSelectionCell=g;this._selectionArea=this._RedrawSelectionPos(this._startSelectionCell,this._stopSelectionCell);this.callEvent("onBlockSelected",[])}document.body.onselectstart=function(){}};dhtmlXGridObject.prototype._RedrawSelectionPos=function(u,n){var r={};r.LeftTopCol=u._cellIndex;r.LeftTopRow=this.getRowIndex(u.parentNode.idd);r.RightBottomCol=n._cellIndex;r.RightBottomRow=this.getRowIndex(n.parentNode.idd);var h=u.offsetWidth;var g=u.offsetHeight;u=this.getPosition(u,this.obj);var v=n.offsetWidth;var o=n.offsetHeight;n=this.getPosition(n,this.obj);if(u[0]<n[0]){var l=u[0];var m=n[0]+v}else{var q=r.RightBottomCol;r.RightBottomCol=r.LeftTopCol;r.LeftTopCol=q;var l=n[0];var m=u[0]+h}if(u[1]<n[1]){var s=u[1];var a=n[1]+o}else{var q=r.RightBottomRow;r.RightBottomRow=r.LeftTopRow;r.LeftTopRow=q;var s=n[1];var a=u[1]+g}var w=m-l;var c=a-s;this._selectionObj.style.left=l+"px";this._selectionObj.style.top=s+"px";this._selectionObj.style.width=w+"px";this._selectionObj.style.height=c+"px";return r};dhtmlXGridObject.prototype._CreateSelection=function(a,g){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(h){h=h||event;if(h.button==2||(_isMacOS&&h.ctrlKey)){return this.parentNode.grid.callEvent("onBlockRightClick",["BLOCK",h])}};this._selectionObj.oncontextmenu=function(h){(h||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=g+"px";this._selectionObj.startX=a;this._selectionObj.startY=g};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;this._clip_area.value="";this._clip_area.blur()};dhtmlXGridObject.prototype.copyBlockToClipboard=function(){if(this._selectionArea!=null){var g=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){g[g.length]=c.substr(c.indexOf(this.csv.cell)+1)}else{g[g.length]=c}}g=g.join(this._CSVRowDelimiter);this._clip_area.value=g;this._clip_area.select();this._serialize_visible=false}};dhtmlXGridObject.prototype.pasteBlockFromClipboard=function(){this._clip_area.select();var a=this;window.setTimeout(function(){a._pasteBlockFromClipboard();a=null},1)};dhtmlXGridObject.prototype._pasteBlockFromClipboard=function(){var o=this._clip_area.value;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}}o=this.csvParser.unblock(o,this.csv.cell,this.csv.row);var q=w+o.length;var u=a+o[0].length;if(u>this._cCount){u=this._cCount}var h=0;for(var r=w;r<q;r++){var x=this.render_row(r);if(x==-1){continue}var g=0;for(var m=a;m<u;m++){if(this._hrrar[m]&&!this._fake){u=Math.max(u+1,this._cCount);continue}var s=this.cells3(x,m);if(s.isDisabled()){g++;continue}if(this._onEditUndoRedo){this._onEditUndoRedo(2,x.idd,m,o[h][g],s.getValue())}if(s.combo){var v=s.combo.values;for(var c=0;c<v.length;c++){if(o[h][g]==v[c]){s.setValue(s.combo.keys[c]);v=null;break}}if(v!=null&&s.editable){s.setValue(o[h][g++])}else{g++}}else{s[s.setImage?"setLabel":"setValue"](o[h][g++])}s.cell.wasChanged=true}this.callEvent("onRowPaste",[x.idd]);h++}};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(g,c,a){if(arguments.length>2){if(c&&!this.rowsBuffer[c-1]){this.rowsBuffer[c-1]=0}c=a}this._srnd=convertStringToBoolean(g);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,l){for(var g=0;g<this.rowsBuffer.length;g++){if(!this.rowsBuffer[g]){var h=a||(this.rowsBuffer.length-g);if(this.callEvent("onDynXLS",[g,h])){var c=this;this.load(this.xmlFileUrl+getUrlSymbol(this.xmlFileUrl)+"posStart="+g+"&count="+h,function(){window.setTimeout(function(){c.forceFullLoading(a,l)},100)},this._data_type)}return}}if(l){l.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(n,a,c,h){if(!a){return null}var m="__filler__";var l=this._prepareRow(m);l.firstChild.style.width="1px";l.firstChild.style.padding=l.firstChild.style.margin="0px";for(var g=1;g<l.childNodes.length;g++){l.childNodes[g].style.display="none"}l.firstChild.style.height=a*this._srdh+"px";c=c||this.rowsCol[n];if(c&&c.nextSibling){c.parentNode.insertBefore(l,c.nextSibling)}else{if(_isKHTML){this.obj.appendChild(l)}else{this.obj.rows[0].parentNode.appendChild(l)}}this.callEvent("onAddFiller",[n,a,l,c,h]);return[n,a,l]};dhtmlXGridObject.prototype._update_srnd_view=function(){var m=Math.floor(this.objBox.scrollTop/this._srdh);var c=m+this._get_view_size();if(this.multiLine){var n=this.objBox.scrollTop;m=0;while(n>0){n-=this.rowsCol[m]?this.rowsCol[m].offsetHeight:this._srdh;m++}c=m+this._get_view_size();if(m>0){m--}}c+=(this._srnd_pr||0);if(c>this.rowsBuffer.length){c=this.rowsBuffer.length}for(var h=m;h<c;h++){if(!this.rowsCol[h]){var l=this._add_from_buffer(h);if(l==-1){if(this.xmlFileUrl){if(this._dpref&&this.rowsBuffer[c-1]){var g=this._dpref?this._dpref:(c-h);var a=Math.max(0,Math.min(h,c-this._dpref));this._current_load=[a,c-a]}else{this._current_load=[h,(this._dpref?this._dpref:(c-h))]}if(this.callEvent("onDynXLS",this._current_load)){this.load(this.xmlFileUrl+getUrlSymbol(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[h].idd],this.rowsBuffer[h]);this._updateParentLine(this._h2.get[this.rowsBuffer[h].idd],this.rowsBuffer[h])}if(h&&h==(this._realfake?this._fake:this)["_r_select"]){this.selectCell(h,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(h){var l=this.render_row(h);if(l==-1){return -1}if(l._attrs.selected||l._attrs.select){this.selectRow(l,false,true);l._attrs.selected=l._attrs.select=null}if(!this._cssSP){if(this._cssEven&&h%2==0){l.className=this._cssEven+((l.className.indexOf("rowselected")!=-1)?" rowselected ":" ")+(l._css||"")}else{if(this._cssUnEven&&h%2==1){l.className=this._cssUnEven+((l.className.indexOf("rowselected")!=-1)?" rowselected ":" ")+(l._css||"")}}}else{if(this._h2){var a=this._h2.get[l.idd];l.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 g=this._fillers[c];if(g&&g[0]<=h&&(g[0]+g[1])>h){var m=h-g[0];if(m==0){this._insert_before(h,l,g[2]);this._update_fillers(c,-1,1)}else{if(m==g[1]-1){this._insert_after(h,l,g[2]);this._update_fillers(c,-1,0)}else{this._fillers.push(this._add_filler(h+1,g[1]-m-1,g[2],1));this._insert_after(h,l,g[2]);this._update_fillers(c,-g[1]+m,0)}}return}}};dhtmlXGridObject.prototype._update_fillers=function(g,a,h){var c=this._fillers[g];c[1]=c[1]+a;c[0]=c[0]+h;if(!c[1]){this.callEvent("onRemoveFiller",[c[2]]);c[2].parentNode.removeChild(c[2]);this._fillers.splice(g,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,g,a){a.parentNode.insertBefore(g,a);this.rowsCol[c]=g;this.callEvent("onRowInserted",[g,null,a,"before"])};dhtmlXGridObject.prototype._insert_after=function(c,g,a){if(a.nextSibling){a.parentNode.insertBefore(g,a.nextSibling)}else{a.parentNode.appendChild(g)}this.rowsCol[c]=g;this.callEvent("onRowInserted",[g,null,a,"after"])};dhtmlxValidation=function(){};dhtmlxValidation.prototype={trackInput:function(g,h,c,a){dhtmlxEvent(g,"keyup",function(l){if(dhtmlxValidation._timer){window.clearTimeout(dhtmlxValidation._timer);dhtmlxValidation._timer=null}dhtmlxValidation._timer=window.setTimeout(function(){if(!dhtmlxValidation.checkInput(g,h)){if(!c||c(g,g.value,h)){g.className+=" dhtmlx_live_validation_error"}}else{g.className=g.className.replace(/[ ]*dhtmlx_live_validation_error/g,"");if(a){a(g,g.value,h)}}},250)})},checkInput:function(a,c){return this.checkValue(a.value,c)},checkValue:function(g,h){if(typeof h=="string"){h=h.split(",")}var a=true;for(var c=0;c<h.length;c++){if(!this["is"+h[c]]){alert("Incorrect validation rule: "+h[c])}else{a=a&&this["is"+h[c]](g)}}return a},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();dhtmlXGridObject.prototype.enableValidation=function(c,a){c=convertStringToBoolean(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(m,c,h,g,o){var q=this._validators;if(!q){return true}var n=(q.data[h]||this.cells(c,h).getAttribute("validate"))||"";if(m==1&&n){var l=this.editor||(this._fake||{}).editor;if(!l){return true}l.cell.className=l.cell.className.replace(/[ ]*dhtmlx_validation_error/g,"");if(q._live){var a=this;dhtmlxValidation.trackInput(l.getInput(),n,function(r,s,u){return a.callEvent("onLiveValidationError",[c,h,s,r,u])},function(r,s,u){return a.callEvent("onLiveValidationCorrect",[c,h,s,r,u])})}}if(m==2){this.validateCell(c,h,n,g)}return true};dhtmlXGridObject.prototype.validateCell=function(n,l,m,h){m=m||(this._validators.data[l]||this.cells(n,l).getAttribute("validate"));h=h||this.cells(n,l).getValue();if(!m){return}var c=this.cells(n,l).cell;var a=true;if(typeof m=="string"){m=m.split(this.delim)}for(var g=0;g<m.length;g++){if(!dhtmlxValidation.checkValue(h,m[g])){if(this.callEvent("onValidationError",[n,l,h,m[g]])){c.className+=" dhtmlx_validation_error"}a=false}}if(a){this.callEvent("onValidationCorrect",[n,l,h,m]);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||" "),c)};this.edit=function(){this._sub.parentObject.style.display="block";var g=this.grid.getPosition(this.cell);this._sub.parentObject.style.top=g[1]+"px";this._sub.parentObject.style.left=g[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 g=this;a.parentObject.onclick=function(h){(h||window.event).cancelBubble=true;return false};a.ev_onDblClick=null;a.attachEvent("onDblClick",function(h){g._sub_id=h;g.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(g){if((typeof(g)!="number")&&(!g||g.toString()._dhx_trim()=="")){this.setCValue(" ",c);return(this.cell._clearCell=true)}var c=g.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||" "),c)};this.edit=function(){this.val=this.cell.val;this._sub.entBox.style.display="block";var g=this.grid.getPosition(this.cell);this._sub.entBox.style.top=g[1]+"px";this._sub.entBox.style.left=g[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,h){if(!this._sub_grids){this._sub_grids=[]}this._sub_grids[a]=[c,h];c.entBox.style.display="none";var g=this;c.attachEvent("onRowSelect",function(l){g.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 g=this.grid._grid_calendarA=new dhtmlxCalendarObject();this.grid.callEvent("onDhxCalendarCreated",[g]);var c=this.grid;g.attachEvent("onClick",function(){this._last_operation_calendar=true;window.setTimeout(function(){c.editStop()},1);return true});var h=function(l){(l||event).cancelBubble=true};dhtmlxEvent(g.base,"click",h);g=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 g=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(g,c);this.cell._clearCell=!g;var a=this.val;this.val=this._val;return(this.cell.val.valueOf()!=a)}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=" ";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(" ",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 g=this.grid._grid_calendarA=new dhtmlxCalendarObject();this.grid.callEvent("onDhxCalendarCreated",[g]);var c=this.grid;g.attachEvent("onClick",function(){this._last_operation_calendar=true;window.setTimeout(function(){c.editStop()},1);return true});var h=function(l){(l||event).cancelBubble=true};dhtmlxEvent(g.base,"click",h)}}}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-(_isIE?4:2))+"px";this.obj.className="dhx_combo_edit";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.align;this.obj.onclick=function(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 g=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(g,c);this.cell._clearCell=!g;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=" ";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(" ",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(g){this.resetCounter(a._cellIndex)})}var c=function(){var g=this;window.setTimeout(function(){if(!g.resetCounter){return}if(g._fake&&!g._realfake&&a._cellIndex<g._fake._cCount){g._fake.resetCounter(a._cellIndex)}else{g.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(h){this.cell.style.paddingRight="2px";var g=this.cell;window.setTimeout(function(){if(!g.parentNode){return}var l=g.parentNode.rowIndex;if(g.parentNode.grid.currentPage||l<0||g.parentNode.grid._srnd){l=g.parentNode.grid.rowsBuffer._dhx_find(g.parentNode)+1}if(l<=0){return}g.innerHTML=l;if(g.parentNode.grid._fake&&g._cellIndex<g.parentNode.grid._fake._cCount&&g.parentNode.grid._fake.rowsAr[g.parentNode.idd]){g.parentNode.grid._fake.cells(g.parentNode.idd,g._cellIndex).setCValue(l)}g=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(g){return null}};this.isCheckbox=function(){return true};this.isChecked=function(){if(this.getValue()=="1"){return true}else{return false}};this.setChecked=function(g){this.setValue(g.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> 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> 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(g){this.cell._val=g;var c=this._sub.itemPull[this._sub.idPrefix+this.cell._val];g=c?c.title:g;this.setCValue((g||" "),g)};this.edit=function(){var g=this.grid.getPosition(this.cell);this._sub.showContextMenu(g[0]+this.cell.offsetWidth,g[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,h){var g=this;a.attachEvent("onClick",function(m,l){g._sub_id=m;g.editStop();a.hideContextMenu();return true});if(!this._sub_context){this._sub_context=[]}this._sub_context[c]=[a,h];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 g=a.getElementsByTagName("TABLE")[0];this._process_inner_html(g,0)};dhtmlXGridObject.prototype._process_inner_html=function(g,l){var c=g.rows.length;for(var a=l;a<c;a++){var h=g.rows[a].getAttribute("id")||a;this.rowsBuffer.push({idd:h,data:g.rows[a],_parser:this._process_html_row,_locator:this._get_html_data})}this.render_dataset();this.setSizes()};dhtmlXGridObject.prototype._process_html_row=function(o,l){var n=l.getElementsByTagName("TD");var c=[];o._attrs=this._xml_attrs(l);for(var h=0;h<n.length;h++){var m=n[h];var a=m.getAttribute("type");if(o.childNodes[h]){if(a){o.childNodes[h]._cellType=a}o.childNodes[h]._attrs=this._xml_attrs(n[h])}if(m.firstChild){c.push(m.innerHTML)}else{c.push("")}if(m.colSpan>1){o.childNodes[h]._attrs.colspan=m.colSpan;for(var g=1;g<m.colSpan;g++){c.push("")}}}for(h<n.length;h<o.childNodes.length;h++){o.childNodes[h]._attrs={}}this._fillRow(o,(this._c_order?this._swapColumns(c):c));return o};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 g=document.getElementsByTagName("table");for(var c=0;c<g.length;c++){if(g[c].className=="dhtmlxGrid"){dhtmlXGridFromTable(g[c])}}});dhtmlXGridObject.prototype._process_xmlA=function(a){if(!a.doXPath){var g=new dtmlXMLLoaderObject(function(){});if(typeof a=="string"){g.loadXMLString(a)}else{if(a.responseXML){g.xmlDoc=a}else{g.xmlDoc={}}g.xmlDoc.responseXML=a}a=g}this._parsing=true;var n=a.getXMLTopNode(this.xml.top);this._parseHead(n);var m=a.doXPath(this.xml.row,n);var l=parseInt(a.doXPath("//"+this.xml.top)[0].getAttribute("pos")||0);var h=parseInt(a.doXPath("//"+this.xml.top)[0].getAttribute("total_count")||0);if(h&&!this.rowsBuffer[h-1]){this.rowsBuffer[h-1]=null}if(this.isTreeGrid()){this._get_xml_data=this._get_xml_dataA;this._process_xml_row=this._process_xml_rowA;return this._process_tree_xml(a)}for(var c=0;c<m.length;c++){if(this.rowsBuffer[c+l]){continue}var o=m[c].getAttribute("id")||this.uid();this.rowsBuffer[c+l]={idd:o,data:m[c],_parser:this._process_xml_rowA,_locator:this._get_xml_dataA};this.rowsAr[o]=m[c]}this.render_dataset();this._parsing=false;return a.xmlDoc.responseXML?a.xmlDoc.responseXML:a.xmlDoc};dhtmlXGridObject.prototype._process_xmlB=function(a){if(!a.doXPath){var g=new dtmlXMLLoaderObject(function(){});if(typeof a=="string"){g.loadXMLString(a)}else{if(a.responseXML){g.xmlDoc=a}else{g.xmlDoc={}}g.xmlDoc.responseXML=a}a=g}this._parsing=true;var n=a.getXMLTopNode(this.xml.top);this._parseHead(n);var m=a.doXPath(this.xml.row,n);var l=parseInt(a.doXPath("//"+this.xml.top)[0].getAttribute("pos")||0);var h=parseInt(a.doXPath("//"+this.xml.top)[0].getAttribute("total_count")||0);if(h&&!this.rowsBuffer[h-1]){this.rowsBuffer[h-1]=null}if(this.isTreeGrid()){this._get_xml_data=this._get_xml_dataB;this._process_xml_row=this._process_xml_rowB;return this._process_tree_xml(a)}for(var c=0;c<m.length;c++){if(this.rowsBuffer[c+l]){continue}var o=m[c].getAttribute("id")||this.uid();this.rowsBuffer[c+l]={idd:o,data:m[c],_parser:this._process_xml_rowB,_locator:this._get_xml_dataB};this.rowsAr[o]=m[c]}this.render_dataset();this._parsing=false;return a.xmlDoc.responseXML?a.xmlDoc.responseXML:a.xmlDoc};dhtmlXGridObject.prototype._process_xml_rowA=function(l,g){var a=[];l._attrs=this._xml_attrs(g);for(var c=0;c<this.columnIds.length;c++){var m=this.columnIds[c];var h=l._attrs[m]||"";if(l.childNodes[c]){l.childNodes[c]._attrs={}}a.push(h)}this._fillRow(l,(this._c_order?this._swapColumns(a):a));return l};dhtmlXGridObject.prototype._get_xml_dataA=function(c,a){return c.getAttribute(this.getColumnId(a))};dhtmlXGridObject.prototype._process_xml_rowB=function(a,l){var o=[];a._attrs=this._xml_attrs(l);if(this._ud_enabled){var q=this.xmlLoader.doXPath("./userdata",l);for(var g=q.length-1;g>=0;g--){this.setUserData(q[g].getAttribute("name"),q[g].firstChild?q[g].firstChild.data:"")}}for(var n=0;n<l.childNodes.length;n++){var h=l.childNodes[n];if(!h.tagName){continue}var c=this.getColIndexById(h.tagName);if(isNaN(c)){continue}var m=h.getAttribute("type");if(m){a.childNodes[c]._cellType=m}a.childNodes[c]._attrs=this._xml_attrs(h);if(h.getAttribute("xmlcontent")){}else{if(h.firstChild){h=h.firstChild.data}else{h=""}}o[c]=h}for(var g=0;g<a.childNodes.length;g++){if(!a.childNodes[g]._attrs){a.childNodes[g]._attrs={}}}this._fillRow(a,(this._c_order?this._swapColumns(o):o));return a};dhtmlXGridObject.prototype._get_xml_dataB=function(c,a){var g=this.getColumnId(a);c=c.firstChild;while(true){if(!c){return""}if(c.tagName==g){return(c.firstChild?c.firstChild.data:"")}c=c.nextSibling}return""};dhtmlXGridObject.prototype.startFastOperations=function(){this._disF=["setSizes","callEvent","_fixAlterCss","cells4","forEachRow","_correctMonolite"];this._disA=[];for(var a=this._disF.length-1;a>=0;a--){this._disA[a]=this[this._disF[a]];this[this._disF[a]]=function(){return true}}this._cellCache=[];this.cells4=function(g){var h=this._cellCache[g._cellIndex];if(!h){h=this._cellCache[g._cellIndex]=this._disA[3].apply(this,[g]);h.destructor=function(){return true};h.setCValue=function(c){h.cell.innerHTML=c}}h.cell=g;h.combo=g._combo||this.combos[g._cellIndex];return h}};dhtmlXGridObject.prototype.stopFastOperations=function(){if(!this._disF){return}for(var a=this._disF.length-1;a>=0;a--){this[this._disF[a]]=this._disA[a]}if(this._correctMonolite){this._correctMonolite()}this.setSizes();this.callEvent("onGridReconstructed",[])};dhtmlXGridObject.prototype._in_header_number_filter=function(g,c){this._in_header_text_filter.call(this,g,c);var a=this;g.firstChild._filter=function(){var h=a._get_filters(this.value,"num");return function(n){var l=h.length>0?false:true;for(var m=0;m<h.length;m++){l=l||h[m](n)}return l}}};dhtmlXGridObject.prototype._in_header_string_filter=function(g,c){this._in_header_text_filter.call(this,g,c);var a=this;g.firstChild._filter=function(){var h=a._get_filters(this.value,"str");return function(n){var l=h.length>0?false:true;for(var m=0;m<h.length;m++){l=l||h[m](n)}return l}}};dhtmlXGridObject.prototype._get_filters=function(m,g){var a=m.split(",");var h=[];for(var c=0;c<a.length;c++){if(a[c]==""){continue}var l=this["_get_"+g+"_filter"](a[c]);h.push(l)}return h};dhtmlXGridObject.prototype._get_str_filter=function(c){if(c=="null"||c=="empty"){return new Function("value",'if (value == null || value == "") return true; return false;')}if(c=="!null"||c=="!empty"){return new Function("value",'if (value == null || value == "") return false; return true;')}if(c.substr(0,1)==="!"){var a=c.substr(1);return new Function("value",'if (value !== "'+a+'") return true; return false;')}if(c.substr(0,1)==="~"){var a=c.substr(1);return new Function("value",'if (value.indexOf("'+a+'") !== -1) return true; return false;')}if(c.substr(0,1)==="^"&&c.substr(c.length-1,1)==="&"){c="="+c.substr(1,c.length-2)}if(c.substr(0,1)==="^"){var a=c.substr(1);return new Function("value","if (value.substr(0, "+a.length+') === "'+a+'") return true; return false;')}if(c.substr(c.length-1,1)==="&"){var a=c.substr(0,c.length-1);return new Function("value","if (value.substr(value.length - "+a.length+') === "'+a+'") return true; return false;')}if(c.substr(0,1)==="="){var a=c.substr(1)}else{var a=c}return new Function("value",'if (value === "'+a+'") return true; return false;')};dhtmlXGridObject.prototype._get_num_filter=function(l){if(l=="null"||l=="empty"){return new Function("value",'if (value == null || value == "") return true; return false;')}if(l=="!null"||l=="!empty"){return new Function("value",'if (value == null || value == "") return false; return true;')}var a=l.split("..");if(a.length==2){var m=parseFloat(a[0]);var h=parseFloat(a[1]);return new Function("value","if (value >= "+m+" && value <= "+h+") return true; return false;")}var g=l.match(/<>|>=|<=|>|<|=/);if(g){var n=g[0];var c=parseFloat(l.replace(n,""))}else{var n="==";c=parseFloat(l)}if(n=="<>"){n="!="}if(n=="="){n="=="}return new Function("value"," if (value "+n+" "+c+" ) return true; return false;")};dhtmlXGridObject.prototype.attachHeaderA=dhtmlXGridObject.prototype.attachHeader;dhtmlXGridObject.prototype.attachHeader=function(){this.attachHeaderA.apply(this,arguments);if(this._realfake){return true}this.formAutoSubmit();if(typeof(this.FormSubmitOnlyChanged)=="undefined"){this.submitOnlyChanged(true)}if(typeof(this._submitAR)=="undefined"){this.submitAddedRows(true)}var a=this;this._added_rows=[];this._deleted_rows=[];this.attachEvent("onRowAdded",function(c){a._added_rows.push(c);a.forEachCell(c,function(g){g.cell.wasChanged=true});return true});this.attachEvent("onBeforeRowDeleted",function(c){a._deleted_rows.push(c);return true});this.attachHeader=this.attachHeaderA};dhtmlXGridObject.prototype.formAutoSubmit=function(){this.parentForm=this.detectParentFormPresent();if(this.parentForm===false){return false}if(this.formEventAttached){return}this.formInputs=new Array();var a=this;dhtmlxEvent(this.parentForm,"submit",function(){if(a.entBox){a.parentFormOnSubmit()}});this.formEventAttached=true};dhtmlXGridObject.prototype.parentFormOnSubmit=function(){this.formCreateInputCollection();if(!this.callEvent("onBeforeFormSubmit",[])){return false}};dhtmlXGridObject.prototype.submitOnlyChanged=function(a){this.FormSubmitOnlyChanged=convertStringToBoolean(a)};dhtmlXGridObject.prototype.submitColumns=function(a){if(typeof a=="string"){a=a.split(this.delim)}this._submit_cols=a};dhtmlXGridObject.prototype.setFieldName=function(a){a=a.replace(/\{GRID_ID\}/g,"'+a1+'");a=a.replace(/\{ROW_ID\}/g,"'+a2+'");a=a.replace(/\{ROW_INDEX\}/g,"'+this.getRowIndex(a2)+'");a=a.replace(/\{COLUMN_INDEX\}/g,"'+a3+'");a=a.replace(/\{COLUMN_ID\}/g,"'+this.getColumnId(a3)+'");this._input_mask=Function("a1","a2","a3","return '"+a+"';")};dhtmlXGridObject.prototype.submitSerialization=function(a){this.FormSubmitSerialization=convertStringToBoolean(a)};dhtmlXGridObject.prototype.submitAddedRows=function(a){this._submitAR=convertStringToBoolean(a)};dhtmlXGridObject.prototype.submitOnlySelected=function(a){this.FormSubmitOnlySelected=convertStringToBoolean(a)};dhtmlXGridObject.prototype.submitOnlyRowID=function(a){this.FormSubmitOnlyRowID=convertStringToBoolean(a)};dhtmlXGridObject.prototype.createFormInput=function(c,g){var a=document.createElement("input");a.type="hidden";if(this._input_mask&&(typeof c!="string")){a.name=this._input_mask.apply(this,c)}else{a.name=((this.globalBox||this.entBox).id||"dhtmlXGrid")+"_"+c}a.value=g;this.parentForm.appendChild(a);this.formInputs.push(a)};dhtmlXGridObject.prototype.createFormInputRow=function(g){var h=(this.globalBox||this.entBox).id;for(var c=0;c<this._cCount;c++){var a=this.cells3(g,c);if(((!this.FormSubmitOnlyChanged)||a.wasChanged())&&(!this._submit_cols||this._submit_cols[c])){this.createFormInput(this._input_mask?[h,g.idd,c]:(g.idd+"_"+c),a.getValue())}}};dhtmlXGridObject.prototype.formCreateInputCollection=function(){if(this.parentForm==false){return false}for(var a=0;a<this.formInputs.length;a++){this.parentForm.removeChild(this.formInputs[a])}this.formInputs=new Array();if(this.FormSubmitSerialization){this.createFormInput("serialized",this.serialize())}else{if(this.FormSubmitOnlySelected){if(this.FormSubmitOnlyRowID){this.createFormInput("selected",this.getSelectedId())}else{for(var a=0;a<this.selectedRows.length;a++){this.createFormInputRow(this.selectedRows[a])}}}else{if(this._submitAR){if(this._added_rows.length){this.createFormInput("rowsadded",this._added_rows.join(","))}if(this._deleted_rows.length){this.createFormInput("rowsdeleted",this._deleted_rows.join(","))}}this.forEachRow(function(c){this.getRowById(c);this.createFormInputRow(this.rowsAr[c])})}}};dhtmlXGridObject.prototype.detectParentFormPresent=function(){var a=false;var c=this.entBox;while(c&&c.tagName&&c!=document.body){if(c.tagName.toLowerCase()=="form"){a=c;break}else{c=c.parentNode}}return a};dhtmlXGridObject.prototype.unGroup=function(){if(!this._groups){return}this._dndProblematic=false;delete this._groups;delete this._gIndex;if(this._fake){this._mirror_rowsCol()}this.forEachRow(function(a){this.rowsAr[a].style.display=""});this._reset_view();this.callEvent("onGridReconstructed",[]);this.callEvent("onUnGroup",[])};dhtmlXGridObject.prototype._mirror_rowsCol=function(){this._fake._groups=this._groups;this._fake._gIndex=this._gIndex;this.rowsBuffer=dhtmlxArray();for(var a=0;a<this.rowsCol.length;a++){if(!this.rowsCol[a]._cntr){this.rowsBuffer.push(this.rowsCol[a])}}this._fake.rowsBuffer=dhtmlxArray();for(var a=0;a<this._fake.rowsCol.length;a++){if(!this._fake.rowsCol[a]._cntr){this._fake.rowsBuffer.push(this._fake.rowsCol[a])}}};dhtmlXGridObject.prototype.groupBy=function(n,h){if(this._groups){this.unGroup()}this._dndProblematic=true;this._groups={};if(!h){h=["#title"];for(var l=1;l<this._cCount;l++){h.push("#cspan")}}this._gmask=document.createElement("TR");this._gmask.origin=h;var m,g=0;for(var l=0;l<h.length;l++){if(h[l]=="#cspan"){m.colSpan=(parseInt(m.colSpan)||1)+1}else{m=document.createElement("TD");m._cellIndex=l;if(this._hrrar[l]){m.style.display="none"}m.className="group_row";m.innerHTML=" ";if(h[l]=="#title"){this._gmask._title=g}else{m.align=this.cellAlign[l]||"left"}this._gmask.appendChild(m);if(h[l].indexOf("#stat")==0){this._gmask._math=true;m._counter=[this["_g_"+h[l].replace("#","")],l,g]}g++}}for(var c in this._groups){this._groups[c]=this.undefined}this._gIndex=n;if(this._fake&&!this._realfake){this._fake._groups=[];this._fake._gIndex=this._gIndex}this._nextRow=function(q,a){var o=this.rowsCol[q+a];if(o&&(o.style.display=="none"||o._cntr)){return this._nextRow(q+a,a)}return o};if(!this.__sortRowsBG){this._key_events=dhtmlXHeir({},this._key_events);this._key_events.k38_0_0=function(){if(this.editor&&this.editor.combo){this.editor.shiftPrev()}else{var a=this.row.rowIndex;if(!a){return}var o=this._nextRow(a-1,-1);if(o){this.selectCell(o,this.cell._cellIndex,true)}}};this._key_events.k13_1_0=this._key_events.k13_0_1=function(){};this._key_events.k40_0_0=function(){if(this.editor&&this.editor.combo){this.editor.shiftNext()}else{var a=this.row.rowIndex;if(!a){return}var o=this._nextRow(a-1,1);if(o){this.selectCell(o,this.cell._cellIndex,true)}}};this.attachEvent("onFilterStart",function(){if(this._groups){this._groups=this.undefined}return true});this.attachEvent("onFilterEnd",function(){if(typeof this._gIndex!="undefined"){this.groupBy(this._gIndex,this._gmask.origin)}});this.sortRows_bg=this.sortRows;this.sortRows=function(q,o,a){if(typeof(this._groups)=="undefined"){return this.sortRows_bg.apply(this,arguments)}o=o||"str";a=a||"asc";if(this.callEvent("onBeforeSorting",[q,o,a])){if(typeof(this._groups)=="undefined"){return true}if(q==this._gIndex){this._sortByGroup(q,o,a)}else{this._sortInGroup(q,o,a)}this.setSortImgState(true,q,a);if(this._fake){this._mirror_rowsCol();this._fake._groups=[];this._fake._reset_view()}this.setSortImgState(true,q,a);this.callEvent("onAfterSorting",[q,o,a])}return false};this.attachEvent("onClearAll",function(){this.unGroup()});this.attachEvent("onBeforeRowDeleted",function(q){if(!this._groups){return true}if(!this.rowsAr[q]){return true}var o=this.cells(q,this._gIndex).getValue();if(o===""){o=" "}var a=this._groups[o];this._dec_group(a);return true});this.attachEvent("onAfterRowDeleted",function(a){this.updateGroups()});this.attachEvent("onCheckbox",function(q,a,o){this.callEvent("onEditCell",[2,q,a,(o?1:0),(o?0:1)])});this.attachEvent("onXLE",this.updateGroups);this.attachEvent("onColumnHidden",this.hideGroupColumn);this.attachEvent("onEditCell",function(C,s,y,x,D){if(!this._groups){return true}if(C==2&&x!=D&&y==this._gIndex){if(D===""){D=" "}this._dec_group(this._groups[D]);var a=this.rowsAr[s];var A=this.rowsCol._dhx_find(a);var v=this._inc_group(x);var w=this.rowsCol[v];if(a==w){w=w.nextSibling}var q=a.parentNode;var u=a.rowIndex;q.removeChild(a);if(w){q.insertBefore(a,w)}else{q.appendChild(a)}this.rowsCol._dhx_insertAt(v,a);if(v<A){A++}this.rowsCol._dhx_removeAt(A,a);this._fixAlterCss()}else{if(C==2&&x!=D){this.updateGroups();this._updateGroupView(this._groups[this.cells(s,this._gIndex).getValue()||" "])}}return true});this.__sortRowsBG=true}this._groupExisting();if(this._hrrar){for(var l=0;l<this._hrrar.length;l++){if(this._hrrar[l]){this.hideGroupColumn(l,true)}}}this.callEvent("onGroup",[]);if(this._ahgr||this._awdth){this.setSizes()}};dhtmlXGridObject.prototype._sortInGroup=function(g,o,h){var q=this._groups_get();q.reverse();for(var m=0;m<q.length;m++){var n=q[m]._cntr._childs;var r={};for(var l=0;l<n.length;l++){var s=this.cells3(n[l],g);r[n[l].idd]=s.getDate?s.getDate():s.getValue()}this._sortCore(g,o,h,r,n)}this._groups_put(q);this.setSizes();this.callEvent("onGridReconstructed",[])};dhtmlXGridObject.prototype._sortByGroup=function(l,n,g){var c=this._groups_get();var h=[];for(var m=0;m<c.length;m++){c[m].idd="_sort_"+m;h["_sort_"+m]=c[m]._cntr.text}this._sortCore(l,n,g,h,c);this._groups_put(c);this.callEvent("onGridReconstructed",[]);this.setSizes()};dhtmlXGridObject.prototype._inc_group=function(l,g,a){if(l===""){l=" "}if(!this._groups[l]){this._groups[l]={text:l,row:this._addPseudoRow(),count:0,state:g?"plus":"minus"}}var h=this._groups[l];h.row._cntr=h;var c=this.rowsCol._dhx_find(h.row)+h.count+1;h.count++;if(!a){this._updateGroupView(h);this.updateGroups()}return c};dhtmlXGridObject.prototype._dec_group=function(a){if(!a){return}a.count--;if(a.count==0){a.row.parentNode.removeChild(a.row);this.rowsCol._dhx_removeAt(this.rowsCol._dhx_find(a.row));delete this._groups[a.text]}else{this._updateGroupView(a)}if(this._fake&&!this._realfake){this._fake._dec_group(this._fake._groups[a.text])}this.updateGroups();return true};dhtmlXGridObject.prototype._insertRowAt_gA=dhtmlXGridObject.prototype._insertRowAt;dhtmlXGridObject.prototype._insertRowAt=function(g,h,c){if(typeof(this._groups)!="undefined"){if(this._realfake){var l=this._fake._bfs_cells(g.idd,this._gIndex).getValue()}else{if(this._bfs_cells3){var l=this._bfs_cells3(g,this._gIndex).getValue()}else{var l=this.cells3(g,this._gIndex).getValue()}}if(!l){l=" "}h=this._inc_group(l,g.style.display=="none")}var a=this._insertRowAt_gA(g,h,c);if(typeof(this._groups)!="undefined"){this.expandGroup(l);this._updateGroupView(this._groups[l]);this.updateGroups()}return a};dhtmlXGridObject.prototype._updateGroupView=function(g){if(this._fake&&!this._realfake){return g.row.firstChild.innerHTML=" "}var a=this._gmask||this._fake._gmask;var c="<img style='margin-bottom:-4px' src='"+this.imgURL+g.state+".gif'> ";if(this.customGroupFormat){c+=this.customGroupFormat(g.text,g.count)}else{c+=g.text+" ( "+g.count+" ) "}g.row.childNodes[a._title].innerHTML=c};dhtmlXGridObject.prototype._addPseudoRow=function(l){var a=this._gmask||this._fake._gmask;var h=a.cloneNode(true);for(var c=0;c<h.childNodes.length;c++){h.childNodes[c]._cellIndex=a.childNodes[c]._cellIndex;if(this._realfake){h.childNodes[c].style.display=""}}var g=this;h.onclick=function(m){if(!g.callEvent("onGroupClick",[this._cntr.text])){return}if(g._fake&&g._realfake){g._fake._switchGroupState(g._fake._groups[this._cntr.text].row)}else{g._switchGroupState(this)}(m||event).cancelBubble="true"};h.ondblclick=function(m){(m||event).cancelBubble="true"};if(!l){if(_isKHTML){this.obj.appendChild(h)}else{this.obj.firstChild.appendChild(h)}this.rowsCol.push(h)}return h};dhtmlXGridObject.prototype._groups_get=function(){var c=[];this._temp_par=this.obj.parentNode;this._temp_par.removeChild(this.obj);var g=[];for(var h=this.rowsCol.length-1;h>=0;h--){if(this.rowsCol[h]._cntr){this.rowsCol[h]._cntr._childs=g;g=[];c.push(this.rowsCol[h])}else{g.push(this.rowsCol[h])}this.rowsCol[h].parentNode.removeChild(this.rowsCol[h])}return c};dhtmlXGridObject.prototype._groups_put=function(a){var l=this.rowsCol.stablesort;this.rowsCol=new dhtmlxArray(0);this.rowsCol.stablesort=l;for(var h=0;h<a.length;h++){var g=a[h]._cntr;this.obj.firstChild.appendChild(g.row);this.rowsCol.push(g.row);g.row.idd=null;for(var c=0;c<g._childs.length;c++){this.obj.firstChild.appendChild(g._childs[c]);this.rowsCol.push(g._childs[c])}delete g._childs}this._temp_par.appendChild(this.obj)};dhtmlXGridObject.prototype._groupExisting=function(c){if(!this.getRowsNum()){return}var c=[];this._temp_par=this.obj.parentNode;this._temp_par.removeChild(this.obj);var g=[];var h=this.rowsCol.length;for(var l=0;l<h;l++){var n=this.cells4(this.rowsCol[l].childNodes[this._gIndex]).getValue();this.rowsCol[l].style.display="";if(!n){n=" "}if(!this._groups[n]){this._groups[n]={text:n,row:this._addPseudoRow(true),count:0,state:"minus"};var m=this._groups[n];m.row._cntr=m;this._groups[n]._childs=[];c.push(m.row)}this._groups[n].count++;this._groups[n]._childs.push(this.rowsCol[l]);this.rowsCol[l].parentNode.removeChild(this.rowsCol[l])}for(var l=0;l<c.length;l++){this._updateGroupView(c[l]._cntr)}this._groups_put(c);if(this._fake&&!this._realfake){this._mirror_rowsCol();this._fake._groups=[];this._fake._reset_view()}this.callEvent("onGridReconstructed",[]);this.updateGroups()};dhtmlXGridObject.prototype._switchGroupState=function(h){var g=h._cntr;if(this._fake&&!this._realfake){g.state=this._fake._groups[h._cntr.text].row._cntr.state;this._fake._switchGroupState(this._fake._groups[h._cntr.text].row)}var c=this.rowsCol._dhx_find(g.row)+1;g.state=g.state=="minus"?"plus":"minus";var a=g.state=="plus"?"none":"";while(this.rowsCol[c]&&!this.rowsCol[c]._cntr){this.rowsCol[c].style.display=a;c++}this._updateGroupView(g);this.callEvent("onGroupStateChanged",[g.text,(g.state=="minus")]);this.setSizes()};dhtmlXGridObject.prototype.expandGroup=function(a){if(this._groups[a].state=="plus"){this._switchGroupState(this._groups[a].row)}};dhtmlXGridObject.prototype.collapseGroup=function(a){if(this._groups[a].state=="minus"){this._switchGroupState(this._groups[a].row)}};dhtmlXGridObject.prototype.expandAllGroups=function(){for(var a in this._groups){if(this._groups[a]&&this._groups[a].state=="plus"){this._switchGroupState(this._groups[a].row)}}};dhtmlXGridObject.prototype.collapseAllGroups=function(){for(var a in this._groups){if(this._groups[a]&&this._groups[a].state=="minus"){this._switchGroupState(this._groups[a].row)}}};dhtmlXGridObject.prototype.hideGroupColumn=function(m,l){if(this._fake){return}var h=-1;var n=this._gmask.childNodes;for(var g=0;g<n.length;g++){if(n[g]._cellIndex==m){h=g;break}}if(h==-1){return}for(var c in this._groups){this._groups[c].row.childNodes[h].style.display=l?"none":""}};dhtmlXGridObject.prototype.groupStat=function(c,h,g){g=this["_g_"+(g||"stat_total")];var l=0;var a=0;this.forEachRowInGroup(c,function(m){l=g(l,this.cells(m,h).getValue()*1,a);a++});return l};dhtmlXGridObject.prototype.forEachRowInGroup=function(a,h){var l=this._groups[a].row.nextSibling;if(l){while(l&&!l._cntr){h.call(this,l.idd);l=l.nextSibling}}else{var g=this._groups[a]._childs;if(g){for(var c=0;c<g.length;c++){h.call(this,g[c].idd)}}}};dhtmlXGridObject.prototype.updateGroups=function(){if(!this._gmask||!this._gmask._math||this._parsing){return}var c=this._gmask.childNodes;for(var a=0;a<c.length;a++){if(c[a]._counter){this._b_processing.apply(this,c[a]._counter)}}};dhtmlXGridObject.prototype._b_processing=function(g,n,m){var o=0,h=0;if(!this._ecache[this.cellType[n]]){this.cells5({parentNode:{grid:this}},this.cellType[n])}for(var l=this.rowsCol.length-1;l>=0;l--){if(!this.rowsCol[l]._cntr){o=g(o,this.cells3(this.rowsCol[l],n).getValue()*1,h);h++}else{this.cells5(this.rowsCol[l].childNodes[m],this.cellType[n]).setValue(o);h=o=0}}};dhtmlXGridObject.prototype._g_stat_total=function(h,g,a){return h+g};dhtmlXGridObject.prototype._g_stat_min=function(h,g,a){if(!a){h=Infinity}return Math.min(h,g)};dhtmlXGridObject.prototype._g_stat_max=function(h,g,a){if(!a){h=-Infinity}return Math.max(h,g)};dhtmlXGridObject.prototype._g_stat_average=function(h,g,a){return(h*a+g)/(a+1)};dhtmlXGridObject.prototype._g_stat_count=function(h,g,a){return h++};dhtmlXGridObject.prototype._in_header_collapse=function(l,h,o){var a=l.tagName=="TD"?l:l.parentNode;h=a._cellIndexS;if(!this._column_groups){this._column_groups=[]}var n=o[1].split(":");var n=o[1].split(":");n=[n.shift(),n.join(":")];var m=parseInt(n[0]);l.innerHTML=o[0]+"<img src='"+this.imgURL+"minus.gif' style='padding-right:10px;height:16px'/><span style='position:relative; top:-6px;'>"+(n[1]||"")+"<span>";l.style.paddingBottom="0px";var g=this;this._column_groups[h]=l.getElementsByTagName("IMG")[0];this._column_groups[h].onclick=function(q){(q||event).cancelBubble=true;this._cstate=!this._cstate;for(var c=h+1;c<(h+m);c++){g.setColumnHidden(c,this._cstate)}if(this._cstate){if(a.colSpan&&a.colSpan>0){a._exp_colspan=a.colSpan;var u=Math.max(1,a.colSpan-m);if(!_isFF){for(var r=0;r<a.colSpan-u;r++){var s=document.createElement("TD");if(a.nextSibling){a.parentNode.insertBefore(s,a.nextSibling)}else{a.parentNode.appendChild(s)}}}a.colSpan=u}g.callEvent("onColumnCollapse",[h,this._cstate])}else{if(a._exp_colspan){a.colSpan=a._exp_colspan;if(!_isFF){for(var r=1;r<a._exp_colspan;r++){a.parentNode.removeChild(a.nextSibling)}}g.callEvent("onColumnCollapse",[h,this._cstate])}}this.src=g.imgURL+(this._cstate?"plus.gif":"minus.gif");if(g.sortImg.style.display!="none"){g.setSortImgPos()}}};dhtmlXGridObject.prototype.collapseColumns=function(a){if(!this._column_groups[a]||this._column_groups[a]._cstate){return}this._column_groups[a].onclick({})};dhtmlXGridObject.prototype.expandColumns=function(a){if(!this._column_groups[a]||!this._column_groups[a]._cstate){return}this._column_groups[a].onclick({})};dhtmlXGridObject.prototype.enableHeaderMenu=function(a){if(typeof a=="string"){a=a.split(",")}this._hm_config=a;var c=this;this.attachEvent("onInit",function(){this.hdr.oncontextmenu=function(g){return c._doHContClick(g||window.event)};this.startColResizeA=this.startColResize;this.startColResize=function(g){if(g.button==2||(_isMacOS&&g.ctrlKey)){return this._doHContClick(g)}return this.startColResizeA(g)};this._chm_ooc=this.obj.onclick;this._chm_hoc=this.hdr.onclick;this.hdr.onclick=function(g){if(g&&(g.button==2||(_isMacOS&&g.ctrlKey))){return false}c._showHContext(false);return c._chm_hoc.apply(this,arguments)};this.obj.onclick=function(){c._showHContext(false);return c._chm_ooc.apply(this,arguments)}});dhtmlxEvent(document.body,"click",function(){if(c._hContext){c._showHContext(false)}});if(this.hdr.rows.length){this.callEvent("onInit",[])}this.enableHeaderMenu=function(){}};dhtmlXGridObject.prototype._doHContClick=function(c){function a(h){if(h.pageX||h.pageY){return{x:h.pageX,y:h.pageY}}var l=((_isIE)&&(document.compatMode!="BackCompat"))?document.documentElement:document.body;return{x:h.clientX+l.scrollLeft-l.clientLeft,y:h.clientY+l.scrollTop-l.clientTop}}this._createHContext();var g=a(c);this._showHContext(true,g.x,g.y);c[_isIE?"srcElement":"target"].oncontextmenu=function(h){(h||event).cancelBubble=true;return false};c.cancelBubble=true;if(c.preventDefault){c.preventDefault()}return false};dhtmlXGridObject.prototype._createHContext=function(){if(this._hContext){return this._hContext}var q=document.createElement("DIV");q.oncontextmenu=function(a){(a||event).cancelBubble=true;return false};q.onclick=function(a){(a||event).cancelBubble=true;return true};q.className="dhx_header_cmenu";q.style.width=q.style.height="5px";q.style.display="none";var g=[];var h=0;if(this._fake){h=this._fake._cCount}var n=h;for(var h;h<this.hdr.rows[1].cells.length;h++){var r=this.hdr.rows[1].cells[h];if(!this._hm_config||(this._hm_config[h]&&this._hm_config[h]!="false")){if(r.firstChild&&r.firstChild.tagName=="DIV"){var o=r.firstChild.innerHTML}else{var o=r.innerHTML}o=o.replace(/<[^>]*>/gi,"");g.push("<div class='dhx_header_cmenu_item'><input type='checkbox' column='"+n+"' len='"+(r.colSpan||1)+"' checked='true' />"+o+"</div>")}n+=(r.colSpan||1)}q.innerHTML=g.join("");var l=this;var m=function(){var s=this.getAttribute("column");if(!this.checked&&!l._checkLast(s)){return this.checked=true}if(l._realfake){l=l._fake}for(var a=0;a<this.getAttribute("len");a++){l.setColumnHidden((s*1+a*1),!this.checked)}if(this.checked&&l.getColWidth(s)==0){l.adjustColumnSize(s)}};for(var h=0;h<q.childNodes.length;h++){q.childNodes[h].firstChild.onclick=m}document.body.insertBefore(q,document.body.firstChild);this._hContext=q;q.style.position="absolute";q.style.zIndex=999;q.style.width="auto";q.style.height="auto";q.style.display="block"};dhtmlXGridObject.prototype._checkLast=function(c){for(var a=0;a<this._cCount;a++){if((!this._hrrar||!this._hrrar[a])&&(a!=c)){return true}}return false};dhtmlXGridObject.prototype._updateHContext=function(){for(var g=0;g<this._hContext.childNodes.length;g++){var h=this._hContext.childNodes[g].firstChild;var a=h.getAttribute("column");if(this.isColumnHidden(a)||(this.getColWidth(a)==0)){h.checked=false}}};dhtmlXGridObject.prototype._showHContext=function(c,a,g){if(c&&this.enableColumnMove){this._hContext.parentNode.removeChild(this._hContext);this._hContext=null}this._createHContext();this._hContext.style.display=(c?"block":"none");if(c){this._updateHContext(true);this._hContext.style.left=a+"px";this._hContext.style.top=g+"px"}};dhtmlXGridObject.prototype._process_json_row=function(l,m){l._attrs=m;for(var g=0;g<l.childNodes.length;g++){l.childNodes[g]._attrs={}}if(m.userdata){for(var c in m.userdata){this.setUserData(l.idd,c,m.userdata[c])}}m=this._c_order?this._swapColumns(m.data):m.data;for(var h=0;h<m.length;h++){if(typeof m[h]=="object"&&m[h]!=null){l.childNodes[h]._attrs=m[h];if(m[h].type){l.childNodes[h]._cellType=m[h].type}m[h]=m[h].value}}this._fillRow(l,m);return l};dhtmlXGridObject.prototype._process_js_row=function(m,n){m._attrs=n;for(var h=0;h<m.childNodes.length;h++){m.childNodes[h]._attrs={}}if(n.userdata){for(var g in n.userdata){this.setUserData(m.idd,g,n.userdata[g])}}var c=[];for(var l=0;l<this.columnIds.length;l++){c[l]=n[this.columnIds[l]];if(typeof c[l]=="object"&&c[l]!=null){m.childNodes[l]._attrs=c[l];if(c[l].type){m.childNodes[l]._cellType=c[l].type}c[l]=c[l].value}if(!c[l]&&c[l]!==0){c[l]=""}}this._fillRow(m,c);return m};dhtmlXGridObject.prototype.updateFromJSON=function(a,h,c,g){if(typeof h=="undefined"){h=true}this._refresh_mode=[true,h,c];this.load(a,g,"json")},dhtmlXGridObject.prototype._refreshFromJSON=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 l=g.parent||0;var n={};if(this._refresh_mode[2]){if(r!=-1){this._h2.forEachChild(l,function(s){n[s.id]=true},this)}else{this.forEachRow(function(s){n[s]=true})}}var q=g.rows;for(var h=0;h<q.length;h++){var o=q[h];var a=o.id;n[a]=false;if(this.rowsAr[a]&&this.rowsAr[a].tagName!="TR"){if(this._h2){this._h2.get[a].buff.data=o}else{this.rowsBuffer[this.getRowIndex(a)].data=o}this.rowsAr[a]=o}else{if(this.rowsAr[a]){this._process_json_row(this.rowsAr[a],o,-1);this._postRowProcessing(this.rowsAr[a],true)}else{if(this._refresh_mode[1]){var m={idd:a,data:o,_parser:this._process_json_row,_locator:this._get_json_data};var c=this.rowsBuffer.length;if(this._refresh_mode[1]=="top"){this.rowsBuffer.unshift(m);c=0}else{this.rowsBuffer.push(m)}if(this._h2){reset=true;(this._h2.add(a,l)).buff=this.rowsBuffer[this.rowsBuffer.length-1]}this.rowsAr[a]=o;o=this.render_row(c);this._insertRowAt(o,c?-1:0)}}}}if(this._refresh_mode[2]){for(a in n){if(n[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){this._renderSort()}if(this._f_rowsBuffer){this._f_rowsBuffer=null;this.filterByAll()}},dhtmlXGridObject.prototype._process_js=function(a){return this._process_json(a,"js")},dhtmlXGridObject.prototype._process_json=function(data,mode){this._parsing=true;try{if(data&&data.xmlDoc){eval("dhtmlx.temp="+data.xmlDoc.responseText+";");data=dhtmlx.temp}else{if(typeof data=="string"){eval("dhtmlx.temp="+data+";");data=dhtmlx.temp}}}catch(e){dhtmlxError.throwError("LoadXML","Incorrect JSON",[(data.xmlDoc||data),this]);data={rows:[]}}if(this._refresh_mode){return this._refreshFromJSON(data)}var cr=parseInt(data.pos||0);var total=parseInt(data.total_count||0);var reset=false;if(total){if(!this.rowsBuffer[total-1]){if(this.rowsBuffer.length){reset=true}this.rowsBuffer[total-1]=null}if(total<this.rowsBuffer.length){this.rowsBuffer.splice(total,this.rowsBuffer.length-total);reset=true}}for(var key in data){if(key!="rows"){this.setUserData("",key,data[key])}}if(mode=="js"&&data.collections){for(var colkey in data.collections){var index=this.getColIndexById(colkey);var colrecs=data.collections[colkey];if(index!==window.undefined){if(this.cellType[index]=="clist"){colplaindata=[];for(var j=0;j<colrecs.length;j++){colplaindata.push(colrecs[j].label)}this.registerCList(index,colplaindata)}else{var combo=this.getCombo(index);for(var j=0;j<colrecs.length;j++){combo.put(colrecs[j].value,colrecs[j].label)}}}}}if(this.isTreeGrid()){return this._process_tree_json(data,null,null,mode)}if(mode=="js"){if(data.data){data=data.data}for(var i=0;i<data.length;i++){if(this.rowsBuffer[i+cr]){continue}var row=data[i];var id=row.id||(i+1);this.rowsBuffer[i+cr]={idd:id,data:row,_parser:this._process_js_row,_locator:this._get_js_data};this.rowsAr[id]=data[i]}}else{for(var i=0;i<data.rows.length;i++){if(this.rowsBuffer[i+cr]){continue}var id=data.rows[i].id;this.rowsBuffer[i+cr]={idd:id,data:data.rows[i],_parser:this._process_json_row,_locator:this._get_json_data};this.rowsAr[id]=data.rows[i]}}this.callEvent("onDataReady",[]);if(reset&&this._srnd){var h=this.objBox.scrollTop;this._reset_view();this.objBox.scrollTop=h}else{this.render_dataset()}this._parsing=false};dhtmlXGridObject.prototype._get_json_data=function(c,a){if(typeof c.data[a]=="object"){return c.data[a].value}else{return c.data[a]}};dhtmlXGridObject.prototype._process_tree_json=function(h,l,c,n){this._parsing=true;var a=false;if(!l){this.render_row=this.render_row_tree;a=true;l=h;c=l.parent||0;if(c=="0"){c=0}if(!this._h2){this._h2=new dhtmlxHierarchy()}if(this._fake){this._fake._h2=this._h2}}if(n=="js"){if(l.data&&!c){h=l.data}if(l.rows){l=l.rows}for(var g=0;g<l.length;g++){var o=l[g].id;var m=this._h2.add(o,c);m.buff={idd:o,data:l[g],_parser:this._process_js_row,_locator:this._get_js_data};if(l[g].open){m.state="minus"}this.rowsAr[o]=m.buff;this._process_tree_json(l[g],l[g],o,n)}}else{if(l.rows){for(var g=0;g<l.rows.length;g++){var o=l.rows[g].id;var m=this._h2.add(o,c);m.buff={idd:o,data:l.rows[g],_parser:this._process_json_row,_locator:this._get_json_data};if(l.rows[g].open){m.state="minus"}this.rowsAr[o]=m.buff;this._process_tree_json(l.rows[g],l.rows[g],o,n)}}}if(a){if(c!=0){this._h2.change(c,"state","minus")}this._updateTGRState(this._h2.get[c]);this._h2_to_buff();this.callEvent("onDataReady",[]);if(c!=0&&(this._srnd||this.pagingOn)){this._renderSort()}else{this.render_dataset()}if(this._slowParse===false){this.forEachRow(function(q){this.render_row_tree(0,q)})}this._parsing=false;if(c!=0&&!this._srnd){this.callEvent("onOpenEnd",[c,1])}}};dhtmlXGridObject.prototype.enableMarkedCells=function(a){this.markedRowsArr=new dhtmlxArray(0);this.markedCellsArr=new Array(0);this.lastMarkedRow=null;this.lastMarkedColumn=null;this.markedCells=true;this.lastMarkMethod=0;if(arguments.length>0){if(!convertStringToBoolean(a)){this.markedCells=false}}};dhtmlXGridObject.prototype.doMark=function(g,n){var m=g.parentNode.idd;this.setActive(true);if(!m){return}this.editStop();this.cell=g;this.row=g.parentNode;var q=g._cellIndex;if(!n){n=0}if(n==0){this.unmarkAll()}else{if(n==1){if(this.lastMarkedRow){var c=Math.min(this.getRowIndex(m),this.getRowIndex(this.lastMarkedRow));var o=Math.max(this.getRowIndex(m),this.getRowIndex(this.lastMarkedRow));var a=Math.min(q,this.lastMarkedColumn);var r=Math.max(q,this.lastMarkedColumn);for(var l=c;l<o+1;l++){for(var h=a;h<r+1;h++){this.mark(this.getRowId(l),h,true)}}}}else{if(n==2){if(this.markedRowsArr._dhx_find(m)!=-1){for(var s=0;s<this.markedCellsArr[m].length;s++){if(this.markedCellsArr[m][s]==q){this.mark(m,q,false);return true}}}}}}if(!this.markedCellsArr[m]){this.markedCellsArr[m]=new dhtmlxArray(0)}if(n!=1){this.mark(m,q)}this.moveToVisible(this.cells(m,q).cell);this.lastMarkedRow=m;this.lastMarkedColumn=q;this.lastMarkMethod=n};dhtmlXGridObject.prototype.mark=function(g,c,h){if(arguments.length>2){if(!convertStringToBoolean(h)){this.cells(g,c).cell.className=this.cells(g,c).cell.className.replace(/cellselected/g,"");if(this.markedRowsArr._dhx_find(g)!=-1){var a=this.markedCellsArr[g]._dhx_find(c);if(a!=-1){this.markedCellsArr[g]._dhx_removeAt(a);if(this.markedCellsArr[g].length==0){this.markedRowsArr._dhx_removeAt(this.markedRowsArr._dhx_find(g))}this.callEvent("onCellUnMarked",[g,c])}}return true}}this.cells(g,c).cell.className+=" cellselected";if(this.markedRowsArr._dhx_find(g)==-1){this.markedRowsArr[this.markedRowsArr.length]=g}if(!this.markedCellsArr[g]){this.markedCellsArr[g]=new dhtmlxArray(0)}if(this.markedCellsArr[g]._dhx_find(c)==-1){this.markedCellsArr[g][this.markedCellsArr[g].length]=c;this.callEvent("onCellMarked",[g,c])}};dhtmlXGridObject.prototype.unmarkAll=function(){if(this.markedRowsArr){for(var a=0;a<this.markedRowsArr.length;a++){var g=this.markedRowsArr[a];if(this.rowsAr[g]){for(var c=0;c<this.markedCellsArr[g].length;c++){this.callEvent("onCellUnMarked",[g,this.markedCellsArr[g][c]]);this.cells(g,this.markedCellsArr[g][c]).cell.className=this.cells(g,this.markedCellsArr[g][c]).cell.className.replace(/cellselected/g,"")}}}this.markedRowsArr=new dhtmlxArray(0);this.markedCellsArr=new Array(0)}return true};dhtmlXGridObject.prototype.getMarked=function(){var g=new Array();if(this.markedRowsArr){for(var a=0;a<this.markedRowsArr.length;a++){var h=this.markedRowsArr[a];for(var c=0;c<this.markedCellsArr[h].length;c++){g[g.length]=[h,this.markedCellsArr[h][c]]}}}return g};function eXcell_math(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.edit=function(){this.grid.editor=new eXcell_ed(this.cell);this.grid.editor.fix_self=true;this.grid.editor.getValue=this.cell.original?(function(){return this.cell.original}):this.getValue;this.grid.editor.setValue=this.setValue;this.grid.editor.edit()};this.isDisabled=function(){return !this.grid._mathEdit};this.setValue=function(c){c=this.grid._compileSCL(c,this.cell,this.fix_self);if(this.grid._strangeParams[this.cell._cellIndex]){this.grid.cells5(this.cell,this.grid._strangeParams[this.cell._cellIndex]).setValue(c)}else{this.setCValue(c);this.cell._clearCell=false}};this.getValue=function(){if(this.grid._strangeParams[this.cell._cellIndex]){return this.grid.cells5(this.cell,this.grid._strangeParams[this.cell._cellIndex]).getValue()}return this.cell.innerHTML}}eXcell_math.prototype=new eXcell;dhtmlXGridObject.prototype._init_point_bm=dhtmlXGridObject.prototype._init_point;dhtmlXGridObject.prototype._init_point=function(){this._mat_links={};this._aggregators=[];this.attachEvent("onClearAll",function(){this._mat_links={};this._aggregators=[]});this.attachEvent("onCellChanged",function(m,l){if(this._mat_links[m]){var a=this._mat_links[m][l];if(a){for(var h=0;h<a.length;h++){if(a[h].parentNode){this.cells5(a[h]).setValue(this._calcSCL(a[h]))}}}}if(!this._parsing&&this._aggregators[l]){var g=this._h2.get[m].parent.id;if(g!=0){var c=this.cells(g,l);c.setValue(this._calcSCL(c.cell))}}});this.attachEvent("onAfterRowDeleted",function(h,c){if(c!=0){if(!this._parsing&&this._aggregators.length){for(var g=0;g<this._aggregators.length;g++){if(this._aggregators[g]){var a=this.cells(c,g);a.setValue(this._calcSCL(a.cell))}}}}return true});this.attachEvent("onXLE",function(){for(var a=0;a<this._aggregators.length;a++){if(this._aggregators[a]){this._h2.forEachChild(0,function(g){if(g.childs.length!=0){var c=this.cells(g.id,a);c.setValue(this._calcSCL(c.cell))}},this)}}});this._init_point=this._init_point_bm;if(this._init_point){this._init_point()}};dhtmlXGridObject.prototype.enableMathSerialization=function(a){this._mathSerialization=convertStringToBoolean(a)};dhtmlXGridObject.prototype.setMathRound=function(a){this._roundDl=a;this._roundD=Math.pow(10,a)};dhtmlXGridObject.prototype.enableMathEditing=function(a){this._mathEdit=convertStringToBoolean(a)};dhtmlXGridObject.prototype._calcSCL=function(cell){if(!cell._code){return this.cells5(cell).getValue()}try{dhtmlx.agrid=this;var z=eval(cell._code)}catch(e){return("#SCL")}if(this._roundD){var pre=Math.abs(z)<1?"0":"";if(z<0){pre="-"+pre}z=Math.round(Math.abs(z)*this._roundD).toString();if(z==0){return 0}if(this._roundDl>0){var n=z.length-this._roundDl;if(n<0){z=("000000000"+z).substring(9+n);n=0}return(pre+z.substring(0,n)+"."+z.substring(n,z.length))}return pre+z}return z};dhtmlXGridObject.prototype._countTotal=function(m,c){var a=0;var l=this._h2.get[m];for(var g=0;g<l.childs.length;g++){if(!l.childs[g].buff){return a}if(l.childs[g].buff._parser){this._h2.forEachChild(m,function(n){if(n.childs.length==0){var o=parseFloat(this._get_cell_value(n.buff,c),10);if(o){a+=o}}},this);return a}var h=parseFloat(this._get_cell_value(l.childs[g].buff,c),10);if(h){a+=h}}return a};dhtmlXGridObject.prototype._compileSCL=function(g,c,a){if(g===null||g===window.undefined){return g}g=g.toString();if(g.indexOf("=")!=0||!c.parentNode){this._reLink([],c);if(a){c._code=c.original=null}return g}c.original=g;var m=null;g=g.replace("=","");if(g.indexOf("sum")!=-1){g=g.replace("sum","(dhtmlx.agrid._countTotal('"+c.parentNode.idd+"',"+c._cellIndex+"))");if(!this._aggregators){this._aggregators=[]}this._aggregators[c._cellIndex]="sum";c._code=g;return this._parsing?"":this._calcSCL(c)}if(g.indexOf("[[")!=-1){var l=/(\[\[([^\,]*)\,([^\]]*)]\])/g;dhtmlx.agrid=this;m=m||(new Array());g=g.replace(l,function(o,n,r,q){if(r=="-"){r=c.parentNode.idd}if(r.indexOf("#")==0){r=dhtmlx.agrid.getRowId(r.replace("#",""))}m[m.length]=[r,q];return'(parseFloat(dhtmlx.agrid.cells("'+r+'",'+q+").getValue(),10))"})}if(g.indexOf(":")!=-1){var l=/:(\w+)/g;dhtmlx.agrid=this;var h=c.parentNode.idd;m=m||(new Array());g=g.replace(l,function(o,n,r,q){m[m.length]=[h,dhtmlx.agrid.getColIndexById(n)];return'(parseFloat(dhtmlx.agrid.cells("'+h+'",dhtmlx.agrid.getColIndexById("'+n+'")).getValue(),10))'})}else{var l=/c([0-9]+)/g;dhtmlx.agrid=this;var h=c.parentNode.idd;m=m||(new Array());g=g.replace(l,function(o,n,r,q){m[m.length]=[h,n];return'(parseFloat(dhtmlx.agrid.cells("'+h+'",'+n+").getValue(),10))"})}this._reLink(m,c);c._code=g;return this._calcSCL(c)};dhtmlXGridObject.prototype._reLink=function(c,a){if(!c.length){return}for(var h=0;h<c.length;h++){if(!this._mat_links[c[h][0]]){this._mat_links[c[h][0]]={}}var g=this._mat_links[c[h][0]];if(!g[c[h][1]]){g[c[h][1]]=[]}g[c[h][1]].push(a)}};if(_isKHTML){(function(){var a=String.prototype.replace;String.prototype.replace=function(r,g){if(typeof g!="function"){return a.apply(this,arguments)}var l=""+this;var o=g;if(!(r instanceof RegExp)){var n=l.indexOf(r);return(n==-1?l:a.apply(l,[r,o(r,n,l)]))}var c=r;var s=[];var m=c.lastIndex;var q;while((q=c.exec(l))!=null){var n=q.index;var h=q.concat(n,l);s.push(l.slice(m,n),o.apply(null,h).toString());if(!c.global){m+=RegExp.lastMatch.length;break}else{m=c.lastIndex}}s.push(l.slice(m));return s.join("")}})()}dhtmlXGridObject.prototype.insertColumn=function(g,o,r,a,n,q,u,c,l){g=parseInt(g);if(g>this._cCount){g=this._cCount}if(!this._cMod){this._cMod=this._cCount}this._processAllArrays(this._cCount,g-1,[(o||" "),(a||100),(r||"ed"),(q||"left"),(u||""),(n||"na"),(l||""),"",this._cMod,(a||100)]);this._processAllRows("_addColInRow",g);if(typeof(o)=="object"){for(var m=1;m<this.hdr.rows.length;m++){if(o[m-1]=="#rspan"){var w=m-1;var v=false;var s=null;while(!v){var s=this.hdr.rows[w];for(var h=0;h<s.cells.length;h++){if(s.cells[h]._cellIndex==g){v=h;break}}w--}this.hdr.rows[w+1].cells[h].rowSpan=(this.hdr.rows[w].cells[h].rowSpan||1)+1}else{this.setHeaderCol(g,(o[m-1]||" "),m)}}}else{this.setHeaderCol(g,(o||" "))}this.hdr.rows[0].cells[g];this._cCount++;this._cMod++;this._master_row=null;this.setSizes()};dhtmlXGridObject.prototype.deleteColumn=function(a){a=parseInt(a);if(this._cCount==0){return}if(!this._cMod){this._cMod=this._cCount}if(a>=this._cCount){return}this._processAllArrays(a,this._cCount-1,[null,null,null,null,null,null,null,null,null,null,null]);this._processAllRows("_deleteColInRow",a);this._cCount--;this._master_row=null;this.setSizes()};dhtmlXGridObject.prototype._processAllRows=function(l,a,c){this[l](this.obj.rows[0],a,c,0);var h=this.hdr.rows.length;for(var g=0;g<h;g++){this[l](this.hdr.rows[g],a,c,g)}if(this.ftr){var h=this.ftr.firstChild.rows.length;for(var g=0;g<h;g++){this[l](this.ftr.firstChild.rows[g],a,c,g)}}this.forEachRow(function(m){if(this.rowsAr[m]&&this.rowsAr[m].tagName=="TR"){this[l](this.rowsAr[m],a,c,-1)}})};dhtmlXGridObject.prototype._processAllArrays=function(r,a,q){var m=["hdrLabels","initCellWidth","cellType","cellAlign","cellVAlign","fldSort","columnColor","_hrrar","_c_order"];if(this.cellWidthPX.length){m.push("cellWidthPX")}if(this.cellWidthPC.length){m.push("cellWidthPC")}if(this._col_combos){m.push("_col_combos")}if(this._mCols){m[m.length]="_mCols"}if(this.columnIds){m[m.length]="columnIds"}if(this._maskArr){m.push("_maskArr")}if(this._drsclmW){m.push("_drsclmW")}if(this._RaSeCol){m.push("_RaSeCol")}if(this._hm_config){m.push("_hm_config")}if(this._drsclmn){m.push("_drsclmn")}if(this.clists){m.push("clists")}if(this._validators&&this._validators.data){m.push(this._validators.data)}m.push("combos");if(this._customSorts){m.push("_customSorts")}if(this._aggregators){m.push("_aggregators")}var o=(r<=a);if(!this._c_order){this._c_order=new Array();var g=this._cCount;for(var n=0;n<g;n++){this._c_order[n]=n}}for(var n=0;n<m.length;n++){var s=this[m[n]]||m[n];if(s){if(o){var c=s[r];for(var h=r;h<a;h++){s[h]=s[h+1]}s[a]=c}else{var c=s[r];for(var h=r;h>(a+1);h--){s[h]=s[h-1]}s[a+1]=c}if(q){s[a+(o?0:1)]=q[n]}}}};dhtmlXGridObject.prototype.moveColumn=function(a,c){c--;a=parseInt(a);c=parseInt(c);if(c<a){var g=c+1}else{var g=c}if(!this.callEvent("onBeforeCMove",[a,g])){return false}if(a==g){return}this.editStop();this._processAllRows("_moveColInRow",a,c);this._processAllArrays(a,c);if(this.fldSorted){this.setSortImgPos(this.fldSorted._cellIndex)}this.callEvent("onAfterCMove",[a,g])};dhtmlXGridObject.prototype._swapColumns=function(c){var g=new Array();for(var a=0;a<this._cCount;a++){var h=c[this._c_order[a]];if(typeof(h)=="undefined"){h=""}g[a]=h}return g};dhtmlXGridObject.prototype._moveColInRow=function(m,a,g){var n=m.childNodes[a];var l=m.childNodes[g+1];if(!n){return}if(l){m.insertBefore(n,l)}else{m.appendChild(n)}for(var h=0;h<m.childNodes.length;h++){m.childNodes[h]._cellIndex=m.childNodes[h]._cellIndexS=h}};dhtmlXGridObject.prototype._addColInRow=function(o,m,a,h){var l=m;if(o._childIndexes){if(o._childIndexes[m-1]==o._childIndexes[m]||!o.childNodes[o._childIndexes[m-1]]){for(var g=o._childIndexes.length;g>=m;g--){o._childIndexes[g]=g?(o._childIndexes[g-1]+1):0}o._childIndexes[m]--}else{for(var g=o._childIndexes.length;g>=m;g--){o._childIndexes[g]=g?(o._childIndexes[g-1]+1):0}}var l=o._childIndexes[m]}var q=o.childNodes[l];var n=document.createElement((h)?"TD":"TH");if(h){n._attrs={}}else{n.style.width=(parseInt(this.cellWidthPX[m])||"100")+"px"}if(q){o.insertBefore(n,q)}else{o.appendChild(n)}if(this.dragAndDropOff&&o.idd){this.dragger.addDraggableItem(o.childNodes[l],this)}for(var g=l+1;g<o.childNodes.length;g++){o.childNodes[g]._cellIndex=o.childNodes[g]._cellIndexS=o.childNodes[g]._cellIndex+1}if(o.childNodes[l]){o.childNodes[l]._cellIndex=o.childNodes[l]._cellIndexS=m}if(o.idd||typeof(o.idd)!="undefined"){this.cells3(o,m).setValue("");n.align=this.cellAlign[m];n.style.verticalAlign=this.cellVAlign[m];n.bgColor=this.columnColor[m]}else{if(n.tagName=="TD"){if(!o.idd&&this.forceDivInHeader){n.innerHTML="<div class='hdrcell'> </div>"}else{n.innerHTML=" "}}}};dhtmlXGridObject.prototype._deleteColInRow=function(o,n){var g=n;if(o._childIndexes){n=o._childIndexes[n]}var q=o.childNodes[n];if(!q){return}if(q.colSpan&&q.colSpan>1&&q.parentNode.idd){var l=q.colSpan-1;var a=this.cells4(q).getValue();this.setColspan(q.parentNode.idd,q._cellIndex,1);if(l>1){var m=q._cellIndex*1;this.setColspan(q.parentNode.idd,m+1,l);this.cells(q.parentNode.idd,q._cellIndex*1+1).setValue(a);o._childIndexes.splice(m,1);for(var h=m;h<o._childIndexes.length;h++){o._childIndexes[h]-=1}}}else{if(o._childIndexes){o._childIndexes.splice(g,1);for(var h=g;h<o._childIndexes.length;h++){o._childIndexes[h]--}}}if(q){o.removeChild(q)}for(var h=n;h<o.childNodes.length;h++){o.childNodes[h]._cellIndex=o.childNodes[h]._cellIndexS=o.childNodes[h]._cellIndex-1}};dhtmlXGridObject.prototype.enableColumnMove=function(c,a){this._mCol=convertStringToBoolean(c);if(typeof(a)!="undefined"){this._mCols=a.split(",")}if(!this._mmevTrue){dhtmlxEvent(this.hdr,"mousedown",this._startColumnMove);dhtmlxEvent(document.body,"mousemove",this._onColumnMove);dhtmlxEvent(document.body,"mouseup",this._stopColumnMove);this._mmevTrue=true}};dhtmlXGridObject.prototype._startColumnMove=function(h){h=h||event;var g=h.target||h.srcElement;var a=g;while(a.tagName!="TABLE"){a=a.parentNode}var c=a.grid;if(!c){return}c.setActive();if(!c._mCol||h.button==2){return}g=c.getFirstParentOfType(g,"TD");if(g.style.cursor!="default"){return true}if((c)&&(!c._colInMove)){c.resized=null;if((!c._mCols)||(c._mCols[g._cellIndex]=="true")){c._colInMove=g._cellIndex+1}}return true};dhtmlXGridObject.prototype._onColumnMove=function(l){l=l||event;var a=window.globalActiveDHTMLGridObject;if((a)&&(a._colInMove)){if(a._showHContext){a._showHContext(false)}if(typeof(a._colInMove)!="object"){var m=document.createElement("DIV");m._aIndex=(a._colInMove-1);m._bIndex=null;m.innerHTML=a.getHeaderCol(m._aIndex);m.className="dhx_dragColDiv";m.style.position="absolute";document.body.appendChild(m);a._colInMove=m}var h=[];h[0]=(document.body.scrollLeft||document.documentElement.scrollLeft);h[1]=(document.body.scrollTop||document.documentElement.scrollTop);a._colInMove.style.left=l.clientX+h[0]+8+"px";a._colInMove.style.top=l.clientY+h[1]+8+"px";var c=l.target||l.srcElement;while((c)&&(typeof(c._cellIndexS)=="undefined")){c=c.parentNode}if(a._colInMove._oldHe){a._colInMove._oldHe.className=a._colInMove._oldHe.className.replace(/columnTarget(L|R)/g,"");a._colInMove._oldHe=null;a._colInMove._bIndex=null}if(c){if(a.hdr.rows[1]._childIndexes){var g=a.hdr.rows[1].cells[a.hdr.rows[1]._childIndexes[c._cellIndexS]]}else{var g=a.hdr.rows[1].cells[c._cellIndexS]}var m=l.clientX-(getAbsoluteLeft(g)-a.hdrBox.scrollLeft);if(m/g.offsetWidth>0.5){g.className+=" columnTargetR";a._colInMove._bIndex=c._cellIndexS}else{g.className+=" columnTargetL";a._colInMove._bIndex=c._cellIndexS-1}if(g.offsetLeft<(a.objBox.scrollLeft+20)){a.objBox.scrollLeft=Math.max(0,g.offsetLeft-20)}if((g.offsetLeft+g.offsetWidth-a.objBox.scrollLeft)>(a.objBox.offsetWidth-20)){a.objBox.scrollLeft=Math.min(a.objBox.scrollLeft+g.offsetWidth+20,a.objBox.scrollWidth-a.objBox.offsetWidth)}a._colInMove._oldHe=g}l.cancelBubble=true;return false}return true};dhtmlXGridObject.prototype._stopColumnMove=function(c){c=c||event;var a=window.globalActiveDHTMLGridObject;if((a)&&(a._colInMove)){if(typeof(a._colInMove)=="object"){a._colInMove.parentNode.removeChild(a._colInMove);if(a._colInMove._bIndex!=null){a.moveColumn(a._colInMove._aIndex,a._colInMove._bIndex+1)}if(a._colInMove._oldHe){a._colInMove._oldHe.className=a._colInMove._oldHe.className.replace(/columnTarget(L|R)/g,"")}a._colInMove._oldHe=null;a._colInMove.grid=null;a.resized=true}a._colInMove=0}return true};dhtmlXGridObject.prototype.mouseOverHeader=function(c){var a=this;dhtmlxEvent(this.hdr,"mousemove",function(h){h=h||window.event;var g=h.target||h.srcElement;if(g.tagName!="TD"){g=a.getFirstParentOfType(g,"TD")}if(g&&(typeof(g._cellIndex)!="undefined")){c(g.parentNode.rowIndex,g._cellIndex)}})};dhtmlXGridObject.prototype.mouseOver=function(c){var a=this;dhtmlxEvent(this.obj,"mousemove",function(h){h=h||window.event;var g=h.target||h.srcElement;if(g.tagName!="TD"){g=a.getFirstParentOfType(g,"TD")}if(g&&(typeof(g._cellIndex)!="undefined")){c(g.parentNode.rowIndex,g._cellIndex)}})};dhtmlXGridObject.prototype.enablePaging=function(m,h,c,l,a,g){this._pgn_parentObj=typeof(l)=="string"?document.getElementById(l):l;this._pgn_recInfoParentObj=typeof(g)=="string"?document.getElementById(g):g;this.pagingOn=m;this.showRecInfo=a;this.rowsBufferOutSize=parseInt(h);this.currentPage=1;this.pagesInGroup=parseInt(c);this._init_pgn_events();this.setPagingSkin("default")};dhtmlXGridObject.prototype.setXMLAutoLoading=function(a,c){this.xmlFileUrl=a;this._dpref=c};dhtmlXGridObject.prototype.changePageRelative=function(a){this.changePage(this.currentPage+a)};dhtmlXGridObject.prototype.changePage=function(a){if(arguments.length==0){a=this.currentPage||0}a=parseInt(a);a=Math.max(1,Math.min(a,Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize)));if(!this.callEvent("onBeforePageChanged",[this.currentPage,a])){return}this.currentPage=parseInt(a);this._reset_view();this._fixAlterCss();this.callEvent("onPageChanged",this.getStateOfView())};dhtmlXGridObject.prototype.setPagingSkin=function(a){this._pgn_skin=this["_pgn_"+a];if(a=="toolbar"){this._pgn_skin_tlb=arguments[1]}};dhtmlXGridObject.prototype.setPagingTemplates=function(g,c){this._pgn_templateA=this._pgn_template_compile(g);this._pgn_templateB=this._pgn_template_compile(c);this._page_skin_update()};dhtmlXGridObject.prototype._page_skin_update=function(a){if(!this.pagesInGroup){this.pagesInGroup=Math.ceil(Math.min(5,this.rowsBuffer.length/this.rowsBufferOutSize))}var c=Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize);if(c&&c<this.currentPage){return this.changePage(c)}if(this.pagingOn&&this._pgn_skin){this._pgn_skin.apply(this,this.getStateOfView())}};dhtmlXGridObject.prototype._init_pgn_events=function(a){this.attachEvent("onXLE",this._page_skin_update);this.attachEvent("onClearAll",this._page_skin_update);this.attachEvent("onPageChanged",this._page_skin_update);this.attachEvent("onGridReconstructed",this._page_skin_update);this._init_pgn_events=function(){}};dhtmlXGridObject.prototype._pgn_default=function(g,h,a){if(!this.pagingBlock){this.pagingBlock=document.createElement("DIV");this.pagingBlock.className="pagingBlock";this.recordInfoBlock=document.createElement("SPAN");this.recordInfoBlock.className="recordsInfoBlock";if(!this._pgn_parentObj){return}this._pgn_parentObj.appendChild(this.pagingBlock);if(this._pgn_recInfoParentObj&&this.showRecInfo){this._pgn_recInfoParentObj.appendChild(this.recordInfoBlock)}if(!this._pgn_templateA){this._pgn_templateA=this._pgn_template_compile("[prevpages:<: ] [currentpages:, ] [nextpages:>: ]");this._pgn_templateB=this._pgn_template_compile("Results <b>[from]-[to]</b> of <b>[total]</b>")}}var c=this.getStateOfView();this.pagingBlock.innerHTML=this._pgn_templateA.apply(this,c);this.recordInfoBlock.innerHTML=this._pgn_templateB.apply(this,c);this._pgn_template_active(this.pagingBlock);this._pgn_template_active(this.recordInfoBlock);this.callEvent("onPaging",[])};dhtmlXGridObject.prototype._pgn_block=function(c){var l=Math.floor((this.currentPage-1)/this.pagesInGroup)*this.pagesInGroup;var a=Math.min(Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize),l+this.pagesInGroup);var h=[];for(var g=l+1;g<=a;g++){if(g==this.currentPage){h.push("<a class='dhx_not_active'><b>"+g+"</b></a>")}else{h.push("<a onclick='this.grid.changePage("+g+"); return false;'>"+g+"</a>")}}return h.join(c)};dhtmlXGridObject.prototype._pgn_link=function(h,c,g){if(h=="prevpages"||h=="prev"){if(this.currentPage==1){return g}return"<a onclick='this.grid.changePageRelative(-1*"+(h=="prev"?"1":"this.grid.pagesInGroup")+"); return false;'>"+c+"</a>"}if(h=="nextpages"||h=="next"){if(this.rowsBuffer.length/this.rowsBufferOutSize<=this.currentPage){return g}if(this.rowsBuffer.length/(this.rowsBufferOutSize*(h=="next"?"1":this.pagesInGroup))<=1){return g}return"<a onclick='this.grid.changePageRelative("+(h=="next"?"1":"this.grid.pagesInGroup")+"); return false;'>"+c+"</a>"}if(h=="current"){var a=this.currentPage+(c?parseInt(c):0);if(a<1||Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize)<a){return g}return"<a "+(a==this.currentPage?"class='dhx_active_page_link' ":"")+"onclick='this.grid.changePage("+a+"); return false;'>"+a+"</a>"}return c};dhtmlXGridObject.prototype._pgn_template_active=function(g){var a=g.getElementsByTagName("A");if(a){for(var c=0;c<a.length;c++){a[c].grid=this}}};dhtmlXGridObject.prototype._pgn_template_compile=function(a){a=a.replace(/\[([^\]]*)\]/g,function(g,c){c=c.split(":");switch(c[0]){case"from":return'"+(arguments[1]*1+(arguments[2]*1?1:0))+"';case"total":return'"+arguments[3]+"';case"to":return'"+arguments[2]+"';case"current":case"prev":case"next":case"prevpages":case"nextpages":return"\"+this._pgn_link('"+c[0]+"','"+c[1]+"','"+c[2]+"')+\"";case"currentpages":return"\"+this._pgn_block('"+c[1]+"')+\""}});return new Function('return "'+a+'";')};dhtmlXGridObject.prototype.i18n.paging={results:"Results",records:"Records from ",to:" to ",page:"Page ",perpage:"rows per page",first:"To first Page",previous:"Previous Page",found:"Found records",next:"Next Page",last:"To last Page",of:" of ",notfound:"No Records Found"};dhtmlXGridObject.prototype.setPagingWTMode=function(a,c,g,h){this._WTDef=[a,c,g,h]};dhtmlXGridObject.prototype._pgn_bricks=function(o,a,g){var l=(this.skin_name||"").split("_")[1];var c="";if(l=="light"||l=="modern"||l=="skyblue"){c="_"+l}this.pagerElAr=new Array();this.pagerElAr.pagerCont=document.createElement("DIV");this.pagerElAr.pagerBord=document.createElement("DIV");this.pagerElAr.pagerLine=document.createElement("DIV");this.pagerElAr.pagerBox=document.createElement("DIV");this.pagerElAr.pagerInfo=document.createElement("DIV");this.pagerElAr.pagerInfoBox=document.createElement("DIV");var n=(this.globalBox||this.objBox);this.pagerElAr.pagerCont.style.width=n.clientWidth+"px";this.pagerElAr.pagerCont.style.overflow="hidden";this.pagerElAr.pagerCont.style.clear="both";this.pagerElAr.pagerBord.className="dhx_pbox"+c;this.pagerElAr.pagerLine.className="dhx_pline"+c;this.pagerElAr.pagerBox.style.clear="both";this.pagerElAr.pagerInfo.className="dhx_pager_info"+c;this.pagerElAr.pagerCont.appendChild(this.pagerElAr.pagerBord);this.pagerElAr.pagerCont.appendChild(this.pagerElAr.pagerLine);this.pagerElAr.pagerCont.appendChild(this.pagerElAr.pagerInfo);this.pagerElAr.pagerLine.appendChild(this.pagerElAr.pagerBox);this.pagerElAr.pagerInfo.appendChild(this.pagerElAr.pagerInfoBox);this._pgn_parentObj.innerHTML="";this._pgn_parentObj.appendChild(this.pagerElAr.pagerCont);if(this.rowsBuffer.length>0){var m=20;var u=22;if(o>this.pagesInGroup){var r=document.createElement("DIV");var q=document.createElement("DIV");r.className="dhx_page"+c;q.innerHTML="←";r.appendChild(q);this.pagerElAr.pagerBox.appendChild(r);var s=this;r.pgnum=(Math.ceil(o/this.pagesInGroup)-1)*this.pagesInGroup;r.onclick=function(){s.changePage(this.pgnum)};m+=u}for(var h=1;h<=this.pagesInGroup;h++){var r=document.createElement("DIV");var q=document.createElement("DIV");r.className="dhx_page"+c;pageNumber=((Math.ceil(o/this.pagesInGroup)-1)*this.pagesInGroup)+h;if(pageNumber>Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize)){break}q.innerHTML=pageNumber;r.appendChild(q);if(o==pageNumber){r.className+=" dhx_page_active"+c;q.className="dhx_page_active"+c}else{var s=this;r.pgnum=pageNumber;r.onclick=function(){s.changePage(this.pgnum)}}m+=(parseInt(u/3)*pageNumber.toString().length)+15;q.style.width=(parseInt(u/3)*pageNumber.toString().length)+8+"px";this.pagerElAr.pagerBox.appendChild(r)}if(Math.ceil(o/this.pagesInGroup)*this.pagesInGroup<Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize)){var r=document.createElement("DIV");var q=document.createElement("DIV");r.className="dhx_page"+c;q.innerHTML="→";r.appendChild(q);this.pagerElAr.pagerBox.appendChild(r);var s=this;r.pgnum=(Math.ceil(o/this.pagesInGroup)*this.pagesInGroup)+1;r.onclick=function(){s.changePage(this.pgnum)};m+=u}this.pagerElAr.pagerLine.style.width=m+"px"}if(this.rowsBuffer.length>0&&this.showRecInfo){this.pagerElAr.pagerInfoBox.innerHTML=this.i18n.paging.records+(a+1)+this.i18n.paging.to+g+this.i18n.paging.of+this.rowsBuffer.length}else{if(this.rowsBuffer.length==0){this.pagerElAr.pagerLine.parentNode.removeChild(this.pagerElAr.pagerLine);this.pagerElAr.pagerInfoBox.innerHTML=this.i18n.paging.notfound}}this.pagerElAr.pagerBox.appendChild(document.createElement("SPAN")).innerHTML=" ";this.pagerElAr.pagerBord.appendChild(document.createElement("SPAN")).innerHTML=" ";this.pagerElAr.pagerCont.appendChild(document.createElement("SPAN")).innerHTML=" ";this.callEvent("onPaging",[])};dhtmlXGridObject.prototype._pgn_toolbar=function(m,n,c){if(!this.aToolBar){this.aToolBar=this._pgn_createToolBar()}var l=Math.ceil(this.rowsBuffer.length/this.rowsBufferOutSize);if(this._WTDef[0]){this.aToolBar.enableItem("right");this.aToolBar.enableItem("rightabs");this.aToolBar.enableItem("left");this.aToolBar.enableItem("leftabs");if(this.currentPage>=l){this.aToolBar.disableItem("right");this.aToolBar.disableItem("rightabs")}if(this.currentPage==1){this.aToolBar.disableItem("left");this.aToolBar.disableItem("leftabs")}}if(this._WTDef[2]){var h=this;this.aToolBar.forEachListOption("pages",function(o){h.aToolBar.removeListOption("pages",o)});var a={dhx_skyblue:4,dhx_web:0,dhx_terrace:14}[this.aToolBar.conf.skin];for(var g=0;g<l;g++){this.aToolBar.addListOption("pages","pages_"+(g+1),NaN,"button","<span style='padding: 0px "+a+"px 0px 0px;'>"+this.i18n.paging.page+(g+1)+"</span>","paging_page.gif")}this.aToolBar.setItemText("pages",this.i18n.paging.page+m)}if(this._WTDef[1]){if(!this.getRowsNum()){this.aToolBar.setItemText("results",this.i18n.paging.notfound)}else{this.aToolBar.setItemText("results","<div style='width:100%; text-align:center'>"+this.i18n.paging.records+(n+1)+this.i18n.paging.to+c+"</div>")}}if(this._WTDef[3]){this.aToolBar.setItemText("perpagenum",this.rowsBufferOutSize.toString()+" "+this.i18n.paging.perpage)}this.callEvent("onPaging",[])};dhtmlXGridObject.prototype._pgn_createToolBar=function(){this.aToolBar=new dhtmlXToolbarObject({parent:this._pgn_parentObj,skin:(this._pgn_skin_tlb||this.skin_name),icons_path:this.imgURL});if(!this._WTDef){this.setPagingWTMode(true,true,true,true)}var h=this;this.aToolBar.attachEvent("onClick",function(l){l=l.split("_");switch(l[0]){case"leftabs":h.changePage(1);break;case"left":h.changePage(h.currentPage-1);break;case"rightabs":h.changePage(99999);break;case"right":h.changePage(h.currentPage+1);break;case"perpagenum":if(l[1]===this.undefined){return}h.rowsBufferOutSize=parseInt(l[1]);h.changePage();h.aToolBar.setItemText("perpagenum",l[1]+" "+h.i18n.paging.perpage);break;case"pages":if(l[1]===this.undefined){return}h.changePage(l[1]);h.aToolBar.setItemText("pages",h.i18n.paging.page+l[1]);break}});if(this._WTDef[0]){this.aToolBar.addButton("leftabs",NaN,null,"ar_left_abs.gif","ar_left_abs_dis.gif");this.aToolBar.addButton("left",NaN,null,"ar_left.gif","ar_left_dis.gif")}if(this._WTDef[1]){this.aToolBar.addText("results",NaN,this.i18n.paging.results);this.aToolBar.setWidth("results","150");this.aToolBar.disableItem("results")}if(this._WTDef[0]){this.aToolBar.addButton("right",NaN,null,"ar_right.gif","ar_right_dis.gif");this.aToolBar.addButton("rightabs",NaN,null,"ar_right_abs.gif","ar_right_abs_dis.gif")}if(this._WTDef[2]){if(this.aToolBar.conf.skin=="dhx_terrace"){this.aToolBar.addSeparator()}this.aToolBar.addButtonSelect("pages",NaN,"select page",[],"paging_pages.gif",null,false,true)}var a;if(a=this._WTDef[3]){if(this.aToolBar.conf.skin=="dhx_terrace"){this.aToolBar.addSeparator()}this.aToolBar.addButtonSelect("perpagenum",NaN,"select size",[],"paging_rows.gif",null,false,true);if(typeof a!="object"){a=[5,10,15,20,25,30]}var c={dhx_skyblue:4,dhx_web:0,dhx_terrace:18}[this.aToolBar.conf.skin];for(var g=0;g<a.length;g++){this.aToolBar.addListOption("perpagenum","perpagenum_"+a[g],NaN,"button","<span style='padding: 0px "+c+"px 0px 0px;'>"+a[g]+" "+this.i18n.paging.perpage+"</span>","paging_page.gif")}}return this.aToolBar};dhtmlXGridObject.prototype.post=function(a,c,h,g){this.callEvent("onXLS",[this]);if(arguments.length==3&&typeof h!="function"){g=h;h=null}g=g||"xml";c=c||"";if(!this.xmlFileUrl){this.xmlFileUrl=a}this._data_type=g;this.xmlLoader.onloadAction=function(n,l,q,o,m){m=n["_process_"+g](m);if(!n._contextCallTimer){n.callEvent("onXLE",[n,0,0,m])}if(h){h();h=null}};this.xmlLoader.loadXML(a,true,c)};dhtmlXGridObject.prototype.setRowspan=function(s,v,l){var u=this[this._bfs_cells?"_bfs_cells":"cells"](s,v).cell;var a=this.rowsAr[s];if(u.rowSpan&&u.rowSpan!=1){var m=a.nextSibling;for(var o=1;o<u.rowSpan;o++){var n=m.childNodes[m._childIndexes[u._cellIndex+1]];var g=document.createElement("TD");g.innerHTML=" ";g._cellIndex=u._cellIndex;g._clearCell=true;if(n){n.parentNode.insertBefore(g,n)}else{m.parentNode.appendChild(g)}this._shiftIndexes(m,u._cellIndex,-1);m=m.nextSibling}}u.rowSpan=l;if(!this._h2){a=a.nextSibling||this.rowsCol[this.rowsCol._dhx_find(a)+1]}else{a=this.rowsAr[this._h2.get[a.idd].parent.childs[this._h2.get[a.idd].index+1].id]}var h=[];for(var o=1;o<l;o++){var q=null;if(this._fake&&!this._realfake){q=this._bfs_cells3(a,v).cell}else{q=this.cells3(a,v).cell}this._shiftIndexes(a,u._cellIndex,1);if(q){q.parentNode.removeChild(q)}h.push(a);if(!this._h2){a=a.nextSibling||this.rowsCol[this.rowsCol._dhx_find(a)+1]}else{var a=this._h2.get[a.idd].parent.childs[this._h2.get[a.idd].index+1];if(a){a=this.rowsAr[a.id]}}}this.rowsAr[s]._rowSpan=this.rowsAr[s]._rowSpan||{};this.rowsAr[s]._rowSpan[v]=h;if(this._fake&&!this._realfake&&v<this._fake._cCount){this._fake.setRowspan(s,v,l)}};dhtmlXGridObject.prototype._shiftIndexes=function(a,h,c){if(!a._childIndexes){a._childIndexes=new Array();for(var g=0;g<a.childNodes.length;g++){a._childIndexes[g]=g}}for(var g=0;g<a._childIndexes.length;g++){if(g>h){a._childIndexes[g]=a._childIndexes[g]-c}}};dhtmlXGridObject.prototype.enableRowspan=function(){this._erspan=true;this.enableRowspan=function(){};this.attachEvent("onAfterSorting",function(){if(this._dload){return}for(var l=1;l<this.obj.rows.length;l++){if(this.obj.rows[l]._rowSpan){var a=this.obj.rows[l];for(var m in a._rowSpan){var q=a;var c=q._rowSpan[m];for(var g=0;g<c.length;g++){if(q.nextSibling){q.parentNode.insertBefore(c[g],q.nextSibling)}else{q.parentNode.appendChild(c[g])}if(this._fake){var h=this._fake.rowsAr[q.idd];var n=this._fake.rowsAr[c[g].idd];if(h.nextSibling){h.parentNode.insertBefore(n,h.nextSibling)}else{h.parentNode.appendChild(n)}this._correctRowHeight(q.idd)}q=q.nextSibling}}}}var o=this.rowsCol.stablesort;this.rowsCol=new dhtmlxArray();this.rowsCol.stablesort=o;for(var l=1;l<this.obj.rows.length;l++){this.rowsCol.push(this.obj.rows[l])}});this.attachEvent("onXLE",function(h,g,r,m){for(var n=0;n<this.rowsBuffer.length;n++){var q=this.render_row(n);var o=q.childNodes;for(var l=0;l<o.length;l++){if(o[l]._attrs.rowspan){this.setRowspan(q.idd,o[l]._cellIndex,o[l]._attrs.rowspan)}}}})};dhtmlXGridObject.prototype._init_point_bspl=dhtmlXGridObject.prototype._init_point;dhtmlXGridObject.prototype._init_point=function(){if(this._split_later){this.splitAt(this._split_later)}this._init_point=this._init_point_bspl;if(this._init_point){this._init_point()}};dhtmlXGridObject.prototype.splitAt=function(l){if(!this.obj.rows[0]){return this._split_later=l}l=parseInt(l);var a=document.createElement("DIV");this.entBox.appendChild(a);var m=document.createElement("DIV");this.entBox.appendChild(m);for(var q=this.entBox.childNodes.length-3;q>=0;q--){m.insertBefore(this.entBox.childNodes[q],m.firstChild)}this.entBox.style.position="relative";this.globalBox=this.entBox;this.entBox=m;m.grid=this;a.style.cssText+="border:0px solid red !important;";m.style.cssText+="border:0px solid red !important;";m.style.top="0px";m.style.position="absolute";a.style.position="absolute";a.style.top="0px";a.style.left="0px";a.style.zIndex=11;m.style.height=a.style.height=this.globalBox.clientHeight;this._fake=new dhtmlXGridObject(a);this.globalBox=this._fake.globalBox=this.globalBox;this._fake._fake=this;this._fake._realfake=true;this._treeC=this.cellType._dhx_find("tree");this._fake.delim=this.delim;this._fake.customGroupFormat=this.customGroupFormat;this._fake.setImagesPath(this._imgURL);this._fake.iconURL=this.iconURL;this._fake._customSorts=this._customSorts;this._fake.noHeader=this.noHeader;this._fake._enbTts=this._enbTts;this._fake._htkebl=this._htkebl;this._fake.clists=this.clists;this._fake.fldSort=new Array();this._fake.selMultiRows=this.selMultiRows;this._fake.multiLine=this.multiLine;if(this.multiLine||this._erspan){this.attachEvent("onCellChanged",this._correctRowHeight);this.attachEvent("onRowAdded",this._correctRowHeight);var y=function(){this.forEachRow(function(C){this._correctRowHeight(C)})};this.attachEvent("onPageChanged",y);this.attachEvent("onXLE",y);this.attachEvent("onResizeEnd",y);if(!this._ads_count){this.attachEvent("onAfterSorting",y)}if(this._srnd){this.attachEvent("onFilterEnd",y)}this.attachEvent("onDistributedEnd",y)}this.attachEvent("onGridReconstructed",function(){this._fake.objBox.scrollTop=this.objBox.scrollTop});this._fake.loadedKidsHash=this.loadedKidsHash;if(this._h2){this._fake._h2=this._h2}this._fake._dInc=this._dInc;var x=[[],[],[],[],[],[],[]];var o=["hdrLabels","initCellWidth","cellType","cellAlign","cellVAlign","fldSort","columnColor"];var v=["setHeader","setInitWidths","setColTypes","setColAlign","setColVAlign","setColSorting","setColumnColor"];this._fake.callEvent=function(){var C=true;this._fake._split_event=true;var D=(arguments[0]=="onScroll");if(arguments[0]=="onGridReconstructed"||D){this._fake.callEvent.apply(this,arguments)}if(!D){C=this._fake.callEvent.apply(this._fake,arguments)}this._fake._split_event=false;return C};if(this._elmn){this._fake.enableLightMouseNavigation(true)}if(this.__cssEven||this._cssUnEven){this._fake.attachEvent("onGridReconstructed",function(){this._fixAlterCss()})}this._fake._cssEven=this._cssEven;this._fake._cssUnEven=this._cssUnEven;this._fake._cssSP=this._cssSP;this._fake.isEditable=this.isEditable;this._fake._edtc=this._edtc;if(this._sst){this._fake.enableStableSorting(true)}this._fake._sclE=this._sclE;this._fake._dclE=this._dclE;this._fake._f2kE=this._f2kE;this._fake._maskArr=this._maskArr;this._fake._dtmask=this._dtmask;this._fake.combos=this.combos;var g=0;var s=this.globalBox.offsetWidth;for(var q=0;q<l;q++){for(var n=0;n<o.length;n++){if(this[o[n]]){x[n][q]=this[o[n]][q]}if(typeof x[n][q]=="string"){x[n][q]=x[n][q].replace(new RegExp("\\"+this.delim,"g"),"\\"+this.delim)}}if(_isFF){x[1][q]=x[1][q]*1}if(this.cellWidthType=="%"){x[1][q]=Math.round(parseInt(this[o[1]][q])*s/100);g+=x[1][q]}else{g+=parseInt(this[o[1]][q])}this.setColumnHidden(q,true)}for(var n=0;n<o.length;n++){var w=x[n].join(this.delim);if(v[n]!="setHeader"){if(w!=""){this._fake[v[n]](w)}}else{this._fake[v[n]](w,null,this._hstyles)}}this._fake._strangeParams=this._strangeParams;this._fake._drsclmn=this._drsclmn;g=Math.min(this.globalBox.offsetWidth,g);m.style.left=g+"px";a.style.width=g+"px";m.style.width=Math.max(this.globalBox.offsetWidth-g,0);if(this._ecspn){this._fake._ecspn=true}this._fake.init();if(this.dragAndDropOff){this.dragger.addDragLanding(this._fake.entBox,this)}this._fake.objBox.style.overflow="hidden";if(!dhtmlx.$customScroll){this._fake.objBox.style.overflowX="scroll"}else{this._fake.objBox._custom_scroll_mode=""}this._fake._srdh=this._srdh||20;this._fake._srnd=this._srnd;var A=this;function u(E){var D=E.wheelDelta/-40;if(E.wheelDelta===window.undefined){D=E.detail}var C=A.objBox;C.scrollTop+=D*40;if(E.preventDefault){E.preventDefault()}}dhtmlxEvent(this._fake.objBox,"mousewheel",u);dhtmlxEvent(this._fake.objBox,"DOMMouseScroll",u);function c(D,C){C.style.whiteSpace="";var H=C.nextSibling;var E=C.parentNode;D.parentNode.insertBefore(C,D);if(!H){E.appendChild(D)}else{E.insertBefore(D,H)}var F=D.style.display;D.style.display=C.style.display;C.style.display=F}function h(K,S,L,D){var E=(new Array(l)).join(this.delim);var M=[];if(K==2){for(var I=0;I<l;I++){var C=S[K-1].cells[S[K-1]._childIndexes?S[K-1]._childIndexes[I]:I];if(C.rowSpan&&C.rowSpan>1){M[C._cellIndex]=C.rowSpan-1;D[K-1].cells[D[K-1]._childIndexes?D[K-1]._childIndexes[I]:I].rowSpan=C.rowSpan;C.rowSpan=1}}}for(K;K<S.length;K++){this._fake.attachHeader(E,null,L);D=D||this._fake.ftr.childNodes[0].rows;var P=l;var F=0;for(var J=0;J<P;J++){if(M[J]){M[J]=M[J]-1;if(_isIE||_isOpera){var H=document.createElement("TD");if(_isFF){H.style.display="none"}S[K].insertBefore(H,S[K].cells[0])}F++;continue}var O=D[K].cells[J-F];var N=S[K].cells[J-(_isIE?0:F)];var Q=N.rowSpan;c(O,N);if(Q>1){M[J]=Q-1;N.rowSpan=Q}if(D[K].cells[J].colSpan>1){S[K].cells[J].colSpan=D[K].cells[J].colSpan;P-=D[K].cells[J].colSpan-1;for(var I=1;I<D[K].cells[J].colSpan;I++){D[K].removeChild(D[K].cells[J+1])}}}}}if(this.hdr.rows.length>2){h.call(this,2,this.hdr.rows,"_aHead",this._fake.hdr.rows)}if(this.ftr){h.call(this,1,this.ftr.childNodes[0].rows,"_aFoot");this._fake.ftr.parentNode.style.bottom=(_isFF?2:1)+"px"}if(this.saveSizeToCookie){this.saveSizeToCookie=function(D,C){if(this._realfake){return this._fake.saveSizeToCookie.apply(this._fake,arguments)}if(!D){D=this.entBox.id}var F=new Array();var H="cellWidthPX";for(var E=0;E<this[H].length;E++){if(E<l){F[E]=this._fake[H][E]}else{F[E]=this[H][E]}}F=F.join(",");this.setCookie(D,C,0,F);var F=(this.initCellWidth||(new Array)).join(",");this.setCookie(D,C,1,F);return true};this.loadSizeFromCookie=function(C){if(!C){C=this.entBox.id}var H=this._getCookie(C,1);if(!H){return}this.initCellWidth=H.split(",");var H=this._getCookie(C,0);var I="cellWidthPX";this.cellWidthType="px";var E=0;if((H)&&(H.length)){H=H.split(",");for(var D=0;D<H.length;D++){if(D<l){this._fake[I][D]=H[D];E+=H[D]*1}else{this[I][D]=H[D]}}}this._fake.entBox.style.width=E+"px";this._fake.objBox.style.width=E+"px";var F=this.globalBox.childNodes[1];F.style.left=E-(_isFF?0:0)+"px";if(this.ftr){this.ftr.style.left=E-(_isFF?0:0)+"px"}F.style.width=this.globalBox.offsetWidth-E+"px";this.setSizes();return true};this._fake.onRSE=this.onRSE}this.setCellTextStyleA=this.setCellTextStyle;this.setCellTextStyle=function(D,E,C){if(E<l){this._fake.setCellTextStyle(D,E,C)}this.setCellTextStyleA(D,E,C)};this.setRowTextBoldA=this.setRowTextBold;this.setRowTextBold=function(C){this.setRowTextBoldA(C);this._fake.setRowTextBold(C)};this.setRowColorA=this.setRowColor;this.setRowColor=function(D,C){this.setRowColorA(D,C);this._fake.setRowColor(D,C)};this.setRowHiddenA=this.setRowHidden;this.setRowHidden=function(D,C){this.setRowHiddenA(D,C);this._fake.setRowHidden(D,C)};this.setRowTextNormalA=this.setRowTextNormal;this.setRowTextNormal=function(C){this.setRowTextNormalA(C);this._fake.setRowTextNormal(C)};this.getChangedRows=function(E){var C=new Array();function D(H){for(var F=0;F<H.childNodes.length;F++){if(H.childNodes[F].wasChanged){return C[C.length]=H.idd}}}this.forEachRow(function(I){var H=this.rowsAr[I];var F=this._fake.rowsAr[I];if(H.tagName!="TR"||!F||F.tagName!="TR"){return}if(E&&H._added){C[C.length]=H.idd}else{if(!D(H)){D(F)}}});return C.join(this.delim)};this.setRowTextStyleA=this.setRowTextStyle;this.setRowTextStyle=function(D,C){this.setRowTextStyleA(D,C);if(this._fake.rowsAr[D]){this._fake.setRowTextStyle(D,C)}};this.lockRowA=this.lockRow;this.lockRow=function(D,C){this.lockRowA(D,C);this._fake.lockRow(D,C)};this.getColWidth=function(C){if(C<l){return parseInt(this._fake.cellWidthPX[C])}else{return parseInt(this.cellWidthPX[C])}};this.getColumnLabel=function(C){return this._fake.getColumnLabel.apply(((C<l)?this._fake:this),arguments)};this.setColWidthA=this._fake.setColWidthA=this.setColWidth;this.setColWidth=function(C,D){C=C*1;if(C<l){this._fake.setColWidthA(C,D)}else{this.setColWidthA(C,D)}if((C+1)<=l){this._fake._correctSplit(Math.min(this._fake.objBox.offsetWidth,this._fake.obj.offsetWidth))}};this.adjustColumnSizeA=this.adjustColumnSize;this.setColumnLabelA=this.setColumnLabel;this.setColumnLabel=function(D,C,H,F){var E=this;if(D<l){E=this._fake}return this.setColumnLabelA.apply(E,[D,C,H,F])};this.adjustColumnSize=function(C,D){if(C<l){if(_isIE){this._fake.obj.style.tableLayout=""}this._fake.adjustColumnSize(C,D);if(_isIE){this._fake.obj.style.tableLayout="fixed"}this._fake._correctSplit()}else{return this.adjustColumnSizeA(C,D)}};var r="cells";this._bfs_cells=this[r];this[r]=function(){if(arguments[1]<l){return this._fake.cells.apply(this._fake,arguments)}else{return this._bfs_cells.apply(this,arguments)}};this._bfs_isColumnHidden=this.isColumnHidden;this.isColumnHidden=function(){if(parseInt(arguments[0])<l){return this._fake.isColumnHidden.apply(this._fake,arguments)}else{return this._bfs_isColumnHidden.apply(this,arguments)}};this._bfs_setColumnHidden=this.setColumnHidden;this.setColumnHidden=function(){if(parseInt(arguments[0])<l){this._fake.setColumnHidden.apply(this._fake,arguments);return this._fake._correctSplit()}else{return this._bfs_setColumnHidden.apply(this,arguments)}};var r="cells2";this._bfs_cells2=this[r];this[r]=function(){if(arguments[1]<l){return this._fake.cells2.apply(this._fake,arguments)}else{return this._bfs_cells2.apply(this,arguments)}};var r="cells3";this._bfs_cells3=this[r];this[r]=function(D,C){if(arguments[1]<l&&this._fake.rowsAr[arguments[0].idd]){if(this._fake.rowsAr[D.idd]&&this._fake.rowsAr[D.idd].childNodes.length==0){return this._bfs_cells3.apply(this,arguments)}arguments[0]=arguments[0].idd;return this._fake.cells.apply(this._fake,arguments)}else{return this._bfs_cells3.apply(this,arguments)}};var r="changeRowId";this._bfs_changeRowId=this[r];this[r]=function(){this._bfs_changeRowId.apply(this,arguments);if(this._fake.rowsAr[arguments[0]]){this._fake.changeRowId.apply(this._fake,arguments)}};this._fake.getRowById=function(E){var D=this.rowsAr[E];if(!D&&this._fake.rowsAr[E]){D=this._fake.getRowById(E)}if(D){if(D.tagName!="TR"){for(var C=0;C<this.rowsBuffer.length;C++){if(this.rowsBuffer[C]&&this.rowsBuffer[C].idd==E){return this.render_row(C)}}if(this._h2){return this.render_row(null,D.idd)}}return D}return null};if(this.collapseKids){this._fake._bfs_collapseKids=this.collapseKids;this._fake.collapseKids=function(){return this._fake.collapseKids.apply(this._fake,[this._fake.rowsAr[arguments[0].idd]])};this["_bfs_collapseKids"]=this.collapseKids;this["collapseKids"]=function(){var C=this["_bfs_collapseKids"].apply(this,arguments);this._fake._h2syncModel();if(!this._cssSP){this._fake._fixAlterCss()}};this._fake._bfs_expandKids=this.expandKids;this._fake.expandKids=function(){this._fake.expandKids.apply(this._fake,[this._fake.rowsAr[arguments[0].idd]]);if(!this._cssSP){this._fake._fixAlterCss()}};this["_bfs_expandAll"]=this.expandAll;this["expandAll"]=function(){this._bfs_expandAll();this._fake._h2syncModel();if(!this._cssSP){this._fake._fixAlterCss()}};this["_bfs_collapseAll"]=this.collapseAll;this["collapseAll"]=function(){this._bfs_collapseAll();this._fake._h2syncModel();if(!this._cssSP){this._fake._fixAlterCss()}};this["_bfs_expandKids"]=this.expandKids;this["expandKids"]=function(){var C=this["_bfs_expandKids"].apply(this,arguments);this._fake._h2syncModel();if(!this._cssSP){this._fake._fixAlterCss()}};this._fake._h2syncModel=function(){if(this._fake.pagingOn){this._fake._renderSort()}else{this._renderSort()}};this._updateTGRState=function(C){return this._fake._updateTGRState(C)}}if(this._elmnh){this._setRowHoverA=this._fake._setRowHoverA=this._setRowHover;this._unsetRowHoverA=this._fake._unsetRowHoverA=this._unsetRowHover;this._setRowHover=this._fake._setRowHover=function(){var C=this.grid;C._setRowHoverA.apply(this,arguments);var D=(_isIE?event.srcElement:arguments[0].target);D=C._fake.rowsAr[C.getFirstParentOfType(D,"TD").parentNode.idd];if(D){C._fake._setRowHoverA.apply(C._fake.obj,[{target:D.childNodes[0]},arguments[1]])}};this._unsetRowHover=this._fake._unsetRowHover=function(){if(arguments[1]){var C=this}else{var C=this.grid}C._unsetRowHoverA.apply(this,arguments);C._fake._unsetRowHoverA.apply(C._fake.obj,arguments)};this._fake.enableRowsHover(true,this._hvrCss);this.enableRowsHover(false);this.enableRowsHover(true,this._fake._hvrCss)}this._updateTGRState=function(C){if(!C.update||C.id==0){return}if(this.rowsAr[C.id].imgTag){this.rowsAr[C.id].imgTag.src=this.iconTree+C.state+".gif"}if(this._fake.rowsAr[C.id]&&this._fake.rowsAr[C.id].imgTag){this._fake.rowsAr[C.id].imgTag.src=this.iconTree+C.state+".gif"}C.update=false};this.copy_row=function(H){var C=H.cloneNode(true);C._skipInsert=H._skipInsert;var I=l;C._attrs={};C._css=H._css;if(this._ecspn){I=0;for(var F=0;(I<C.childNodes.length&&F<l);F+=(C.childNodes[I].colSpan||1)){I++}}while(C.childNodes.length>I){C.removeChild(C.childNodes[C.childNodes.length-1])}var E=I;for(var F=0;F<E;F++){if(this.dragAndDropOff){this.dragger.addDraggableItem(C.childNodes[F],this)}C.childNodes[F].style.display=(this._fake._hrrar?(this._fake._hrrar[F]?"none":""):"");C.childNodes[F]._cellIndex=F;C.childNodes[F].combo_value=arguments[0].childNodes[F].combo_value;C.childNodes[F]._clearCell=arguments[0].childNodes[F]._clearCell;C.childNodes[F]._cellType=arguments[0].childNodes[F]._cellType;C.childNodes[F]._brval=arguments[0].childNodes[F]._brval;C.childNodes[F].val=arguments[0].childNodes[F].val;C.childNodes[F]._attrs=arguments[0].childNodes[F]._attrs;C.childNodes[F].chstate=arguments[0].childNodes[F].chstate;if(H._attrs.style){C.childNodes[F].style.cssText+=";"+H._attrs.style}if(C.childNodes[F].colSpan>1){this._childIndexes=this._fake._childIndexes}}if(this._h2&&this._treeC<l){var D=this._h2.get[arguments[0].idd];C.imgTag=C.childNodes[this._treeC].childNodes[0].childNodes[D.level];C.valTag=C.childNodes[this._treeC].childNodes[0].childNodes[D.level+2]}C.idd=H.idd;C.grid=this._fake;return C};var r="_insertRowAt";this._bfs_insertRowAt=this[r];this[r]=function(){var D=this["_bfs_insertRowAt"].apply(this,arguments);arguments[0]=this.copy_row(arguments[0]);var C=this._fake._insertRowAt.apply(this._fake,arguments);if(D._fhd){C.parentNode.removeChild(C);this._fake.rowsCol._dhx_removeAt(this._fake.rowsCol._dhx_find(C));D._fhd=false}return D};this._bfs_setSizes=this.setSizes;this.setSizes=function(){if(this._notresize){return}this._bfs_setSizes(this,arguments);this.sync_headers();if(this.sync_scroll()&&this._ahgr){this.setSizes()}var C=this.dontSetSizes?(this.entBox.offsetHeight+"px"):this.entBox.style.height;this._fake.entBox.style.height=C;this._fake.objBox.style.height=this.objBox.style.height;this._fake.hdrBox.style.height=this.hdrBox.style.height;this._fake.objBox.scrollTop=this.objBox.scrollTop;this._fake.setColumnSizes(this._fake.entBox.clientWidth);this.globalBox.style.width=parseInt(this.entBox.style.width)+parseInt(this._fake.entBox.style.width);if(!this.dontSetSizes){this.globalBox.style.height=C}};this.sync_scroll=this._fake.sync_scroll=function(D){var C=this.objBox.style.overflowX;if(this.obj.offsetWidth<=this.objBox.offsetWidth){if(!D){return this._fake.sync_scroll(true)}this.objBox.style.overflowX="hidden";this._fake.objBox.style.overflowX="hidden"}else{if(!dhtmlx.$customScroll){this.objBox.style.overflowX="scroll";this._fake.objBox.style.overflowX="scroll"}}return C!=this.objBox.style.overflowX};this.sync_headers=this._fake.sync_headers=function(){if(this.noHeader||(this._fake.hdr.scrollHeight==this.hdr.offsetHeight)){return}for(var D=1;D<this.hdr.rows.length;D++){var F=l;while(!this.hdr.rows[D].childNodes[F]){F--}var C=Math.min(this.hdr.rows[D].childNodes[F].scrollHeight+2,this.hdr.rows[D].scrollHeight);var E=this._fake.hdr.rows[D].scrollHeight;if(C!=E){this._fake.hdr.rows[D].style.height=this.hdr.rows[D].style.height=Math.max(C,E)+"px"}if(window._KHTMLrv){this._fake.hdr.rows[D].childNodes[0].style.height=this.hdr.rows[D].childNodes[F].style.height=Math.max(C,E)+"px"}}this._fake.sync_headers};this._fake._bfs_setSizes=this._fake.setSizes;this._fake.setSizes=function(){if(this._fake._notresize){return}this._fake.setSizes()};var r="_doOnScroll";this._bfs__doOnScroll=this[r];this[r]=function(){this._bfs__doOnScroll.apply(this,arguments);this._fake.objBox.scrollTop=this.objBox.scrollTop;this._fake._doOnScroll.apply(this._fake,arguments)};var r="selectAll";this._bfs__selectAll=this[r];this[r]=function(){this._bfs__selectAll.apply(this,arguments);this._bfs__selectAll.apply(this._fake,arguments)};var r="doClick";this._bfs_doClick=this[r];this[r]=function(){this["_bfs_doClick"].apply(this,arguments);if(arguments[0].tagName=="TD"){var C=(arguments[0]._cellIndex>=l);if(!arguments[0].parentNode.idd){return}if(!C){arguments[0].className=arguments[0].className.replace(/cellselected/g,"")}if(!this._fake.rowsAr[arguments[0].parentNode.idd]){this._fake.render_row(this.getRowIndex(arguments[0].parentNode.idd))}arguments[0]=this._fake.cells(arguments[0].parentNode.idd,(C?0:arguments[0]._cellIndex)).cell;if(C){this._fake.cell=null}this._fake._bfs_doClick.apply(this._fake,arguments);if(C){this._fake.cell=this.cell}else{this.cell=this._fake.cell}if(this._fake.onRowSelectTime){clearTimeout(this._fake.onRowSelectTime)}if(C){arguments[0].className=arguments[0].className.replace(/cellselected/g,"");globalActiveDHTMLGridObject=this;this._fake.cell=this.cell}else{this.objBox.scrollTop=this._fake.objBox.scrollTop}}};this._fake._bfs_doClick=this._fake[r];this._fake[r]=function(){this["_bfs_doClick"].apply(this,arguments);if(arguments[0].tagName=="TD"){var C=(arguments[0]._cellIndex<l);if(!arguments[0].parentNode.idd){return}arguments[0]=this._fake._bfs_cells(arguments[0].parentNode.idd,(C?l:arguments[0]._cellIndex)).cell;this._fake.cell=null;this._fake._bfs_doClick.apply(this._fake,arguments);this._fake.cell=this.cell;if(this._fake.onRowSelectTime){clearTimeout(this._fake.onRowSelectTime)}if(C){arguments[0].className=arguments[0].className.replace(/cellselected/g,"");globalActiveDHTMLGridObject=this;this._fake.cell=this.cell;this._fake.objBox.scrollTop=this.objBox.scrollTop}}};this.clearSelectionA=this.clearSelection;this.clearSelection=function(C){if(C){this._fake.clearSelection()}this.clearSelectionA()};this.moveRowUpA=this.moveRowUp;this.moveRowUp=function(C){if(!this._h2){this._fake.moveRowUp(C)}this.moveRowUpA(C);if(this._h2){this._fake._h2syncModel()}};this.moveRowDownA=this.moveRowDown;this.moveRowDown=function(C){if(!this._h2){this._fake.moveRowDown(C)}this.moveRowDownA(C);if(this._h2){this._fake._h2syncModel()}};this._fake.getUserData=function(){return this._fake.getUserData.apply(this._fake,arguments)};this._fake.setUserData=function(){return this._fake.setUserData.apply(this._fake,arguments)};this.getSortingStateA=this.getSortingState;this.getSortingState=function(){var C=this.getSortingStateA();if(C.length!=0){return C}return this._fake.getSortingState()};this.setSortImgStateA=this._fake.setSortImgStateA=this.setSortImgState;this.setSortImgState=function(D,C,F,E){this.setSortImgStateA(D,C,F,E);if(C*1<l){this._fake.setSortImgStateA(D,C,F,E);this.setSortImgStateA(false)}else{this._fake.setSortImgStateA(false)}};this._fake.doColResizeA=this._fake.doColResize;this._fake.doColResize=function(H,F,E,C,J){var D=-1;var I=0;if(arguments[1]._cellIndex==(l-1)){D=this._initalSplR+(H.clientX-C);if(!this._initalSplF){this._initalSplF=arguments[3]+this.objBox.scrollWidth-this.objBox.offsetWidth}if(this.objBox.scrollWidth==this.objBox.offsetWidth&&(this._fake.alter_split_resize||(H.clientX-C)>0)){arguments[3]=(this._initalSplF||arguments[3]);I=this.doColResizeA.apply(this,arguments)}else{I=this.doColResizeA.apply(this,arguments)}}else{if(this.obj.offsetWidth<this.entBox.offsetWidth){D=this.obj.offsetWidth}I=this.doColResizeA.apply(this,arguments)}this._correctSplit(D);this.resized=this._fake.resized=1;return I};this._fake.changeCursorState=function(E){var D=E.target||E.srcElement;if(D.tagName!="TD"){D=this.getFirstParentOfType(D,"TD")}if((D.tagName=="TD")&&(this._drsclmn)&&(!this._drsclmn[D._cellIndex])){return}var C=(E.layerX||0)+(((!_isIE)&&(E.target.tagName=="DIV"))?D.offsetLeft:0);var F=parseInt(this.getPosition(D,this.hdrBox));if(((D.offsetWidth-(E.offsetX||(F-C)*-1))<(_isOpera?20:10))||((this.entBox.offsetWidth-(E.offsetX?(E.offsetX+D.offsetLeft):C)+this.objBox.scrollLeft-0)<(_isOpera?20:10))){D.style.cursor="E-resize"}else{D.style.cursor="default"}if(_isOpera){this.hdrBox.scrollLeft=this.objBox.scrollLeft}};this._fake.startColResizeA=this._fake.startColResize;this._fake.startColResize=function(D){var E=this.startColResizeA(D);this._initalSplR=this.entBox.offsetWidth;this._initalSplF=null;if(this.entBox.onmousemove){var C=this.entBox.parentNode;if(C._aggrid){return E}C._aggrid=C.grid;C.grid=this;this.entBox.parentNode.onmousemove=this.entBox.onmousemove;this.entBox.onmousemove=null}return E};this._fake.stopColResizeA=this._fake.stopColResize;this._fake.stopColResize=function(D){if(this.entBox.parentNode.onmousemove){var C=this.entBox.parentNode;C.grid=C._aggrid;C._aggrid=null;this.entBox.onmousemove=this.entBox.parentNode.onmousemove;this.entBox.parentNode.onmousemove=null;if(this.obj.offsetWidth<this.entBox.offsetWidth){this._correctSplit(this.obj.offsetWidth)}}return this.stopColResizeA(D)};this.doKeyA=this.doKey;this._fake.doKeyA=this._fake.doKey;this._fake.doKey=this.doKey=function(E){if(!E){return true}if(this._htkebl){return true}if((E.target||E.srcElement).value!==window.undefined){var C=(E.target||E.srcElement);if((!C.parentNode)||(C.parentNode.className.indexOf("editable")==-1)){return true}}switch(E.keyCode){case 9:if(!E.shiftKey){if(this._realfake){if((this.cell)&&(this.cell._cellIndex==(l-1))){if(!this._fake.callEvent("onTab",[true])){return true}if(E.preventDefault){E.preventDefault()}var D=l;while(this._fake._hrrar&&this._fake._hrrar[D]){D++}this._fake.selectCell(this._fake.getRowIndex(this.cell.parentNode.idd),D,false,false,true);return false}else{var F=this.doKeyA(E)}globalActiveDHTMLGridObject=this;return F}else{if(this.cell){var D=this.cell._cellIndex+1;while(this.rowsCol[0].childNodes[D]&&this.rowsCol[0].childNodes[D].style.display=="none"){D++}if(D==this.rowsCol[0].childNodes.length){if(!this._fake.callEvent("onTab",[false])){return true}if(E.preventDefault){E.preventDefault()}var F=this.rowsBuffer[this.getRowIndex(this.cell.parentNode.idd)+1];if(F){this.showRow(F.idd);this._fake.selectCell(this._fake.getRowIndex(F.idd),0,false,false,true);return false}}}return this.doKeyA(E)}}else{if(this._realfake){if((this.cell)&&(this.cell._cellIndex==0)){if(E.preventDefault){E.preventDefault()}var F=this._fake.rowsBuffer[this._fake.getRowIndex(this.cell.parentNode.idd)-1];if(F){this._fake.showRow(F.idd);var D=this._fake._cCount-1;while(F.childNodes[D].style.display=="none"){D--}this._fake.selectCell(this._fake.getRowIndex(F.idd),D,false,false,true)}return false}else{return this.doKeyA(E)}}else{if((this.cell)&&(this.cell._cellIndex==l)){if(E.preventDefault){E.preventDefault()}this._fake.selectCell(this.getRowIndex(this.cell.parentNode.idd),l-1,false,false,true);return false}else{return this.doKeyA(E)}}}break}return this.doKeyA(E)};this.editCellA=this.editCell;this.editCell=function(){if(this.cell&&this.cell.parentNode.grid!=this){return this._fake.editCell()}return this.editCellA()};this.deleteRowA=this.deleteRow;this.deleteRow=function(C,D){if(this.deleteRowA(C,D)===false){return false}if(this._fake.rowsAr[C]){this._fake.deleteRow(C)}};this.clearAllA=this.clearAll;this.clearAll=function(){this.clearAllA();this._fake.clearAll()};this.editStopA=this.editStop;this.editStop=function(C){if(this._fake.editor){this._fake.editStop(C)}else{this.editStopA(C)}};this.attachEvent("onAfterSorting",function(D,C,E){if(D>=l){this._fake.setSortImgState(false)}});this._fake.sortField=function(D,C,F){this._fake.sortField.call(this._fake,D,C,this._fake.hdr.rows[0].cells[D]);if(this.fldSort[D]!="na"&&this._fake.fldSorted){var E=this._fake.getSortingState()[1];this._fake.setSortImgState(false);this.setSortImgState(true,arguments[0],E)}};this.sortTreeRowsA=this.sortTreeRows;this._fake.sortTreeRowsA=this._fake.sortTreeRows;this.sortTreeRows=this._fake.sortTreeRows=function(E,F,C,D){if(this._realfake){return this._fake.sortTreeRows(E,F,C,D)}this.sortTreeRowsA(E,F,C,D);this._fake._h2syncModel();this._fake.setSortImgStateA(false);this._fake.fldSorted=null};this._fake._fillers=[];this._fake.rowsBuffer=this.rowsBuffer;this.attachEvent("onClearAll",function(){this._fake.rowsBuffer=this.rowsBuffer});this._add_filler_s=this._add_filler;this._add_filler=function(D,C,H,E){if(!this._fake._fillers){this._fake._fillers=[]}if(this._realfake||!E){var F;if(H&&H.idd){F=this._fake.rowsAr[H.idd]}else{if(H&&H.nextSibling){F={};F.nextSibling=this._fake.rowsAr[H.nextSibling.idd];F.parentNode=F.nextSibling.parentNode}else{if(this._fake._fillers.length){F=this._fake._fillers[this._fake._fillers.length-1][2]}}}this._fake._fillers.push(this._fake._add_filler(D,C,F))}return this._add_filler_s.apply(this,arguments)};this._add_from_buffer_s=this._add_from_buffer;this._add_from_buffer=function(){var C=this._add_from_buffer_s.apply(this,arguments);if(C!=-1){this._fake._add_from_buffer.apply(this._fake,arguments);if(this.multiLine){this._correctRowHeight(this.rowsBuffer[arguments[0]].idd)}}return C};this._fake.render_row=function(C){var D=this._fake.render_row(C);if(D==-1){return -1}if(D){return this.rowsAr[D.idd]=this.rowsAr[D.idd]||this._fake.copy_row(D)}return null};this._reset_view_s=this._reset_view;this._reset_view=function(){this._fake._reset_view(true);this._fake._fillers=[];this._reset_view_s()};this.moveColumn_s=this.moveColumn;this.moveColumn=function(D,C){if(C>=l){return this.moveColumn_s(D,C)}};this.attachEvent("onCellChanged",function(H,E,F){if(this._split_event&&E<l&&this.rowsAr[H]){var C=this._fake.rowsAr[H];if(!C){return}if(C._childIndexes){C=C.childNodes[C._childIndexes[E]]}else{C=C.childNodes[E]}var D=this.rowsAr[H].childNodes[E];if(D._treeCell&&D.firstChild.lastChild){D.firstChild.lastChild.innerHTML=F}else{D.innerHTML=C.innerHTML}D._clearCell=false;D.combo_value=C.combo_value;D.chstate=C.chstate}});this._fake.combos=this.combos;this.setSizes();if(this.rowsBuffer[0]){this._reset_view()}this.attachEvent("onXLE",function(){this._fake._correctSplit()});this._fake._correctSplit()};dhtmlXGridObject.prototype._correctSplit=function(c){c=c||(this.obj.scrollWidth-this.objBox.scrollLeft);c=Math.min(this.globalBox.offsetWidth,c);if(c>-1){this.entBox.style.width=c+"px";this.objBox.style.width=c+"px";var h=(this.globalBox.offsetWidth-this.globalBox.clientWidth)/2;this._fake.entBox.style.left=c+"px";this._fake.entBox.style.width=Math.max(0,this.globalBox.offsetWidth-c-(this.quirks?0:2)*h)+"px";if(this._fake.ftr){this._fake.ftr.parentNode.style.width=this._fake.entBox.style.width}if(_isIE){var g=_isIE&&!window.xmlHttpRequest;var h=(this.globalBox.offsetWidth-this.globalBox.clientWidth);this._fake.hdrBox.style.width=this._fake.objBox.style.width=Math.max(0,this.globalBox.offsetWidth-(g?h:0)-c)+"px"}}};dhtmlXGridObject.prototype._correctRowHeight=function(q,n){if(!this.rowsAr[q]||!this._fake.rowsAr[q]){return}var m=this.rowsAr[q].offsetHeight;var g=this._fake.rowsAr[q].offsetHeight;var a=Math.max(m,g);if(!a){return}this.rowsAr[q].style.height=this._fake.rowsAr[q].style.height=a+"px";if(window._KHTMLrv){var c=this._fake._cCount;var o;while(!o&&c>=0){o=this.rowsAr[q].childNodes[c];c-=1}var l=this._fake.rowsAr[q].firstChild;if(o&&l){o.style.height=l.style.height=a+"px"}}};dhtmlXGridObject.prototype.enableAutoSizeSaving=function(c,a){this.attachEvent("onResizeEnd",function(){this.saveSizeToCookie(c,a)})};dhtmlXGridObject.prototype.saveOpenStates=function(c,a){if(!c){c=this.entBox.id}var g=[];this._h2.forEachChild(0,function(l){if(l.state=="minus"){g.push(l.id)}});var h="gridOpen"+(c||"")+"="+g.join("|")+(a?("; "+a):"");document.cookie=h};dhtmlXGridObject.prototype.loadOpenStates=function(g,a){var l=this.getCookie(g,"gridOpen");if(!l){return}l=l.split("|");for(var h=0;h<l.length;h++){var c=this.getParentId(l[h]);if(!this.getOpenState(c)){continue}this.openItem(l[h])}};dhtmlXGridObject.prototype.enableAutoHiddenColumnsSaving=function(c,a){this.attachEvent("onColumnHidden",function(){this.saveHiddenColumnsToCookie(c,a)})};dhtmlXGridObject.prototype.enableSortingSaving=function(c,a){this.attachEvent("onBeforeSorting",function(){var g=this;window.setTimeout(function(){g.saveSortingToCookie(c,a)},1);return true})};dhtmlXGridObject.prototype.enableOrderSaving=function(c,a){this.attachEvent("onAfterCMove",function(){this.saveOrderToCookie(c,a);this.saveSizeToCookie(c,a)})};dhtmlXGridObject.prototype.enableAutoSaving=function(c,a){this.enableOrderSaving(c,a);this.enableAutoSizeSaving(c,a);this.enableSortingSaving(c,a)};dhtmlXGridObject.prototype.saveSizeToCookie=function(c,a){if(this.cellWidthType=="px"){var h=this.cellWidthPX.join(",")}else{var h=this.cellWidthPC.join(",")}var g=(this.initCellWidth||(new Array)).join(",");this.setCookie(c,a,0,h);this.setCookie(c,a,1,g)};dhtmlXGridObject.prototype.saveHiddenColumnsToCookie=function(c,a){var h=[].concat(this._hrrar||[]);if(this._fake&&this._fake._hrrar){for(var g=0;g<this._fake._cCount;g++){h[g]=this._fake._hrrar[g]?"1":""}}this.setCookie(c,a,4,h.join(",").replace(/display:none;/g,"1"))};dhtmlXGridObject.prototype.loadHiddenColumnsFromCookie=function(c){var h=this._getCookie(c,4);var a=(h||"").split(",");for(var g=0;g<this._cCount;g++){this.setColumnHidden(g,(a[g]?true:false))}};dhtmlXGridObject.prototype.saveSortingToCookie=function(c,a){this.setCookie(c,a,2,(this.getSortingState()||[]).join(","))};dhtmlXGridObject.prototype.loadSortingFromCookie=function(a){var c=this._getCookie(a,2);c=(c||"").split(",");if(c.length>1&&c[0]<this._cCount){this.sortRows(c[0],null,c[1]);this.setSortImgState(true,c[0],c[1])}};dhtmlXGridObject.prototype.saveOrderToCookie=function(g,a){if(!this._c_order){this._c_order=[];var c=this._cCount;for(var h=0;h<c;h++){this._c_order[h]=h}}this.setCookie(g,a,3,((this._c_order||[]).slice(0,this._cCount)).join(","));this.saveSortingToCookie()};dhtmlXGridObject.prototype.loadOrderFromCookie=function(c){var l=this._getCookie(c,3);l=(l||"").split(",");if(l.length>1&&l.length<=this._cCount){for(var h=0;h<l.length;h++){if((!this._c_order&&l[h]!=h)||(this._c_order&&l[h]!=this._c_order[h])){var g=l[h];if(this._c_order){for(var a=0;a<this._c_order.length;a++){if(this._c_order[a]==l[h]){g=a;break}}}this.moveColumn(g*1,h)}}}};dhtmlXGridObject.prototype.loadSizeFromCookie=function(a){var g=this._getCookie(a,1);if(g){this.initCellWidth=g.split(",")}var g=this._getCookie(a,0);if((g)&&(g.length)){if(!this._fake&&this._hrrar){for(var c=0;c<g.length;c++){if(this._hrrar[c]){g[c]=0}}}if(this.cellWidthType=="px"){this.cellWidthPX=g.split(",")}else{this.cellWidthPC=g.split(",")}}this.setSizes();return true};dhtmlXGridObject.prototype.clearConfigCookie=function(a){if(!a){a=this.entBox.id}var c="gridSettings"+a+"=||||";document.cookie=c};dhtmlXGridObject.prototype.clearSizeCookie=dhtmlXGridObject.prototype.clearConfigCookie;dhtmlXGridObject.prototype.setCookie=function(c,a,m,h){if(!c){c=this.entBox.id}var g=this.getCookie(c);g=(g||"||||").split("|");g[m]=h;var l="gridSettings"+c+"="+g.join("|").replace(/,/g,"-")+(a?("; "+a):"");document.cookie=l};dhtmlXGridObject.prototype.getCookie=function(c,h){if(!c){c=this.entBox.id}c=(h||"gridSettings")+c;var g=c+"=";if(document.cookie.length>0){var l=document.cookie.indexOf(g);if(l!=-1){l+=g.length;var a=document.cookie.indexOf(";",l);if(a==-1){a=document.cookie.length}return document.cookie.substring(l,a)}}};dhtmlXGridObject.prototype._getCookie=function(a,c){return((this.getCookie(a)||"||||").replace(/-/g,",").split("|"))[c]};dhtmlXGridObject.prototype.enableUndoRedo=function(){var c=this;var g=function(){return c._onEditUndoRedo.apply(c,arguments)};this.attachEvent("onEditCell",g);var a=function(l,h,m){return c._onEditUndoRedo.apply(c,[2,l,h,(m?1:0),(m?0:1)])};this.attachEvent("onCheckbox",a);this._IsUndoRedoEnabled=true;this._UndoRedoData=[];this._UndoRedoPos=-1};dhtmlXGridObject.prototype.disableUndoRedo=function(){this._IsUndoRedoEnabled=false;this._UndoRedoData=[];this._UndoRedoPos=-1};dhtmlXGridObject.prototype._onEditUndoRedo=function(g,c,m,h,a){if(this._IsUndoRedoEnabled&&g==2&&a!=h){if(this._UndoRedoPos!==-1&&this._UndoRedoPos!=(this._UndoRedoData.length-1)){this._UndoRedoData=this._UndoRedoData.slice(0,this._UndoRedoPos+1)}else{if(this._UndoRedoPos===-1&&this._UndoRedoData.length>0){this._UndoRedoData=[]}}var l={old_value:a,new_value:h,row_id:c,cell_index:m};this._UndoRedoData.push(l);this._UndoRedoPos++}return true};dhtmlXGridObject.prototype.doUndo=function(){if(this._UndoRedoPos===-1){return false}var a=this._UndoRedoData[this._UndoRedoPos--];var g=this.cells(a.row_id,a.cell_index);if(this.getColType(a.cell_index)=="tree"){g.setLabel(a.old_value)}else{g.setValue(a.old_value)}this.callEvent("onUndo",[a.row_id])};dhtmlXGridObject.prototype.doRedo=function(){if(this._UndoRedoPos==this._UndoRedoData.length-1){return false}var a=this._UndoRedoData[++this._UndoRedoPos];this.cells(a.row_id,a.cell_index).setValue(a.new_value);this.callEvent("onUndo",[a.row_id])};dhtmlXGridObject.prototype.getRedo=function(){if(this._UndoRedoPos==this._UndoRedoData.length-1){return[]}return this._UndoRedoData.slice(this._UndoRedoPos+1)};dhtmlXGridObject.prototype.getUndo=function(){if(this._UndoRedoPos==-1){return[]}return this._UndoRedoData.slice(0,this._UndoRedoPos+1)};function eXcell_time(a){this.base=eXcell_ed;this.base(a);this.getValue=function(){return this.cell.innerHTML.toString()};this.setValue=function(m){var l=new RegExp(" ","i");m=m.replace(l,":");if((m=="")){m="00:00"}else{var l=new RegExp("[a-zA-Z]","i");var h=m.match(l);if(h){m="00:00"}else{var l=new RegExp("[0-9]+[\\.\\/;\\-,_\\]\\[\\?\\: ][0-9]+","i");var h=m.search(l);if(h!=-1){var l=new RegExp("[\\./\\;\\-\\,\\_\\]\\[ \\?]","i");m=m.replace(l,":")}else{var l=new RegExp("[^0-9]","i");res1=m.search(l);if(h=m.match(l)){m="00:00"}else{if(m.length==1){m="00:0"+m}else{if(parseInt(m)<60){m="00:"+m}else{if(m.length<5){var g=parseInt(m);var c=Math.floor(g/60);g=g-60*c;var c=c.toString();var g=g.toString();while(c.length<2){c="0"+c}while(g.length<2){g="0"+g}m=c+":"+g}}}}}}}this.cell.innerHTML=m}}eXcell_time.prototype=new eXcell_ed;function eXcell_sub_row(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.getValue=function(){return this.grid.getUserData(this.cell.parentNode.idd,"__sub_row")};this._setState=function(c,g){(g||this.cell).innerHTML="<img src='"+this.grid.imgURL+c+"' width='18' height='18' />";(g||this.cell).firstChild.onclick=this.grid._expandMonolite};this.open=function(){this.cell.firstChild.onclick(null,true)};this.close=function(){this.cell.firstChild.onclick(null,false,true)};this.isOpen=function(){return !!this.cell.parentNode._expanded};this.setValue=function(c){if(c){this.grid.setUserData(this.cell.parentNode.idd,"__sub_row",c)}this._setState(c?"plus.gif":"blank.gif")};this.setContent=function(c){if(this.cell.parentNode._expanded){this.cell.parentNode._expanded.innerHTML=c;this.resize()}else{this.cell._previous_content=null;this.setValue(c);this.cell._sub_row_type=null}};this.resize=function(){this.grid._detectHeight(this.cell.parentNode._expanded,this.cell,this.cell.parentNode._expanded.scrollHeight)},this.isDisabled=function(){return true};this.getTitle=function(){return this.grid.getUserData(this.cell.parentNode.idd,"__sub_row")?"click to expand|collapse":""}}eXcell_sub_row.prototype=new eXcell;function eXcell_sub_row_ajax(a){this.base=eXcell_sub_row;this.base(a);this.setValue=function(c){if(c){this.grid.setUserData(this.cell.parentNode.idd,"__sub_row",c)}this.cell._sub_row_type="ajax";this.cell._previous_content=null;this._setState(c?"plus.gif":"blank.gif")}}eXcell_sub_row_ajax.prototype=new eXcell_sub_row;function eXcell_sub_row_grid(a){this.base=eXcell_sub_row;this.base(a);this.setValue=function(c){if(c){this.grid.setUserData(this.cell.parentNode.idd,"__sub_row",c)}this.cell._sub_row_type="grid";this._setState(c?"plus.gif":"blank.gif")};this.getSubGrid=function(){if(!a._sub_grid){return null}return a._sub_grid}}eXcell_sub_row_grid.prototype=new eXcell_sub_row;dhtmlXGridObject.prototype._expandMonolite=function(a,u,m){var g=this.parentNode;var v=g.parentNode;var q=v.grid;if(a||window.event){if(!m&&!v._expanded){q.editStop()}(a||event).cancelBubble=true}var s=q.getUserData(v.idd,"__sub_row");if(!q._sub_row_editor){q._sub_row_editor=new eXcell_sub_row(g)}if(!s){return}if(v._expanded&&!u){q._sub_row_editor._setState("plus.gif",g);g._previous_content=v._expanded;q.objBox.removeChild(v._expanded);v._expanded=false;v.style.height=(v.oldHeight||20)+"px";g.style.height=(v.oldHeight||20)+"px";if(q._fake){q._fake.rowsAr[v.idd].style.height=(v.oldHeight||20)+"px";q._fake.rowsAr[v.idd].firstChild.style.height=(v.oldHeight||20)+"px"}for(var l=0;l<v.cells.length;l++){v.cells[l].style.verticalAlign="middle"}delete q._flow[v.idd];q._correctMonolite();v._expanded.ctrl=null}else{if(!v._expanded&&!m){q._sub_row_editor._setState("minus.gif",g);v.oldHeight=g.offsetHeight-4;if(g._previous_content){var r=g._previous_content;r.ctrl=g;q.objBox.appendChild(r);q._detectHeight(r,g,parseInt(r.style.height))}else{var r=document.createElement("DIV");r.ctrl=g;if(g._sub_row_type){q._sub_row_render[g._sub_row_type](q,r,g,s)}else{r.innerHTML=s}r.style.cssText="position:absolute; left:0px; top:0px; overflow:auto; font-family:Tahoma; font-size:8pt; margin-top:2px; margin-left:4px;";r.className="dhx_sub_row";q.objBox.appendChild(r);q._detectHeight(r,g)}if(!q._flow){q.attachEvent("onGridReconstructed",function(){if((this.pagingOn&&!this.parentGrid)||this._srnd){this._collapsMonolite()}else{this._correctMonolite()}});q.attachEvent("onResizeEnd",function(){this._correctMonolite(true)});q.attachEvent("onAfterCMove",function(){this._correctMonolite(true)});q.attachEvent("onDrop",function(){this._correctMonolite(true)});q.attachEvent("onBeforePageChanged",function(){this._collapsMonolite();return true});q.attachEvent("onGroupStateChanged",function(){this._correctMonolite();return true});q.attachEvent("onFilterEnd",function(){this._collapsMonolite()});q.attachEvent("onUnGroup",function(){this._collapsMonolite()});q.attachEvent("onPageChanged",function(){this._collapsMonolite()});q.attachEvent("onXLE",function(){this._collapsMonolite()});q.attachEvent("onClearAll",function(){for(var c in this._flow){if(this._flow[c]&&this._flow[c].parentNode){this._flow[c].parentNode.removeChild(this._flow[c])}}this._flow=[]});q.attachEvent("onEditCell",function(w,n,x){if((w!==2)&&this._flow[n]&&this.cellType[x]!="ch"&&this.cellType[x]!="ra"){this._expandMonolite.apply(this._flow[n].ctrl.firstChild,[0,false,true])}return true});q.attachEvent("onCellChanged",function(x,n){if(!this._flow[x]){return}var w=this.cells(x,n).cell;w.style.verticalAlign="top"});q._flow=[]}q._flow[v.idd]=r;q._correctMonolite();var o=q._srdh>30?11:3;if(q.multiLine){o=0}for(var l=0;l<v.cells.length;l++){v.cells[l].style.verticalAlign="top"}if(q._fake){var h=q._fake.rowsAr[v.idd];for(var l=0;l<h.cells.length;l++){h.cells[l].style.verticalAlign="top"}}v._expanded=r}}if(q._ahgr){q.setSizes()}if(q.parentGrid){q.callEvent("onGridReconstructed",[])}q.callEvent("onSubRowOpen",[v.idd,(!!v._expanded)])};dhtmlXGridObject.prototype._sub_row_render={ajax:function(that,d,td,c){d.innerHTML="Loading...";var xml=new dtmlXMLLoaderObject(function(){d.innerHTML=xml.xmlDoc.responseText;var z=xml.xmlDoc.responseText.match(/<script[^>]*>([^\f]+?)<\/script>/g);if(z){for(var i=0;i<z.length;i++){eval(z[i].replace(/<([\/]{0,1})s[^>]*>/g,""))}}that._detectHeight(d,td);that._correctMonolite();that.setUserData(td.parentNode.idd,"__sub_row",xml.xmlDoc.responseText);td._sub_row_type=null;if(that._ahgr){that.setSizes()}that.callEvent("onSubAjaxLoad",[td.parentNode.idd,xml.xmlDoc.responseText])},this,true,true);xml.loadXML(c)},grid:function(a,g,l,h){l._sub_grid=new dhtmlXGridObject(g);if(a.skin_name){l._sub_grid.setSkin(a.skin_name)}l._sub_grid.parentGrid=a;l._sub_grid.imgURL=a.imgURL;l._sub_grid.iconURL=a.iconURL;l._sub_grid.enableAutoHeight(true);l._sub_grid._delta_x=l._sub_grid._delta_y=null;l._sub_grid.attachEvent("onGridReconstructed",function(){a._detectHeight(g,l,l._sub_grid.objBox.scrollHeight+l._sub_grid.hdr.offsetHeight+(this.ftr?this.ftr.offsetHeight:0));a._correctMonolite();this.setSizes();if(a.parentGrid){a.callEvent("onGridReconstructed",[])}});if(!a.callEvent("onSubGridCreated",[l._sub_grid,l.parentNode.idd,l._cellIndex,h])){l._sub_grid.objBox.style.overflow="hidden";l._sub_row_type=null}else{l._sub_grid.loadXML(h,function(){a._detectHeight(g,l,l._sub_grid.objBox.scrollHeight+l._sub_grid.hdr.offsetHeight+(l._sub_grid.ftr?l._sub_grid.ftr.offsetHeight:0));l._sub_grid.objBox.style.overflow="hidden";a._correctMonolite();l._sub_row_type=null;if(!a.callEvent("onSubGridLoaded",[l._sub_grid,l.parentNode.idd,l._cellIndex,h])){return}if(a._ahgr){a.setSizes()}})}}};dhtmlXGridObject.prototype._detectHeight=function(n,o,c){var a=o.offsetLeft+o.offsetWidth;n.style.left=a+"px";n.style.width=Math.max(0,o.parentNode.offsetWidth-a-4)+"px";var c=c||n.scrollHeight;n.style.overflow="hidden";n.style.height=c+"px";var m=o.parentNode;o.parentNode.style.height=(m.oldHeight||20)+c*1+"px";o.style.height=(m.oldHeight||20)+c*1+"px";if(this._fake){var g=this._fake.rowsAr[o.parentNode.idd];g.style.height=(m.oldHeight||20)+c*1+"px";g.firstChild.style.height=(m.oldHeight||20)+c*1+"px"}};dhtmlXGridObject.prototype._correctMonolite=function(h){if(this._in_correction){return}this._in_correction=true;for(var g in this._flow){if(this._flow[g]&&this._flow[g].tagName=="DIV"){if(this.rowsAr[g]){if(this.rowsAr[g].style.display=="none"){this.cells4(this._flow[g].ctrl).close();continue}this._flow[g].style.top=this.rowsAr[g].offsetTop+(this.rowsAr[g].oldHeight||20)+"px";if(h){var c=this._flow[g].ctrl.offsetLeft+this._flow[g].ctrl.offsetWidth;this._flow[g].style.left=c+"px";this._flow[g].style.width=this.rowsAr[g].offsetWidth-c-4+"px"}}else{this._flow[g].ctrl=null;this.objBox.removeChild(this._flow[g]);delete this._flow[g]}}}this._in_correction=false};dhtmlXGridObject.prototype._collapsMonolite=function(){for(var c in this._flow){if(this._flow[c]&&this._flow[c].tagName=="DIV"){if(this.rowsAr[c]){this.cells4(this._flow[c].ctrl).close()}}}};function eXcell_ra_str(a){if(a){this.base=eXcell_ra;this.base(a);this.grid=a.parentNode.grid}}eXcell_ra_str.prototype=new eXcell_ch;eXcell_ra_str.prototype.setValue=function(g){this.cell.style.verticalAlign="middle";if(g){g=g.toString()._dhx_trim();if((g=="false")||(g=="0")){g=""}}if(g){if(this.grid.rowsAr[this.cell.parentNode.idd]){for(var c=0;c<this.grid._cCount;c++){if(c!==this.cell._cellIndex){var a=this.grid.cells(this.cell.parentNode.idd,c);if((a.cell._cellType||this.grid.cellType[a.cell._cellIndex])!="ra_str"){continue}if(a.getValue()){a.setValue("0")}}}}g="1";this.cell.chstate="1"}else{g="0";this.cell.chstate="0"}this.setCValue("<img src='"+this.grid.imgURL+"radio_chk"+g+".gif' onclick='new eXcell_ra_str(this.parentNode).changeState()'>",this.cell.chstate)};dhtmlXGridObject.prototype._init_point_bcg=dhtmlXGridObject.prototype._init_point;dhtmlXGridObject.prototype._init_point=function(){if(!window.dhx_globalImgPath){window.dhx_globalImgPath=this.imgURL}this._col_combos=[];for(var a=0;a<this._cCount;a++){if(this.cellType[a].indexOf("combo")==0){this._col_combos[a]=eXcell_combo.prototype.initCombo.call({grid:this},a)}}if(!this._loading_handler_set){this._loading_handler_set=this.attachEvent("onXLE",function(h,g,m,l){eXcell_combo.prototype.fillColumnCombos(this,l);this.detachEvent(this._loading_handler_set);this._loading_handler_set=null})}if(this._init_point_bcg){this._init_point_bcg()}};function eXcell_combo(a){if(!a){return}this.cell=a;this.grid=a.parentNode.grid;this._combo_pre="";this.edit=function(){if(!window.dhx_globalImgPath){window.dhx_globalImgPath=this.grid.imgURL}this.val=this.getValue();var c=this.getText();if(this.cell._clearCell){c=""}this.cell.innerHTML="";if(!this.cell._brval){this.combo=(this.grid._realfake?this.grid._fake:this.grid)._col_combos[this.cell._cellIndex]}else{this.combo=this.cell._brval}this.cell.appendChild(this.combo.DOMParent);this.combo.DOMParent.style.margin="0";this.combo.DOMelem_input.focus();this.combo.setSize(this.cell.offsetWidth-2);if(!this.combo._xml){if(this.combo.getIndexByValue(this.cell.combo_value)!=-1){this.combo.selectOption(this.combo.getIndexByValue(this.cell.combo_value))}else{if(this.combo.getOptionByLabel(c)){this.combo.selectOption(this.combo.getIndexByValue(this.combo.getOptionByLabel(c).value))}else{this.combo.setComboText(c)}}}else{this.combo.setComboText(c)}this.combo.openSelect()};this.selectComboOption=function(g,c){c.selectOption(c.getIndexByValue(c.getOptionByLabel(g).value))};this.getValue=function(c){return this.cell.combo_value||""};this.getText=function(g){var h=this.cell;if(this._combo_pre==""&&h.childNodes[1]){h=h.childNodes[1]}else{h.childNodes[0].childNodes[1]}return(_isIE?h.innerText:h.textContent)};this.setValue=function(l){if(typeof(l)=="object"){this.cell._brval=this.initCombo();var g=this.cell._cellIndex;var h=this.cell.parentNode.idd;if(!l.firstChild){this.cell.combo_value=" ";this.cell._clearCell=true}else{this.cell.combo_value=l.firstChild.data}this.setComboOptions(this.cell._brval,l,this.grid,g,h)}else{this.cell.combo_value=l;var c=null;if((c=this.cell._brval)&&(typeof(this.cell._brval)=="object")){l=(c.getOption(l)||{}).text||l}else{if(c=this.grid._col_combos[this.cell._cellIndex]||((this.grid._fake)&&(c=this.grid._fake._col_combos[this.cell._cellIndex]))){l=(c.getOption(l)||{}).text||l}}if((l||"").toString()._dhx_trim()==""){l=null}if(l!==null){this.setComboCValue(l)}else{this.setComboCValue(" ","");this.cell._clearCell=true}}};this.detach=function(){this.cell.removeChild(this.combo.DOMParent);var c=this.cell.combo_value;if(!this.combo.getComboText()||this.combo.getComboText().toString()._dhx_trim()==""){this.setComboCValue(" ");this.cell._clearCell=true}else{this.setComboCValue(this.combo.getComboText().replace(/\&/g,"&").replace(/</g,"<").replace(/>/g,">"),this.combo.getActualValue());this.cell._clearCell=false}this.combo._confirmSelect();this.cell.combo_value=this.combo.getActualValue();this.combo.closeAll();this.grid._still_active=true;this.grid.setActive(1);return c!=this.cell.combo_value}}eXcell_combo.prototype=new eXcell;eXcell_combo_v=function(a){var c=new eXcell_combo(a);c._combo_pre="<img src='"+(window.dhx_globalImgPath?window.dhx_globalImgPath:this.grid.imgURL)+"combo_select"+(dhtmlx.skin?"_"+dhtmlx.skin:"")+".gif' class='dhxgrid_combo_icon'/>";return c};eXcell_combo.prototype.initCombo=function(c){var a=document.createElement("DIV");var h=this.grid.defVal[arguments.length?c:this.cell._cellIndex];var l=new dhtmlXCombo(a,"combo",0,h);this.grid.defVal[arguments.length?c:this.cell._cellIndex]="";l.DOMelem.className+=" dhxcombo_in_grid";var g=this.grid;l.DOMelem.onselectstart=function(){event.cancelBubble=true;return true};l.attachEvent("onKeyPressed",function(m){if(m==13||m==27){g.editStop();if(g._fake){g._fake.editStop()}}});dhtmlxEvent(l.DOMlist,"click",function(){g.editStop();if(g._fake){g._fake.editStop()}});return l};eXcell_combo.prototype.fillColumnCombos=function(g,a){if(!a){return}g.combo_columns=g.combo_columns||[];columns=g.xmlLoader.doXPath("//column",a);for(var c=0;c<columns.length;c++){if((columns[c].getAttribute("type")||"").indexOf("combo")==0){g.combo_columns[g.combo_columns.length]=c;this.setComboOptions(g._col_combos[c],columns[c],g,c)}}};eXcell_combo.prototype.setComboCValue=function(g,c){if(this._combo_pre!=""){var a=(this.cell.offsetHeight?this.cell.offsetHeight+"px":0);g="<div style='width:100%;position:relative;height:100%;overflow:hidden;'>"+this._combo_pre+"<span>"+g+"</span></div>"}if(arguments.length>1){this.setCValue(g,c)}else{this.setCValue(g)}};eXcell_combo.prototype.setComboOptions=function(m,n,g,r,u){if(window.dhx4.s2b(n.getAttribute("xmlcontent"))){if(!n.getAttribute("source")){options=n.childNodes;var a=[];for(var o=0;o<options.length;o++){if(options[o].tagName=="option"){var h=options[o].firstChild?options[o].firstChild.data:"";a[a.length]=[options[o].getAttribute("value"),h]}}m.addOption(a);if(arguments.length==4){g.forEachRowA(function(w){var v=g.cells(w,r);if(!v.cell._brval&&!v.cell._cellType&&(v.cell._cellIndex==r)){if(v.cell.combo_value==""){v.setComboCValue(" ","")}else{if(!m.getOption(v.cell.combo_value)){v.setComboCValue(v.cell.combo_value)}else{v.setComboCValue(m.getOption(v.cell.combo_value).text)}}}})}else{var s=(this.cell)?this:g.cells(u,r);if(n.getAttribute("text")){if(n.getAttribute("text")._dhx_trim()==""){s.setComboCValue(" ","")}else{s.setComboCValue(n.getAttribute("text"))}}else{if((!s.cell.combo_value)||(s.cell.combo_value._dhx_trim()=="")){s.setComboCValue(" ","")}else{if(!m.getOption(s.cell.combo_value)){s.setComboCValue(s.cell.combo_value)}else{s.setComboCValue(m.getOption(s.cell.combo_value).text)}}}}}}if(n.getAttribute("source")){if(n.getAttribute("auto")&&window.dhx4.s2b(n.getAttribute("auto"))){if(n.getAttribute("xmlcontent")){var s=(this.cell)?this:g.cells(u,r);if(n.getAttribute("text")){s.setComboCValue(n.getAttribute("text"))}}else{g.forEachRowA(function(y){var x=g.cells(y,r);if(!x.cell._brval&&!x.cell._cellType){var w=x.cell.combo_value.toString();if(w.indexOf("^")!=-1){var v=w.split("^");x.cell.combo_value=v[0];x.setComboCValue(v[1])}}})}m.enableFilteringMode(true,n.getAttribute("source"),window.dhx4.s2b(n.getAttribute("cache")||true),window.dhx4.s2b(n.getAttribute("sub")||false))}else{var q=this;var l=arguments.length;m.load(n.getAttribute("source"),function(){if(l==4){g.forEachRow(function(x){var w=g.cells(x,r);if(!w.cell._brval&&!w.cell._cellType){if(m.getOption(w.cell.combo_value)){w.setComboCValue(m.getOption(w.cell.combo_value).text)}else{if((w.cell.combo_value||"").toString()._dhx_trim()==""){w.setComboCValue(" ","");w.cell._clearCell=true}else{w.setComboCValue(w.cell.combo_value)}}}})}else{var v=g.cells(u,r);if(m.getOption(v.cell.combo_value)){v.setComboCValue(m.getOption(v.cell.combo_value).text)}else{v.setComboCValue(v.cell.combo_value)}}})}}if(!n.getAttribute("auto")||!window.dhx4.s2b(n.getAttribute("auto"))){if(n.getAttribute("editable")&&!window.dhx4.s2b(n.getAttribute("editable"))){m.readonly(true)}if(n.getAttribute("filter")&&window.dhx4.s2b(n.getAttribute("filter"))){m.enableFilteringMode(true)}}};eXcell_combo.prototype.getCellCombo=function(){if(this.cell._brval){return this.cell._brval}this.cell._brval=this.initCombo();return this.cell._brval};eXcell_combo.prototype.refreshCell=function(){this.setValue(this.getValue())};dhtmlXGridObject.prototype.getColumnCombo=function(a){if(this._col_combos&&this._col_combos[a]){return this._col_combos[a]}if(!this._col_combos){this._col_combos=[]}this._col_combos[a]=eXcell_combo.prototype.initCombo.call({grid:this},a);return this._col_combos[a]};dhtmlXGridObject.prototype.refreshComboColumn=function(a){this.forEachRow(function(c){if(this.cells(c,a).refreshCell){this.cells(c,a).refreshCell()}})};function eXcell_clist(a){try{this.cell=a;this.grid=this.cell.parentNode.grid}catch(c){}this.edit=function(){this.val=this.getValue();var h=(this.cell._combo||this.grid.clists[this.cell._cellIndex]);if(!h){return}this.obj=document.createElement("DIV");var g=this.val.split(",");var q="";for(var n=0;n<h.length;n++){var o=false;for(var l=0;l<g.length;l++){if(h[n]==g[l]){o=true}}if(o){q+="<div><input type='checkbox' id='dhx_clist_"+n+"' checked='true' /><label for='dhx_clist_"+n+"'>"+h[n]+"</label></div>"}else{q+="<div><input type='checkbox' id='dhx_clist_"+n+"'/><label for='dhx_clist_"+n+"'>"+h[n]+"</label></div>"}}q+="<div><input type='button' value='"+(this.grid.applyButtonText||"Apply")+"' style='width:100px; font-size:8pt;' onclick='this.parentNode.parentNode.editor.grid.editStop();'/></div>";this.obj.editor=this;this.obj.innerHTML=q;document.body.appendChild(this.obj);this.obj.style.position="absolute";this.obj.className="dhx_clist";this.obj.onclick=function(r){(r||event).cancelBubble=true;return true};var m=this.grid.getPosition(this.cell);this.obj.style.left=m[0]+"px";this.obj.style.top=m[1]+this.cell.offsetHeight+"px";this.obj.getValue=function(){var s="";for(var r=0;r<this.childNodes.length-1;r++){if(this.childNodes[r].childNodes[0].checked){if(s){s+=", "}s+=this.childNodes[r].childNodes[1].innerHTML}}return s.replace(/&/g,"&")}};this.getValue=function(){if(this.cell._clearCell){return""}return this.cell.innerHTML.toString()._dhx_trim().replace(/&/g,"&").replace(/, /g,",")};this.detach=function(g){if(this.obj){this.setValue(this.obj.getValue());this.obj.editor=null;this.obj.parentNode.removeChild(this.obj);this.obj=null}return this.val!=this.getValue()}}eXcell_clist.prototype=new eXcell;eXcell_clist.prototype.setValue=function(g){if(typeof(g)=="object"){var c=this.grid.xmlLoader.doXPath("./option",g);if(c.length){this.cell._combo=[]}for(var a=0;a<c.length;a++){this.cell._combo.push(c[a].firstChild?c[a].firstChild.data:"")}g=g.firstChild.data}if(g===""||g===this.undefined){this.setCTxtValue(" ",g);this.cell._clearCell=true}else{g=g.replace(/,[ ]*/g,", ");this.setCTxtValue(g);this.cell._clearCell=false}};dhtmlXGridObject.prototype.registerCList=function(a,c){if(!this.clists){this.clists=new Array()}if(typeof(c)!="object"){c=c.split(",")}this.clists[a]=c};function eXcell_calck(a){try{this.cell=a;this.grid=this.cell.parentNode.grid}catch(c){}this.edit=function(){this.val=this.getValue();var g=this.grid.getPosition(this.cell);this.obj=new calcX(g[0],g[1]+this.cell.offsetHeight,this,this.val)};this.getValue=function(){return this.grid._aplNFb(this.cell.innerHTML.toString()._dhx_trim(),this.cell._cellIndex)};this.detach=function(){if(this.obj){this.setValue(this.obj.inputZone.value);this.obj.removeSelf()}this.obj=null;return this.val!=this.getValue()}}eXcell_calck.prototype=new eXcell;eXcell_calck.prototype.setValue=function(a){if(!a||a.toString()._dhx_trim()==""){a="0"}this.setCValue(this.grid._aplNF(a,this.cell._cellIndex),a)};function calcX(left,top,onReturnSub,val){this.top=top||0;this.left=left||0;this.onReturnSub=onReturnSub||null;this.operandA=0;this.operandB=0;this.operatorA="";this.state=0;this.dotState=0;this.calckGo=function(){return(eval(this.operandA+"*1"+this.operatorA+this.operandB+"*1"))};this.isNumeric=function(str){return((str.search(/[^1234567890]/gi)==-1)?(true):(false))};this.isOperation=function(str){return((str.search(/[^\+\*\-\/]/gi)==-1)?(true):(false))};this.onCalcKey=function(e){that=this.calk;var z=this.innerHTML;var rZone=that.inputZone;if(((that.state==0)||(that.state==2))&&(that.isNumeric(z))){if(rZone.value!="0"){rZone.value+=z}else{rZone.value=z}}if((((that.state==0)||(that.state==2))&&(z=="."))&&(that.dotState==0)){that.dotState=1;rZone.value+=z}if((z=="C")){rZone.value=0;that.dotState=0;that.state=0}if((that.state==0)&&(that.isOperation(z))){that.operatorA=z;that.operandA=rZone.value;that.state=1}if((that.state==2)&&(that.isOperation(z))){that.operandB=rZone.value;rZone.value=that.calckGo();that.operatorA=z;that.operandA=rZone.value;that.state=1}if((that.state==2)&&(z=="=")){that.operandB=rZone.value;rZone.value=that.calckGo();that.operatorA=z;that.operandA=rZone.value;that.state=3}if((that.state==1)&&(that.isNumeric(z))){rZone.value=z;that.state=2;that.dotState=0}if((that.state==3)&&(that.isNumeric(z))){rZone.value=z;that.state=0}if((that.state==3)&&(that.isOperation(z))){that.operatorA=z;that.operandA=rZone.value;that.state=1}if(z=="e"){rZone.value=Math.E;if(that.state==1){that.state=2}that.dotState=0}if(z=="p"){rZone.value=Math.PI;if(that.state==1){that.state=2}that.dotState=0}if(z=="Off"){that.topNod.parentNode.removeChild(that.topNod)}if(e||event){(e||event).cancelBubble=true}};this.sendResult=function(){that=this.calk;if(that.state==2){var rZone=that.inputZone;that.operandB=rZone.value;rZone.value=that.calckGo();that.operatorA=z;that.operandA=rZone.value;that.state=3}var z=that.inputZone.value;that.topNod.parentNode.removeChild(that.topNod);that.onReturnSub.grid.editStop(false)};this.removeSelf=function(){if(this.topNod.parentNode){this.topNod.parentNode.removeChild(this.topNod)}};this.keyDown=function(){this.className="calcPressed"};this.keyUp=function(){this.className="calcButton"};this.init_table=function(){var table=this.topNod.childNodes[0];if((!table)||(table.tagName!="TABLE")){return}for(i=1;i<table.childNodes[0].childNodes.length;i++){for(j=0;j<table.childNodes[0].childNodes[i].childNodes.length;j++){table.childNodes[0].childNodes[i].childNodes[j].onclick=this.onCalcKey;table.childNodes[0].childNodes[i].childNodes[j].onmousedown=this.keyDown;table.childNodes[0].childNodes[i].childNodes[j].onmouseout=this.keyUp;table.childNodes[0].childNodes[i].childNodes[j].onmouseup=this.keyUp;table.childNodes[0].childNodes[i].childNodes[j].calk=this}}this.inputZone=this.topNod.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0];if(this.onReturnSub){this.topNod.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].onclick=this.sendResult;this.topNod.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].calk=this}else{this.topNod.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].innerHTML=""}};this.drawSelf=function(){var div=document.createElement("div");div.className="calcTable";div.style.position="absolute";div.style.top=this.top+"px";div.style.left=this.left+"px";div.innerHTML="<table cellspacing='0' id='calc_01' class='calcTable'><tr><td colspan='4'><table cellpadding='1' cellspacing='0' width='100%'><tr><td width='100%' style='overflow:hidden;'><input style='width:100%' class='calcInput' value='0' align='right' readonly='true' style='text-align:right'></td><td class='calkSubmit'>=</td></tr></table></td></tr><tr><td class='calcButton' width='25%'>Off</td><td class='calcButton' width='25%'>p</td><td class='calcButton' width='25%'>e</td><td class='calcButton' width='25%'>/</td></tr><tr><td class='calcButton'>7</td><td class='calcButton'>8</td><td class='calcButton'>9</td><td class='calcButton'>*</td></tr><tr><td class='calcButton'>4</td><td class='calcButton'>5</td><td class='calcButton'>6</td><td class='calcButton'>+</td></tr><tr><td class='calcButton'>1</td><td class='calcButton'>2</td><td class='calcButton'>3</td><td class='calcButton'>-</td></tr><tr><td class='calcButton'>0</td><td class='calcButton'>.</td><td class='calcButton'>C</td><td class='calcButton'>=</td></tr></table>";div.onclick=function(e){(e||event).cancelBubble=true};document.body.appendChild(div);this.topNod=div};this.drawSelf();this.init_table();if(val){var rZone=this.inputZone;rZone.value=val*1;this.operandA=val*1;this.state=3}return this}dhtmlXGridObject.prototype._updateTGRState=function(a){if(!a.update||a.id==0){return}if(this.rowsAr[a.id].imgTag){this.rowsAr[a.id].imgTag.src=this.iconTree+a.state+".gif"}a.update=false};dhtmlXGridObject.prototype.doExpand=function(c){this.editStop();var g=c.parentNode.parentNode.parentNode;var a=this._h2.get[g.idd];if(!this.callEvent("onOpen",[g.idd,(a.state=="plus"?-1:1)])){return}if(a.state=="plus"){this.expandKids(g)}else{if((a.state=="minus")&&(!a._closeable)){this.collapseKids(g)}}};function dhtmlxHierarchy(){var a={id:0,childs:[],level:-1,parent:null,index:0,state:dhtmlXGridObject._emptyLineImg};this.order=[a];this.get={"0":a};this.swap=function(g,c){var h=g.parent;var l=g.index;h.childs[l]=c;h.childs[c.index]=g;g.index=c.index;c.index=l};this.forEachChildF=function(n,c,l,g){var m=this.get[n];for(var h=0;h<m.childs.length;h++){if(!c.apply((l||this),[m.childs[h]])){continue}if(m.childs[h].childs.length){this.forEachChildF(m.childs[h].id,c,l,g)}if(g){g.call((l||this),m.childs[h])}}};this.forEachChild=function(m,c,h){var l=this.get[m];for(var g=0;g<l.childs.length;g++){c.apply((h||this),[l.childs[g]]);if(l.childs[g].childs.length){this.forEachChild(l.childs[g].id,c,h)}}};this.change=function(l,c,h){var g=this.get[l];if(g[c]==h){return}g[c]=h;g.update=true};this.add=function(g,c){return this.addAfter(g,c)};this.addAfter=function(q,o,h,g){var n=this.get[o||0];if(h){var m=this.get[h].index+(g?0:1)}else{var m=n.childs.length}var c={id:q,childs:[],level:n.level+1,parent:n,index:m,state:dhtmlXGridObject._emptyLineImg};if(n.state==dhtmlXGridObject._emptyLineImg){this.change(o,"state",(o==0?"minus":"plus"))}if(h){for(var l=m;l<n.childs.length;l++){n.childs[l].index++}n.childs=n.childs.slice(0,m).concat([c]).concat(n.childs.slice(m,n.childs.length))}else{n.childs.push(c)}this.get[q]=c;return c};this.addBefore=function(h,g,c){return this.addAfter(h,g,c,true)};this.remove=function(h){var g=this.get[h||0];for(var c=0;c<g.childs.length;c++){this.deleteAll(g.childs[c].id)}g.childs=[];g.parent.childs=g.parent.childs.slice(0,g.index).concat(g.parent.childs.slice(g.index+1));for(var c=g.index;c<g.parent.childs.length;c++){g.parent.childs[c].index--}delete this.get[h]};this.deleteAll=function(h){var g=this.get[h||0];for(var c=0;c<g.childs.length;c++){this.deleteAll(g.childs[c].id)}g.childs=[];delete this.get[h]};return this}dhtmlXGridObject.prototype._getOpenLenght=function(h,g){var c=this._h2.get[h].childs;g+=c.length;for(var a=0;a<c.length;a++){if(c[a].childs.length&&c[a].state=="minus"){g+=this._getOpenLenght(c[a].id,0)}}return g};dhtmlXGridObject.prototype.collapseKids=function(g){var h=this._h2.get[g.idd];if(h.state!="minus"){return}if(!this.callEvent("onOpenStart",[g.idd,1])){return}var l=g.rowIndex;if(l<0){l=this.rowsCol._dhx_find(g)+1}this._h2.change(h.id,"state","plus");this._updateTGRState(h);if(this._srnd||this.pagingOn){this._h2_to_buff();this._renderSort()}else{var a=this._getOpenLenght(this.rowsCol[l-1].idd,0);for(var c=0;c<a;c++){this.rowsCol[l+c].parentNode.removeChild(this.rowsCol[l+c])}this.rowsCol.splice(l,a)}this.callEvent("onGridReconstructed",[]);this.setSizes();this._h2_to_buff();this.callEvent("onOpenEnd",[g.idd,-1])};dhtmlXGridObject.prototype._massInsert=function(a,g,h,q){var l=[];var o=(_isKHTML?this.obj:this.obj.rows[0].parentNode);this._h2_to_buff();if(this._srnd||this.pagingOn){return this._renderSort()}var n=this._getOpenLenght(a.id,0);for(var m=0;m<n;m++){var c=this.render_row(h+m);if(g){g.parentNode.insertBefore(c,g)}else{o.appendChild(c)}l.push(c)}this.rowsCol=dhtmlxArray(this.rowsCol.slice(0,h).concat(l).concat(this.rowsCol.slice(h)));return a.childs.length+l.length};dhtmlXGridObject.prototype.expandKids=function(c,l){var g=this._h2.get[c.idd];if((!g.childs.length)&&(!g._xml_await)){return}if(g.state!="plus"){return}if(!g._loading&&!l){if(!this.callEvent("onOpenStart",[g.id,-1])){return}}var h=this.getRowIndex(g.id)+1;if(g.childs.length){g._loading=false;this._h2.change(g.id,"state","minus");this._updateTGRState(g);var a=this._massInsert(g,this.rowsCol[h],h);this.callEvent("onGridReconstructed",[])}else{if(g._xml_await){g._loading=true;if(this.callEvent("onDynXLS",[g.id])){this.load(this.kidsXmlFile+""+(this.kidsXmlFile.indexOf("?")!=-1?"&":"?")+"id="+encodeURIComponent(g.id),this._data_type)}}}this.setSizes();if(!g._loading){this.callEvent("onOpenEnd",[g.id,1])}this._fixAlterCss()};dhtmlXGridObject.prototype.kidsXmlFile="";dhtmlXGridObject.prototype.sortTreeRows=function(h,l,a){var m="getValue";if(this.cells5({parentNode:{grid:this}},this.getColType(h)).getDate){m="getDate";l="str"}this.forEachRow(function(s){var r=this._h2.get[s];if(!r){return}var q=this._get_cell_value(r.buff,h,m);if(l=="int"){r._sort=parseFloat(q);r._sort=isNaN(r._sort)?-99999999999999:r._sort}else{r._sort=q}});var g=this;var o=1;var n=-1;if(a=="des"){o=-1;n=1}var c=null;if(typeof l=="function"){c=function(r,q){return l(r._sort,q._sort,a,r.id,q.id)}}else{if(l=="cus"){c=function(r,q){return g._customSorts[h](r._sort,q._sort,a,r.id,q.id)}}if(l=="str"){c=function(r,q){return(r._sort<q._sort?n:(r._sort==q._sort?0:o))}}if(l=="int"){c=function(r,q){return(r._sort<q._sort?n:(r._sort==q._sort?0:o))}}if(l=="date"){c=function(r,q){return(Date.parse(new Date(r._sort||"01/01/1900"))-Date.parse(new Date(q._sort||"01/01/1900")))*o}}}this._sortTreeRows(c,0);this._renderSort(0,true);this.callEvent("onGridReconstructed",[])};dhtmlXGridObject.prototype._sortTreeRows=function(a,h){var c=this._h2.get[h].childs;if(this.rowsCol.stablesort){this.rowsCol.stablesort.call(c,a)}else{c.sort(a)}for(var g=0;g<c.length;g++){if(c[g].childs.length){this._sortTreeRows(a,c[g].id)}c[g].index=g}};dhtmlXGridObject.prototype._renderSort=function(g,c){this._h2_to_buff();var a=this.objBox.scrollTop;this._reset_view();this.objBox.scrollTop=a};dhtmlXGridObject.prototype._fixAlterCssTGR=function(){if(!this._realfake){this._h2.forEachChild(0,function(a){if(a.buff.tagName=="TR"){var c=(this._cssSP?(a.level%2):(a.index%2))?this._cssUnEven:this._cssEven;this.rowsAr[a.id].className=(c+(this._cssSU?(" "+c+"_"+a.level):""))+" "+(this.rowsAr[a.id]._css||"")+((this.rowsAr[a.id].className.indexOf("rowselected")!=-1)?" rowselected":"")}},this)}};dhtmlXGridObject.prototype.moveRowUDTG=function(c,l){var o=this._h2.get[c];var g=o.parent.childs[o.index+l];if((!g)||(g.parent!=o.parent)){return}var a=[o.state,g.state];this.collapseKids(this.rowsAr[o.id]);this.collapseKids(this.rowsAr[g.id]);var h=this.rowsCol._dhx_find(this.rowsAr[c]);var n=this.rowsBuffer._dhx_find(this.rowsAr[c]);var q=this.obj.rows[0].parentNode.removeChild(this.rowsCol[h]);var m=this.rowsCol[h+((l==1)?2:l)];if(m){m.parentNode.insertBefore(q,m)}else{this.obj.rows[0].parentNode.appendChild(q)}this.rowsCol._dhx_swapItems(h,h+l);this.rowsBuffer._dhx_swapItems(n,n+l);this._h2.swap(g,o);if(a[0]=="minus"){this.expandKids(this.rowsAr[o.id])}if(a[1]=="minus"){this.expandKids(this.rowsAr[g.id])}this._fixAlterCss(Math.min(h,h+l))};function eXcell_tree(a){if(a){this.cell=a;this.grid=this.cell.parentNode.grid}this.isDisabled=function(){return this.cell._disabled||this.grid._edtc};this.edit=function(){if((this.er)||(this.grid._edtc)){return}this.er=this.cell.parentNode.valTag;this.val=this.getLabel();this.cell.atag=((!this.grid.multiLine)&&(_isKHTML||_isMacOS||_isFF))?"INPUT":"TEXTAREA";this.er.innerHTML="<"+this.cell.atag+" class='dhx_combo_edit' type='text' style='height:"+(this.cell.offsetHeight-4)+"px;line-height:"+(this.cell.offsetHeight-6)+"px; width:100%; border:0px; margin:0px; padding:0px; overflow:hidden;'></"+this.cell.atag+">";this.er.childNodes[0].onmousedown=function(c){(c||event).cancelBubble=true};this.er.childNodes[0].onselectstart=function(c){if(!c){c=event}c.cancelBubble=true;return true};this.er.className+=" editable";this.er.firstChild.onclick=function(c){(c||event).cancelBubble=true};this.er.firstChild.value=this.val;this.obj=this.er.firstChild;this.er.firstChild.style.width=Math.max(0,this.cell.offsetWidth-this.er.offsetLeft-2)+"px";this.er.firstChild.focus();if(_isIE){this.er.firstChild.focus()}};this.detach=function(){if(!this.er){return}this.setLabel(this.er.firstChild.value);this.er.className=this.er.className.replace("editable","");var c=(this.val!=this.er.innerHTML);this.obj=this.er=null;return(c)};this.getValue=function(){return this.getLabel()};this.setImage=function(c){this.cell.parentNode.imgTag.nextSibling.src=this.grid.iconURL+c;this.grid._h2.get[this.cell.parentNode.idd].image=c};this.getImage=function(){return this.grid._h2.get[this.cell.parentNode.idd].image};this.setLabel=function(c){this.setValueA(c)};this.getLabel=function(c){return this.cell.parentNode.valTag.innerHTML}}eXcell_tree.prototype=new eXcell;eXcell_tree.prototype.setValueA=function(a){this.cell.parentNode.valTag.innerHTML=a;this.grid.callEvent("onCellChanged",[this.cell.parentNode.idd,this.cell._cellIndex,a])};eXcell_tree.prototype.setValue=function(a){if(this.cell.parentNode.imgTag){return this.setLabel(a)}if((this.grid._tgc.iconTree==null)||(this.grid._tgc.iconTree!=this.grid.iconTree)){var l={};l.spacer="<img src='"+this.grid.iconTree+"blank.gif' align='top' class='space'>";l.imst="<img style='margin-top:-2px;' src='"+this.grid.iconTree;l.imsti="<img style='padding-top:2px;' src='"+(this.grid.iconURL||this.grid.iconTree);l.imact="' align='top' onclick='this."+(_isKHTML?"":"parentNode.")+"parentNode.parentNode.parentNode.parentNode.grid.doExpand(this);event.cancelBubble=true;'>";l.plus=l.imst+"plus.gif"+l.imact;l.minus=l.imst+"minus.gif"+l.imact;l.blank=l.imst+"blank.gif"+l.imact;l.start="<div class='treegrid_cell' style='overflow:hidden; white-space : nowrap; line-height:23px; height:"+(_isIE?21:23)+"px;'>";l.itemim="' align='top' "+(this.grid._img_height?(' height="'+this.grid._img_height+'"'):"")+(this.grid._img_width?(' width="'+this.grid._img_width+'"'):"")+" ><span id='nodeval'>";l.close="</span></div>";this.grid._tgc=l}var m=this.grid._h2;var l=this.grid._tgc;var h=this.cell.parentNode.idd;var n=this.grid._h2.get[h];if(this.grid.kidsXmlFile||this.grid._slowParse){n.has_kids=(n.has_kids||(this.cell.parentNode._attrs.xmlkids&&(n.state!="minus")));n._xml_await=!!n.has_kids}n.image=n.image||(this.cell._attrs.image||"leaf.gif");n.label=a;var g=[l.start];for(var c=0;c<n.level;c++){g.push(l.spacer)}if(n.has_kids){g.push(l.plus);n.state="plus"}else{g.push(l.imst+n.state+".gif"+l.imact)}g.push(l.imsti);g.push(n.image);g.push(l.itemim);g.push(n.label);g.push(l.close);this.cell.innerHTML=g.join("");this.cell._treeCell=true;this.cell.parentNode.imgTag=this.cell.childNodes[0].childNodes[n.level];this.cell.parentNode.valTag=this.cell.childNodes[0].childNodes[n.level+2];if(_isKHTML){this.cell.vAlign="top"}if(n.parent.id!=0&&n.parent.state=="plus"){this.grid._updateTGRState(n.parent,false);this.cell.parentNode._skipInsert=true}this.grid.callEvent("onCellChanged",[h,this.cell._cellIndex,a])};dhtmlXGridObject.prototype._process_tree_xml=function(l,n,m){this._parsing=true;var g=false;if(!n){this.render_row=this.render_row_tree;g=true;n=l.getXMLTopNode(this.xml.top);m=n.getAttribute("parent")||0;if(m=="0"){m=0}if(!this._h2){this._h2=new dhtmlxHierarchy()}if(this._fake){this._fake._h2=this._h2}}var q=l.doXPath(this.xml.row,n);this._open=this._open||[];for(var h=0;h<q.length;h++){var c=q[h].getAttribute("id");if(!c){c=this.uid();q[h].setAttribute("id",c)}var o=this._h2.add(c,m);o.buff={idd:c,data:q[h],_parser:this._process_xml_row,_locator:this._get_xml_data};if(q[h].getAttribute("open")){o.state="minus";this._open.push(c)}this.rowsAr[c]=o.buff;this._process_tree_xml(l,q[h],c)}if(g){if(!q.length){this._h2.change(m,"state",dhtmlXGridObject._emptyLineImg)}else{if(m!=0&&!this._srnd){this._h2.change(m,"state","minus")}}for(var h=0;h<this._open.length;h++){var a=this._h2.get[this._open[h]];if(!a.childs.length){a.state=dhtmlXGridObject._emptyLineImg}}this._updateTGRState(this._h2.get[m]);this._h2_to_buff();if(m!=0&&this._srnd){this.openItem(m)}else{if(this.pagingOn){this._renderSort()}else{this.render_dataset()}}if(this.kidsXmlFile){for(var h=0;h<this._open.length;h++){var a=this._h2.get[this._open[h]];if(a._xml_await){this.expandKids({idd:a.id})}}}this._open=[];if(this._slowParse===false){this.forEachRow(function(r){this.render_row_tree(0,r)})}this._parsing=false;if(m!=0&&!this._srnd){this.callEvent("onOpenEnd",[m,1])}}return l.xmlDoc.responseXML?l.xmlDoc.responseXML:l.xmlDoc};dhtmlXGridObject.prototype._h2_to_buff=function(c){if(!c){c=this._h2.get[0];this.rowsBuffer=new dhtmlxArray();if(this._fake&&!this._realfake){this._fake.rowsBuffer=this.rowsBuffer}}for(var a=0;a<c.childs.length;a++){this.rowsBuffer.push(c.childs[a].buff);if(c.childs[a].state=="minus"){this._h2_to_buff(c.childs[a])}}};dhtmlXGridObject.prototype.render_row_tree=function(c,h){if(h){var a=this._h2.get[h];a=a?a.buff:a}else{var a=this.rowsBuffer[c]}if(!a){return -1}if(a._parser){if(this.rowsAr[a.idd]&&this.rowsAr[a.idd].tagName=="TR"){return this._h2.get[a.idd].buff=this.rowsBuffer[c]=this.rowsAr[a.idd]}var g=this._prepareRow(a.idd);this.rowsAr[a.idd]=g;if(!h){this.rowsBuffer[c]=g}this._h2.get[a.idd].buff=g;a._parser.call(this,g,a.data);this._postRowProcessing(g);return g}return a};dhtmlXGridObject.prototype._removeTrGrRow=function(h,c){if(c){this._h2.forEachChild(c.id,function(m){this._removeTrGrRow(null,m);delete this.rowsAr[m.id]},this);return}var l=this.getRowIndex(h.idd);var c=this._h2.get[h.idd];if(l!=-1&&l!==this.undefined){var a=1;if(c&&c.state=="minus"){a+=this._getOpenLenght(c.id,0)}for(var g=0;g<a;g++){if(this.rowsCol[g+l]){this.rowsCol[g+l].parentNode.removeChild(this.rowsCol[g+l])}}if(this._fake){for(var g=0;g<a;g++){if(this._fake.rowsCol[g+l]){this._fake.rowsCol[g+l].parentNode.removeChild(this._fake.rowsCol[g+l])}}if(a>1){this._fake.rowsCol.splice(l+1,a-1)}}this.rowsCol.splice(l,a);this.rowsBuffer.splice(l,a)}if(!c){return}this._removeTrGrRow(null,c);delete this.rowsAr[c.id];if(c.parent.childs.length==1){this._h2.change(c.parent.id,"state",dhtmlXGridObject._emptyLineImg);this._updateTGRState(c.parent)}this._h2.remove(c.id)};dhtmlXGridObject.prototype.openItem=function(c){var g=this._h2.get[c||0];var a=this.getRowById(c||0);if(!a){return}if(g.parent&&g.parent.id!=0){this.openItem(g.parent.id)}this.expandKids(a)};dhtmlXGridObject.prototype._addRowClassic=dhtmlXGridObject.prototype.addRow;dhtmlXGridObject.prototype.addRow=function(c,n,l,h,a,o){if(!this._h2){return this._addRowClassic(c,n,l)}h=h||0;var g=this.cellType._dhx_find("tree");if(typeof(n)=="string"){n=n.split(this.delim)}var m=this._h2.get[c];if(!m){if(h==0){l=this.rowsBuffer.length}else{l=this.getRowIndex(h)+1;if(this._h2.get[h].state=="minus"){l+=this._getOpenLenght(h,0)}else{this._skipInsert=true}}}m=m||this._h2.add(c,h);m.image=a;m.has_kids=o;return m.buff=this._addRowClassic(c,n,l)};dhtmlXGridObject.prototype.addRowBefore=function(g,m,h,c,o){var n=this.rowsAr[h];if(!n){return}if(!this._h2){return this.addRow(g,m,this.getRowIndex(h))}var a=this._h2.get[h].parent.id;var l=this.getRowIndex(h);if(l==-1){this._skipInsert=true}this._h2.addBefore(g,a,h);return this.addRow(g,m,l,this._h2.get[h].parent.id,c,o)};dhtmlXGridObject.prototype.addRowAfter=function(g,m,h,c,o){var n=this.rowsAr[h];if(!n){return}if(!this._h2){return this.addRow(g,m,this.getRowIndex(h)+1)}var a=this._h2.get[h].parent.id;var l=this.getRowIndex(h);if(l==-1){this._skipInsert=true}if(this._h2.get[h].state=="minus"){l+=this._getOpenLenght(h,0)+1}else{l++}this._h2.addAfter(g,a,h);return this.addRow(g,m,l,a,c,o)};dhtmlXGridObject.prototype.enableSmartXMLParsing=function(a){this._slowParse=convertStringToBoolean(a)};dhtmlXGridObject.prototype._copyTreeGridRowContent=function(a,c,g){var h=this.cellType._dhx_find("tree");for(i=0;i<a.cells.length;i++){if(i!=h){this.cells(g,i).setValue(this.cells(c,i).getValue())}else{this.cells(g,i).setValueA(this.cells(c,i).getValue())}}};dhtmlXGridObject.prototype.closeItem=function(c){var a=this.getRowById(c);if(!a){return}this.collapseKids(a)};dhtmlXGridObject.prototype.deleteChildItems=function(a){var c=this._h2.get[a];if(!c){return}while(c.childs.length){this.deleteRow(c.childs[0].id)}};dhtmlXGridObject.prototype.getAllSubItems=function(c){var h=[];var g=this._h2.get[c||0];if(g){for(var a=0;a<g.childs.length;a++){h.push(g.childs[a].id);if(g.childs[a].childs.length){h=h.concat(this.getAllSubItems(g.childs[a].id).split(this.delim))}}}return h.join(this.delim)};dhtmlXGridObject.prototype.getChildItemIdByIndex=function(c,a){var g=this._h2.get[c||0];if(!g){return null}return(g.childs[a]?g.childs[a].id:null)};dhtmlXGridObject.prototype.getItemText=function(a){return this.cells(a,this.cellType._dhx_find("tree")).getLabel()};dhtmlXGridObject.prototype.getOpenState=function(a){var c=this._h2.get[a||0];if(!c){return}if(c.state=="minus"){return true}return false};dhtmlXGridObject.prototype.getParentId=function(a){var c=this._h2.get[a||0];if((!c)||(!c.parent)){return null}return c.parent.id};dhtmlXGridObject.prototype.getSubItems=function(c){var h=[];var g=this._h2.get[c||0];if(g){for(var a=0;a<g.childs.length;a++){h.push(g.childs[a].id)}}return h.join(this.delim)};dhtmlXGridObject.prototype.expandAll=function(a){this._renderAllExpand(a||0);this._h2_to_buff();this._reset_view();this.setSizes();this.callEvent("onGridReconstructed",[]);if(this._redrawLines){this._redrawLines()}};dhtmlXGridObject.prototype._renderAllExpand=function(g){var a=this._h2.get[g].childs;for(var c=0;c<a.length;c++){if(a[c].childs.length){this._h2.change(a[c].id,"state","minus");this._updateTGRState(a[c]);this._renderAllExpand(a[c].id)}}};dhtmlXGridObject.prototype.collapseAll=function(a){this._h2.forEachChild((a||0),function(c){if(c&&c.state=="minus"){c.state="plus";c.update=true;this._updateTGRState(c)}},this);this._h2_to_buff();this._reset_view();this.setSizes();this.callEvent("onGridReconstructed",[]);if(this._redrawLines){this._redrawLines()}};dhtmlXGridObject.prototype.hasChildren=function(c){var a=this._h2.get[c];if(a&&a.childs.length){return a.childs.length}if(a._xml_await){return -1}return 0};dhtmlXGridObject.prototype.setItemCloseable=function(g,c){var a=this._h2.get[g];if(!a){return}a._closeable=(!convertStringToBoolean(c))};dhtmlXGridObject.prototype.setItemText=function(a,c){return this.cells(a,this.cellType._dhx_find("tree")).setLabel(c)};dhtmlXGridObject.prototype.setItemImage=function(c,a){this._h2.get[c].image=a;this.rowsAr[c].imgTag.nextSibling.src=(this.iconURL||"")+a};dhtmlXGridObject.prototype.getItemImage=function(a){this.getRowById(a);return this._h2.get[a].image};dhtmlXGridObject.prototype.setImageSize=function(c,a){this._img_width=c;this._img_height=a};dhtmlXGridObject.prototype._getRowImage=function(a){return this._h2.get[a.idd].image};dhtmlXGridObject.prototype.setOnOpenStartHandler=function(a){this.attachEvent("onOpenStart",a)};dhtmlXGridObject.prototype.setOnOpenEndHandler=function(a){this.attachEvent("onOpenEnd",a)};dhtmlXGridObject.prototype.enableTreeCellEdit=function(a){this._edtc=!convertStringToBoolean(a)};dhtmlXGridObject.prototype.getLevel=function(a){var c=this._h2.get[a||0];if(!c){return -1}return c.level};dhtmlXGridObject.prototype._fixHiddenRowsAllTG=function(c,a){for(i in this.rowsAr){if((this.rowsAr[i])&&(this.rowsAr[i].childNodes)){this.rowsAr[i].childNodes[c].style.display=a}}};dhtmlXGridObject._emptyLineImg="blank";dhtmlXGridObject.prototype._updateLine=function(g,c){c=c||this.rowsAr[g.id];if(!c){return}var a=c.imgTag;if(!a){return}if(g.state=="blank"){return a.src=this.iconTree+"blank.gif"}var h=1;if(g.index==0){if(g.level==0){if((g.parent.childs.length-1)>g.index){h=3}else{h=1}}else{if((g.parent.childs.length-1)>g.index){h=3}else{h=2}}}else{if((g.parent.childs.length-1)>g.index){h=3}else{h=2}}a.src=this.iconTree+g.state+h+".gif"};dhtmlXGridObject.prototype._updateParentLine=function(h,g){g=g||this.rowsAr[h.id];if(!g){return}var a=g.imgTag;if(!a){return}for(var c=h.level;c>0;c--){if(h.id==0){break}a=a.previousSibling;h=h.parent;if((h.parent.childs.length-1)>h.index){a.src=this.iconTree+"line1.gif"}else{a.src=this.iconTree+"blank.gif"}}};dhtmlXGridObject.prototype._renderSortA=dhtmlXGridObject.prototype._renderSort;dhtmlXGridObject.prototype._renderSort=function(){this._renderSortA.apply(this,arguments);this._redrawLines(0)};dhtmlXGridObject.prototype._redrawLines=function(a){if(this._tgle){this._h2.forEachChild((a||0),function(c){this._updateLine(c);this._updateParentLine(c)},this)}};dhtmlXGridObject.prototype.enableTreeGridLines=function(){dhtmlXGridObject._emptyLineImg="line";this._updateTGRState=function(c,a){if(a||!c.update||c.id==0){return}if(this._tgle){this._updateLine(c,this.rowsAr[c.id])}c.update=false};this._tgle=true;this.attachEvent("onXLE",function(g,c,h){this._redrawLines(h)});this.attachEvent("onOpenEnd",function(a){this._redrawLines(a)});this.attachEvent("onRowAdded",function(c){var a=this._h2.get[c];this._updateLine(a);this._updateParentLine(a);if(a.index<(a.parent.childs.length-1)){a=a.parent.childs[a.index+1];this._updateLine(a);this._updateParentLine(a)}else{if(a.index!=0){a=a.parent.childs[a.index-1];this._updateLine(a);this._updateParentLine(a);if(a.childs.length){this._h2.forEachChild(a.id,function(g){this._updateParentLine(g)},this)}}}});this.attachEvent("onOpen",function(h,c){if(c){var g=this._h2.get[h];for(var a=0;a<g.childs.length;a++){this._updateParentLine(g.childs[a])}}return true});this.attachEvent("onBeforeRowDeleted",function(h){var c=this;var g=this._h2.get[h];var a=null;if(g.index!=0){a=g.parent.childs[g.index-1]}g=g.parent;window.setTimeout(function(){g=c._h2.get[g.id];if(!g){return}c._updateLine(g);c._updateParentLine(g);if(a){c._updateLine(a);if(a.state=="minus"){c._h2.forEachChild(a.id,function(l){c._updateParentLine(l)},c)}}},1);return true})};dhtmlXGridObject.prototype.setFiltrationLevel=function(g,a,c){this._tr_strfltr=g;this._tr_fltr_c=a;this._tr_fltr_d=c;this.refreshFilters()};dhtmlXGridObject.prototype.filterTreeBy=function(h,l,g){var a=this._h2;if(typeof this._tr_strfltr=="undefined"){this._tr_strfltr=-1}if(this._f_rowsBuffer){if(!g){this._h2=this._f_rowsBuffer;if(this._fake){this._fake._h2=this._h2}}}else{this._f_rowsBuffer=this._h2}var m=true;this.dma(true);this._fbf={};if(typeof(h)=="object"){for(var c=0;c<l.length;c++){this._filterTreeA(h[c],l[c])}}else{this._filterTreeA(h,l)}this._fbf=null;this.dma(false);this._fix_filtered_images(this._h2,a);this._renderSort();this.callEvent("onGridReconstructed",[])};dhtmlXGridObject.prototype._filterTreeA=function(g,q){if(q==""){return}var n=true;if(typeof(q)=="function"){n=false}else{q=(q||"").toString().toLowerCase()}var c=function(w,v,u){var x=u.get[w.parent.id];if(!x){x=c(w.parent,v,u)}var u=r.get[w.id];if(!u){u={id:w.id,childs:[],level:w.level,parent:x,index:x.childs.length,image:w.image,state:w.state,buff:w.buff,has_kids:w.has_kids,_xml_await:w._xml_await};x.childs.push(u);r.get[u.id]=u}return u};var o=this._fbf;var r=new dhtmlxHierarchy();var a;var l=this._tr_strfltr;var m=this;var h=function(u){for(var s=0;s<u.childs.length;s++){m.temp(u.childs[s])}};switch(l.toString()){case"-2":a=function(s){if(o[s.id]){return false}h(s);return true};break;case"-1":a=function(s){return !s.childs.length};break;default:a=function(s){return l==s.level};break}this.temp=function(s){if(s.id!=0&&a(s)){if(n?(this._get_cell_value(s.buff,g).toString().toLowerCase().indexOf(q)==-1):(!q(this._get_cell_value(s.buff,g),s.id))){o[s.id]=true;if(this._tr_fltr_c){c(s.parent,this._h2,r)}return false}else{c(s,this._h2,r);if(s.childs&&l!=-2){this._h2.forEachChild(s.id,function(u){c(u,this._h2,r)},this)}return true}}else{if(this._tr_fltr_d&&this._tr_strfltr>s.level&&s.id!=0){c(s,this._h2,r)}h(s)}};this.temp(this._h2.get[0]);this._h2=r;if(this._fake){this._fake._h2=this._h2}};dhtmlXGridObject.prototype._fix_filtered_images=function(c,a){c.forEachChild(0,function(g){if(!g.childs.length&&!g.has_kids){if(g.state!=dhtmlXGridObject._emptyLineImg){g.state=dhtmlXGridObject._emptyLineImg;g.update=true;this._updateTGRState(g)}}else{if(g.buff.tagName=="TR"){var h=a.get[g.id];if(h&&h.state!=dhtmlXGridObject._emptyLineImg){g.state=h.state}g.update=true;this._updateTGRState(g)}}},this)};dhtmlXGridObject.prototype.collectTreeValues=function(g){if(typeof this._tr_strfltr=="undefined"){this._tr_strfltr=-1}this.dma(true);this._build_m_order();g=this._m_order?this._m_order[g]:g;var n={};var l=[];var a=this._f_rowsBuffer||this._h2;a.forEachChild(0,function(c){if(this._tr_strfltr==-2||(this._tr_strfltr==-1&&!c.childs.length)||(this._tr_strfltr==c.level)){var o=this._get_cell_value(c.buff,g);if(o){n[o]=true}}},this);this.dma(false);var h=this.combos[g];for(var m in n){if(n[m]===true){l.push(h?(h.get(m)||m):m)}}return l.sort()};dhtmlXGridObject.prototype._in_header_stat_tree_total=function(g,a,l){var h=function(){var m=0;this._build_m_order();var c=this._m_order?this._m_order[a]:a;this._h2.forEachChild(0,function(o){var n=parseFloat(this._get_cell_value((o.buff||this.rowsAr[o.id]),c));m+=isNaN(n)?0:n},this);return this._maskArr[a]?this._aplNF(m,a):(Math.round(m*100)/100)};this._stat_in_header(g,h,a,l,l)};dhtmlXGridObject.prototype._in_header_stat_tree_total_leaf=function(g,a,l){var h=function(){var m=0;this._build_m_order();var c=this._m_order?this._m_order[a]:a;this._h2.forEachChild(0,function(o){if(o.childs.length){return}var n=parseFloat(this._get_cell_value((o.buff||this.rowsAr[o.id]),c));m+=isNaN(n)?0:n},this);return this._maskArr[a]?this._aplNF(m,a):(Math.round(m*100)/100)};this._stat_in_header(g,h,a,l,l)};dhtmlXGridObject.prototype._in_header_stat_tree_multi_total=function(g,a,m){var l=m[1].split(":");m[1]="";var h=function(){var c=0;this._h2.forEachChild(0,function(o){var n=parseFloat(this._get_cell_value((o.buff||this.rowsAr[o.id]),l[0]))*parseFloat(this._get_cell_value((o.buff||this.rowsAr[o.id]),l[1]));c+=isNaN(n)?0:n},this);return this._maskArr[a]?this._aplNF(c,a):(Math.round(c*100)/100)};this._stat_in_header(g,h,a,m,m)};dhtmlXGridObject.prototype._in_header_stat_tree_multi_total_leaf=function(g,a,m){var l=m[1].split(":");m[1]="";var h=function(){var c=0;this._h2.forEachChild(0,function(o){if(o.childs.length){return}var n=parseFloat(this._get_cell_value((o.buff||this.rowsAr[o.id]),l[0]))*parseFloat(this._get_cell_value((o.buff||this.rowsAr[o.id]),l[1]));c+=isNaN(n)?0:n},this);return this._maskArr[a]?this._aplNF(c,a):(Math.round(c*100)/100)};this._stat_in_header(g,h,a,m,m)};dhtmlXGridObject.prototype._in_header_stat_tree_max=function(g,a,l){var h=function(){var m=-999999999;this._build_m_order();var c=this._m_order?this._m_order[a]:a;if(this.getRowsNum()==0){return""}this._h2.forEachChild(0,function(n){var o=parseFloat(this._get_cell_value((n.buff||this.rowsAr[n.id]),c));if(!isNaN(o)){m=Math.max(m,o)}},this);return this._maskArr[a]?this._aplNF(m,a):m};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_min=function(g,a,l){var h=function(){var m=999999999;this._build_m_order();var c=this._m_order?this._m_order[a]:a;if(this.getRowsNum()==0){return""}this._h2.forEachChild(0,function(n){var o=parseFloat(this._get_cell_value((n.buff||this.rowsAr[n.id]),c));if(!isNaN(o)){m=Math.min(m,o)}},this);return this._maskArr[a]?this._aplNF(m,a):m};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_average=function(g,a,l){var h=function(){var n=0;var m=0;this._build_m_order();var c=this._m_order?this._m_order[a]:a;this._h2.forEachChild(0,function(q){var o=parseFloat(this._get_cell_value((q.buff||this.rowsAr[q.id]),c));n+=isNaN(o)?0:o;m++},this);return this._maskArr[a]?this._aplNF(n,a):(Math.round(n/m*100)/100)};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_max_leaf=function(g,a,l){var h=function(){var m=-999999999;this._build_m_order();var c=this._m_order?this._m_order[a]:a;if(this.getRowsNum()==0){return""}this._h2.forEachChild(0,function(n){if(n.childs.length){return}var o=parseFloat(this._get_cell_value((n.buff||this.rowsAr[n.id]),c));if(!isNaN(o)){m=Math.max(m,o)}},this);return this._maskArr[a]?this._aplNF(m,a):m};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_min_leaf=function(g,a,l){var h=function(){var m=999999999;this._build_m_order();var c=this._m_order?this._m_order[a]:a;if(this.getRowsNum()==0){return""}this._h2.forEachChild(0,function(n){if(n.childs.length){return}var o=parseFloat(this._get_cell_value((n.buff||this.rowsAr[n.id]),c));if(!isNaN(o)){m=Math.min(m,o)}},this);return this._maskArr[a]?this._aplNF(m,a):m};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_average_leaf=function(g,a,l){var h=function(){var n=0;var m=0;this._build_m_order();var c=this._m_order?this._m_order[a]:a;this._h2.forEachChild(0,function(q){if(q.childs.length){return}var o=parseFloat(this._get_cell_value((q.buff||this.rowsAr[q.id]),c));n+=isNaN(o)?0:o;m++},this);return this._maskArr[a]?this._aplNF(n,a):(Math.round(n/m*100)/100)};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_count=function(g,a,l){var h=function(){var c=0;this._h2.forEachChild(0,function(m){c++},this);return c};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._in_header_stat_tree_count_leaf=function(g,a,l){var h=function(){var c=0;this._h2.forEachChild(0,function(m){if(!m.childs.length){c++}},this);return c};this._stat_in_header(g,h,a,l)};dhtmlXGridObject.prototype._stat_in_header=function(g,h,a,n){var l=this;var m=function(){this.dma(true);g.innerHTML=(n[0]?n[0]:"")+h.call(this)+(n[1]?n[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 o=0;o<this._stat_events.length;o++){for(var c=0;c<4;c++){this.detachEvent(this._stat_events[o][c])}}this._stat_events=[]}})}this._stat_events.push([this.attachEvent("onGridReconstructed",m),this.attachEvent("onXLE",m),this.attachEvent("onFilterEnd",m),this.attachEvent("onEditCell",function(c,q,o){if(c==2&&o==a){m.call(this)}return true})]);g.innerHTML=""};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}}};function dhtmlXForm(l,h,m){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 g=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(o){var n=g.getItemType(o);if(typeof(g.items[n])!="undefined"&&typeof(g.items[n].setSkin)=="function"){g.doWithItem(o,"setSkin",a)}})};this.skin=(m||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(l)=="object"?l:document.getElementById(l));if(!l._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(n){n=(n||event);if(n.keyCode==13){var a=(n.target||n.srcElement);if(typeof(a.tagName)!="undefined"&&String(a.tagName).toLowerCase()=="textarea"&&!n.ctrlKey){return}g.callEvent("onEnter",[])}}}this.b_index=null;this.base=[];this._prepare=function(v,x){if(this.b_index==null){this.b_index=0}else{this.b_index++}var o=null;var n=null;if(x!=null){if(x<0){x=0}var s=0;for(var a=0;a<this.cont.childNodes.length;a++){for(var u=0;u<this.cont.childNodes[a].childNodes.length;u++){if(n==null&&this.cont.childNodes[a].childNodes[u]._isNestedForm!=true){if(s==x){o=this.cont.childNodes[a].nextSibling;n=this.cont.childNodes[a].childNodes[u]}s++}}}}this.base[this.b_index]=document.createElement("DIV");this.base[this.b_index].className="dhxform_base";if(typeof(v)!="undefined"){this.base[this.b_index].style.cssText+=" margin-left:"+v+"px!important;"}if(o!=null){this.cont.insertBefore(this.base[this.b_index],o);o=null}else{this.cont.appendChild(this.base[this.b_index])}if(n!=null){while(n!=null){var r=n;n=n.nextSibling;this.base[this.b_index].appendChild(r);r=null}}};this.setSizes=function(){};this._mergeSettings=function(v){var o=-1;var r={type:"settings"};for(var n in this.idef){r[n]=this.idef[n]}for(var s=0;s<v.length;s++){if(typeof(v[s])!="undefined"&&v[s].type=="settings"){for(var n in v[s]){r[n]=v[s][n]}o=s}}v[o>=0?o:v.length]=r;return v};this._genStr=function(a){var n="";var r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for(var o=0;o<a;o++){n+=r.charAt(Math.floor(Math.random()*r.length))}return n};this.idPrefix="dhxForm_"+this._genStr(12)+"_";this._rId=(this._parentForm?this._genStr(12)+"_":l._rId);this.objPull={};this.itemPull={};this._ic=0;this._addItem=function(F,s,y,v,D,H,C){if(this.items[F]._index){this.getForm()._indexId.push(s);this.getForm()._idIndex[s]={ind:this.getForm()._indexId.length-1}}if(!F){F=this._type}if(F=="list"&&D!=null&&this.itemPull[this.idPrefix+D]!=null&&typeof(this.itemPull[this.idPrefix+D]._addSubListNode)=="function"){var E=this.itemPull[this.idPrefix+D]._addSubListNode()}else{if(F=="newcolumn"){var E={}}else{var u=this.base[this.b_index];var n=null;if(typeof(H)!="undefined"&&!isNaN(H)&&F!="list"){H=Math.max(parseInt(H),0)+1;for(var J=0;J<this.cont.childNodes.length;J++){for(var o=0;o<this.cont.childNodes[J].childNodes.length;o++){if(n==null&&this.cont.childNodes[J].childNodes[o]._isNestedForm!=true){H--;if(H==0){n=this.cont.childNodes[J].childNodes[o];u=this.cont.childNodes[J]}}}}}else{if(F=="list"){for(var I in this.itemPull){if(I==this.idPrefix+s){n=this.itemPull[I].nextSibling;if(this.itemPull[I]._listBase!=null&&this.itemPull[I]._listBase.length>0){n=this.itemPull[I]._listBase[this.itemPull[I]._listBase.length-1]}}}}}var E=document.createElement("DIV");if(C==true&&n!=null){n=n.nextSibling}if(n!=null){u.insertBefore(E,n)}else{u.appendChild(E)}}}E._idd=s;E._rId=this._rId;if(typeof(E.style)!="undefined"){if(typeof(y.offsetLeft)=="undefined"&&this.idef.offsetLeft>0){y.offsetLeft=this.idef.offsetLeft}if(typeof(y.offsetTop)=="undefined"&&this.idef.offsetTop>0){y.offsetTop=this.idef.offsetTop}var x="";if(typeof(y.offsetLeft)!="undefined"){x+=" padding-left:"+y.offsetLeft+"px!important;"}if(typeof(y.offsetTop)!="undefined"){x+=" padding-top:"+y.offsetTop+"px!important;"}E.style.cssText+=x}if(F=="block"){if(isNaN(y.blockOffset)){y.blockOffset=this.idef.blockOffset}}if(F=="list"){if(typeof(E._ofsNested)=="undefined"){E._ofsNested=this.idef_const.offsetNested}if(v!=null){E._sId=v}var A=this.items[F].render(E,this.skin);if(!this.itemPull[this.idPrefix+s]._listObj){this.itemPull[this.idPrefix+s]._listObj=[]}if(!this.itemPull[this.idPrefix+s]._list){this.itemPull[this.idPrefix+s]._list=[]}if(!this.itemPull[this.idPrefix+s]._listBase){this.itemPull[this.idPrefix+s]._listBase=[]}(this.itemPull[this.idPrefix+s]._listObj).push(A[0]);(this.itemPull[this.idPrefix+s]._list).push(A[1]);(this.itemPull[this.idPrefix+s]._listBase).push(E);A[1].checkEvent=function(a){return g.checkEvent(a)};A[1].callEvent=function(a,q){return g.callEvent(a,q)};A[1].getForm=function(){return g.getForm()};A[1]._initObj(this._mergeSettings(y));if(E._inBlcok){E.className+=" in_block"}return A[1]}if(F=="newcolumn"){this._prepare(y.offset,H);return}if(F=="label"&&this._ic++==0){y._isTopmost=true}y.position=this.apos_css[(!y.position||!this.apos_css[y.position]?this.idef.position:y.position)];E.className=y.position+(typeof(y.className)=="string"?" "+y.className:"");if(!y.labelWidth){y.labelWidth=this.idef.labelWidth}if(!y.labelHeight){y.labelHeight=this.idef.labelHeight}if(typeof(y.wrap)!="undefined"){y.wrap=window.dhx4.s2b(y.wrap)}y.labelAlign=(this.align_css[y.labelAlign]?this.align_css[y.labelAlign]:this.align_css[this.idef.labelAlign]);y.inputWidth=(y.width?y.width:(y.inputWidth?y.inputWidth:this.idef.inputWidth));if(!y.inputHeight){y.inputHeight=this.idef.inputHeight}if(typeof(y.note)!="undefined"){if(y.note.length!=null&&y.note[0]!=null){y.note=y.note[0]}if(typeof(y.note.width)=="undefined"){y.note.width=this.idef.noteWidth}if(y.note.width=="auto"){y.note.width=y.inputWidth}}E.checkEvent=function(a){return g.checkEvent(a)};E.callEvent=function(a,q){return g.callEvent(a,q)};E.getForm=function(){return g.getForm()};E._autoCheck=function(a){g._autoCheck(a)};if(typeof(y.readonly)=="string"){y.readonly=window.dhx4.s2b(y.readonly)}if(typeof(y.autoStart)=="string"){y.autoStart=window.dhx4.s2b(y.autoStart)}if(typeof(y.autoRemove)=="string"){y.autoRemove=window.dhx4.s2b(y.autoRemove)}if(typeof(y.titleScreen)=="string"){y.titleScreen=window.dhx4.s2b(y.titleScreen)}if(typeof(y.info)=="string"){y.info=window.dhx4.s2b(y.info)}if(typeof(y.hidden)=="string"){y.hidden=window.dhx4.s2b(y.hidden)}if(typeof(y.checked)=="string"){y.checked=window.dhx4.s2b(y.checked)}if(typeof(y.userdata)!="undefined"){for(var I in y.userdata){this.getForm().setUserData(s,I,y.userdata[I])}}if(y.validate){if(typeof(y.validate!="undefined")&&(typeof(y.validate)=="function"||typeof(window[y.validate])=="function")){E._validate=[y.validate]}else{E._validate=String(y.validate).split(this.separator)}}if(typeof(y.required)!="undefined"){if(typeof(y.required)=="string"){y.required=window.dhx4.s2b(y.required)}E._required=(y.required==true)}if(E._required){if(!E._validate){E._validate=[]}var r=false;for(o=0;o<E._validate.length;o++){r=(r||(E._validate[o]=="NotEmpty"))}if(!r){E._validate.push("NotEmpty")}}E._ll=(y.position==this.apos_css["label-left"]||y.position==this.apos_css["label-top"]);this.objPull[this.idPrefix+s]=this.items[F].render(E,y);this.itemPull[this.idPrefix+s]=E};this._initObj=function(s,o){if(typeof(s.data)!="undefined"){var u=null;if(typeof(o)!="undefined"){u=o.match(/(\?|\&)id\=([a-z0-9_\-]*)/i);if(u!=null&&u[0]!=null){u=u[0].split("=")[1]}}if(this.callEvent("onBeforeDataLoad",[u,window.dhx4._copyObj(s.data)])===true){this.formId=u;this._last_load_data=s;this.setFormData(s.data);this.resetDataProcessor("updated")}return}this._prepare();for(var r=0;r<s.length;r++){if(typeof(s[r])!="undefined"&&s[r].type=="settings"){for(var n in s[r]){this.idef[n]=s[r][n]}}}for(var r=0;r<s.length;r++){this._prepareItem(s[r])}this._autoCheck()};this._prepareItem=function(r,v,q){var o=(r!=null&&r.type!=null?r.type:"");if(this.items[o]){if(!r.name){r.name=this._genStr(12)}var u=r.name;if(this.objPull[this.idPrefix+u]!=null||o=="radio"){u=this._genStr(12)}var s=r;s.label=s.label||"";s.value=s.value;s.checked=window.dhx4.s2b(s.checked);s.disabled=window.dhx4.s2b(s.disabled);s.name=s.name||this._genStr(12);s.options=s.options||[];s.rows=s.rows||"none";s.uid=this._genStr(12);this._addItem(o,u,s,null,null,v,q);v=null;if(this._parentEnabled===false){this._disableItem(u)}for(var n=0;n<s.options.length;n++){if(s.options[n].list!=null){if(!s.options[n].value){s.options[n].value=this._genStr()}var a=this._addItem("list",u,s.options[n].list,s.options[n].value,null);a._subSelect=true;a._subSelectId=s.options[n].value}}if(r.list!=null){if(!r.listParent){r.listParent=s.name}var a=this._addItem("list",u,r.list,null,r.listParent)}}};this._xmlSubItems={item:"list",option:"options",note:"note",userdata:"_userdata"};this._xmlToObject=function(C,n){if(typeof(n)=="undefined"){n=true}if(n){var E=C.getElementsByTagName("items");E=(E!=null&&E[0]!=null?E[0]:null);var o=C.getElementsByTagName("data");o=(o!=null&&o[0]!=null?o[0]:null)}else{E=C}var A=(n?[]:{});if(E!=null){for(var s=0;s<E.childNodes.length;s++){if(typeof(E.childNodes[s].tagName)!="undefined"){var u=E.childNodes[s].tagName;if(this._xmlSubItems[u]!=null){var v=this._xmlSubItems[u];if(typeof(A[v])=="undefined"){A[v]=[]}var y={};for(var J=0;J<E.childNodes[s].attributes.length;J++){var F=E.childNodes[s].attributes[J].name;var D=E.childNodes[s].attributes[J].value;y[F]=D}if(v=="note"){y.text=E.childNodes[s].firstChild.nodeValue}if(v=="_userdata"){y.value=E.childNodes[s].firstChild.nodeValue}var x=this._xmlToObject(E.childNodes[s],false);for(var H in x){if(H=="_userdata"){if(!y.userdata){y.userdata={}}for(var J=0;J<x[H].length;J++){y.userdata[x[H][J].name]=x[H][J].value}}else{y[H]=x[H]}}if(n){A.push(y)}else{A[v].push(y)}}}}}if(o!=null){A={data:{}};for(var s=0;s<o.childNodes.length;s++){if(typeof(o.childNodes[s].tagName)!="undefined"){var r=o.childNodes[s].tagName;var I=(o.childNodes[s].firstChild!=null?o.childNodes[s].firstChild.nodeValue:"");A.data[r]=I}}}return A};this._autoCheck=function(u){if(this._locked===true){u=false}else{if(typeof(u)=="undefined"){u=true}}for(var r in this.itemPull){var x=(u&&(this.itemPull[r]._udis!==true));this[x?"_enableItem":"_disableItem"](this.itemPull[r]._idd);if(this.getForm()._idIndex[this.itemPull[r]._idd]!=null){this.getForm()._idIndex[this.itemPull[r]._idd].enabled=x}var o=(x&&(typeof(this.itemPull[r]._checked)=="boolean"?this.itemPull[r]._checked:true));if(this.itemPull[r]._list){for(var A=0;A<this.itemPull[r]._list.length;A++){var y=true;if(this.itemPull[r]._list[A]._subSelect==true){y=false;var s=this.getItemValue(this.itemPull[r]._idd);if(!(typeof(s)=="object"&&typeof(s.length)=="number")){s=[s]}for(var n=0;n<s.length;n++){y=(s[n]==this.itemPull[r]._list[A]._subSelectId)||y}this.itemPull[r]._listObj[A][y?"show":"hide"](this.itemPull[r]._listBase[A])}this.itemPull[r]._list[A]._autoCheck(o&&y)}}}};this.doWithItem=function(r,n,y,x,w,v){if(typeof(r)=="object"){var C=r[0];var A=r[1];var D=null;var u=null;for(var s in this.itemPull){if((this.itemPull[s]._value==A||A===null)&&this.itemPull[s]._group==C){return this.objPull[s][n](this.itemPull[s],y,x,w,v)}if(this.itemPull[s]._list!=null&&!u){for(var o=0;o<this.itemPull[s]._list.length;o++){u=this.itemPull[s]._list[o].doWithItem(r,n,y,x,w)}}}if(u!=null){return u}else{if(n=="getType"){return this.doWithItem(r[0],"getType")}}}else{if(!this.itemPull[this.idPrefix+r]){var u=null;for(var s in this.itemPull){if(this.itemPull[s]._list&&!u){for(var o=0;o<this.itemPull[s]._list.length;o++){if(u==null){u=this.itemPull[s]._list[o].doWithItem(r,n,y,x,w,v)}}}}return u}else{return this.objPull[this.idPrefix+r][n](this.itemPull[this.idPrefix+r],y,x,w,v)}}};this._removeItem=function(n,a){if(a!=null){n=this.doWithItem([n,a],"destruct")}else{this.doWithItem(n,"destruct")}this._clearItemData(n)};this._clearItemData=function(r){if(this.itemPull[this.idPrefix+r]){r=this.idPrefix+r;try{this.objPull[r]=null;this.itemPull[r]=null;delete this.objPull[r];delete this.itemPull[r]}catch(o){}}else{for(var a in this.itemPull){if(this.itemPull[a]._list){for(var n=0;n<this.itemPull[a]._list.length;n++){this.itemPull[a]._list[n]._clearItemData(r)}}}}};this.isItem=function(n,a){if(a!=null){n=[n,a]}return this.doWithItem(n,"isExist")};this.getItemType=function(n,a){n=[n,(a||null)];return this.doWithItem(n,"getType")};this.forEachItem=function(o){for(var n in this.objPull){if(this.objPull[n].t=="radio"){o(this.itemPull[n]._group,this.itemPull[n]._value)}else{o(String(n).replace(this.idPrefix,""))}if(this.itemPull[n]._list){for(var r=0;r<this.itemPull[n]._list.length;r++){this.itemPull[n]._list[r].forEachItem(o)}}}};this.setItemLabel=function(o,a,n){if(n!=null){o=[o,a]}else{n=a}this.doWithItem(o,"setText",n)};this.getItemLabel=function(n,a){if(a!=null){n=[n,a]}return this.doWithItem(n,"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(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"check");this._autoCheck()};this.uncheckItem=function(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"unCheck");this._autoCheck()};this.isItemChecked=function(n,a){if(a!=null){n=[n,a]}return this.doWithItem(n,"isChecked")};this.getCheckedValue=function(a){return this.doWithItem([a,null],"getChecked")};this._getRGroup=function(v,u){for(var n in this.itemPull){if(this.itemPull[n]._group==v&&(u==null||this.itemPull[n]._value==u)){return this.itemPull[n]._idd}if(this.itemPull[n]._list!=null){for(var s=0;s<this.itemPull[n]._list.length;s++){var o=this.itemPull[n]._list[s]._getRGroup(v,u);if(o!=null){return o}}}}return null};this.setItemValue=function(n,a){if(this.getItemType(n)=="radio"){if(this._getRGroup(n,a)!=null){this.checkItem(n,a)}else{this.uncheckItem(n,this.getCheckedValue(n))}return null}return this.doWithItem(n,"setValue",a)};this.getItemValue=function(n,a){if(this.getItemType(n)=="radio"){return this.getCheckedValue(n)}return this.doWithItem(n,"getValue",a)};this.updateValues=function(){this._updateValues()};this.showItem=function(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"show")};this.hideItem=function(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"hide")};this.isItemHidden=function(n,a){if(a!=null){n=[n,a]}return this.doWithItem(n,"isHidden")};this.getOptions=function(a){return this.doWithItem(a,"getOptions")};this.setItemWidth=function(n,a){this.doWithItem(n,"setWidth",a)};this.getItemWidth=function(a){return this.doWithItem(a,"getWidth")};this.setItemHeight=function(n,a){this.doWithItem(n,"setHeight",a)};this.setItemFocus=function(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"setFocus")};this._updateValues=function(){for(var n in this.itemPull){if(this.objPull[n]&&typeof(this.objPull[n].updateValue)=="function"){this.objPull[n].updateValue(this.itemPull[n])}if(this.itemPull[n]._list){for(var o=0;o<this.itemPull[n]._list.length;o++){this.itemPull[n]._list[o]._updateValues()}}}};this._getItemByName=function(u){for(var n in this.itemPull){if(this.itemPull[n]._idd==u){return this.itemPull[n]}if(this.itemPull[n]._list!=null){for(var s=0;s<this.itemPull[n]._list.length;s++){var o=this.itemPull[n]._list[s]._getItemByName(u);if(o!=null){return o}}}}return null};this._resetValidateCss=function(a){a.className=(a.className).replace(a._vcss,"");a._vcss=null};this.setValidateCss=function(a,q,o){var n=this[this.getItemType(a)=="radio"?"_getRGroup":"_getItemByName"](a);if(!n){return}if(n._vcss!=null){this._resetValidateCss(n)}n._vcss=(typeof(o)=="string"?o:"validate_"+(q===true?"ok":"error"));n.className+=" "+n._vcss};this.resetValidateCss=function(o){for(var n in this.itemPull){if(this.itemPull[n]._vcss!=null){this._resetValidateCss(this.itemPull[n])}if(this.itemPull[n]._list!=null){for(var r=0;r<this.itemPull[n]._list.length;r++){this.itemPull[n]._list[r].resetValidateCss()}}}};this.validate=function(n){if(this.callEvent("onBeforeValidate",[])==false){return}var a=true;this.forEachItem(function(q,r){if(typeof(r)!="undefined"){q=[q,r]}var o=g.doWithItem(q,"_validate");if(typeof(o)!="boolean"){o=true}a=o&&a});this.callEvent("onAfterValidate",[a]);return a};this.validateItem=function(a,n){if(typeof(n)!="undefined"){a=[a,n]}return this.doWithItem(a,"_validate")};this.enableLiveValidation=function(a){this.live_validate=(a==true)};this.setReadonly=function(n,a){this.doWithItem(n,"setReadonly",a)};this.isReadonly=function(a){return this.doWithItem(a,"isReadonly")};this.getFirstActive=function(n){for(var r=0;r<this._indexId.length;r++){var a=true;if(n==true){var o=this.getItemType(this._indexId[r]);if(!dhtmlXForm.prototype.items[o].setFocus){a=false}}if(a&&this._idIndex[this._indexId[r]].enabled){return this._indexId[r]}}return null};this.setFocusOnFirstActive=function(){var a=this.getFirstActive(true);if(a!=null){this.setItemFocus(a)}};this.enableItem=function(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"userEnable");this._autoCheck()};this.disableItem=function(n,a){if(a!=null){n=[n,a]}this.doWithItem(n,"userDisable");this._autoCheck()};this.isItemEnabled=function(n,a){if(a!=null){n=[n,a]}return this.doWithItem(n,"isUserEnabled")};this.clear=function(){var n={};this.formId=(new Date()).valueOf();this.resetDataProcessor("inserted");for(var o in this.itemPull){var r=this.itemPull[o]._idd;if(this.itemPull[o]._type=="ch"){this.uncheckItem(r)}if(this.itemPull[o]._type in {ta:1,editor:1,calendar:1,pw:1,hd:1}){this.setItemValue(r,"")}if(this.itemPull[o]._type=="combo"){this.itemPull[o]._apiChange=true;var w=this.getCombo(r);w.selectOption(0);w=null;this.itemPull[o]._apiChange=false}if(this.itemPull[o]._type=="se"){var u=this.getOptions(r);if(u.length>0){u[0].selected=true}}if(this.itemPull[o]._type=="ra"){var s=this.itemPull[o]._group;if(!n[s]){this.checkItem(s,this.doWithItem(r,"_getFirstValue"));n[s]=true}}if(this.itemPull[o]._list){for(var v=0;v<this.itemPull[o]._list.length;v++){this.itemPull[o]._list[v].clear()}}if(this["setFormData_"+this.itemPull[o]._type]){this["setFormData_"+this.itemPull[o]._type](r,"")}}n=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 n in this.objPull){this._removeItem(String(n).replace(this.idPrefix,""))}if(this._ccTm){window.clearTimeout(this._ccTm)}this._formLS=null;for(var o=0;o<this.base.length;o++){while(this.base[o].childNodes.length>0){this.base[o].removeChild(this.base[o].childNodes[0])}if(this.base[o].parentNode){this.base[o].parentNode.removeChild(this.base[o])}this.base[o]=null}this.base=null;this.cont.onkeypress=null;this.cont.className="";this.cont=null;for(var n in this){this[n]=null}g=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 n=0;n<a._listObj.length;n++){a._listObj[n].show(a._listBase[n])}}}}if(!this.items[c].hide){this.items[c].hide=function(a){a.style.display="none";if(a._listObj){for(var n=0;n<a._listObj.length;n++){a._listObj[n].hide(a._listBase[n])}}}}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(o){if(!o._validate||!o._enabled){return true}if(o._type=="ch"){var w=(this.isChecked(o)?this.getValue(o):0)}else{var w=this.getValue(o)}var n=true;for(var u=0;u<o._validate.length;u++){var a="is"+o._validate[u];if((w==null||w.length==0)&&a!="isNotEmpty"&&o._type!="container"){}else{var s=dhtmlxValidation[a];if(o._type=="container"&&typeof(s)=="function"){s=function(){return true}}if(typeof(s)!="function"&&typeof(o._validate[u])=="function"){s=o._validate[u]}if(typeof(s)!="function"&&typeof(window[o._validate[u]])=="function"){s=window[o._validate[u]]}n=((typeof(s)=="function"?s(w,o._idd):new RegExp(o._validate[u]).test(w))&&n);s=null}}if(!(o.callEvent("onValidate"+(n?"Success":"Error"),[o._idd,w,n])===false)){o.getForm().setValidateCss(o._idd,n)}return n}}}this._locked=false;this._doLock=function(n){var a=(n===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(q,n,a,o){return this.doWithItem(q,"setNumberFormat",n,a,o)};window.dhx4._enableDataLoading(this,"_initObj","_xmlToObject","items",{struct:true,data:true});window.dhx4._eventable(this);this.attachEvent("_onButtonClick",function(a,n){this.callEvent("onButtonClick",[a,n])});this._updateBlocks=function(){this.forEachItem(function(a){if(g.getItemType(a)=="block"||g.getItemType(a)=="combo"){g.doWithItem(a,"_setCss",g.skin,g.cont.style.fontSize)}})};this._isObj=function(a){return(a!=null&&typeof(a)=="object"&&typeof(a.length)=="undefined")};this._copyObj=function(q){if(this._isObj(q)){var o={};for(var n in q){if(typeof(q[n])=="object"&&q[n]!=null){o[n]=this._copyObj(q[n])}else{o[n]=q[n]}}}else{var o=[];for(var n=0;n<q.length;n++){if(typeof(q[n])=="object"&&q[n]!=null){o[n]=this._copyObj(q[n])}else{o[n]=q[n]}}}return o};if(h!=null&&typeof(h)=="object"){this._initObj(this._copyObj(h))}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 g=document.createElement("DIV");g.className="dhxform_img chbx0";a.appendChild(g);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(g);a.childNodes[a._ll?1:0].firstChild.value=String(c.value);a._updateImgNode=function(l,m){var h=l.childNodes[l._ll?1:0].lastChild;h.className=(m?"dhxform_actv_c":"dhxform_img")+" "+(l._checked?"chbx1":"chbx0");l=h=null};a._doOnFocus=function(h){h.getForm().callEvent("onFocus",[h._idd])};a._doOnBlur=function(h){h.getForm().callEvent("onBlur",[h._idd])};a._doOnKeyUpDown=function(l,h){this.callEvent(l,[this.childNodes[this._ll?0:1].childNodes[0],h,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,g){var a=document.createElement("DIV");a.className="dhxform_label "+g.labelAlign;if(g.wrap==true){a.style.whiteSpace="normal"}if(c._ll){c.insertBefore(a,c.firstChild)}else{c.appendChild(a)}if(typeof(g.tooltip)!="undefined"){a.title=g.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'>"+g.label+(g.info?"<span class='dhxform_info'>[?]</span>":"")+(c._required?"<span class='dhxform_item_required'>*</span>":"")+"</div>";if(!isNaN(g.labelWidth)){a.firstChild.style.width=parseInt(g.labelWidth)+"px"}if(!isNaN(g.labelHeight)){a.firstChild.style.height=parseInt(g.labelHeight)+"px"}if(!isNaN(g.labelLeft)){a.style.left=parseInt(g.labelLeft)+"px"}if(!isNaN(g.labelTop)){a.style.top=parseInt(g.labelTop)+"px"}},doAddInput:function(y,h,c,q,r,l,m){var a=document.createElement("DIV");a.className="dhxform_control";if(y._ll){y.appendChild(a)}else{y.insertBefore(a,y.firstChild)}var x=document.createElement(c);x.className=m;x.name=y._idd;x._idd=y._idd;x.id=h.uid;if(typeof(q)=="string"){x.type=q}if(c=="INPUT"||c=="TEXTAREA"){x.onkeyup=function(u){u=u||event;y.callEvent("onKeyUp",[this,u,this._idd])};x.onkeydown=function(u){u=u||event;y.callEvent("onKeyDown",[this,u,this._idd])}}a.appendChild(x);if(h.readonly){this.setReadonly(y,true)}if(h.hidden==true){this.hide(y)}if(h.disabled==true){this.userDisable(y)}if(r){if(!isNaN(h.inputLeft)){a.style.left=parseInt(h.inputLeft)+"px"}if(!isNaN(h.inputTop)){a.style.top=parseInt(h.inputTop)+"px"}}var v="";var n=false;if(l){if(!isNaN(h.inputWidth)){v+="width:"+parseInt(h.inputWidth)+"px;";n=true}if(!isNaN(h.inputHeight)){v+="height:"+parseInt(h.inputHeight)+"px;"}}if(typeof(h.style)=="string"){v+=h.style}x.style.cssText=v;if(h.maxLength){x.setAttribute("maxLength",h.maxLength)}if(h.connector){x.setAttribute("connector",h.connector)}if(n&&{input:1,password:1,select:1,multiselect:1,calendar:1,colorpicker:1}[this.t]){if(dhtmlXForm.prototype.items[this.t]._dim==null){var s=parseInt(x.style.width);var g=(dhx4.isFF||dhx4.isIE?x.offsetWidth:x.clientWidth);dhtmlXForm.prototype.items[this.t]._dim=g-s}x.style.width=parseInt(x.style.width)-dhtmlXForm.prototype.items[this.t]._dim+"px"}if(typeof(h.note)=="object"){var o=document.createElement("DIV");o.className="dhxform_note";o.style.width=(isNaN(h.note.width)?x.offsetWidth:parseInt(h.note.width))+"px";o._w=h.note.width;o.innerHTML=h.note.text;a.appendChild(o);o=null}},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.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;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(g,h,c){g._type="ra";g._enabled=true;g._checked=false;g._group=h.name;g._value=h.value;g._uid=c;g._ro=(h.readonly==true);g._rName=g._rId+g._group;this.r[g._idd]=g;h.inputWidth=14;this.doAddLabel(g,h);this.doAddInput(g,h,"INPUT","TEXT",true,true,"dhxform_textarea");g.childNodes[g._ll?1:0].className+=" dhxform_img_node";var l=document.createElement("DIV");l.className="dhxform_img rdbt0";g.appendChild(l);if(!isNaN(h.inputLeft)){g.childNodes[g._ll?1:0].style.left=parseInt(h.inputLeft)+"px"}if(!isNaN(h.inputTop)){g.childNodes[g._ll?1:0].style.top=parseInt(h.inputTop)+"px"}g.childNodes[g._ll?1:0].appendChild(l);g.childNodes[g._ll?1:0].firstChild.name="";g.childNodes[g._ll?1:0].firstChild.value="";g._updateImgNode=function(n,o){var m=n.childNodes[n._ll?1:0].lastChild;m.className=(o?"dhxform_actv_r":"dhxform_img")+" "+(n._checked?"rdbt1":"rdbt0");n=m=null};g._doOnFocus=function(m){m.getForm().callEvent("onFocus",[m._group,m._value])};g._doOnBlur=function(m){m.getForm().callEvent("onBlur",[m._group,m._value])};g._doOnKeyUpDown=function(n,m){this.callEvent(n,[this.childNodes[this._ll?0:1].childNodes[0],m,this._group,this._value])};if(this.input[g._rName]==null){var a=document.createElement("INPUT");a.type="HIDDEN";a.name=h.name;a.firstValue=g._value;g.appendChild(a);this.input[g._rName]=a}if(!this.firstValue[g._rName]){this.firstValue[g._rName]=h.value}if(h.checked==true){this.check(g)}if(h.hidden==true){this.hide(g)}if(h.disabled==true){this.userDisable(g)}this.doAttachEvents(g);return this},destruct:function(h,l){if(h.lastChild==this.input[h._rName]){var g=false;for(var c in this.r){if(!g&&this.r[c]._group==h._group&&this.r[c]._idd!=h._idd){this.r[c].appendChild(this.input[h._rName]);g=true}}if(!g){this.input[h._rName].parentNode.removeChild(this.input[h._rName]);this.input[h._rName]=null;this.firstValue[h._rName]=null}}var m=h._idd;h._doOnFocus=h._doOnBlur=h._updateImgNode=null;this.doUnloadNestedLists(h);this.doDestruct(h);return m},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(g){var h=null;for(var c in this.r){if(this.r[c]._checked&&this.r[c]._group==g._group&&this.r[c]._rId==g._rId){h=this.r[c]._value}}if(h!=null&&this.r[c]._enabled){this.input[g._rName].name=String(g._group);this.input[g._rName].value=h}else{this.input[g._rName].name="";this.input[g._rName].value=""}this.input[g._rName]._value=h},setChecked:function(l,m){m=(m===true);for(var c in this.r){if(this.r[c]._group==l._group&&this.r[c]._rId==l._rId){var h=false;if(this.r[c]._idd==l._idd){if(this.r[c]._checked!=m){this.r[c]._checked=m;h=true}}else{if(this.r[c]._checked){this.r[c]._checked=false;h=true}}if(h){var g=this.r[c].childNodes[this.r[c]._ll?1:0].childNodes[1];g.className=g.className.replace(/rdbt[0-1]{1}/gi,"")+(this.r[c]._checked?" rdbt1":" rdbt0");g=null}}}this.doCheckValue(l)},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,g){var a=document.createElement("DIV");a.className="dhxform_label "+g.labelAlign;a.innerHTML="<label for='"+g.uid+"'>"+g.label+(g.info?"<span class='dhxform_info'>[?]</span>":"")+(c._required?"<span class='dhxform_item_required'>*</span>":"")+"</label>";if(g.wrap==true){a.style.whiteSpace="normal"}if(typeof(g.tooltip)!="undefined"){a.title=g.tooltip}c.appendChild(a);if(typeof(g.label)=="undefined"||g.label==null||g.label.length==0){a.style.display="none"}if(!isNaN(g.labelWidth)){a.style.width=parseInt(g.labelWidth)+"px"}if(!isNaN(g.labelHeight)){a.style.height=parseInt(g.labelHeight)+"px"}if(!isNaN(g.labelLeft)){a.style.left=parseInt(g.labelLeft)+"px"}if(!isNaN(g.labelTop)){a.style.top=parseInt(g.labelTop)+"px"}if(g.info){a.onclick=function(l){l=l||event;var h=l.target||l.srcElement;if(typeof(h.className)!="undefined"&&h.className=="dhxform_info"){this.parentNode.callEvent("onInfo",[this.parentNode._idd]);l.cancelBubble=true;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false}}}},doAttachEvents:function(g){var a=g.childNodes[g._ll?1:0].childNodes[0];var c=this;a.onclick=function(){c.doOnChange(this)};a.onkeydown=function(h){h=h||event;c.doOnChange(this);this.parentNode.parentNode.callEvent("onKeyDown",[this,h,this.parentNode.parentNode._idd])};a.onchange=function(){c.doOnChange(this)};a.onkeyup=function(h){h=h||event;this.parentNode.parentNode.callEvent("onKeyUp",[this,h,this.parentNode.parentNode._idd])};a=null;this.doAttachChangeLS(g)},doAttachChangeLS:function(c){var a=c.childNodes[c._ll?1:0].childNodes[0];a.onfocus=function(){var g=this.parentNode.parentNode;g.getForm()._ccActivate(g._idd,this,g.getForm().getItemValue(g._idd,true));g.getForm().callEvent("onFocus",[g._idd]);g=null};a.onblur=function(){var g=this.parentNode.parentNode;g.getForm()._ccDeactivate(g._idd);g.getForm().callEvent("onBlur",[g._idd]);g=null};a=null},doValidate:function(a){if(a.getForm().live_validate){this._validate(a)}},doLoadOpts:function(n,l,r){var o=n.childNodes[n._ll?1:0].childNodes[0];var a=l.options;var h=false;for(var c=0;c<a.length;c++){var m=a[c].text||a[c].label;if(!m||typeof(m)=="undefined"){m=""}var g=new Option(m,a[c].value);if(typeof(a[c].img_src)=="string"){g.setAttribute("img_src",a[c].img_src)}o.options.add(g);if(typeof(a[c].selected)!="undefined"&&window.dhx4.s2b(a[c].selected)==true){g.selected=true;n._value=a[c].value;h=true}if(typeof(a[c].checked)!="undefined"&&window.dhx4.s2b(a[c].checked)==true){g.setAttribute("checked","1")}if(typeof(a[c].img)!="undefined"){g.setAttribute("img",a[c].img)}if(typeof(a[c].img_dis)!="undefined"){g.setAttribute("img_dis",a[c].img_dis)}}if(!h&&o.selectedIndex>=0){n._value=o.options[o.selectedIndex].value}if(r===true){n.callEvent("onOptionsLoaded",[n._idd])}this._checkNoteWidth(n)},doLoadOptsConnector:function(g,a){var c=this;g._connector_working=true;window.dhx4.ajax.get(a,function(n){n=n.xmlDoc.responseXML;if(n==null){return}var h=n.getElementsByTagName("data");if(h==null||h[0]==null){return}h=h[0];var m=[];for(var o=0;o<h.childNodes.length;o++){if(typeof(h.childNodes[o].tagName)!="undefined"&&String(h.childNodes[o].tagName).toLowerCase()=="item"){var l=h.childNodes[o];m.push({label:l.getAttribute("label"),value:l.getAttribute("value"),selected:(l.getAttribute("selected")!=null)});l=null}}c.doLoadOpts(g,{options:m},true);g._connector_working=false;if(g._connector_value!=null){c.setValue(g,g._connector_value);g._connector_value=null}c=g=null})},doOnChange:function(g){var a=g.parentNode.parentNode;a._newValue=(g.selectedIndex>=0?g.options[g.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<g.options.length;c++){if(g.options[c].value==a._value){g.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,h){if(c._connector_working){c._connector_value=h;return}var a=this.getOptions(c);for(var g=0;g<a.length;g++){if(a[g].value==h){a[g].selected=true;c._value=a[g].value}}if(c._list!=null&&c._list.length>0){c.getForm()._autoCheck()}c.getForm()._ccReload(c._idd,c._value)},getValue:function(g){var a=-1;var c=this.getOptions(g);for(var h=0;h<c.length;h++){if(c[h].selected){a=c[h].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(h,m,n){var c=h.childNodes[h._ll?1:0].childNodes[0];c.multiple=true;if(!isNaN(m.size)){c.size=Number(m.size)}h._value=[];h._newValue=[];var g=m.options;for(var l=0;l<g.length;l++){var a=new Option(g[l].text||g[l].label,g[l].value);c.options.add(a);if(g[l].selected==true||g[l].selected=="true"){a.selected=true;h._value.push(g[l].value)}}if(n===true){h.callEvent("onOptionsLoaded",[h._idd])}this._checkNoteWidth(h)},doAttachEvents:function(g){var a=g.childNodes[g._ll?1:0].childNodes[0];var c=this;a.onfocus=function(){c.doOnChange(this);var h=this.parentNode.parentNode;h.getForm().callEvent("onFocus",[h._idd]);h=null};a.onblur=function(){c.doOnChange(this);var h=this.parentNode.parentNode;h.getForm().callEvent("onBlur",[h._idd]);h=null};a.onclick=function(){c.doOnChange(this);var h=this.parentNode.parentNode;h._autoCheck();h=null}},doOnChange:function(h){var c=h.parentNode.parentNode;c._newValue=[];for(var g=0;g<h.options.length;g++){if(h.options[g].selected){c._newValue.push(h.options[g].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 g=0;g<c._value.length;g++){a[c._value[g]]=true}for(var g=0;g<h.options.length;g++){h.options[g].selected=(a[h.options[g].value]==true)}a=null;return}}c._value=[];for(var g=0;g<c._newValue.length;g++){c._value.push(c._newValue[g])}c.callEvent("onChange",[c._idd,c._value])}c._autoCheck()},setValue:function(g,l){var a={};if(typeof(l)=="string"){l=l.split(",")}if(typeof(l)!="object"){l=[l]}for(var h=0;h<l.length;h++){a[l[h]]=true}var c=this.getOptions(g);for(var h=0;h<c.length;h++){c[h].selected=(a[c[h].value]==true)}g._autoCheck()},getValue:function(g){var a=[];var c=this.getOptions(g);for(var h=0;h<c.length;h++){if(c[h].selected){a.push(c[h].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(m,n){var l=(!isNaN(n.rows));m._type="ta";m._enabled=true;this.doAddLabel(m,n);this.doAddInput(m,n,(l?"TEXTAREA":"INPUT"),(l?null:"TEXT"),true,true,"dhxform_textarea");this.doAttachEvents(m);if(l){m.childNodes[m._ll?1:0].childNodes[0].rows=Number(n.rows)+(window.dhx4.isIE6?1:0)}if(typeof(n.numberFormat)!="undefined"){var h,g=null,o=null;if(typeof(n.numberFormat)!="string"){h=n.numberFormat[0];g=n.numberFormat[1]||null;o=n.numberFormat[2]||null}else{h=n.numberFormat;if(typeof(n.groupSep)=="string"){g=n.groupSep}if(typeof(n.decSep)=="string"){o=n.decSep}}this.setNumberFormat(m,h,g,o,false)}this.setValue(m,n.value);return this},doAttachEvents:function(c){var a=this;if(c._type=="ta"||c._type=="se"||c._type=="pw"){c.childNodes[c._ll?1:0].childNodes[0].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.childNodes[c._ll?1:0].childNodes[0].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}},updateValue:function(g,a){var h=g.childNodes[g._ll?1:0].childNodes[0].value;if(!a&&g._df!=null&&h==this._getFmtValue(g,h)){return}var c=this;if(g._value!=h){if(g.checkEvent("onBeforeChange")){if(g.callEvent("onBeforeChange",[g._idd,g._value,h])!==true){if(g._df!=null){c.setValue(g,g._value)}else{g.childNodes[g._ll?1:0].childNodes[0].value=g._value}return}}if(g._df!=null){c.setValue(g,h)}else{g._value=h}g.callEvent("onChange",[g._idd,h]);return}if(g._df!=null){this.setValue(g,g._value)}},setValue:function(g,h){g._value=(typeof(h)!="undefined"&&h!=null?h:"");var c=(String(g._value)||"");var a=g.childNodes[g._ll?1:0].childNodes[0];if(g._df!=null&&typeof(this._getFmtValue)=="function"){c=this._getFmtValue(g,c)}if(a.value!=c){a.value=c;g.getForm()._ccReload(g._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(l,n,h,o,c){if(typeof(c)!="boolean"){c=true}if(n==""){l._df=null;if(c){this.setValue(l,l._value)}return true}if(typeof(n)!="string"){return}var a=n.match(/^([^\.\,0-9]*)([0\.\,]*)([^\.\,0-9]*)/);if(a==null||a.length!=4){return false}l._df={i_len:false,i_sep:(typeof(h)=="string"?h:","),d_len:false,d_sep:(typeof(o)=="string"?o:"."),s_bef:(typeof(a[1])=="string"?a[1]:""),s_aft:(typeof(a[3])=="string"?a[3]:"")};var m=a[2].split(".");if(m[1]!=null){l._df.d_len=m[1].length}var g=m[0].split(",");if(g.length>1){l._df.i_len=g[g.length-1].length}if(c){this.setValue(l,l._value)}return true},_getFmtValue:function(item,v){var r=v.match(/^(-)?([0-9]{1,})(\.([0-9]{1,}))?$/);if(r!=null&&r.length==5){var v0="";if(r[1]!=null){v0+=r[1]}v0+=item._df.s_bef;if(item._df.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==item._df.i_len&&q>0){v1=item._df.i_sep+v1;i=0}}v0+=v1}else{v0+=r[2]}if(item._df.d_len!==false){if(r[4]==null){r[4]=""}while(r[4].length<item._df.d_len){r[4]+="0"}eval("dhx4.temp = new RegExp(/\\d{"+item._df.d_len+"}/);");var t1=(r[4]).match(dhx4.temp);if(t1!=null){v0+=item._df.d_sep+t1}dhx4.temp=t1=null}v0+=item._df.s_aft;return v0}return v}};(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(g,h){g._type="fl";g._enabled=true;this.doAddLabel(g,h);this.doAddInput(g,h,"INPUT","FILE",true,false,"dhxform_textarea");var a=g.childNodes[g._ll?1:0].childNodes[0];var c=this;a.onfocus=function(){var l=this.parentNode.parentNode;l.getForm().callEvent("onFocus",[l._idd]);l=null};a.onblur=function(){var l=this.parentNode.parentNode;if(l.getForm().live_validate){c._validate(l)}l.getForm().callEvent("onBlur",[l._idd]);l=null};a=null;g.childNodes[g._ll?1:0].childNodes[0].onchange=function(){g.callEvent("onChange",[g._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,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,g){c._type="lb";c._enabled=true;c._checked=true;var a=document.createElement("DIV");a.className="dhxform_txt_label2"+(g._isTopmost?" topmost":"");a.innerHTML=g.label;c.appendChild(a);if(g.hidden==true){this.hide(c)}if(g.disabled==true){this.userDisable(c)}if(!isNaN(g.labelWidth)){a.style.width=parseInt(g.labelWidth)+"px"}if(!isNaN(g.labelHeight)){a.style.height=parseInt(g.labelHeight)+"px"}if(!isNaN(g.labelLeft)){a.style.left=parseInt(g.labelLeft)+"px"}if(!isNaN(g.labelTop)){a.style.top=parseInt(g.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(g,h){g._type="bt";g._enabled=true;g._name=h.name;g.className=String(g.className).replace("item_label_top","item_label_left").replace("item_label_right","item_label_left");if(!isNaN(h.width)){var a=Math.max(h.width,10)}var c=(typeof(a)!="undefined");g._doOnKeyUpDown=function(m,l){this.callEvent(m,[this.childNodes[0].childNodes[0],l,this._idd])};g.innerHTML='<div class="dhxform_btn" role="link" tabindex="0" dir="ltr"><div class="dhxform_btn_txt" '+(c?' style="width:'+a+'px;"':"")+">"+h.value+'</div><div class="dhxform_btn_filler" disabled="true"></div></div>';if(!isNaN(h.inputLeft)){g.childNodes[0].style.left=parseInt(h.inputLeft)+"px"}if(!isNaN(h.inputTop)){g.childNodes[0].style.top=parseInt(h.inputTop)+"px"}if(h.hidden==true){this.hide(g)}if(h.disabled==true){this.userDisable(g)}if(typeof(h.tooltip)!="undefined"){g.firstChild.title=h.tooltip}g.onselectstart=function(l){l=l||event;l.cancelBubble=true;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false};g.firstChild.onselectstart=function(l){l=l||event;l.cancelBubble=true;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}return false};g.firstChild.onkeypress=function(l){l=l||event;if((l.keyCode==32||l.charCode==32||l.keyCode==13||l.charCode==13)&&!this.parentNode._busy){this.parentNode._busy=true;l.cancelBubble=true;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}_dhxForm_doClick(this.childNodes[0],["mousedown","mouseup"]);return false}};g.firstChild.ontouchstart=function(){e=e||event;e.preventDefault();if(!this.parentNode._busy){this.parentNode._busy=true;_dhxForm_doClick(this.childNodes[0],["mousedown","mouseup"])}};g.firstChild.onfocus=function(){this.parentNode._doOnFocus(this.parentNode)};g.firstChild.onblur=function(){_dhxForm_doClick(this.childNodes[0],"mouseout");this.parentNode._doOnBlur(this.parentNode)};g.firstChild.onkeyup=function(l){this.parentNode._doOnKeyUpDown("onKeyUp",l||event)};g.firstChild.onkeydown=function(l){this.parentNode._doOnKeyUpDown("onKeyDown",l||event)};g.firstChild.onmouseover=function(){var l=this.parentNode;if(!l._enabled){return}this._isOver=true;this.className="dhxform_btn dhxform_btn_over";l=null};g.firstChild.onmouseout=function(){var l=this.parentNode;if(!l._enabled){return}this.className="dhxform_btn";this._allowClick=false;this._pressed=false;this._isOver=false;l=null};g.firstChild.onmousedown=function(m){m=m||event;if(m.button>=2){return}if(this._pressed){return}var l=this.parentNode;if(!l._enabled){return}this.className="dhxform_btn dhxform_btn_pressed";this._allowClick=true;this._pressed=true;l=null};g.firstChild.onmouseup=function(m){m=m||event;if(m.button>=2){return}if(!this._pressed){return}var l=this.parentNode;if(!l._enabled){return}l._busy=false;this.className="dhxform_btn"+(this._isOver?" dhxform_btn_over":"");if(this._pressed&&this._allowClick){l.callEvent("_onButtonClick",[l._name,l._cmd])}this._allowClick=false;this._pressed=false;l=null};g._doOnFocus=function(l){l.getForm().callEvent("onFocus",[l._idd])};g._doOnBlur=function(l){l.getForm().callEvent("onBlur",[l._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.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,g){c.style.display="none";c._name=g.name;c._type="hd";c._enabled=true;var a=document.createElement("INPUT");a.type="HIDDEN";a.name=g.name;a.value=(g.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,h){c._type="fs";if(typeof(parseInt(h.inputWidth))=="number"){}c._width=h.width;c._enabled=true;c._checked=true;c.className="fs_"+h.position+(typeof(h.className)=="string"?" "+h.className:"");var g=document.createElement("FIELDSET");g.className="dhxform_fs";var l=String(h.labelAlign).replace("align_","");g.innerHTML="<legend class='fs_legend' align='"+l+"' style='text-align:"+l+"'>"+h.label+"</legend>";c.appendChild(g);if(!isNaN(h.inputLeft)){g.style.left=parseInt(h.inputLeft)+"px"}if(!isNaN(h.inputTop)){g.style.top=parseInt(h.inputTop)+"px"}if(h.inputWidth!="auto"){if(!isNaN(h.inputWidth)){g.style.width=parseInt(h.inputWidth)+"px";var a=parseInt(g.style.width);if(g.offsetWidth>a){g.style.width=a+(a-g.offsetWidth)+"px"}}}c._addSubListNode=function(){var m=document.createElement("DIV");m._custom_css=" dhxform_fs_nested";this.childNodes[0].appendChild(m);return m};if(h.hidden==true){this.hide(c)}if(h.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,g){c._type="bl";c._width=g.width;c._enabled=true;c._checked=true;c.className="block_"+g.position+(typeof(g.className)=="string"?" "+g.className:"");var a=document.createElement("DIV");a.className="dhxform_obj_"+c.getForm().skin+" dhxform_block";a.style.fontSize=c.getForm().cont.style.fontSize;if(g.style){a.style.cssText=g.style}if(typeof(g.id)!="undefined"){a.id=g.id}c.appendChild(a);if(!isNaN(g.inputLeft)){a.style.left=parseInt(g.inputLeft)+"px"}if(!isNaN(g.inputTop)){a.style.top=parseInt(g.inputTop)+"px"}if(g.inputWidth!="auto"){if(!isNaN(g.inputWidth)){a.style.width=parseInt(g.inputWidth)+"px"}}if(!isNaN(g.blockOffset)){c._ofsNested=g.blockOffset}c._addSubListNode=function(){var h=document.createElement("DIV");h._inBlcok=true;if(typeof(this._ofsNested)!="undefined"){h._ofsNested=this._ofsNested}this.childNodes[0].appendChild(h);return h};if(g.hidden==true){this.hide(c)}if(g.disabled==true){this.userDisable(c)}return this},_setCss:function(a,g,c){a.firstChild.className="dhxform_obj_"+g+" 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,g){var a=(!isNaN(g.rows));c._type="tp";c._enabled=true;if(g.format){if(typeof(g.format)=="function"){c.format=g.format}if(typeof(window[g.format])=="function"){c.format=window[g.format]}}if(!c.format){c.format=function(h,l){return l}}this.doAddLabel(c,g);this.doAddInput(c,g,"DIV",null,true,true,"dhxform_item_template");c._value=(g.value||"");c.childNodes[1].childNodes[0].innerHTML=c.format(c._idd,c._value);return this},setValue:function(a,c){a._value=c;a.childNodes[1].childNodes[0].innerHTML=a.format(a._idd,a._value)},getValue:function(a){return a._value},enable:function(a){if(String(a.className).search("disabled")>=0){a.className=String(a.className).replace(/disabled/gi,"")}a._enabled=true},disable:function(a){if(String(a.className).search("disabled")<0){a.className+=" disabled"}a._enabled=false}};(function(){for(var c in {doAddLabel:1,doAddInput:1,destruct: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(l,r){var m=[];for(var c=0;c<l.childNodes.length;c++){if(String(l.childNodes[c].tagName||"").toLowerCase()=="li"){var g={};var u=l.childNodes[c];for(var s=0;s<r.length;s++){if(u.getAttribute(r[s])!=null){g[String(r[s]).replace("ftype","type")]=u.getAttribute(r[s])}}if(!g.label){try{g.label=u.firstChild.nodeValue}catch(o){}}var h=u.getElementsByTagName("UL");if(h[0]!=null){g[(g.type=="select"?"options":"list")]=dhtmlXForm.prototype._ulToObject(h[0],r)}for(var s=0;s<u.childNodes.length;s++){if(String(u.childNodes[s].tagName||"").toLowerCase()=="userdata"){if(!g.userdata){g.userdata={}}g.userdata[u.childNodes[s].getAttribute("name")]=u.childNodes[s].firstChild.nodeValue}}m[m.length]=g}if(String(l.childNodes[c].tagName||"").toLowerCase()=="div"){var g={};g.type="label";try{g.label=l.childNodes[c].firstChild.nodeValue}catch(o){}m[m.length]=g}}return m};dhtmlXForm.prototype.setUserData=function(l,g,h,a){if(typeof(a)!="undefined"){var c=this.doWithItem([l,g],"_getId");if(c!=null){l=c;g=h;h=a}}if(!this._userdata){this._userdata={}}this._userdata[l]=(this._userdata[l]||{});this._userdata[l][g]=h};dhtmlXForm.prototype.getUserData=function(h,g,a){if(typeof(a)!="undefined"){var c=this.doWithItem([h,g],"_getId");if(c!=null){h=c;g=a}}if(this._userdata!=null&&typeof(this._userdata[h])!="undefined"&&typeof(this._userdata[h][g])!="undefined"){return this._userdata[h][g]}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(g){for(var c in g){var h=this.getItemType(c);switch(h){case"checkbox":this[g[c]==true||parseInt(g[c])==1||g[c]=="true"||g[c]==this.getItemValue(c,"realvalue")?"checkItem":"uncheckItem"](c);break;case"radio":this.checkItem(c,g[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,g[c]);break;default:if(this["setFormData_"+h]){this["setFormData_"+h](c,g[c])}else{if(!this.hId){this.hId=this._genStr(12)}this.setUserData(this.hId,c,g[c])}break}}};dhtmlXForm.prototype.getFormData=function(w,m){var c={};var s=this;for(var v in this.itemPull){var o=this.itemPull[v]._idd;var x=this.itemPull[v]._type;if(x=="ch"){c[o]=(this.isItemChecked(o)?this.getItemValue(o):0)}if(x=="ra"&&!c[this.itemPull[v]._group]){c[this.itemPull[v]._group]=this.getCheckedValue(this.itemPull[v]._group)}if(x in {se:1,ta:1,pw:1,hd:1,tp:1,fl:1,calendar:1,combo:1,editor:1,colorpicker:1}){c[o]=this.getItemValue(o,w)}if(this["getFormData_"+x]){c[o]=this["getFormData_"+x](o)}if(x=="up"){var l=this.getItemValue(o);for(var h in l){c[h]=l[h]}}if(this.itemPull[v]._list){for(var g=0;g<this.itemPull[v]._list.length;g++){var n=this.itemPull[v]._list[g].getFormData(w,m);for(var u in n){c[u]=n[u]}}}}if(!m&&this.hId&&this._userdata[this.hId]){for(var v in this._userdata[this.hId]){if(!c[v]){c[v]=this._userdata[this.hId][v]}}}return c};dhtmlXForm.prototype.adjustParentSize=function(){var l=0;var h=-1;for(var m=0;m<this.base.length;m++){l+=this.base[m].firstChild.offsetWidth;if(this.base[m].offsetHeight>h){h=this.base[m].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(n){}if(g&&typeof(a)!="undefined"){if(l>0){a.setWidth(l+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 o=this.cont.parentNode.parentNode;if(typeof(o.callEvent)=="function"){this.cont.style.display="none";o.callEvent("_setCellSize",[l+15,h+15]);this.cont.style.display=""}}}catch(n){}};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,n,o,h){if(typeof n=="function"){o=n;n="post"}else{n=(n=="get"?"get":"post")}if(h!==true&&!this.validate()){return}var m=this.getFormData(true);var l=[];for(var g in m){l.push(g+"="+encodeURIComponent(m[g]))}var a=function(q){if(o){o.call(this,q,q.xmlDoc.responseText)}};if(n=="get"){window.dhx4.ajax.get(c+(c.indexOf("?")==-1?"?":"&")+l.join("&"),a)}else{window.dhx4.ajax.post(c,l.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(h,c){var g=this.obj.getFormData(true);g[this.action_param]=this.obj.getUserData(h,this.action_param);return g};a._clearUpdateFlag=function(){};a.attachEvent("onAfterUpdate",function(g,h,l,c){if(h=="inserted"||h=="updated"){this.obj.resetDataProcessor("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(g,a,c){if(!this._formLS){this._formLS={}}if(!this._formLS[g]){this._formLS[g]={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 l=this._formLS[c].input;if(String(l.tagName).toLowerCase()=="select"){var g="";if(l.selectedIndex>=0&&l.selectedIndex<l.options.length){g=l.options[l.selectedIndex].value}}else{var g=l.value}if(g!=this._formLS[c].value){this._formLS[c].value=g;this.callEvent("onInputChange",[l._idd,g,this])}l=null}if(this._ccActive){var h=this;this._ccTm=window.setTimeout(function(){h._ccDo();h=null},100)}};dhtmlXForm.prototype._ccReload=function(c,a){if(this._formLS&&this._formLS[c]){this._formLS[c].value=a}};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 g=document.getElementsByTagName("UL");var h=[];for(var n=0;n<g.length;n++){if(g[n].className=="dhtmlxForm"){var m=document.createElement("DIV");h[h.length]={nodeUL:g[n],nodeForm:m,data:dhtmlXForm.prototype._ulToObject(g[n],c),name:(g[n].getAttribute("name")||null)}}}for(var n=0;n<h.length;n++){h[n].nodeUL.parentNode.insertBefore(h[n].nodeForm,h[n].nodeUL);var o=new dhtmlXForm(h[n].nodeForm,h[n].data);if(h[n].name!==null){window[h[n].name]=o}var l=(h[n].nodeUL.getAttribute("oninit")||null);h[n].nodeUL.parentNode.removeChild(h[n].nodeUL);h[n].nodeUL=null;h[n].nodeForm=null;h[n].data=null;h[n]=null;if(l){if(typeof(l)=="function"){l()}else{if(typeof(window[l])=="function"){window[l]()}}}}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(!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()}dhtmlXForm.prototype.items.combo={render:function(c,g){c._type="combo";c._enabled=true;c._value=null;c._newValue=null;this.doAddLabel(c,g);this.doAddInput(c,g,"SELECT",null,true,true,"dhxform_select");this.doAttachEvents(c);this.doLoadOpts(c,g);c.onselectstart=function(h){return true};c.childNodes[c._ll?1:0].childNodes[0].setAttribute("mode",g.comboType||"");if(g.comboImagePath){c.childNodes[c._ll?1:0].childNodes[0].setAttribute("imagePath",g.comboImagePath)}if(g.comboDefaultImage){c.childNodes[c._ll?1:0].childNodes[0].setAttribute("defaultImage",g.comboDefaultImage)}if(g.comboDefaultImageDis){c.childNodes[c._ll?1:0].childNodes[0].setAttribute("defaultImageDis",g.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=g.uid;var a=this;c._combo.attachEvent("onChange",function(){a.doOnChange(this)});if(g.connector){this.doLoadOptsConnector(c,g.connector)}if(g.filtering){c._combo.enableFilteringMode(true)}else{if(g.serverFiltering){c._combo.enableFilteringMode(true,g.serverFiltering,g.filterCache,g.filterSubLoad)}}if(g.readonly==true){this.setReadonly(c,true)}if(g.style){c._combo.DOMelem_input.style.cssText+=g.style}c._combo.attachEvent("onFocus",function(){var h=this.cont.parentNode.parentNode;var l=h.getForm();if(l.skin=="dhx_terrace"&&this.cont.className.search(/combo_in_focus/)<0){this.cont.className+=" combo_in_focus"}l.callEvent("onFocus",[h._idd]);l=h=null});c._combo.attachEvent("onBlur",function(){var h=this.cont.parentNode.parentNode;var l=h.getForm();if(l.skin=="dhx_terrace"&&this.cont.className.search(/combo_in_focus/)>=0){this.cont.className=this.cont.className.replace(/\s{0,}combo_in_focus/gi,"")}l.callEvent("onBlur",[h._idd]);l=h=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(h,a){var g=this;var c=h;h._connector_working=true;h._apiChange=true;h._combo.load(a,function(){c.callEvent("onOptionsLoaded",[c._idd]);c._connector_working=false;if(c._connector_value!=null){g.setValue(c,c._connector_value);c._connector_value=null}c._apiChange=false;g=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,g,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(g,l){var c=this;g._type="calendar";g._enabled=true;var m=navigator.userAgent;var a=(m.indexOf("MSIE 6.0")>=0||m.indexOf("MSIE 7.0")>=0||m.indexOf("MSIE 8.0")>=0);this.doAddLabel(g,l);this.doAddInput(g,l,"INPUT","TEXT",true,true,"dhxform_textarea calendar");this.doAttachChangeLS(g);if(a){g.childNodes[g._ll?1:0].childNodes[0].onfocus2=g.childNodes[g._ll?1:0].childNodes[0].onfocus;g.childNodes[g._ll?1:0].childNodes[0].onfocus=function(){if(this._skipOnFocus==true){this._skipOnFocus=false;return}this.onfocus2.apply(this,arguments)}}g.childNodes[g._ll?1:0].childNodes[0]._idd=g._idd;g.childNodes[g._ll?1:0].childNodes[0].onblur=function(){var n=this.parentNode.parentNode;if(n._c.base._formMouseDown){n._c.base._formMouseDown=false;this._skipOnFocus=true;this.focus();this.value=this.value;n=null;return true}var o=n.getForm();o._ccDeactivate(n._idd);c.checkEnteredValue(this.parentNode.parentNode);if(o.live_validate){c._validate(n)}o.callEvent("onBlur",[n._idd]);o=n=null};g._f=(l.dateFormat||null);g._f0=(l.serverDateFormat||g._f);var h=g.getForm();g._c=new dhtmlXCalendarObject(g.childNodes[g._ll?1:0].childNodes[0],l.skin||h.skin||"dhx_skyblue");g._c._nullInInput=true;g._c.enableListener(g.childNodes[g._ll?1:0].childNodes[0]);if(g._f!=null){g._c.setDateFormat(g._f)}if(!window.dhx4.s2b(l.enableTime)){g._c.hideTime()}if(window.dhx4.s2b(l.showWeekNumbers)){g._c.showWeekNumbers()}if(!isNaN(l.weekStart)){g._c.setWeekStartDay(l.weekStart)}if(typeof(l.calendarPosition)!="undefined"){g._c.setPosition(l.calendarPosition)}if(l.minutesInterval!=null){g._c.setMinutesInterval(l.minutesInterval)}g._c._itemIdd=g._idd;g._c.attachEvent("onBeforeChange",function(n){if(g._value!=n){if(g.checkEvent("onBeforeChange")){if(g.callEvent("onBeforeChange",[g._idd,g._value,n])!==true){return false}}g._tempValue=g._value=n;c.setValue(g,n,false);g.callEvent("onChange",[this._itemIdd,g._value])}return true});g._c.attachEvent("onClick",function(){g._tempValue=null});if(a){g._c.base.onmousedown=function(){this._formMouseDown=true;return false}}this.setValue(g,l.value);h=null;return this},getCalendar:function(a){return a._c},setSkin:function(a,c){a._c.setSkin(c)},setValue:function(c,g,a){if(!g||g==null||typeof(g)=="undefined"||g==""){c._value=null;c.childNodes[c._ll?1:0].childNodes[0].value=""}else{c._value=(g instanceof Date?g:c._c._strToDate(g,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 g=c._tempValue||c._c.getDate();if(a===true&&g==null){return""}return(a===true?c._c._dateToStr(g,c._f0||c._c._dateFormat):g)},setDateFormat:function(c,a,g){c._f=a;c._f0=(g||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,g){this.doWithItem(c,"setDateFormat",a,g)};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(h,g,l){this.callEvent(h,[this.childNodes[this._ll?0:1].childNodes[0],g,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(g,h){var c=this;g._type="colorpicker";g._enabled=true;this.doAddLabel(g,h);this.doAddInput(g,h,"INPUT","TEXT",true,true,"dhxform_textarea");g._value=(h.value||"");g.childNodes[g._ll?1:0].childNodes[0].value=g._value;var a={input:g.childNodes[g._ll?1:0].childNodes[0],custom_colors:(window.dhx4.s2b(h.enableCustomColors)==true),skin:g.getForm().skin};this.colorpicker[g._idd]=new dhtmlXColorPicker(a);this.colorpicker[g._idd]._nodes[0].valueColor=null;this.colorpicker[g._idd].base.className+=" dhtmlxcp_in_form";if(typeof(h.customColors)!="undefined"){this.colorpicker[g._idd].setCustomColors(h.customColors)}this.colorpicker[g._idd].attachEvent("onSelect",function(l){if(g._value!=l){if(g.checkEvent("onBeforeChange")){if(g.callEvent("onBeforeChange",[g._idd,g._value,l])!==true){g.childNodes[g._ll?1:0].childNodes[0].value=g._value;return}}g._value=l;c.setValue(g,l);g.callEvent("onChange",[g._idd,g._value])}});this.colorpicker[g._idd].attachEvent("onHide",function(l){var m=g.childNodes[g._ll?1:0].childNodes[0];if(m.value!=g._value){m.value=g._value}m=null});g.childNodes[g._ll?1:0].childNodes[0]._idd=g._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(g,h){var a=(!isNaN(h.rows));g._type="editor";g._enabled=true;this.doAddLabel(g,h);this.doAddInput(g,h,"DIV",null,true,true,"dhxform_item_template");g._value=(h.value||"");var c=this;this.editor[g._idd]=new dhtmlXEditor({parent:g.childNodes[g._ll?1:0].childNodes[0],content:g._value,iconsPath:h.iconsPath,toolbar:h.toolbar});this.editor[g._idd].attachEvent("onAccess",function(m,n){g.callEvent("_onBeforeEditorAccess",[]);_dhxForm_doClick(document.body,"click");if(m=="blur"){c.doOnBlur(g,this);g.callEvent("onBlur",[g._idd]);if(g.getForm().skin=="dhx_terrace"){var l=g.childNodes[g._ll?1:0].className;if(l.indexOf("dhxeditor_focus")>=0){g.childNodes[g._ll?1:0].className=(l).replace(/\s{0,}dhxeditor_focus/gi,"")}}}else{g.callEvent("onEditorAccess",[g._idd,m,n,this,g.getForm()]);g.callEvent("onFocus",[g._idd]);if(g.getForm().skin=="dhx_terrace"){var l=g.childNodes[g._ll?1:0].className;if(l.indexOf("dhxeditor_focus")==-1){g.childNodes[g._ll?1:0].className+=" dhxeditor_focus"}}}});this.editor[g._idd].attachEvent("onToolbarClick",function(l){g.callEvent("onEditorToolbarClick",[g._idd,l,this,g.getForm()])});if(h.readonly){this.setReadonly(g,true)}g.childNodes[g._ll?0:1].childNodes[0].removeAttribute("for");g.childNodes[g._ll?0:1].childNodes[0].onclick=function(){c.editor[g._idd]._focus()};return this},doOnBlur:function(g,c){var a=c.getContent();if(g._value!=a){if(g.checkEvent("onBeforeChange")){if(g.callEvent("onBeforeChange",[g._idd,g._value,a])!==true){c.setContent(g._value);return}}g._value=a;g.callEvent("onChange",[g._idd,a])}},setValue:function(a,c){if(a._value==c){return}a._value=c;this.editor[a._idd].setContent(a._value)},getValue:function(a){a._value=this.editor[a._idd].getContent();return a._value},enable:function(a){this.editor[a._idd].setReadonly(false);this.doEn(a)},disable:function(a){this.editor[a._idd].setReadonly(true);this.doDis(a)},setReadonly:function(a,c){this.editor[a._idd].setReadonly(c)},getEditor:function(a){return(this.editor[a._idd]||null)},destruct:function(a){a.childNodes[a._ll?0:1].childNodes[0].onclick=null;this.editor[a._idd].unload();this.editor[a._idd]=null;this.d2(a);a=null},setFocus:function(a){this.editor[a._idd]._focus()}};(function(){for(var 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.upload={render:function(c,g){c._type="up";c._enabled=true;c._checked=true;c.className=g.position+(typeof(g.className)=="string"?" "+g.className:"");var a=document.createElement("DIV");c.appendChild(a);if(!isNaN(g.inputLeft)){c.style.left=parseInt(g.inputLeft)+"px"}if(!isNaN(g.inputTop)){c.style.top=parseInt(g.inputTop)+"px"}if(g.inputWidth!="auto"){if(!isNaN(g.inputWidth)){a.style.width=parseInt(g.inputWidth)+"px"}}c._uploader=new dhtmlXFileUploader(a,g.swfPath||"",g.swfUrl||"",g.mode||null,g.swfLogs,g.slXap||"",g.slUrl||"",g.slLogs||"",g.multiple);c._uploader.setURL(g.url||"");c._uploader.callEvent=c.callEvent;if(typeof(g.autoStart)!="undefined"){c._uploader.setAutoStart(g.autoStart)}if(typeof(g.autoRemove)!="undefined"){c._uploader.setAutoRemove(g.autoRemove)}if(typeof(g.titleScreen)!="undefined"){c._uploader.enableTitleScreen(g.titleScreen)}if(typeof(g.titleText)!="undefined"){c._uploader.setTitleText(g.titleText)}if(g.hidden==true){this.hide(c)}if(g.disabled==true){this.userDisable(c)}if(!(g.inputHeight=="auto"||parseInt(g.inputHeight)==NaN)){c._uploader.p_files.style.height=parseInt(g.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(m){var h=m._uploader.getData();var l={};var g=0;for(var c in h){l[m._idd+"_r_"+g]=h[c].realName;l[m._idd+"_s_"+g]=h[c].serverName;g++}l[m._idd+"_count"]=g;return l},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(p,swfPath,swfUrl,mode,swfLogs,slXap,slUrl,slLogs,multiple){var that=this;if(typeof(mode)=="string"&&typeof(this[mode])=="function"){this.engine=mode}else{this.engine="html4";var k=null;if(typeof(window.FormData)!="undefined"&&typeof(window.XMLHttpRequest)!="undefined"){k=new XMLHttpRequest();if(typeof(k.upload)=="undefined"){k=null}}if(k!=null){this.engine="html5"}else{if(typeof(window.swfobject)!="undefined"||k===false){var k=swfobject.getFlashPlayerVersion();if(k.major>=10){this.engine="flash"}}else{this._sl_v=this.getSLVersion();if(this._sl_v){this.engine="sl"}}}k=null}if(typeof(p)=="string"){p=document.getElementById(p)}this._upload_mp=(typeof(multiple)!="undefined"?multiple==true:true);this._upload_dnd=true;this._swf_file_url=swfPath||"";this._swf_upolad_url=swfUrl||"";this._swf_logs=swfLogs;this._sl_xap=slXap;this._sl_upload_url=slUrl;this._sl_logs=slLogs;this.p=document.createElement("DIV");this.p.className+=" dhx_file_uploader";p.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(!that._enabled){return}if(!that._uploading){that._uploadStart()}},tooltip:"Upload"},cancel:{onclick:function(){if(!that._enabled){return}that._uploadStop();that._switchButton(false)},tooltip:"Stop"},clear:{onclick:function(){if(!that._enabled){return}that.clear()},tooltip:"Clear list"}};this.buttons={};for(var a in this.b_opts){var k=document.createElement("DIV");k.innerHTML=" ";k.className="dhx_file_uploader_button button_"+a;k.onclick=this.b_opts[a].onclick;if(this.b_opts[a].tooltip){k.title=this.b_opts[a].tooltip}this.p_controls.appendChild(k);this.buttons[a]=k;k=null}this.buttons.cancel.style.display="none"};this._readableSize=function(t){var i=false;var b=["b","Kb","Mb","Gb","Tb","Pb","Eb"];for(var q=0;q<b.length;q++){if(t>1024){t=t/1024}else{if(i===false){i=q}}}if(i===false){i=b.length-1}return Math.round(t*100)/100+" "+b[i]};this._beforeAddFileToList=function(name,size){return(this.callEvent("onBeforeFileAdd",[name,size])===true)};this._addFileToList=function(id,name,size,state,progress){this._checkTitleScreen();var t=document.createElement("DIV");t._idd=id;t.className="dhx_file dhx_file_"+state;t.innerHTML="<div class='dhx_file_param dhx_file_name'> </div><div class='dhx_file_param dhx_file_progress'>"+progress+"%</div><div class='dhx_file_param dhx_file_delete' title='Remove from list'> </div>";this.p_files.appendChild(t);t.childNodes[0].style.width=t.offsetWidth-127+"px";this._items[id]=t;this._updateFileNameSize(id);t.childNodes[2].onclick=function(){if(!that._enabled){return}var id=this.parentNode._idd;that._removeFileFromQueue(id)};this.callEvent("onFileAdd",[name])};this._removeFileFromList=function(id){if(!this._items[id]){return}this._items[id].childNodes[2].onclick=null;this._items[id].parentNode.removeChild(this._items[id]);this._items[id]=null;delete this._items[id];if(this._data[id]){this._data[id]=null;delete this._data[id]}this._checkTitleScreen()};this._updateFileNameSize=function(id){this._items[id].childNodes[0].innerHTML=this._files[id].name+(!isNaN(this._files[id].size)?" ("+this._readableSize(this._files[id].size)+")":" ");this._items[id].childNodes[0].title=this._files[id].name+(!isNaN(this._files[id].size)?" ("+this._readableSize(this._files[id].size)+")":"")};this._updateFileInList=function(id,state,progress){if(!this._items[id]){return}this._items[id].className="dhx_file dhx_file_"+state;this._updateProgress(id,state,progress);this._updateFileNameSize(id)};this._updateProgress=function(id,state,progress){if(state=="uploading"&&progress<100&&this._progress_type=="loader"){this._items[id].childNodes[1].className="dhx_file_param dhx_file_uploading";this._items[id].childNodes[1].innerHTML=" "}else{this._items[id].childNodes[1].className="dhx_file_param dhx_file_progress";this._items[id].childNodes[1].innerHTML=progress+"%"}this._updateFileNameSize(id)};this._removeFilesByState=function(state){for(var a in this._files){if(state===true||this._files[a].state==state){this._removeFileFromQueue(a)}}};this._switchButton=function(state){if(state==true){this.buttons.upload.style.display="none";this.buttons.cancel.style.display=""}else{var t=this._uploaded_count;this.buttons.upload.style.display="";this.buttons.cancel.style.display="none";this._uploaded_count=0;if(t>0){this.callEvent("onUploadComplete",[t])}}};this._uploadStart=function(){this._switchButton(true);if(!this._uploading){for(var a in this._files){if(this._files[a].state=="fail"){this._files[a].state="added";this._updateFileInList(a,"added",0)}}}this._uploading=true;var t=false;for(var a in this._files){if(!t&&[this._files[a].state]=="added"){t=true;this._files[a].state="uploading";this._updateFileInList(a,"uploading",0);this._doUploadFile(a)}}if(!t){this._uploading=false;this._switchButton(false)}};this._onUploadSuccess=function(id,serverName,r,extra){if(typeof(r)!="undefined"&&this.engine=="flash"){dhx4.temp=null;try{eval("dhx4.temp="+r.data)}catch(e){dhx4.temp=null}var t=dhx4.temp;dhx4.temp=null;if(t!=null&&t.state==true&&t.name!=null){serverName=t.name;if(t.extra!=null){extra=t.extra}}else{this._onUploadFail(id,(t!=null&&t.extra!=null?t.extra:null));return}}this._uploaded_count++;this._data[id]={realName:this._files[id].name,serverName:serverName};this._files[id].state="uploaded";this._updateFileInList(id,"uploaded",100);this.callEvent("onUploadFile",[this._files[id].name,serverName,extra]);if(this._autoRemove){this._removeFileFromQueue(id)}if(this._uploading){this._uploadStart()}};this._onUploadFail=function(id,extra){this._files[id].state="fail";this._updateFileInList(id,"fail",0);this.callEvent("onUploadFail",[this._files[id].name,extra]);if(this._uploading){this._uploadStart()}};this._onUploadAbort=function(id){this._uploading=false;this._files[id].state="added";this._updateFileInList(id,"added",0);this.callEvent("onUploadCancel",[this._files[id].name])};this._checkTitleScreen=function(){var k=0;for(var a in this._files){k++}if(k==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((k>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(state){this._autoStart=(state==true)};this.setAutoRemove=function(state){this._autoRemove=(state==true)};this.enableTitleScreen=function(state){this._titleScreen=(state==true);this._checkTitleScreen()};this.setTitleText=function(text){this._titleText=text;if(this.p.className.search("dhx_file_uploader_title")>=0){this.buttons.info.innerHTML=this._titleText}};this.setURL=function(url){this._url=url};this.setSWFURL=function(url){this._swf_upolad_url=url};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 t=0;for(var a in this._files){if(this._files[a].state!="uploaded"){return -1}t=1}return t};this.getData=function(){return this._data};this.clear=function(){if(this.callEvent("onBeforeClear",[])!==true){return}if(this._uploading){that._uploadStop()}that._switchButton(false);that._removeFilesByState(true);this.callEvent("onClear",[])};this.unload=function(){this._removeFilesByState(true);this._data=null;this._files=null;this._items=null;this._unloadEngine();for(var a in this.buttons){this.buttons[a].onclick=null;this.buttons[a].parentNode.removeChild(this.buttons[a]);this.buttons[a]=null;delete this.buttons[a]}this.buttons=null;for(var a in this.b_opts){this.b_opts[a].onclick=null;this.b_opts[a]=null;delete this.b_opts[a]}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 a in this){this[a]=null}that=a=null};var e=new this[this.engine]();for(var a in e){this[a]=e[a];e[a]=null}a=e=p=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(id){var that=this;if(!this._loader){this._loader=new XMLHttpRequest();this._loader.upload.onprogress=function(e){if(that._files[this._idd].state=="uploading"){that._updateFileInList(this._idd,"uploading",Math.round(e.loaded*100/e.total))}};this._loader.onload=function(e){dhx4.temp=null;try{eval("dhx4.temp="+this.responseText)}catch(e){}var r=dhx4.temp;dhx4.temp=null;if(typeof(r)=="object"&&r!=null&&typeof(r.state)!="undefined"&&r.state==true){that._onUploadSuccess(this.upload._idd,r.name,null,r.extra);r=null}else{that._onUploadFail(this.upload._idd,(r!=null&&r.extra!=null?r.extra:null))}};this._loader.onerror=function(e){that._onUploadFail(this.upload._idd)};this._loader.onabort=function(e){that._onUploadAbort(this.upload._idd)}}this._loader.upload._idd=id;var form=new FormData();form.append("file",this._files[id].file);this._loader.open("POST",this._url+(String(this._url).indexOf("?")<0?"?":"&")+"mode=html5&dhxr"+new Date().getTime(),true);this._loader.setRequestHeader("X-Requested-With","XMLHttpRequest");this._loader.send(form)},_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(h){if(!this._files[h]){return}var c=this._files[h].name;var g=(this._data!=null&&this._data[h]!=null?this._data[h].serverName:null);if(this.callEvent("onBeforeFileRemove",[c,g])!==true){return}var a=false;if(this._uploading&&h==this._loader.upload._idd&&this._files[h].state=="uploading"){this._uploadStop();a=true}this._files[h].file=null;this._files[h].name=null;this._files[h].size=null;this._files[h].state=null;this._files[h]=null;delete this._files[h];this._removeFileFromList(h);this.callEvent("onFileRemove",[c,g]);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 g=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='"+g+"'><input type='file' name='file' class='dhx_file_input'></form>";this.k.appendChild(c);c.firstChild.lastChild._idd=g;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){dhx4.temp=null;try{eval("dhx4.temp="+this.fr.contentWindow.document.body.innerHTML)}catch(e){}var r=dhx4.temp;dhx4.temp=null;if(typeof(r)=="object"&&r!=null){if(typeof(r.state)!="undefined"){if(r.state=="cancelled"){this._onUploadAbort(this.fr._idd);r=null;return}else{if(r.state==true){if(typeof(r.size)!="undefined"&&!isNaN(r.size)){this._files[this.fr._idd].size=r.size}this._onUploadSuccess(this.fr._idd,r.name,null,r.extra);r=null;return}}}}this._onUploadFail(this.fr._idd,(r!=null&&r.extra!=null?r.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(g){var a=this._files[g].name;var c=(this._data!=null&&this._data[g]!=null?this._data[g].serverName:null);if(this.callEvent("onBeforeFileRemove",[a,c])!==true){return}this._files[g].input.onchange=null;this._files[g].form.removeChild(this._files[g].input);this._files[g].node.removeChild(this._files[g].form);this._files[g].node.parentNode.removeChild(this._files[g].node);this._files[g].input=null;this._files[g].name=null;this._files[g].form=null;this._files[g].node=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",[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&dhxr"+new Date().getTime()},_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.dhtmlXFileUploaderSWFObjects){window.dhtmlXFileUploaderSWFObjects={items:{},callEvent:function(l,g,h){return window.dhtmlXFileUploaderSWFObjects.items[l].uploader[g].apply(window.dhtmlXFileUploaderSWFObjects.items[l].uploader,h)}}}var c=this;this._swf_obj_id="dhtmlXFileUploaderSWFObject_"+window.dhx4.newId();this._swf_file_url=this._swf_file_url+(this._swf_file_url.indexOf("?")>=0?"&":"?")+"dhxr"+new Date().getTime();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.dhtmlXFileUploaderSWFObjects.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(h,c,g){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[h]={name:c,size:g,state:"added"};this._addFileToList(h,c,g,"added",0);if(this._autoStart&&!this._uploading){this._uploadStart(true)}},_removeFileFromQueue:function(h){if(!this._files[h]){return}var c=this._files[h].name;var g=(this._data!=null&&this._data[h]!=null?this._data[h].serverName:null);if(this.callEvent("onBeforeFileRemove",[c,g])!==true){return}var a=false;if(this._uploading&&this._files[h].state=="uploading"){this._uploadStop();a=true}swfobject.getObjectById(this._swf_obj_id).removeFileById(h);this._files[h].name=null;this._files[h].size=null;this._files[h].state=null;this._files[h]=null;delete this._files[h];this._removeFileFromList(h);this.callEvent("onFileRemove",[c,g]);if(a){this._uploadStart()}},_doUploadFile:function(a){swfobject.getObjectById(this._swf_obj_id).upload(a,this._swf_upolad_url)},_uploadStop:function(g){for(var c in this._files){if(this._files[c].state=="uploading"){swfobject.getObjectById(this._swf_obj_id).uploadStop(c)}}},_unloadEngine:function(){if(window.dhtmlXFileUploaderSWFObjects.items[this._swf_obj_id]){window.dhtmlXFileUploaderSWFObjects.items[this._swf_obj_id].id=null;window.dhtmlXFileUploaderSWFObjects.items[this._swf_obj_id].uploader=null;window.dhtmlXFileUploaderSWFObjects.items[this._swf_obj_id]=null;delete window.dhtmlXFileUploaderSWFObjects.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(g,a,c){window.dhtmlXFileUploaderSLObjects.items[g].uploader[a].apply(window.dhtmlXFileUploaderSLObjects.items[g].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(g,a,c){this._files[g]={name:a,size:c,state:"added"};this._addFileToList(g,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(a){document.getElementById(this._sl_obj_id).Content.a.upload(a,this._sl_upload_url,"&mode=sl&dhxr"+new Date().getTime())},_uploadStop:function(g){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 l=4,h=0;while(c.isVersionSupported([l,h].join("."))){a=[l,h];if(++h>9){l++;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(g,a,m,h){var c=null;if(g instanceof Array){c=g[1];g=g[0]}var l=null;if(g!=null){var l=this._getParentForm(g,c);if(l!=null){if(l.item._list==null){if(!a.listParent){a.listParent=l.item._idd}l.form._addItem("list",l.item._idd,[a],null,l.item._idd,m,h)}else{l.item._list[0].addItem(null,a,m,h)}l.form=l.item=null;l=null;this._autoCheck();return}}this._prepareItem(a,m,h);this._autoCheck()};dhtmlXForm.prototype.removeItem=function(c,a){this._removeItem(c,a)};dhtmlXForm.prototype.removeColumn=function(n,m,h,g){var r=null;if(n instanceof Array){r=n[1];n=n[0]}if(n!=null){var l=this._getParentForm(n,r);if(l!=null){if(l.item._list!=null&&l.item._list[0]!=null){l.item._list[0].removeColumn(null,m,h,g)}l.form=l.item=null;l=null}return}m=Math.min(Math.max(m,0),this.cont.childNodes.length-1);if(this.cont.childNodes.length==1){if(h==true){this._removeItemsInColumn(this.cont.childNodes[m])}}else{if(h==true){this._removeItemsInColumn(this.cont.childNodes[m])}else{if(!g){var a=m-1;if(a<0){a=m+1}}else{var a=m+1;if(a>this.cont.childNodes.length-1){a=m-1}}while(this.cont.childNodes[m].childNodes.length>0){this.cont.childNodes[a].appendChild(this.cont.childNodes[m].childNodes[0])}}var o=[];for(var c=0;c<this.base.length;c++){if(this.cont.childNodes[m]!=this.base[c]){o.push(this.base[c])}}this.base=o;this.cont.removeChild(this.cont.childNodes[m]);this.b_index--;o=null}};dhtmlXForm.prototype.getColumnNode=function(g,c){var h=null;var a=null;if(g instanceof Array){a=g[1];g=g[0]}if(g!=null){var l=this._getParentForm(g,a);if(l!=null){if(l.item._list!=null&&l.item._list[0]!=null&&h==null){h=l.item._list[0].getColumnNode(null,c)}l.form=l.item=null;l=null}return h}if(c<0||c>this.cont.childNodes.length-1){return null}return this.cont.childNodes[c]};dhtmlXForm.prototype._removeItemsInColumn=function(h){var a=[];for(var g=0;g<h.childNodes.length;g++){var c=h.childNodes[g];if(c._idd!=null&&c._type!=null){a.push([c._idd,(c._type=="ra"?c._value:null)])}c=null}for(var g=0;g<a.length;g++){this.removeItem(a[g][0],a[g][1])}};dhtmlXForm.prototype._getParentForm=function(m,l){if(this.itemPull[this.idPrefix+m]!=null){return{form:this,item:this.itemPull[this.idPrefix+m]}}for(var c in this.itemPull){if(this.itemPull[c]._type=="ra"&&this.itemPull[c]._group==m&&this.itemPull[c]._value==l){return{form:this,item:this.itemPull[c]}}}var h=null;for(var c in this.itemPull){if(!h&&this.itemPull[c]._list!=null){for(var g=0;g<this.itemPull[c]._list.length;g++){if(!h){h=this.itemPull[c]._list[g]._getParentForm(m,l)}}}}return h};(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(o,m,l){if(typeof(l)=="undefined"){l=m}else{o=[o,m]}var g=this._getItemNode(o);if(!g){return}l=window.dhx4.s2b(l);g._required=(l==true);if(g._required){if(!g._validate){g._validate=[]}var c=false;for(var h=0;h<g._validate.length;h++){c=(g._validate[h]=="NotEmpty"||c)}if(!c){g._validate.push("NotEmpty")}var n=g.childNodes[g._ll?0:1].childNodes[0];if(!(n.lastChild&&n.lastChild.className&&n.lastChild.className.search(/required/)>=0)){var a=document.createElement("SPAN");a.className="dhxform_item_required";a.innerHTML="*";n.appendChild(a);a=n=null}}else{if(g._validate!=null){var c=g._validate;g._validate=[];for(var h=0;h<c.length;h++){if(c[h]!="NotEmpty"){g._validate.push(c[h])}}if(g._validate.length==0){g._validate=null}}var n=g.childNodes[g._ll?0:1].childNodes[0];if(n.lastChild&&n.lastChild.className&&n.lastChild.className.search(/required/)>=0){n.removeChild(n.lastChild);n=null}}this._resetValidateCss(g);g=null};dhtmlXForm.prototype.setNote=function(l,g,a){if(typeof(a)=="undefined"){a=g}else{l=[l,g]}var c=this._getItemNode(l);if(!c){return}var h=this._getNoteNode(c);if(!h){if(!a.width){a.width=c.childNodes[c._ll?1:0].childNodes[0].offsetWidth}h=document.createElement("DIV");h.className="dhxform_note";if({ch:1,ra:1}[c._type]){c.childNodes[c._ll?1:0].insertBefore(h,c.childNodes[c._ll?1:0].lastChild)}else{c.childNodes[c._ll?1:0].appendChild(h)}}h.innerHTML=a.text;if(a.width!=null){h.style.width=a.width+"px";h._w=a.width}h=null};dhtmlXForm.prototype.clearNote=function(h,c){if(typeof(c)!="undefined"){h=[h,c]}var a=this._getItemNode(h);if(!a){return}var g=this._getNoteNode(a);if(g!=null){g.parentNode.removeChild(g);g=null}};dhtmlXForm.prototype._getNoteNode=function(a){var g=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){g=a.childNodes[a._ll?1:0].childNodes[c]}}a=null;return g};dhtmlXForm.prototype.setValidation=function(m,h,l){if(typeof(note)=="undefined"){l=h}else{m=[m,h]}var c=this._getItemNode(m);if(!c){return}if(c._validate!=null){for(var g=0;g<c._validate.length;g++){c._validate[g]=null}}c._validate=[];if(typeof(l)=="function"||typeof(window[l])=="function"){c._validate=[l]}else{c._validate=String(l).split(this.separator)}if(c._required){var a=false;for(var g=0;g<c._validate.length;g++){a=(c._validate[g]=="NotEmpty"||a)}if(!a){c._validate.push("NotEmpty")}}c=null};dhtmlXForm.prototype.clearValidation=function(h,g){if(typeof(g)!="undefined"){h=[h,g]}var a=this._getItemNode(h);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,m){var c=this.getItemType(a);if(!{select:1,multiselect:1,combo:1}[c]){return}if(c=="select"||c=="multiselect"){var h=this.getOptions(a);while(h.length>0){h.remove(0)}h.length=0;h=null;if(typeof(m)=="string"){this.doWithItem(a,"doLoadOptsConnector",m)}else{if(m instanceof Array){this.doWithItem(a,"doLoadOpts",{options:m})}}}if(c=="combo"){var n=this.getCombo(a);n.clearAll();n.setComboValue("");if(typeof(m)=="string"){this.doWithItem(a,"doLoadOptsConnector",m)}else{if(m instanceof Array){var g=null;for(var l=0;l<m.length;l++){if(window.dhx4.s2b(m[l].selected)){g=m[l].value}}n.addOption(m);if(g!=null){this.setItemValue(a,g)}n=null}}}};dhtmlXForm.prototype.setTooltip=function(m,l,h){if(typeof(h)=="undefined"){h=l}else{m=[m,l]}var c=this._getItemNode(m);if(!c){return}var a=null;if(c.childNodes.length==1){a=c.childNodes[0]}else{for(var g=0;g<c.childNodes.length;g++){if(c.childNodes[g].className!=null&&c.childNodes[g].className.search("dhxform_label")>=0){a=c.childNodes[g]}}}if(a!=null){if(h==null||h.length==0){a.removeAttribute("title")}else{a.title=h}}a=null};function dhtmlXAccordion(l,n){var h=this;var g=window.dhx4.transDetect();this.conf={skin:(n||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxacc")||"dhx_skyblue"),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,base_w:null,fs_mode:false,fs_tm:null,fs_base_ofs:{w:2,h:2}};this.conf.tr={prop:g.transProp,ev:g.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 m=null;if(typeof(l)=="object"&&!l.tagName){m={};for(var c in l){m[c]=l[c];l[c]=null}l=m.parent;m.parent=null}if(l==document.body){document.documentElement.className+=" dhxacc_fullscreen";document.body.className+=" dhxacc_fullscreen";this.conf.fs_mode=true;this.base=document.createElement("DIV");this.base.className="dhxacc_base_"+this.conf.skin;this.base.style.position="absolute";this.base.style.left=this.conf.fs_base_ofs.w+"px";this.base.style.top=this.conf.fs_base_ofs.h+"px";document.body.appendChild(this.base)}else{this.base=(typeof(l)=="string"?document.getElementById(l):l);l=null;this.base.className+=" dhxacc_base_"+this.conf.skin;while(this.base.childNodes.length>0){this.base.removeChild(this.base.lastChild)}}if(this.base._ofs!=null){for(var o in this.ofs.base){if(this.base._ofs[o]!=null){for(var c in this.base._ofs[o]){this.ofs.base[o][c]=this.base._ofs[o][c]}}}}this._applyOffsets=function(){for(var v in this.ofs.def){var s=this.ofs.def[v];var u=(this.ofs.skin[this.conf.skin]!=null&&this.ofs.skin[this.conf.skin][v]!=null?this.ofs.skin[this.conf.skin][v]:null);var r=(this.base._ofs!=null?this.base._ofs[v]:null);for(var q in s){if(u!=null&&u[q]!=null){this.ofs[v][q]=u[q]}else{if(r!=null&&r[q]!=null){this.ofs[v][q]=r[q]}else{this.ofs[v][q]=s[q]}}}}};this._applyOffsets();this.t={};this.addItem=function(x,w,r,q,v){if(x==null){x="a"+window.dhx4.newId()}while(this.t[x]!=null){x="a"+window.dhx4.newId()}var a=new dhtmlXAccordionCell(x,this);a.conf.skin=this.conf.skin;a.setText(w);if(v!=null){a.setIcon(v)}a.cell._accId=x;a.cell.childNodes[a.conf.idx.hdr].onselectstart=function(y){y=y||event;if(y.preventDefault){y.preventDefault()}else{y.returnValue=false}return false};a.cell.childNodes[a.conf.idx.hdr].onclick=function(A){A=A||event;if(A.preventDefault){A.preventDefault()}else{A.returnValue=false}if(h._dnd!=null&&h._dnd.ofs==true){return}var y=(A.target||A.srcElement);var C=null;while(y._accId!=this&&C==null){if(y._accId!=null){C=y._accId}else{y=y.parentNode}}if(C!=null){h._hdrClick(C)}};this.t[x]={cell:a};this.conf.total_count++;if(this.conf.multi_mode){if(typeof(r)=="undefined"){r=true}this.base.appendChild(a.cell);a.conf.opened=(r==true);if(typeof(q)=="undefined"||q==null||q=="*"){if(q=="*"){a.conf.h_auto=true}q=this.conf.def_height}else{q=Math.max(parseInt(q),30)}a._setSize(this.ofs.m.left,0,this.conf.base_w||this._getAvailItemWidth(),a.conf.opened?q:a._getHdrHeight());a.cell.style.marginTop=(a.cell==this.base.firstChild?this.ofs.m.first:this.ofs.m.between)+"px";if(r!=true){a.conf.size.h=q;a._adjustCell();a.cell.className+=" dhx_cell_closed"}this._adjustOpened();if(this._dnd!=null){this._dndAttachEvent(x)}}else{r=(this.conf.last_opened==null?true:window.dhx4.s2b(r));var u=this._updateCellsHeight();if(this.conf.last_opened!=null){if(r){this._closeItem(this.conf.last_opened,false)}else{var s=this.t[this.conf.last_opened].cell;s._setSize(s.conf.size.x,s.conf.size.y,s.conf.size.w,u);s=null}}this.base.appendChild(a.cell);a.conf.opened=r;a.cell.style.marginTop=String(a.cell==this.base.firstChild?this.ofs.s.first:this.ofs.s.between)+"px";a._setSize(this.ofs.s.left,0,this.conf.base_w||this._getAvailItemWidth(),r?u:a._getHdrHeight());if(r){this.conf.last_opened=x}else{a.conf.size.h=u;a._adjustCell();a.cell.className+=" dhx_cell_closed"}}a=null;return this.t[x].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,q){this.conf.multi_mode=true;if(!isNaN(q)){this.conf.def_height=q}if(a=="auto"||a=="scroll"){this.base.style.overflowX="hidden";this.base.style.overflowY=a}else{this.base.style.overflow="visible"}};this.forEachItem=function(r){for(var q in this.t){if(typeof(r)=="function"){r.apply(this,[this.t[q].cell])}else{if(typeof(r)=="string"&&typeof(window[r])=="function"){window[r].apply(this,[this.t[q].cell])}}}};this._openItem=function(q,a){if(typeof(a)=="undefined"){a=true}if(this.t[q].cell.conf.opened==false){if(this.conf.multi_mode){this.t[q].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[q].cell._open(false);this.conf.last_opened=q}else{this.conf.on_active_id=q;this.t[q].cell._open(a);if(this.conf.last_opened!=null){this.t[this.conf.last_opened].cell._close(a)}this.conf.last_opened=q}}}};this._closeItem=function(q,a){if(typeof(a)=="undefined"){a=true}if(this.t[q].cell.conf.opened==true){this.t[q].cell._close(a);this.conf.last_opened=null}};this._adjustOpened=function(){if(this.conf.multi_mode==true){if(this._openCache==null){var u=this._getDynData();for(var r in u){this.t[r].cell.conf.size.h=u[r];this.t[r].cell.cell.style.height=u[r]+"px"}}else{var v=false;for(var r in this._openCache){v=(v||this._openCache[r])}if(v==true){return}this._openCache=this._openId=null}var q=this._getAvailItemWidth();for(var r in this.t){var s=true;if(q==this.t[r].cell.conf.size.w&&(this._openMode=="close"||this.t[r].cell.conf.opened==false)){s=false}if(s){this.t[r].cell._setWidth(q)}}this._openMode=null}else{if(this.conf.last_opened!=null){var w=this.conf.last_opened;this.t[w].cell._setSize(this.t[w].cell.conf.size.x,this.t[w].cell.conf.size.y,this.t[w].cell.conf.size.w,this.t[w].cell.conf.size.h)}}};this._getDynData=function(E,D){if(typeof(E)=="undefined"||E==null){E={}}if(typeof(D)=="undefined"||D==null){D={}}var x={};var C=0;var w=0;var u=0;for(var r=0;r<this.base.childNodes.length;r++){var s=this.base.childNodes[r]._accId;var H=this.t[s].cell;if(H.conf.visible==true){var y=this.ofs.m[u==0?"first":"between"];if(E[s]==true||D[s]==true||(H.conf.opened==true&&H.conf.h_auto==true)){if(D[s]==true){var A=H._getHdrHeight();x[s]=A;w+=A+y}else{if(H.conf.h_auto==true){x[s]=true;w+=y;C++}else{if(E[s]==true){x[s]=H.conf.size.h;w+=H.conf.size.h+y}}}}else{w+=H.cell.offsetHeight+y}u++}H=null}if(C>0){var v=this.base.offsetHeight-w;var w=Math.floor(v/C);for(var F in x){if(x[F]==true){if(C>1){v-=w}else{w=v}x[F]=w;C--}}}return x};this._adjustBase=function(){if(this.conf.fs_mode){this.base.style.width=document.body.offsetWidth-this.conf.fs_base_ofs.w*2+"px";this.base.style.height=document.body.offsetHeight-this.conf.fs_base_ofs.h*2+"px"}};this.setSizes=function(){this._adjustBase();if(this.conf.multi_mode==true){this._adjustOpened()}else{this.conf.base_w=null;var r=this._updateCellsHeight();for(var q in this.t){this.t[q].cell._setSize(this.ofs.s.left,0,this.conf.base_w||this._getAvailItemWidth(),this.t[q].cell.conf.opened?r:this.t[q].cell._getHdrHeight());if(!this.t[q].cell.conf.opened){this.t[q].cell.conf.size.h=r;this.t[q].cell._adjustCell()}}this.conf.size_changed=true}};this.setSkin=function(r){this.base.className=String(this.base.className).replace(new RegExp("\\s{1,}dhxacc_base_"+this.conf.skin+"\\s{0,}$")," dhxacc_base_"+r);this.conf.skin=r;for(var q in this.t){this.t[q].cell.conf.cells_cont=null;this.t[q].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 q=this.ofs[(this.conf.multi_mode?"m":"s")];var a=Math.max(this.base.clientWidth-q.left-q.right,10);this.conf.base_w=a;q=null;return a};this._updateCellsHeight=function(){if(this.conf.multi_mode==true){return}var s=this.conf.total_count-this.conf.hiden_count;var u=this.base.offsetHeight-this.ofs.s.last;if(s==0){return u}var w=false;for(var v=0;v<this.base.childNodes.length;v++){if(w==false){var x=this.base.childNodes[v]._accId;if(this.t[x].cell.conf.visible){u-=this.t[x].cell._getHdrHeight()*(s-1);w=true}}}u-=(s-1)*this.ofs.s.between+this.ofs.s.first;for(var r in this.t){if(this.t[r].cell.conf.size!=null){this.t[r].cell.conf.size.h=u;this.t[r].cell._adjustCell()}}return u};this._updateCellsMargin=function(){var a=0;for(var r=0;r<this.base.childNodes.length;r++){var s=this.base.childNodes[r]._accId;if(this.t[s].cell.conf.visible){this.t[s].cell.cell.style.marginTop=String(this.ofs[this.conf.multi_mode?"m":"s"][a++==0?"first":"between"])+"px"}}};this._hdrClick=function(q){if(!this.conf.multi_mode&&this.t[q].cell.conf.opened){return}var a=this.t[q].cell.conf.opened;if(this.callEvent("onBeforeActive",[q,(a?false:true)])!==true){return}this.conf.on_active_click=true;this[a?"_closeItem":"_openItem"](q);if(this.conf.multi_mode&&this.conf.tr.prop==false){this._adjustOpened()}};this.unload=function(){this.conf.unloading=true;for(var q in this.t){this.removeItem(q)}this.t=null;if(typeof(this._unloadDND)=="function"){this._unloadDND()}if(this.conf.fs_mode){if(this.conf.fs_tm){window.clearTimeout(this.conf.fs_tm)}if(window.addEventListener){window.removeEventListener("resize",this._doOnResizeStart,false)}else{window.detachEvent("onresize",this._doOnResizeStart)}this._doOnResizeStart=null;this._doOnResizeEnd=null;this.conf.fs_tm=null}if(this.dhxWins){this.dhxWins.unload();this.dhxWins=null}window.dhx4._eventable(this,"clear");window.dhx4._enableDataLoading(this,null,null,null,"clear");this.base.className=String(this.base.className).replace(new RegExp("\\s{1,}dhxacc_base_"+this.conf.skin+"\\s{0,}$"),"");this.base=null;this.ofs=this.conf=null;for(var q in this){this[q]=null}h=null};this.setOffset=function(a){this.ofs.s.between=a;this.ofs.m.between=a;this._updateCellsMargin();this.setSizes()};this._initObj=function(r){if(r.skin!=null){this.setSkin(r.skin)}if(window.dhx4.s2b(r.multi_mode)){this.enableMultiMode()}if(r.icons_path!=null){this.setIconsPath(r.icons_path)}if(r.icon_path!=null){this.setIconsPath(r.icon_path)}if(r.items!=null){for(var a=0;a<r.items.length;a++){this.addItem(r.items[a].id,r.items[a].text,r.items[a].open,r.items[a].height,r.items[a].icon||r.items[a].img)}}if(window.dhx4.s2b(r.dnd)==true&&typeof(this.enableDND)=="function"){this.enableDND()}};this._xmlToObj=function(v){var s={items:[]};var a=v.getElementsByTagName("accordion")[0];if(a.getAttribute("skin")!=null){s.skin=a.getAttribute("skin")}if(a.getAttribute("mode")=="multi"){s.multi_mode=true}if(a.getAttribute("multiMode")!=null){s.multi_mode=window.dhx4.s2b(a.getAttribute("multiMode"))}if(a.getAttribute("iconsPath")!=null){s.icons_path=a.getAttribute("iconsPath")}for(var u=0;u<a.childNodes.length;u++){var w=a.childNodes[u];if(typeof(w.tagName)!="undefined"&&String(w.tagName).toLowerCase()=="cell"){var r={};if(w.getAttribute("id")!=null){r.id=w.getAttribute("id")}if(w.getAttribute("icon")!=null){r.icon=w.getAttribute("icon")}if(w.getAttribute("height")!=null){r.height=w.getAttribute("height")}if(w.getAttribute("open")!=null){r.open=window.dhx4.s2b(w.getAttribute("open"))}r.text=w.firstChild.nodeValue;s.items.push(r)}w=null}return s};window.dhx4._enableDataLoading(this,"_initObj","_xmlToObj","accordion",{struct:true});window.dhx4._eventable(this);this._callMainEvent=function(q,a){return this.callEvent(q,a)};this.attachEvent("onActive",function(a){if(this.t[a].cell.dataObj!=null&&this.t[a].cell.dataType=="editor"){this.t[a].cell.dataObj._prepareContent(true)}if(this.t[a].cell.conf.opened==true){this.t[a].cell._adjustProgress()}});if(this.conf.fs_mode){this._adjustBase();this.conf.fs_tm=null;this._doOnResizeStart=function(){if(h.conf.fs_tm){window.clearTimeout(h.conf.fs_tm)}h.conf.fs_tm=window.setTimeout(h._doOnResizeEnd,200)};this._doOnResizeEnd=function(){h.setSizes()};if(window.addEventListener){window.addEventListener("resize",this._doOnResizeStart,false)}else{window.attachEvent("onresize",this._doOnResizeStart)}}if(typeof(window.dhtmlXWindows)=="function"){this.dhxWins=new dhtmlXWindows();this.dhxWins.setSkin(this.conf.skin)}if(m!=null){this._initObj(m);m=null}return this}function dhtmlXAccordionCell(h,g){dhtmlXCellObject.apply(this,[h,"_acc"]);this.acc=g;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.attachEvent("_onContentLoaded",function(){this.acc._callMainEvent("onContentLoaded",arguments)});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(){this.acc._openItem(this._idd)};this.close=function(){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(){return this.cell.childNodes[this.conf.idx.hdr].offsetHeight};dhtmlXAccordionCell.prototype.setText=function(a){this.conf.text=a;this.cell.childNodes[this.conf.idx.hdr].firstChild.innerHTML="<span>"+a+"</span>"};dhtmlXAccordionCell.prototype.getText=function(){return this.conf.text};dhtmlXAccordionCell.prototype.setIcon=function(g){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+g;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 l={};if(this.acc.conf.multi_mode){var h={};h[this._idd]=true;l=this.acc._getDynData(h);this.acc._openId=this._idd;this.acc._openCache={};this.acc._openMode="open"}else{l[this._idd]=this.conf.size.h}for(var g in l){if(this.acc._openCache!=null){this.acc._openCache[g]=true}var m=this.acc.t[g].cell;m.cell.className=String(m.cell.className).replace(/\s{1,}dhx_cell_closed/gi,"");m.conf.opened=true;m._trInitEv("open",c);m.conf.size.h=l[g];m.cell.style.height=m.conf.size.h+"px";m=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 h={};if(this.acc.conf.multi_mode){var l={};l[this._idd]=true;h=this.acc._getDynData(null,l);this.acc._openId=this._idd;this.acc._openCache={};this.acc._openMode="close"}else{h[this._idd]=this._getHdrHeight()}for(var g in h){var m=this.acc.t[g].cell;if(this.acc._openCache!=null){this.acc._openCache[g]=true}if(g==this._idd){m.cell.className+=" dhx_cell_closed";m.conf.opened=false;m._trInitEv("close",c)}else{m.conf.size.h=h[g];m._adjustCell();m._trInitEv("open",c)}m.cell.style.height=h[g]+"px";m=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.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{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(h,c){for(var g in this.conf.idx){if({hdr:true,pr1:true,pr2:true}[g]!=true){if(c){this.cell.childNodes[this.conf.idx[g]].style[this.conf.tr.prop]=this.conf.tr["op_"+h]}this.cell.childNodes[this.conf.idx[g]].style.opacity=this.conf.tr["op_v_"+h]}}};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,n,l,m){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 g=this.acc.dhxWins.window(this._idd);g.show()}else{if(c==null){c=20}if(n==null){n=20}if(l==null){l=320}if(m==null){m=200}var g=this.acc.dhxWins.createWindow(this._idd,c,n,l,m);g.button("close").hide();g.addUserButton("dock",99,"Dock");g.button("dock").show();g.button("dock").attachEvent("onClick",this._doOnDockClick);g.setText(this.getText());g.attachEvent("onClose",this._doOnDockWinClose)}this.conf.docked=false;this.hide();g._attachFromCell(this);g=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}};dhtmlXAccordion.prototype.enableDND=function(){if(this.conf.multi_mode==false||this._dnd!=null){return}var g=this;this._dnd={tr_count:0,tr_items:{}};this._dndAttachEvent=function(h){var a=this.t[h].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(h){var a=this.t[h].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(h){h=h||event;if(h.preventDefault){h.preventDefault()}var a=(h.target||h.srcElement);while(a!=null&&a.parentNode!=g.base){a=a.parentNode}if(a!=null){g._dndDragStart(h,a)}a=null};this._dndDragStart=function(m,h){if(this._dnd.tr_waiting==true){return}this._dnd.dragObj=h;this._dnd.dy=m.clientY;var a=0;for(var l=0;l<this._dnd.dragObj.parentNode.childNodes.length;l++){this._dnd.dragObj.parentNode.childNodes[l]._ind=l;if(this._dnd.dragObj.parentNode.childNodes[l]==this._dnd.dragObj){this._dnd.dragObj._k0=a;if(l>0){this._dnd.dragObj._k0+=this.ofs.m.between-this.ofs.m.first}a=0}else{a+=this._dnd.dragObj.parentNode.childNodes[l].offsetHeight+parseInt(this._dnd.dragObj.parentNode.childNodes[l].style.marginTop)}}this._dnd.dragObj._k1=a;this._dnd.h=this._dnd.dragObj.offsetHeight;this._dnd.ofs=false};this._dndDoDrag=function(v){if(!this._dnd.dragObj){return}if(this._dnd.tr_waiting==true){return}var n=v.clientY-this._dnd.dy;if(this._dnd.ofs==false&&Math.abs(n)>5){this._dnd.dragObj.className+=" acc_cell_dragged";this._dnd.ofs=true}if(n<0){if(n<-this._dnd.dragObj._k0){n=-this._dnd.dragObj._k0}}else{if(n>this._dnd.dragObj._k1){n=this._dnd.dragObj._k1}}this._dnd.dragObj.style.top=n+"px";var u=v.clientY-this._dnd.dy;var m=0;var h=0;for(var o=this._dnd.dragObj._ind+1;o<=this._dnd.dragObj.parentNode.lastChild._ind;o++){var a=this._dnd.dragObj.parentNode.childNodes[o].offsetHeight;if(u>m+a*2/3){h++}m+=a}var l=this._dnd.dragObj.nextSibling;var o=0;while(l!=null){if(++o<=h&&l!=null){if(!l._ontop){if(l._tm){window.clearTimeout(l._tm)}this._dndAnim(l,false,parseInt(l.style.top||0),-this._dnd.h-this.ofs.m.between);l._ontop=true}}else{if(l._ontop){if(l._tm){window.clearTimeout(l._tm)}this._dndAnim(l,true,parseInt(l.style.top||0),0);l._ontop=false}}l=l.nextSibling}var u=this._dnd.dy-v.clientY;var m=0;var h=0;for(var o=this._dnd.dragObj._ind-1;o>=this._dnd.dragObj.parentNode.firstChild._ind;o--){var a=this._dnd.dragObj.parentNode.childNodes[o].offsetHeight;if(u>m+a*2/3){h++}m+=a}var l=this._dnd.dragObj.previousSibling;var o=0;while(l!=null){if(++o<=h&&l!=null){if(!l._onbottom){if(l._tm){window.clearTimeout(l._tm)}this._dndAnim(l,true,parseInt(l.style.top||0),this._dnd.h+this.ofs.m.between);l._onbottom=true}}else{if(l._onbottom){if(l._tm){window.clearTimeout(l._tm)}this._dndAnim(l,false,parseInt(l.style.top),0);l._onbottom=false}}l=l.previousSibling}};this._dndDragStop=function(r,n){if(n){}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 o=false;for(var m=0;m<this._dnd.dragObj.parentNode.childNodes.length;m++){var l=this._dnd.dragObj.parentNode.childNodes[m];if(l!=this._dnd.dragObj){if(l._tm){window.clearTimeout(l._tm)}l.style.top="0px";if(l._ontop&&((l.nextSibling!=null&&l.nextSibling._ontop!=true)||!l.nextSibling)){o=(l.nextSibling||null)}if(l._onbottom&&((l.previousSibling!=null&&l.previousSibling._onbottom!=true)||!l.previousSibling)){o=l}}l=null}for(var m=0;m<this._dnd.dragObj.parentNode.childNodes.length;m++){this._dnd.dragObj.parentNode.childNodes[m]._ontop=null;this._dnd.dragObj.parentNode.childNodes[m]._onbottom=null}if(o!==false){if(o==null){this._dnd.dragObj.parentNode.appendChild(this._dnd.dragObj)}else{this._dnd.dragObj.parentNode.insertBefore(this._dnd.dragObj,o)}}var u=this._dnd.dragObj._accId;var h=this._dnd.dragObj._ind;var a=h;for(var m=0;m<this._dnd.dragObj.parentNode.childNodes.length;m++){if(this._dnd.dragObj.parentNode.childNodes[m]==this._dnd.dragObj){a=m}}this._dnd.dragObj=null;this._dnd.tr_waiting=false;this._updateCellsMargin();if(h!=a){this.setSizes();this.callEvent("onDrop",[u,h,a])}};this._dndAnim=function(n,a,m,l){if(this.conf.tr.prop!=false){if(!n._dnd_ev){n._dnd_ev=true;n._dnd_tr_prop=this.conf.tr.prop;n.addEventListener(this.conf.tr.ev,this._dndOnTrEnd,false)}if(this._dnd.tr_items[n._accId]!=true){this._dnd.tr_items[n._accId]=true;this._dnd.tr_count++}n.style[this.conf.tr.prop]=this.conf.tr.dnd_top;n.style.top=l+"px";return}var h=false;if(a){m+=5;if(m>=l){m=l;h=true}}else{m-=5;if(m<=l){m=l;h=true}}n.style.top=m+"px";if(n._tm){window.clearTimeout(n._tm)}if(!h){n._tm=window.setTimeout(function(){g._dndAnim(n,a,m,l)},5)}else{n._tm=null}};this._dndOnTrEnd=function(a){if(a.stopPropagation){a.stopPropagation()}if(a.propertyName=="top"){if(g._dnd.tr_items[this._accId]==true){g._dnd.tr_count--;g._dnd.tr_items[this._accId]=false}this.style[this._dnd_tr_prop]="";if(g._dnd.tr_count==0&&g._dnd.tr_waiting==true){g._dndDragStop(null,true)}}};this._dndOnMouseMove=function(a){g._dndDoDrag(a||event)};this._dndOnMouseUp=function(a){g._dndDragStop(a||event)};if(window.addEventListener){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._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(){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)}for(var h in this){if(String(h).indexOf("_dnd")==0&&typeof(this[h])=="function"){this[h]=null}}this._dnd=null;g=null};for(var c in this.t){this._dndAttachEvent(c)}};function dhtmlXLayoutObject(g,r,x){var v=null;if(g!=null&&typeof(g)=="object"&&typeof(g.tagName)=="undefined"&&g._isCell!=true){v={};if(g.autosize!=null){v.autosize=g.autosize}if(g.cells!=null){v.cells=g.cells}if(g.pattern!=null){r=g.pattern}if(g.skin!=null){x=g.skin}if(g.offsets!=null){v.offsets=g.offsets}g=g.parent}if(g==document.body){this.base=g}else{if(typeof(g)=="string"){this.base=document.getElementById(g)}else{if(g._isCell==true){var o=(typeof(v)!="undefined"&&v!=null?v:{});if(o.pattern==null&&r!=null){o.pattern=r}if(o.skin==null&&x!=null){o.skin=x}var m=g.attachLayout(o);return m}this.base=g}}if(this.base!=document.body){while(this.base.childNodes.length>0){this.base.removeChild(this.base.lastChild)}}this.cdata={};this.conf={skin:(x||window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxlayout")||"dhx_skyblue"),hh:20,progress:false,autosize:"b",nextCell:{a:"b",b:"a"},ofs:{t:0,b:0,l:0,r:0},ofs_nodes:{t:{},b:{}},inited:false,b_size:{w:-1,h:-1}};this.conf.sw=this._detectSW();if(true||this.base._isParentCell!==true){this.base.className+=" dhxlayout_base_"+this.conf.skin}if(this.base==document.body){var h={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=(h[this.conf.skin]!=null?h[this.conf.skin]:h.dhx_skyblue)}if(v!=null&&v.offsets!=null){this.setOffsets(v.offsets)}else{if(this.base._ofs!=null){this.setOffsets(this.base._ofs);this.base._ofs=null;delete this.base._ofs}}this.dataNodes={};var n=this;this._getLayout=function(){return this};this.mainInst=(g._layoutMainInst!=null?g._layoutMainInst:null);this._getMainInst=function(){if(this.mainInst!=null){return this.mainInst._getMainInst()}return this};this._init=function(C){var A=(typeof(C)=="string"?this.tplData[C]:C);this.conf.mode=A.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 y in this.cdata){this.base.appendChild(this.cdata[y].cell);this.cdata[y].conf.init={w:0.5,h:0.5}}if(this.conf.mode!="c"){var q=this._getMainInst();if(q.conf.sep_idx==null){q.conf.sep_idx=1}else{q.conf.sep_idx++}this.sep=new dhtmlXLayoutSepObject(this.conf.mode,q.conf.sep_idx);this.base.appendChild(this.sep.sep);this.sep._getLayout=function(){return n._getLayout()};q=null}if(A.cells!=null){for(var y in A.cells){if(A.cells[y].width!=null){this.cdata[y].conf.init.w=A.cells[y].width}if(A.cells[y].height!=null){this.cdata[y].conf.init.h=A.cells[y].height}if(A.cells[y].name!=null){this.cdata[y].conf.name=A.cells[y].name;this.cdata[y].setText(A.cells[y].name)}if(A.cells[y].fsize!=null){this.cdata[y].conf.fsize=A.cells[y].fsize}}}this.setSizes();for(var y in this.cdata){this.cdata[y].conf.init={}}if(A.cells!=null){for(var y in A.cells){if(A.cells[y].layout!=null){this.cdata[y].dataNested=true;this.cdata[y]._layoutMainInst=this;this.cdata[y].attachLayout({pattern:A.cells[y].layout});this.cdata[y]._layoutMainInst=null}}}};this.setSizes=function(O,D,N,F){var q=(this.conf.inited==true&&this._getMainInst()==this&&this.checkEvent("onResizeFinish")==true?{}:false);var T=this.conf.ofs.t;for(var V in this.conf.ofs_nodes.t){T+=(this.conf.ofs_nodes.t[V]==true?this.dataNodes[V].offsetHeight:0)}var C=this.conf.ofs.b;for(var V in this.conf.ofs_nodes.b){C+=(this.conf.ofs_nodes.b[V]==true?this.dataNodes[V].offsetHeight:0)}var L=this.conf.ofs.l;var K=this.conf.ofs.r;var y=this.base.offsetWidth;var E=this.base.offsetHeight;if(this.conf.mode=="c"){var I=K;var H=T;var J=y-L-K;var S=E-T-C;this.cdata.a._setSize(I,H,J,S,O,N,F);this.callEvent("_onSetSizes",[]);if(q&&(!(this.conf.b_size.w==y&&this.conf.b_size.h==E))){this._callMainEvent("onResizeFinish",[])}this.conf.b_size={w:y,h:E};return}if(typeof(D)=="undefined"){var M=(this.conf.mode=="v"?"w":"h");D=this.conf.autosize;if(this.cdata.a.conf.collapsed){D="b"}else{if(this.cdata.b.conf.collapsed){D="a"}else{if(O=="a"||O=="b"){D=this.conf.nextCell[O]}}}}else{}if(this.conf.mode=="v"){if(D=="a"){if(this.cdata.b.conf.init.w!=null){var U=Math.round(y*this.cdata.b.conf.init.w-this.conf.sw/2)-K}else{var U=this.cdata.b.conf.size.w}var Q=y-U-K;var P=T;var A=E-T-C;var I=L;var H=P;var J=Q-I-this.conf.sw;var S=A}else{var I=L;var H=T;if(this.cdata.a.conf.init.w!=null){var J=Math.round(y*this.cdata.a.conf.init.w-this.conf.sw/2)-I}else{var J=this.cdata.a.conf.size.w}var S=E-H-C;var Q=I+J+this.conf.sw;var P=H;var U=y-Q-K;var A=S}this.cdata.a._setSize(I,H,J,S,O,N,F);this.cdata.b._setSize(Q,P,U,A,O,N,F);this.sep._setSize(I+J,H,this.conf.sw,S)}else{if(D=="a"){if(this.cdata.b.conf.init.h!=null){var A=Math.round((E-T)*this.cdata.b.conf.init.h-this.conf.sw/2)}else{var A=this.cdata.b.conf.size.h}var Q=L;var P=E-C-A;var U=y-Q-K;var I=Q;var H=T;var J=U;var S=P-H-this.conf.sw}else{var I=L;var H=T;var J=y-I-K;if(this.cdata.a.conf.init.h!=null){var S=Math.round((E-T)*this.cdata.a.conf.init.h-this.conf.sw/2)}else{var S=this.cdata.a.conf.size.h}var Q=I;var P=H+S+this.conf.sw;var U=J;var A=E-P-C}this.cdata.a._setSize(I,H,J,S,O,N,F);this.cdata.b._setSize(Q,P,U,A,O,N,F);this.sep._setSize(I,H+S,J,this.conf.sw)}this.callEvent("_onSetSizes",[]);if(q&&(!(this.conf.b_size.w==y&&this.conf.b_size.h==E))){this._callMainEvent("onResizeFinish",[])}this.conf.b_size={w:y,h:E}};this._getAvailWidth=function(){var C=[];for(var F=0;F<this.conf.as_cells.h.length;F++){var y=this.cells(this.conf.as_cells.h[F]);var D=y.layout;var A=D.conf.autosize;if(y.conf.collapsed){y=D.cdata[D.conf.nextCell[y._idd]];A=D.conf.nextCell[A]}C.push(Math.max(0,y.getWidth()-y._getMinWidth(A)));D=y=null}var E=(C.length>0?Math.min.apply(window,C):0);return this.base.offsetWidth-E};this._getAvailHeight=function(){var D=[];for(var F=0;F<this.conf.as_cells.v.length;F++){var y=this.cells(this.conf.as_cells.v[F]);var C=y.layout;var A=C.conf.autosize;if(y.conf.collapsed){y=C.cdata[C.conf.nextCell[y._idd]];A=C.conf.nextCell[A]}D.push(Math.max(0,y.getHeight()-y._getHdrHeight()-y._getMinHeight(A)));C=y=null}var E=Math.min.apply(window,D);return this.base.offsetHeight-E};this.setSkin=function(a){this.base.className=this.base.className.replace(new RegExp("dhxlayout_dhx_"+this.conf.skin,"gi"),"dhxlayout_dhx_"+a);this.conf.skin=a};this.unload=function(){this.conf.unloading=true;this.mainInst=null;this.parentLayout=null;this._mtbUnload();this.detachHeader();this.detachFooter();window.dhx4._eventable(this,"clear");var A=new RegExp("s{0,}dhxlayout_base_"+this.conf.skin,"gi");this.base.className=this.base.className.replace(A,"");if(this.items!=null){for(var C=0;C<this.items.length;C++){this.items[C]=null}this.items=null}if(this.conf.fs_mode==true){if(window.addEventListener){window.removeEventListener("resize",this._doOnResizeStart,false)}else{window.detachEvent("onresize",this._doOnResizeStart)}}if(this.dhxWins!=null){this.dhxWins.unload();this.dhxWins=null}if(this.sep!=null){this.sep._unload();this.sep=null}for(var y in this.cdata){this.cdata[y]._unload()}this.base=null;for(var y in this){this[y]=null}n=null};this._getWindowMinDimension=function(A){var a=n._getAvailWidth()+7+7;var y=n._getAvailHeight()+7+31;var q={w:Math.max(a,200),h:Math.max(y,140)};A=null;return q};if(this.base==document.body){this.conf.fs_mode=true;this._tmTime=null;this._doOnResizeStart=function(){window.clearTimeout(n._tmTime);n._tmTime=window.setTimeout(n._doOnResizeEnd,200)};this._doOnResizeEnd=function(){n.setSizes()};if(window.addEventListener){window.addEventListener("resize",this._doOnResizeStart,false)}else{window.attachEvent("onresize",this._doOnResizeStart)}}window.dhx4._eventable(this);this._callMainEvent=function(q,a){return this.callEvent(q,a)};this._init(r||"3E");var s=this._availAutoSize[r];if(s!=null){this.conf.pattern=r;this.setAutoSize(s.h[s.h.length-1],s.v[s.v.length-1])}if(typeof(window.dhtmlXWindows)=="function"){this.dhxWins=new dhtmlXWindows();this.dhxWins.setSkin(this.conf.skin)}this.conf.inited=true;if(this==this._getMainInst()){var u=0;this.items=[];this.forEachItem(function(a){n.items.push(a);a.conf.index=u++})}if(this==this._getMainInst()&&v!=null){if(v.autosize!=null){this.setAutoSize.apply(this,v.autosize)}if(v.cells!=null){for(var c=0;c<v.cells.length;c++){var l=v.cells[c];var w=this.cells(l.id);if(l.width){w.setWidth(l.width)}if(l.height){w.setHeight(l.height)}if(l.text){w.setText(l.text)}if(l.collapsed_text){w.setCollapsedText(l.collapsed_text)}if(l.collapse){w.collapse()}if(l.fix_size){w.fixSize(l.fix_size[0],l.fix_size[1])}if(typeof(l.header)!="undefined"&&window.dhx4.s2b(l.header)==false){w.hideHeader()}}}}v=null;return this}dhtmlXLayoutObject.prototype.cells=function(h){for(var c in this.cdata){if(this.cdata[c].conf.name==h){return this.cdata[c]}if(this.cdata[c].dataType=="layout"&&this.cdata[c].dataNested==true&&this.cdata[c].dataObj!=null){var g=this.cdata[c].dataObj.cells(h);if(g!=null){return g}}}return null};dhtmlXLayoutObject.prototype.forEachItem=function(h,g){if(typeof(h)!="function"){return}if(typeof(g)=="undefined"){g=this}for(var c in this.cdata){if(typeof(this.cdata[c].conf.name)!="undefined"){h.apply(g,[this.cdata[c]])}if(this.cdata[c].dataType=="layout"&&this.cdata[c].dataNested==true&&this.cdata[c].dataObj!=null){this.cdata[c].dataObj.forEachItem(h,g)}}g=null};dhtmlXLayoutObject.prototype._forEachSep=function(h,g){if(typeof(h)!="function"){return}if(typeof(g)=="undefined"){g=this}if(this.sep!=null){h.apply(g,[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(h,g)}}g=null};dhtmlXLayoutObject.prototype.setOffsets=function(l){var h=false;for(var c in l){var g=c.charAt(0);if(typeof(this.conf.ofs[g])!="undefined"&&!isNaN(l[c])){this.conf.ofs[g]=parseInt(l[c]);h=true}}if(typeof(this.setSizes)=="function"&&h==true){this.setSizes()}};dhtmlXLayoutObject.prototype._detectSW=function(){if(dhtmlXLayoutObject.prototype._confGlob.sw==null){dhtmlXLayoutObject.prototype._confGlob.sw={}}if(dhtmlXLayoutObject.prototype._confGlob.sw[this.conf.skin]==null){var a=document.createElement("DIV");a.className="dhxlayout_sep_sw_"+this.conf.skin;if(document.body.firstChild!=null){document.body.insertBefore(a,document.body.firstChild)}else{document.body.appendChild(a)}dhtmlXLayoutObject.prototype._confGlob.sw[this.conf.skin]=a.offsetWidth;document.body.removeChild(a);a=null}return dhtmlXLayoutObject.prototype._confGlob.sw[this.conf.skin]};dhtmlXLayoutObject.prototype._confGlob={};dhtmlXLayoutObject.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="dhxlayout_hdr_attached";this.dataNodes.haObj.style.height=(a||c.offsetHeight)+"px";this.base.insertBefore(this.dataNodes.haObj,this.dataNodes.menuObj||this.dataNodes.toolbarObj||this.cdata.a.cell);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()};dhtmlXLayoutObject.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()}};dhtmlXLayoutObject.prototype.attachFooter=function(g,a){if(this.dataNodes.faObj!=null){return}if(typeof(g)!="object"){g=document.getElementById(g)}this.dataNodes.faObj=document.createElement("DIV");this.dataNodes.faObj.className="dhxlayout_ftr_attached";this.dataNodes.faObj.style.height=(a||g.offsetHeight)+"px";var c=(this.dataNodes.sbObj||(this.conf.pattern=="1C"?this.cdata.a:this.sep.sep));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.t+"px";this.dataNodes.faObj.style.width=this.base.offsetWidth-this.conf.ofs.l-this.conf.ofs.r+"px"});this.dataNodes.faObj.appendChild(g);g.style.visibility="visible";c=g=null;this.conf.ofs_nodes.b.faObj=true;this.setSizes()};dhtmlXLayoutObject.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()}};dhtmlXLayoutObject.prototype.attachMenu=function(a){if(this.dataNodes.menu!=null){return}this.dataNodes.menuObj=document.createElement("DIV");this.dataNodes.menuObj.className="dhxlayout_menu";this.base.insertBefore(this.dataNodes.menuObj,this.dataNodes.toolbarObj||this.dataNodes.ribbonObj||this.cdata.a.cell);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};dhtmlXLayoutObject.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()}};dhtmlXLayoutObject.prototype.attachToolbar=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}this.dataNodes.toolbarObj=document.createElement("DIV");this.dataNodes.toolbarObj.className="dhxlayout_toolbar";this.base.insertBefore(this.dataNodes.toolbarObj,this.cdata.a.cell);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};dhtmlXLayoutObject.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()}};dhtmlXLayoutObject.prototype.attachRibbon=function(a){if(!(this.dataNodes.ribbon==null&&this.dataNodes.toolbar==null)){return}this.dataNodes.ribbonObj=document.createElement("DIV");this.dataNodes.ribbonObj.className="dhxlayout_ribbon";this.base.insertBefore(this.dataNodes.ribbonObj,this.cdata.a.cell);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};dhtmlXLayoutObject.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()}};dhtmlXLayoutObject.prototype.attachStatusBar=function(a){if(this.dataNodes.sbObj){return}if(typeof(a)=="undefined"){a={}}this.dataNodes.sbObj=document.createElement("DIV");this.dataNodes.sbObj.className="dhxlayout_statusbar";if(this.dataNodes.faObj!=null){this.base.insertBefore(this.dataNodes.sbObj,this.dataNodes.faObj)}else{if(this.sep==null||this.base.lastChild==this.sep.sep){this.base.appendChild(this.dataNodes.sbObj)}else{this.base.insertBefore(this.dataNodes.sbObj,this.sep.sep.nextSibling)}}this.dataNodes.sbObj.innerHTML="<div class='dhxcont_statusbar'>"+(typeof(a.text)=="string"&&a.text.length>0?a.text:" ")+"</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};dhtmlXLayoutObject.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()}};dhtmlXLayoutObject.prototype.showMenu=function(){this._mtbShowHide("menuObj","")};dhtmlXLayoutObject.prototype.hideMenu=function(){this._mtbShowHide("menuObj","none")};dhtmlXLayoutObject.prototype.showToolbar=function(){this._mtbShowHide("toolbarObj","")};dhtmlXLayoutObject.prototype.hideToolbar=function(){this._mtbShowHide("toolbarObj","none")};dhtmlXLayoutObject.prototype.showRibbon=function(){this._mtbShowHide("ribbonObj","")};dhtmlXLayoutObject.prototype.hideRibbon=function(){this._mtbShowHide("ribbonObj","none")};dhtmlXLayoutObject.prototype.showStatusBar=function(){this._mtbShowHide("sbObj","")};dhtmlXLayoutObject.prototype.hideStatusBar=function(){this._mtbShowHide("sbObj","none")};dhtmlXLayoutObject.prototype._mtbShowHide=function(c,a){if(this.dataNodes[c]==null){return}this.dataNodes[c].style.display=a;this.setSizes()};dhtmlXLayoutObject.prototype._mtbUnload=function(c,a){this.detachMenu();this.detachToolbar();this.detachStatusBar();this.detachRibbon()};dhtmlXLayoutObject.prototype.getAttachedMenu=function(){return this.dataNodes.menu};dhtmlXLayoutObject.prototype.getAttachedToolbar=function(){return this.dataNodes.toolbar};dhtmlXLayoutObject.prototype.getAttachedRibbon=function(){return this.dataNodes.ribbon};dhtmlXLayoutObject.prototype.getAttachedStatusBar=function(){return this.dataNodes.sbObj};dhtmlXLayoutObject.prototype.progressOn=function(){if(this.conf.progress){return}this.conf.progress=true;var c=document.createElement("DIV");c.className="dhxlayout_progress";this.base.appendChild(c);var a=document.createElement("DIV");a.className="dhxlayout_progress_img";this.base.appendChild(a);c=a=null};dhtmlXLayoutObject.prototype.progressOff=function(){if(!this.conf.progress){return}var h={dhxlayout_progress:true,dhxlayout_progress_img:true};for(var g=0;g<this.base.childNodes.length;g++){if(typeof(this.base.childNodes[g].className)!="undefined"&&h[this.base.childNodes[g].className]==true){h[this.base.childNodes[g].className]=this.base.childNodes[g]}}for(var c in h){if(h[c]!=true){this.base.removeChild(h[c])}h[c]=null}this.conf.progress=false;h=null};dhtmlXLayoutObject.prototype.listPatterns=function(){var g=[];for(var c in this.tplData){g.push(c)}return g};dhtmlXLayoutObject.prototype.listAutoSizes=function(){var h=(this.conf.as_cells!=null?(this.conf.as_cells.h).join(";"):"");var g=(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[h,g,c,a]};dhtmlXLayoutObject.prototype._getCellsNames=function(h){var l={};if(this.cdata[h].conf.name!=null){l[this.cdata[h].conf.name]=true}if(this.cdata[h].dataType=="layout"&&this.cdata[h].dataObj!=null&&this.cdata[h].dataObj.mainInst==this){var c=this.cdata[h].dataObj._getCellsNames("a");var m=this.cdata[h].dataObj._getCellsNames("b");for(var g in c){l[g]=c[g]}for(var g in m){l[g]=m[g]}}return l};dhtmlXLayoutObject.prototype.setAutoSize=function(c,r,u){if(u!==true){var w=this.listAutoSizes();if(w[0]==c&&w[1]==r){return}var o=false;var n=false;for(var g=0;g<w[2].length;g++){o=o||w[2][g]==c}for(var g=0;g<w[3].length;g++){n=n||w[3][g]==r}if(!o||!n){return}}this.conf.as_cells={h:c.split(";"),v:r.split(";")};var h=(this.conf.mode=="v"?"h":"v");for(var v in this.cdata){var l=this._getCellsNames(v);var x=false;for(var g=0;g<this.conf.as_cells[h].length;g++){x=x||l[this.conf.as_cells[h][g]]}if(x){this.conf.autosize=v}if(this.cdata[v].dataType=="layout"&&this.cdata[v].dataObj!=null){this.cdata[v].dataObj.setAutoSize(c,r,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(g,a){var c=this;this.conf={mode:g,idx:a,blocked:false,locked:false};this._isLayoutSep=true;this.sep=document.createElement("DIV");this.sep.className="dhxlayout_sep";this._btnLeft=(window.dhx4.isIE&&!window.addEventListener?1:0);if(window.dhx4.isIE){this.sep.onselectstart=function(){return false}}this.sep.className="dhxlayout_sep dhxlayout_sep_resize_"+this.conf.mode;this._setSize=function(l,o,m,n){this.sep.style.left=l+"px";this.sep.style.top=o+"px";this.sep.style.width=m+"px";this.sep.style.height=n+"px"};this._lockSep=function(h){this.conf.locked=(h==true);this._blockSep()};this._blockSep=function(){var h=this._getLayout();var l=h.cdata.a.conf.collapsed||h.cdata.b.conf.collapsed||this.conf.locked;h=null;if(this.conf.blocked==l){return}this.sep.className="dhxlayout_sep"+(l?"":" dhxlayout_sep_resize_"+this.conf.mode);this.conf.blocked=l};this._beforeResize=function(l){if(this.conf.blocked){return}if(this.conf.resize!=null&&this.conf.resize.active==true){return}if(l.button!==this._btnLeft){return}var h=this._getLayout();this.conf.resize={sx:l.clientX,sy:l.clientY,tx:l.layerX,ty:l.layerY,sep_x:parseInt(this.sep.style.left),sep_y:parseInt(this.sep.style.top),min_wa:h.cdata.a._getAvailWidth("a"),min_wb:h.cdata.b._getAvailWidth("b"),min_ha:h.cdata.a._getAvailHeight("a"),min_hb:h.cdata.b._getAvailHeight("b")};this.conf.resize.nx=this.conf.resize.sep_x;this.conf.resize.ny=this.conf.resize.sep_y;if(window.addEventListener){document.body.addEventListener("mousemove",this._doOnMouseMove,false);document.body.addEventListener("mouseup",this._doOnMouseUp,false)}else{document.body.attachEvent("onmousemove",this._doOnMouseMove);document.body.attachEvent("onmouseup",this._doOnMouseUp)}h=null};this._onResize=function(l){if(!this.conf.resize.active){this._initResizeArea();this.conf.resize.active=true}if(this.conf.mode=="v"){var h=this.conf.resize.sx-l.clientX;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 h=this.conf.resize.sy-l.clientY;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(r){if(window.addEventListener){document.body.removeEventListener("mousemove",this._doOnMouseMove,false);document.body.removeEventListener("mouseup",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(r.button!==this._btnLeft){return}var n=this._getLayout();var l=n._getMainInst();var o=(l.checkEvent("onPanelResizeFinish")==true?{}:false);if(o!==false){l.forEachItem(function(u){o[u.conf.name]={w:u.conf.size.w,h:u.conf.size.h};u=null})}var m=this.conf.resize.nx-this.conf.resize.sep_x;var h=this.conf.resize.ny-this.conf.resize.sep_y;n.cdata.a._setSize(n.cdata.a.conf.size.x,n.cdata.a.conf.size.y,n.cdata.a.conf.size.w+m,n.cdata.a.conf.size.h+h,"a");n.cdata.b._setSize(n.cdata.b.conf.size.x+m,n.cdata.b.conf.size.y+h,n.cdata.b.conf.size.w-m,n.cdata.b.conf.size.h-h,"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 s=this;window.setTimeout(function(){s._removeResizeArea();s=null},1)}else{this._removeResizeArea()}if(o!==false){var q=[];l.forEachItem(function(u){var v=o[u.conf.name];if(!(v.w==u.conf.size.w&&v.h==u.conf.size.h)){q.push(u.conf.name)}u=null});l._callMainEvent("onPanelResizeFinish",[q])}l=n=null;this.conf.resize.active=false;this.conf.resize=null};this._initResizeArea=function(){if(!this.r_sep){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){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 l=parseInt(this.r_sep.style.left)-this.conf.resize.min_wa;var o=parseInt(this.r_sep.style.top);var m=this.conf.resize.min_wa+this.conf.resize.min_wb+parseInt(this.r_sep.style.width);var n=parseInt(this.r_sep.style.height)}else{var l=parseInt(this.r_sep.style.left);var o=parseInt(this.r_sep.style.top)-this.conf.resize.min_ha;var m=parseInt(this.r_sep.style.width);var n=this.conf.resize.min_ha+this.conf.resize.min_hb+parseInt(this.r_sep.style.height)}this.r_area.style.left=l+"px";this.r_area.style.top=o+"px";if(!dhtmlXLayoutObject.prototype._confGlob.reszieCover){dhtmlXLayoutObject.prototype._confGlob.reszieCover={};this.r_area.style.width=m+"px";this.r_area.style.height=n+"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=m+dhtmlXLayoutObject.prototype._confGlob.reszieCover.w+"px";this.r_area.style.height=n+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(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.cancelBubble=true}c._beforeResize(h)};this._doOnMouseMove=function(h){h=h||event;if(h.preventDefault){h.preventDefault()}else{h.cancelBubble=true}c._onResize(h)};this._doOnMouseUp=function(h){h=h||event;c._afterResize(h)};if(typeof(window.addEventListener)=="function"){this.sep.addEventListener("mousedown",this._doOnMouseDown,false)}else{this.sep.attachEvent("onmousedown",this._doOnMouseDown)}this._unload=function(){if(typeof(window.addEventListener)=="function"){this.sep.removeEventListener("mousedown",this._doOnMouseDown,false)}else{this.sep.detachEvent("onmousedown",this._doOnMouseDown)}this.sep.parentNode.removeChild(this.sep);this.sep=null;for(var h in this){this[h]=null}c=null};return this}window.dhtmlXLayoutCell=function(h,g){dhtmlXCellObject.apply(this,[h,"_layout"]);var c=this;this.layout=g;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.attachEvent("_onCellUnload",function(){this.cell.childNodes[this.conf.idx.hdr].ondblclick=null;this._unloadDocking();this.layout=null;c=null});this._hdrInit();this.cell.childNodes[this.conf.idx.hdr].ondblclick=function(){var l=c.layout._getMainInst();l._callMainEvent("onDblClick",[c.conf.name]);l=null};this.attachEvent("_onContentLoaded",function(){var l=this.layout._getMainInst();l._callMainEvent("onContentLoaded",[this.conf.name]);l=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(l){if(c.conf.collapsed){c.expand()}else{c.collapse()}};a=null}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 g=this.layout._getMainInst();if(g.dhxWins==null||this.conf.docked){g=null;return}var c=g.dhxWins.window(this.conf.name);c.close();this._attachFromCell(c);this.conf.docked=true;if(!this.conf.dock_collapsed){this.expand()}g._callMainEvent("onDock",[this.conf.name]);g=c=null};this.undock=function(c,o,m,n){var l=this.layout._getMainInst();if(l.dhxWins==null||this.conf.docked==false){l=null;return}this.conf.dock_collapsed=this.conf.collapsed;if(!this.conf.collapsed){this.collapse()}if(l.dhxWins.window(this.conf.name)!=null){var g=l.dhxWins.window(this.conf.name);g.show()}else{if(c==null){c=20}if(o==null){o=20}if(m==null){m=320}if(n==null){n=200}var g=l.dhxWins.createWindow(this.conf.name,c,o,m,n);g.button("close").hide();g.addUserButton("dock",99,"Dock");g.button("dock").show();g.button("dock").attachEvent("onClick",this._doOnDockClick);g.setText(this.getText());g.attachEvent("onClose",this._doOnDockWinClose)}this.conf.docked=false;g._attachFromCell(this);l._callMainEvent("onUnDock",[this.conf.name]);l=g=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 8.0")!=-1){c=" dhx_cell_hdr_text_ie8"}else{if(navigator.userAgent.indexOf("MSIE 7.0")!=-1){c=" dhx_cell_hdr_text_ie7"}else{if(navigator.userAgent.indexOf("MSIE 6.0")!=-1){c=" dhx_cell_hdr_text_ie6"}}}}else{if(window.dhx4.isChrome){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.conf.hdr.h_saved=this._getMinHeight();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(n){if(!this.conf.collapsed){return true}var g=this.layout;if(this.conf.mode=="v"){var m=(n?g.conf.hh:g.cdata[g.conf.nextCell[this._idd]]._getMinWidth(this._idd));var h=g.base.offsetWidth-g.conf.sw;if(m+this.conf.size.w_avl>h){g=null;return false}}else{var l=(n?g.conf.hh:g.cdata[g.conf.nextCell[this._idd]]._getMinHeight(this._idd)+g.cdata[g.conf.nextCell[this._idd]]._getHdrHeight());var c=g.base.offsetHeight-g.conf.sw;if(l+this.conf.size.h_avl>c){g=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(h-m,this.conf.size.w_saved);this.conf.size.w_saved=this.conf.size.w_avl=null}else{this.conf.size.h=Math.min(c-l,this.conf.size.h_saved);this.conf.size.h_saved=this.conf.size.h_avl=null}if(this.conf.mode=="v"){this._fitHdr()}g.setSizes(g.conf.nextCell[this._idd],g.conf.nextCell[this._idd],n==true,"expand");g.sep._blockSep();g=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._getMinWidth=function(c){if(this.dataType=="layout"&&this.dataObj!=null){if(this.dataObj.conf.pattern=="1C"){return this.dataObj.cdata.a._getMinWidth(c)}else{if(this.dataObj.conf.mode=="v"){var a=c;if(this.dataObj.cdata[a].conf.collapsed){a=this.dataObj.conf.nextCell[a]}return this.dataObj.cdata[a]._getMinWidth(c)+this.dataObj.cdata[this.dataObj.conf.nextCell[a]]._getWidth()+this.dataObj.conf.sw}else{return Math.max(this.dataObj.cdata.a._getMinWidth(c),this.dataObj.cdata.b._getMinWidth(c))}}}return 26};dhtmlXLayoutCell.prototype._getMinHeight=function(g){var c=26;if(this.conf.idx.menu!=null){c+=this.cell.childNodes[this.conf.idx.menu].offsetHeight}if(this.dataType=="layout"&&this.dataObj!=null){if(this.dataObj.conf.pattern=="1C"){return this.dataObj.cdata.a._getMinHeight(g)}else{if(this.dataObj.conf.mode=="h"){var a=g;if(this.dataObj.cdata[a].conf.collapsed){a=this.dataObj.conf.nextCell[a]}return this.dataObj.cdata[a]._getMinHeight(g)+this.dataObj.cdata[a]._getHdrHeight()+this.dataObj.cdata[this.dataObj.conf.nextCell[a]]._getHeight()+this.dataObj.conf.sw}else{return Math.max(this.dataObj.cdata.a._getMinHeight(g)+this.dataObj.cdata.a._getHdrHeight(),this.dataObj.cdata.b._getMinHeight(g)+this.dataObj.cdata.b._getHdrHeight())}}}return c};dhtmlXLayoutCell.prototype._getAvailWidth=function(g){if(this.dataType=="layout"&&this.dataObj!=null){if(this.dataObj.conf.pattern=="1C"){return this.dataObj.cdata.a._getAvailWidth(g)}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(g=="a"){return this.dataObj.cdata[c?"a":"b"]._getAvailWidth(g)}else{return this.dataObj.cdata[a?"b":"a"]._getAvailWidth(g)}}else{return Math.min(this.dataObj.cdata.a._getAvailWidth(g),this.dataObj.cdata.b._getAvailWidth(g))}}}return this.cell.offsetWidth-this._getMinWidth()};dhtmlXLayoutCell.prototype._getAvailHeight=function(h){if(this.dataType=="layout"&&this.dataObj!=null){if(this.dataObj.conf.pattern=="1C"){return this.dataObj.cdata.a._getAvailHeight(h)}else{if(this.dataObj.conf.mode=="h"){var c=(this.dataObj.cdata.a.conf.collapsed==true);var g=(this.dataObj.cdata.b.conf.collapsed==true);if(h=="a"){return this.dataObj.cdata[g?"a":"b"]._getAvailHeight(h)}else{return this.dataObj.cdata[c?"b":"a"]._getAvailHeight(h)}}else{return Math.min(this.dataObj.cdata.a._getAvailHeight(h),this.dataObj.cdata.b._getAvailHeight(h))}}}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(h){if(this.conf.mode=="v"){if(this.conf.collapsed){return}var l=this.layout;var m=l.cdata[l.conf.nextCell[this._idd]];if(m.conf.collapsed){h=h+l.conf.sw+m._getWidth();n=l=m=null;return}var g=this._getMinWidth(this._idd);var o=l.base.offsetWidth-m._getMinWidth(this._idd)-l.conf.sw;h=Math.max(g,Math.min(h,o));this.conf.size.w=h;l.setSizes(m._idd,m._idd);l=m=null}else{if(this.layout==null||this.layout.parentLayout==null){return}var n=this.layout.parentLayout;var l=this.layout;var m=l.cdata[l.conf.nextCell[this._idd]];for(var c in n.cdata){if(n.cdata[c].dataObj==l){n.cdata[c].setWidth(h)}}n=l=null}};dhtmlXLayoutCell.prototype.setHeight=function(o){if(this.conf.mode=="h"){if(this.conf.collapsed){return}var l=this.layout;var n=l.cdata[l.conf.nextCell[this._idd]];if(n.conf.collapsed){o=o+l.conf.sw+n._getHeight();var q=(this.layout!=null&&this.layout.parentLayout!=null?this.layout.parentLayout:null);if(q!=null){for(var c in q.cdata){if(q.cdata[c].dataObj==l){q.cdata[c].setHeight(o)}}}q=l=n=null;return}var m=this._getMinHeight(this._idd)+this._getHdrHeight();var g=l.base.offsetHeight-n._getMinHeight(this._idd)-n._getHdrHeight()-l.conf.sw;o=Math.max(m,Math.min(o,g));this.conf.size.h=o;l.setSizes(n._idd,n._idd);l=n=null}else{if(this.layout==null||this.layout.parentLayout==null){return}var q=this.layout.parentLayout;var l=this.layout;var n=l.cdata[l.conf.nextCell[this._idd]];for(var c in q.cdata){if(q.cdata[c].dataObj==l){q.cdata[c].setHeight(o)}}q=l=null}};dhtmlXLayoutCell.prototype.getWidth=function(){return this.conf.size.w};dhtmlXLayoutCell.prototype.getHeight=function(){return this.conf.size.h};dhtmlXLayoutCell.prototype.fixSize=function(c,l){this.conf.fixed.w=window.dhx4.s2b(c);this.conf.fixed.h=window.dhx4.s2b(l);var a=this.layout._getMainInst();var g={};a.forEachItem(function(h){if(h.conf.fsize!=null){var r=h.getId();var o={h:(h.conf.fixed.w==true),v:(h.conf.fixed.h==true)};for(var m in o){if(o[m]==true&&h.conf.fsize[m]!=null){if(!(h.conf.fsize[m] instanceof Array)){h.conf.fsize[m]=[h.conf.fsize[m]]}for(var n=0;n<h.conf.fsize[m].length;n++){g[h.conf.fsize[m][n]]=true}}}}h=null});a._forEachSep(function(h){h._lockSep(g[h.conf.idx]==true);h=null});a=null};function dhtmlXTabBar(c,l){var g=this;this.conf={skin:(window.dhx4.skin||(typeof(dhtmlx)!="undefined"?dhtmlx.skin:null)||window.dhx4.skinDetect("dhxtabbar")||"dhx_skyblue"),fullScreen:false,fullScreenResize:false,lastActive:null,closeButton:false,align:"left",tabsMode:(l=="bottom"?"bottom":"top"),contZone:true,transSpeed:"0.15s",baseOfs:{w:2,h:2},tabsOfs:1,tabsTop:0,autoload:{}};var h;if(c!=null&&typeof(c)=="object"&&typeof(c.tagName)=="undefined"){h=c.parent;if(typeof(c.skin)!="undefined"){this.conf.skin=c.skin}if(typeof(c.mode)!="undefined"){this.conf.tabsMode=(c.mode=="bottom"?"bottom":"top")}if(typeof(c.align)!="undefined"){this.conf.align=(c.align=="right"?"right":"left")}if(typeof(c.close_button)!="undefined"){this.conf.closeButton=window.dhx4.s2b(c.close_button)}if(typeof(c.content_zone)!="undefined"){this.conf.contZone=window.dhx4.s2b(c.content_zone)}if(typeof(c.xml)!="undefined"){this.conf.autoload.xml=c.xml}if(typeof(c.json)!="undefined"){this.conf.autoload.xml=c.json}if(typeof(c.tabs)!="undefined"){this.conf.autoload.tabs=c.tabs}if(typeof(c.onload)!="undefined"){this.conf.autoload.tabs=c.tabs}}else{h=c}if(h==document.body){document.documentElement.className+=" dhxtabbar_fullscreen";document.body.className+=" dhxtabbar_fullscreen";this.conf.fullScreen=true;this.base=document.createElement("DIV");this.base.className="dhxtabbar_base_"+this.conf.skin;this.base.style.position="absolute";this.base.style.left=this.conf.baseOfs.w+"px";this.base.style.top=this.conf.baseOfs.h+"px";document.body.appendChild(this.base)}else{this.base=(typeof(h)=="string"?document.getElementById(h):h);h=null;this.base.className+=" dhxtabbar_base_"+this.conf.skin}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.base.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+"'><div class='dhxtabbar_tabs_line'></div></div></div><div class='dhxtabbar_tabs_ar_right'><div class='dhxtabbar_arrow_img'></div></div>";if(this.conf.tabsMode=="top"){this.tabsArea.style.top=this.conf.tabsTop+"px"}this.tabsMode.appendChild(this.tabsArea);this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]="0px";this.tabsArea.childNodes[0].onclick=function(){if(g.conf.align=="left"){g._moveTabs(1)}else{g._moveTabs(-1)}};this.tabsArea.childNodes[2].onclick=function(){if(g.conf.align=="left"){g._moveTabs(-1)}else{g._moveTabs(1)}};this._onTabsAreaClick=function(m){return this._callMainEvent("onTabClose",[m])};this.tabsArea.onclick=function(n){n=n||event;var m=(n.target||n.srcElement);while(m!=null){if(typeof(m._tabCloseId)!="undefined"){if(g._onTabsAreaClick(m._tabCloseId)!==true){return}g.t[m._tabCloseId].conf.remove=true;g._hideTab(m._tabCloseId);m=null}else{if(typeof(m._tabId)!="undefined"){g._doOnClick(m._tabId);m=null}}if(m!=null){m=m.parentNode;if(m==this){m=null}}}};this.tabsArea.onselectstart=function(m){m=m||event;if(m.preventDefault){m.preventDefault()}else{m.returnValue=false}};this._doOnClick=function(m){this.callEvent("onTabClick",[m,this.conf.lastActive]);if(this.t[m].conf.enabled){this._setTabActive(m)}};this.t={};this.addTab=function(m,v,o,s,r,w){if(typeof(w)!="boolean"){w=(this.conf.closeButton==true)}r=window.dhx4.s2b(r);var q=document.createElement("DIV");q.className="dhxtabbar_tab";q.innerHTML="<div class='dhxtabbar_tab_text"+(w?" dhxtabbar_tab_text_close":"")+"'>"+v+"</div>"+(w?"<div class='dhxtabbar_tab_close'></div>":"");q._tabId=m;if(w){q.childNodes[1]._tabCloseId=m}var n=this.tabsArea.childNodes[1].firstChild;if(s!=null&&s+1>0&&s+1<n.childNodes.length){n.insertBefore(q,n.childNodes[s+1])}else{n.appendChild(q)}var x=false;if(typeof(o)=="undefined"||o==null||o=="*"){o=this._getLabelWidth(v,w);x=true}else{o=parseInt(o)}q.style.width=o+"px";var u=new dhtmlXTabBarCell(m,this);this.tabsMode.appendChild(u.cell);this.t[m]={tab:q,cell:u,conf:{text:v,visible:true,active:false,enabled:true,close:w,width:o,autowidth:x}};n=u=null;if(r){this._setTabActive(m)}else{this._adjustCell(m)}};this.setSizes=function(){if(this.conf.fullScreen){this.base.style.width=document.body.offsetWidth-this.conf.baseOfs.w*2+"px";this.base.style.height=document.body.offsetHeight-this.conf.baseOfs.h*2+"px"}if(this.conf.tabsAreaOfs==null){this.tabsArea.style.width=this.base.offsetWidth+"px";this.conf.tabsAreaOfs=parseInt(this.tabsArea.style.width)-this.tabsArea.offsetWidth}this.tabsArea.style.width=this.base.offsetWidth+this.conf.tabsAreaOfs+"px";this.tabsArea.childNodes[1].style.left=this.tabsArea.childNodes[0].offsetWidth-1+"px";this.tabsArea.childNodes[1].style.width=Math.max(0,this.tabsArea.offsetWidth-this.tabsArea.childNodes[0].offsetWidth-this.tabsArea.childNodes[2].offsetWidth)+1+"px";this._adjustCell(this.conf.lastActive);this._adjustTabs()};this._adjustCell=function(q){if(!this.conf.contZone||q==null){return}var o=(this.conf.tabsMode=="top"?this.tabsArea.offsetHeight:0)+this.conf.tabsTop;var n=this.base.offsetHeight-this.tabsArea.offsetHeight-this.conf.tabsTop;var m=this.t[q].cell.dataType;if(this.conf.skin=="dhx_skyblue"&&(m=="layout"||m=="tabbar"||m=="acc")){if(this.conf.tabsMode=="top"){o=o-1}n=n+1}if(q!=this.conf.lastActive){o=-5000;this.t[q].cell.cell.style.visibility="hidden";this.t[q].cell.cell.style.zIndex=0}this.t[q].cell._setSize(0,o,this.base.offsetWidth,n)};this.setTabsMode=function(m){this.conf.tabsMode=(m=="bottom"?"bottom":"top");this.tabsMode.className="dhxtabbar_tabs_"+this.conf.tabsMode;this.setSizes()};this._tabCss=function(r,o){var m=this.t[r].conf.active;var q=!this.t[r].conf.enabled;var n=!this.t[r].conf.visible;return"dhxtabbar_tab"+(n?" dhxtabbar_tab_hidden":(m||q?" dhxtabbar_tab"+(m?"_actv":"")+(q?"_dis":""):""))};this._getLabelWidth=function(o,n){if(!this.tabsTextTest){this.tabsTextTest=document.createElement("SPAN");this.tabsTextTest.className="dhxtabbar_tabs_text_test_"+this.conf.skin}document.body.appendChild(this.tabsTextTest);this.tabsTextTest.innerHTML=o;var m=this.tabsTextTest.offsetWidth;m+=(this.conf.skin=="dhx_terrace"?44:35);m+=(n?(this.conf.skin=="dhx_terrace"?14:9):0);document.body.removeChild(this.tabsTextTest);return m};this._adjustTabs=function(){var s=this.tabsArea.childNodes[1];if(s.offsetWidth<5){s=null;return}var m=parseInt(s.childNodes[0].style[this.conf.align]);var o=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 n=this.t[u].tab.offsetWidth-this.conf.tabsOfs;if(this.t[u].conf.active){if(m<0||s.offsetWidth<n){o={d:1,id:u}}else{if(m+n>s.offsetWidth){o={d:-1,id:u}}}}m+=n}}if(o!=null){this._moveTabs(o.d,o.id)}else{if(s.offsetWidth>m+1){s.childNodes[0].style[this.conf.align]=Math.min(0,parseInt(s.childNodes[0].style[this.conf.align])+(s.offsetWidth-m))+"px"}}s=o=null};this._moveTabs=function(y,r){var o=this.tabsArea.childNodes[1].childNodes[0];var v=0;var A=[];var D=null;for(var m=0;m<o.childNodes.length;m++){var n=o.childNodes[m]._tabId;if(n!=null&&this.t[n].conf.visible){A.push({id:n,w:this.t[n].tab.offsetWidth-this.conf.tabsOfs,ind:v});if(n==r){D=v}v++}}var C=parseInt(this.tabsArea.childNodes[1].childNodes[0].style[this.conf.align]);var u=this.tabsArea.offsetWidth-this.tabsArea.childNodes[0].offsetWidth-this.tabsArea.childNodes[2].offsetWidth;var w=null;var s=null;for(var m=0;m<A.length;m++){A[m].x=C;if(w==null&&C>=0&&C+A[m].w>0){w=A[m]}if(C<u&&C+A[m].w<=u){s=A[m]}C+=A[m].w}if(D!=null){var E=A[D]}else{var E=null;if(y>0){if(w==null){if(A.length>0){E=A[A.length-1]}}else{if(w.ind>0&&A.length>=w.ind){E=A[w.ind-1]}}}else{if(s==null){if(A.length>0){E=A[0]}}else{if(A.length>s.ind){E=A[s.ind+1]}}}}if(E!=null){if(y>0){if(C<u){o.style[this.conf.align]=Math.min(0,parseInt(o.style[this.conf.align])+(u-C))+"px"}else{o.style[this.conf.align]=parseInt(o.style[this.conf.align])-E.x+"px"}}else{o.style[this.conf.align]=parseInt(o.style[this.conf.align])-E.x+u-E.w+"px"}}o=E=A=null};this._getNextVisible=function(n,m){return this._getNearVisible(n,m,"next")};this._getPrevVisible=function(n,m){return this._getNearVisible(n,m,"previous")};this._getFirstVisible=function(){return this._getNearVisible(null,false,"first")};this._getNearVisible=function(s,o,r){if(r=="first"){var q=this.tabsArea.childNodes[1].childNodes[0].childNodes[1];r="next"}else{if(s==null||this.t[s]==null){return(o?this._getFirstVisible():null)}var q=this.t[s].tab[r+"Sibling"]}var n=null;while(q!=null&&n==null){var m=q._tabId;if(m!=null&&n==null&&this.t[m].conf.visible){n=m}else{q=q[r+"Sibling"]}}q=null;return n};this._showTab=function(n,m){if(!this.t[n]||this.t[n].conf.visible||this.t[n].conf.transActv){return}if(this.conf.transProp!==false){this.t[n].conf.transActv=true;this.t[n].conf.transMode="show";this.t[n].conf.transProp=this.conf.transProp;this.t[n].conf.transActvId=(m?n:null);if(!this.t[n].conf.transEv){this.t[n].tab.addEventListener(this.conf.transEv,this._doOnTrEnd);this.t[n].conf.transEv=true}this.t[n].conf.visible=true;this.t[n].tab.className=this._tabCss(n);this.t[n].tab.style[this.conf.transProp]=this.conf.transValueWidth;this.t[n].tab.style.width=this.t[n].conf.width+"px"}else{this.t[n].conf.visible=true;this.t[n].tab.style.display="";if(m){this._setTabActive(n)}else{this._adjustTabs()}}};this._hideTab=function(s,m){if(!this.t[s]||!this.t[s].conf.visible||this.t[s].conf.transActv){return}var n=false;if(this.conf.lastActive==s){this.conf.lastActive=null;this.t[s].conf.active=false;this.t[s].tab.className=this._tabCss(s);n=true}var q=this._getPrevVisible(s);var o=this._getNextVisible(s);var r=(n&&m!==false?(m==true?null:m)||o||q: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);this.t[s].conf.transEv=true}this.t[s].tab.style.visibility="hidden";this.t[s].tab.className=g._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(m){return(this.t[m].conf.visible==true)};this._doOnTrEnd=function(){var o=this._tabId;if(g.t[o]==null){return}var m=g.t[o];var n=m.conf.transActvId;if(m.conf.transMode=="hide"){if(m.conf.remove){g._removeTab(o)}else{m.tab.style[m.conf.transProp]="";if(g.conf.contZone){m.cell.cell.style.visibility="hidden";m.cell.cell.style.top="-5000px"}m.conf.transActv=false}}else{if(m.conf.transMode=="show"){m.tab.style[m.conf.transProp]="";m.tab.style.visibility="visible";m.conf.transMode=null;m.conf.transActv=false}}if(n!=null){g._setTabActive(n)}else{g._adjustTabs()}m=null};this.enableTabCloseButton=function(m){this.conf.closeButton=window.dhx4.s2b(m)};this.unload=function(){this.clearAll();this.t=null;if(this.conf.fullScreen){if(window.addEventListener){window.removeEventListener("resize",this._doOnResizeStart,false)}else{window.detachEvent("onresize",this._doOnResizeStart)}this._doOnResizeStart=null;this._doOnResizeEnd=null}if(this.tabsTextTest!=null){if(this.tabsTextTest.parentNode){this.tabsTextTest.parentNode.removeChild(this.tabsTextTest)}this.tabsTextTest=null}window.dhx4._eventable(this,"clear");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;if(this.conf.fullScreen){this.base.parentNode.removeChild(this.base);document.documentElement.className=document.documentElement.className.replace("dhxtabbar_fullscreen","");document.body.className=document.body.className.replace("dhxtabbar_fullscreen","")}else{this.base.className=this.base.className.replace("dhxtabbar_base_"+this.conf.skin,"")}this.base=null;for(var m in this){this[m]=null}g=null};this.enableContentZone=function(m){this.conf.contZone=(m==true)};this.setSkin=function(n){this.base.className=this.base.className.replace(new RegExp("dhxtabbar_base_"+this.conf.skin),"dhxtabbar_base_"+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(m){m=(m=="left"?"left":"right");if(m==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=m;this.tabsArea.childNodes[1].childNodes[0].className="dhxtabbar_tabs_cont_"+this.conf.align;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(r){this.clearAll();var m=false;if(r.settings!=null){if(r.settings.skin!=null){this.setSkin(r.settings.skin)}if(r.settings.closeButton!=null){this.enableTabCloseButton(window.dhx4.s2b(r.settings.closeButton))}if(r.settings.align!=null){this.setAlign(r.settings.align)}if(r.settings.hrefmode=="ajax"||r.settings.hrefmode=="ajax-html"){m=true}}if(r.tabs!=null){for(var o=0;o<r.tabs.length;o++){var n=r.tabs[o];if(typeof(n.id)=="undefined"){n.id=window.dhx4.newId()}if(!isNaN(parseInt(n.width))){n.width=parseInt(n.width)}else{n.width=null}this.addTab(n.id,n.text||n.label||"",n.width,n.index,window.dhx4.s2b(n.selected)||window.dhx4.s2b(n.active),n.close);if(n.content!=null){this.cells(n.id).attachHTMLString(n.content)}if(n.href!=null){this.cells(n.id).attachURL(n.href,m)}if(typeof(n.enabled)!="undefined"&&window.dhx4.s2b(n.enabled)==false){this.tabs(n.id).disable()}else{if(typeof(n.disabled)!="undefined"&&window.dhx4.s2b(n.disabled)==true){this.tabs(n.id).disable()}}}}};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 a=window.dhx4.transDetect();this.conf.transProp=a.transProp;this.conf.transEv=a.transEv;this.conf.transValueWidth="width "+this.conf.transSpeed;a=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._initFullScreenResize=function(){if(this.conf.fullScreenResize){return}this.conf.tmResize=null;this._doOnResizeStart=function(){window.clearTimeout(g.conf.tmResize);g.conf.tmResize=window.setTimeout(g._doOnResizeEnd,200)};this._doOnResizeEnd=function(){g.setSizes()};if(window.addEventListener){window.addEventListener("resize",this._doOnResizeStart,false)}else{window.attachEvent("onresize",this._doOnResizeStart)}this.conf.fullScreenResize=true};if(this.conf.fullScreen){this._initFullScreenResize()}this._callMainEvent=function(n,m){return this.callEvent(n,m)};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})}}}this._fixTabsOfs();this.setSizes();return this}dhtmlXTabBar.prototype._fixTabsOfs=function(a){};dhtmlXTabBar.prototype.cells=dhtmlXTabBar.prototype.tabs=function(a){if(this.t[a]){return this.t[a].cell}return null};dhtmlXTabBar.prototype.getAllTabs=function(){var g=[];for(var c in this.t){g.push(c)}return g};dhtmlXTabBar.prototype._setTabActive=function(c,a){if(!this.t[c]||!this.t[c].conf.visible||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()};dhtmlXTabBar.prototype.setTabInActive=function(){if(this.conf.lastActive&&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(h,g,c){if(!this.t[h]){return}var a=false;if(typeof(c)=="undefined"||c==null){c=this._getLabelWidth(g,this.t[h].conf.close);a=true}this.t[h].tab.style.width=c+"px";this.t[h].tab.childNodes[0].innerHTML=g;this.t[h].conf.text=g;this.t[h].conf.width=c;this.t[h].conf.autowidth=a};dhtmlXTabBar.prototype._getTabText=function(a){if(!this.t[a]){return null}return this.t[a].conf.text};dhtmlXTabBar.prototype._removeTab=function(o,g,m){if(!this.t[o]){return}if(m!=true&&this.t[o].conf.remove!=true){this.t[o].conf.remove=true;this._hideTab(o,g);return}if(typeof(g)=="undefined"){g=true}var h=this._getNextVisible(o);var l=this._getPrevVisible(o);if(this.t[o].conf.transEv==true){this.t[o].tab.removeEventListener(this.conf.transEv,this._doOnTrEnd);this.t[o].conf.transEv=false}for(var c in this.t[o].conf){this.t[o].conf[c]=null}this.t[o].conf=null;delete this.t[o].conf;this.t[o].cell._unload();this.t[o].cell=null;this.t[o].tab.parentNode.removeChild(this.t[o].tab);this.t[o].tab=null;this.t[o]=null;delete this.t[o];if(this.conf.lastActive==o&&g!=false){this.conf.lastActive=null;var n=(g==true?(h||l||this._getFirstVisible()):g);if(n!=null){this._setTabActive(n)}}else{if(m!=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(g,a){if(!this.t[g]||a<0){return}a+=1;var c=this.tabsArea.childNodes[1].firstChild;if(c.childNodes[a]!=this.t[g].tab){c.removeChild(this.t[g].tab);if(a>=c.childNodes.length){c.appendChild(this.t[g].tab)}else{c.insertBefore(this.t[g].tab,c.childNodes[a])}}c=null};dhtmlXTabBar.prototype._getIndex=function(h){var a=-1;var g=this.tabsArea.childNodes[1].firstChild;for(var c=1;c<g.childNodes.length;c++){if(g.childNodes[c]._tabId==h){a=c-1}}g=null;return a};dhtmlXTabBar.prototype.getNumberOfTabs=function(h){var g=0;for(var c in this.t){g+=(h!=true?1:(this.t[c].conf.visible==true?1:0))}return g};dhtmlXTabBar.prototype.forEachCell=dhtmlXTabBar.prototype.forEachTab=function(g){for(var c in this.t){g.apply(window,[this.t[c].cell])}};dhtmlXTabBar.prototype.enableAutoReSize=function(){this._initFullScreenResize()};window.dhtmlXTabBarCell=function(h,g){dhtmlXCellObject.apply(this,[h,"_tabbar"]);this.tabbar=g;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 l=[this._idd];for(var m=0;m<arguments.length;m++){l.push(arguments[m])}return this.tabbar[a].apply(this.tabbar,l)}};for(var c in this.conf.tabbar_funcs){this[c]=this._tabbarCall(this.conf.tabbar_funcs[c])}this.attachEvent("_onCellUnload",function(){this.tabbar=null;for(var l in this.conf.tabbar_funcs){this[l]=null;this.conf.tabbar_funcs[l]=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)})};window.dhtmlXTabBarCell.prototype=new dhtmlXCellObject();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 dhtmlXWindows(o){var m=this;var h={};if(typeof(o)!="undefined"){for(var g in o){h[g]=o[g]}}o=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,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:(navigator.userAgent.indexOf("MSIE 6.0")>=0||navigator.userAgent.indexOf("MSIE 7.0")>=0||navigator.userAgent.indexOf("MSIE 8.0")>=0),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(!h.viewport){this.attachViewportTo(document.body)}else{if(h.viewport.object!=null){this.attachViewportTo(h.viewport.object)}else{if(h.viewport.left!=null&&h.viewport.top!=null&&h.viewport.width!=null&&h.viewport.height!=null){this.setViewport(h.viewport.left,h.viewport.top,h.viewport.width,h.viewport.height,h.viewport.parent)}else{this.attachViewportTo(document.body)}}}this.w={};this.createWindow=function(s,H,E,u,J){var q={};if(arguments.length==1&&typeof(s)=="object"){q=s}else{q.id=s;q.left=H;q.top=E;q.width=u;q.height=J;if(typeof(q.id)=="undefined"||q.id==null){q.id=window.dhx4.newId()}while(this.w[q.id]!=null){q.id=window.dhx4.newId()}}if(q.left==null){q.left=0}if(q.top==null){q.top=0}q.move=(q.move!=null&&window.dhx4.s2b(q.move)==false?false:(q.deny_move!=null&&window.dhx4.s2b(q.deny_move)==true?false:true));q.park=(q.park!=null&&window.dhx4.s2b(q.park)==false?false:(q.deny_park!=null&&window.dhx4.s2b(q.deny_park)==true?false:true));q.resize=(q.resize!=null&&window.dhx4.s2b(q.resize)==false?false:(q.deny_resize!=null&&window.dhx4.s2b(q.deny_resize)==true?false:true));q.keep_in_viewport=(q.keep_in_viewport!=null&&window.dhx4.s2b(q.keep_in_viewport));q.modal=(q.modal!=null&&window.dhx4.s2b(q.modal));q.center=(q.center!=null&&window.dhx4.s2b(q.center));q.text=(q.text!=null?q.text:(q.caption!=null?q.caption:"dhtmlxWindow"));q.header=(!(q.header!=null&&window.dhx4.s2b(q.header)==false));var K=document.createElement("DIV");K.className="dhxwin_active";K.style.viosibility="hidden";this.vp.appendChild(K);K._isWindow=true;K._idd=q.id;var A=document.createElement("DIV");A.className="dhxwin_hdr";A.style.zIndex=0;A.innerHTML="<div class='dhxwin_icon'></div><div class='dhxwin_text'><div class='dhxwin_text_inside'>"+q.text+"</div></div><div class='dhxwin_btns'></div>";K.appendChild(A);A.onselectstart=function(a){a=a||event;if(a.preventDefault){a.preventDefault()}else{a.returnValue=false}return false};A.oncontextmenu=function(a){a=a||event;a.cancelBubble=true;return false};A._isWinHdr=true;A.firstChild._isWinIcon=true;var v=document.createElement("DIV");v.className="dhxwin_brd";K.appendChild(v);var D=document.createElement("DIV");D.className="dhxwin_fr_cover";D.innerHTML="<iframe class='dhxwin_fr_cover_inner' frameborder='0' border='0'></iframe><div class='dhxwin_fr_cover_inner'></div>";K.appendChild(D);this.w[q.id]={win:K,hdr:A,brd:v,fr_cover:D,b:{},conf:{z_id:window.dhx4.newId(),actv:false,modal:false,maxed:false,parked:false,sticked:false,visible:true,header:true,text:q.text,keep_in_vp:q.keep_in_viewport,allow_move:q.move,allow_park:q.park,allow_resize:q.resize,max_w:null,max_h:null,min_w:80,min_h:80}};var w={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 F in w){var C=new dhtmlXWindowsButton(this,q.id,F,w[F].title,false);if(w[F].visible==false){C.hide()}A.lastChild.appendChild(C.button);this.w[q.id].b[F]=C;C=null}this._winAdjustTitle(q.id);this.w[q.id].win.style.zIndex=window.dhx4.zim.reserve(this.w[q.id].conf.z_id);var I=new dhtmlXWindowsCell(q.id,this);this.w[q.id].win.insertBefore(I.cell,D);this.w[q.id].cell=I;if(typeof(window.addEventListener)=="function"){this.w[q.id].win.addEventListener("mousedown",this._winOnMouseDown,false);this.w[q.id].win.addEventListener("mouseup",this._winOnMouseDown,false);if(this.conf.dblclick_ev){this.w[q.id].win.addEventListener("dblclick",this._winOnMouseDown,false)}}else{this.w[q.id].win.attachEvent("onmousedown",this._winOnMouseDown);this.w[q.id].win.attachEvent("onmouseup",this._winOnMouseDown);if(this.conf.dblclick_ev){this.w[q.id].win.attachEvent("ondblclick",this._winOnMouseDown)}}this._winInitFRM(q.id);this._winSetPosition(q.id,q.left,q.top);this._winSetSize(q.id,q.width,q.height);this._winMakeActive(q.id);if(q.center==true){this.w[q.id].cell.center()}if(q.modal==true){this.w[q.id].cell.setModal(true)}if(q.header==false){this.w[q.id].cell.hideHeader()}f=K=A=v=D=I=null;return this.w[q.id].cell};this._winOnMouseDown=function(r){r=r||event;var a=r.target||r.srcElement;var q={press_type:r.type};while(a!=null&&a._isWindow!=true){if(typeof(a.className)!="undefined"&&q.mode==null){if(typeof(a._buttonName)!="undefined"){q.mode="button";q.button_name=a._buttonName}else{if(a._isWinHdr==true){q.mode="hdr"}else{if(a._isWinIcon==true){q.mode="icon"}}}}a=a.parentNode}if(q.mode==null){q.mode="win"}q.id=(a!=null&&a._isWindow==true?a._idd:null);a=null;if(q.id!=null){m.callEvent("_winMouseDown",[r,q])}};this._winOnParkTrans=function(q){if(q.stopPropagation){q.stopPropagation()}var a=m.w[this._idd];if(q.propertyName=="opacity"){m._winCellClearOpacity(this._idd)}if(q.propertyName=="height"&&a.conf.tr_mode=="park"){if(a.conf.tr_mode=="park"){a.win.style[m.conf.tr.prop]="";if(!a.conf.parked){m._winAdjustCell(this._idd);m._callMainEvent("onParkDown",this._idd);if(a.conf.keep_in_vp){m._winAdjustPosition(this._idd,a.conf.x,a.conf.y)}}else{a.hdr.style.zIndex=3;m._callMainEvent("onParkUp",this._idd)}}}a=null};this.unload=function(){this.conf.unloading=true;if(this._dndInitModule){this._dndUnloadModule()}for(var q in this.w){this._winClose(q)}this.w=null;if(this.cm!=null&&typeof(this._unloadContextMenu)=="function"){this._unloadContextMenu()}window.dhx4._eventable(this,"clear");this.attachViewportTo(null);for(var q in this.conf){this.conf[q]=null;delete this.conf[q]}for(var q in this){this[q]=null}m=q=null};window.dhx4._eventable(this);this.attachEvent("_winMouseDown",this._winMouseDownHandler);if(this._dndInitModule){this._dndInitModule()}if(h.wins!=null){for(var n=0;n<h.wins.length;n++){var l=h.wins[n];this.createWindow(l)}}h=null;return this}dhtmlXWindows.prototype.forEachWindow=function(g){for(var c in this.w){g.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(h){var g=[];for(var c in this.w){if((this.w[c].cell.getText()).indexOf(String(h))>=0){g.push(this.w[c])}}return g};dhtmlXWindows.prototype.setSkin=function(g){if(g==this.conf.skin){return}if(this.vp!=null){this.vp.className=String(this.vp.className).replace("dhxwins_vp_"+this.conf.skin," dhxwins_vp_"+g)}for(var c in this.w){this.w[c].cell._resetSizeState();this._winAdjustCell(c);this._winAdjustTitle(c)}this.conf.skin=g};dhtmlXWindows.prototype.getBottommostWindow=function(){return this._getTopBottomWin(false)};dhtmlXWindows.prototype.getTopmostWindow=function(){return this._getTopBottomWin(true)};dhtmlXWindows.prototype._getTopBottomWin=function(l){var h=null;for(var c in this.w){if(this.w[c].conf.visible){var g=false;if(h!=null){g=h.z>this.w[c].win.style.zIndex;if(l){g=!g}}if(h==null||g){h={id:c,z:this.w[c].win.style.zIndex}}}}return(h?h.id:null)};dhtmlXWindows.prototype._winMakeActive=function(g,l){if(g!=null&&l!==true&&this.w[g].conf.actv==true){return}var x=[];var r=[{name:"modal",value:true},{name:"sticked",value:true},{name:"sticked",value:false}];var o={};for(var c=0;c<r.length;c++){var n=r[c].name;var h=r[c].value;var y=[];for(var u in this.w){var v=this.w[u];if(o[u]==null&&v.conf[n]===h&&v.conf.visible==true){if(g!=u){window.dhx4.zim.clear(v.conf.z_id);y.push([u,Number(v.win.style.zIndex)]);o[u]=true}}v=null}y.sort(function(w,q){return(w[1]<q[1]?1:-1)});if(g!=null&&this.w[g].conf[n]===h&&o[g]==null){window.dhx4.zim.clear(this.w[g].conf.z_id);var m=[[g,Number(this.w[g].win.style.zIndex)]];y=m.concat(y);o[g]=true}x=x.concat(y)}for(var c=x.length-1;c>=0;c--){var u=x[c][0];var v=this.w[u];v.win.style.zIndex=window.dhx4.zim.reserve(v.conf.z_id);if(v.conf.modal&&this.mcover!=null){for(var s in this.mcover){this.mcover[s].style.zIndex=v.win.style.zIndex}}this._winAdjustFRMZIndex(u);if(g==null&&c==0){g=u}v.conf.actv=(g==u);v.win.className=(v.conf.actv?"dhxwin_active":"dhxwin_inactive");v=null}if(g!=null&&this.conf.last_active!=g){this._callMainEvent("onFocus",g)}this.conf.last_active=g};dhtmlXWindows.prototype.attachViewportTo=function(g){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){this.vp.className=String(this.vp.className).replace(new RegExp("\\s{1,}dhxwins_vp_"+this.conf.skin),"")}}if(g==null){this.vp=null}else{this.vp=(typeof(g)=="string"?document.getElementById(g):g);this.vp.className+=" dhxwins_vp_"+this.conf.skin;g=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"}};dhtmlXWindows.prototype.setViewport=function(c,m,h,a,l){var g=document.createElement("DIV");g.style.position="absolute";g.style.left=c+"px";g.style.top=m+"px";g.style.width=h+"px";g.style.height=a+"px";if(typeof(l)=="undefined"||l==null){l=document.body}else{if(typeof(l)=="string"){l=document.getElementById(l)}}l.appendChild(g);this.attachViewportTo(g);this.conf.vp_custom=true;l=g=null};dhtmlXWindows.prototype._winSetPosition=function(h,a,g){var c=this.w[h];if(c.conf.maxed){c.conf.lastMX+=(a-c.conf.x);c.conf.lastMY+=(g-c.conf.y)}c.conf.x=a;c.conf.y=g;c.win.style.left=c.conf.x+"px";c.win.style.top=c.conf.y+"px";this._winAdjustFRMPosition(h);c=null};dhtmlXWindows.prototype._winAdjustPosition=function(n,c,m){var g=this.w[n];if(typeof(c)=="undefined"){c=g.conf.x}if(typeof(m)=="undefined"){m=g.conf.y}var a=(g.conf.keep_in_vp?0:-g.conf.w+this.conf.vp_pos_ofs);var l=(g.conf.keep_in_vp?this.vp.clientWidth-g.conf.w:this.vp.clientWidth-this.conf.vp_pos_ofs);if(c<a){c=a}else{if(c>l){c=l}}var h=(g.conf.keep_in_vp?this.vp.clientHeight-g.conf.h:this.vp.clientHeight-this.conf.vp_pos_ofs);if(m<0){m=0}else{if(m>h){m=h}}if(c!=g.conf.x||m!=g.conf.y){this._winSetPosition(n,c,m)}g=null};dhtmlXWindows.prototype._winSetSize=function(o,m,g,n,c){var h=this.w[o];var a=(m!=null?m:h.conf.w);var l=(g!=null?g:h.conf.h);if(this.conf.ofs_w==null){h.win.style.width=a+"px";h.win.style.height=l+"px";this.conf.ofs_w=h.win.offsetWidth-a;this.conf.ofs_h=h.win.offsetHeight-l}if(h.conf.min_w!=null&&a<h.conf.min_w){a=h.conf.min_w}if(h.conf.max_w!=null&&a>h.conf.max_w){a=h.conf.max_w}if(!h.conf.parked&&h.conf.min_h!=null&&l<h.conf.min_h){l=h.conf.min_h}if(h.conf.max_h!=null&&l>h.conf.max_h){l=h.conf.max_h}if(h.conf.keep_in_vp){if(a>this.vp.clientWidth){a=this.vp.clientWidth}if(l>this.vp.clientHeight){l=this.vp.clientHeight}}h.win.style.width=a-this.conf.ofs_w+"px";h.win.style.height=l-this.conf.ofs_h+"px";h.conf.w=a;h.conf.h=l;this._winAdjustFRMSize(o);if(c){this._winAdjustPosition(o,h.conf.x,h.conf.y)}if(!h.conf.parked&&n!=true){this._winAdjustCell(o)}h=null};dhtmlXWindows.prototype._winMinmax=function(l,g){if(typeof(g)!="undefined"&&this.w[l].conf.maxed==g){return}if(this.w[l].conf.allow_resize==false){return}var c=this.w[l];if(c.conf.parked){this._winPark(l,false)}if(c.conf.maxed){this._winSetSize(l,c.conf.lastMW,c.conf.lastMH);this._winAdjustPosition(l,c.conf.lastMX,c.conf.lastMY);c.conf.maxed=false}else{var a=0;var h=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){h=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(l,this.vp.clientWidth,this.vp.clientHeight);this._winAdjustPosition(l,a,h);c.conf.maxed=true}c.b.minmax.setCss(c.conf.maxed?"minmaxed":"minmax");if(c.conf.maxed){this._callMainEvent("onMaximize",l)}else{this._callMainEvent("onMinimize",l)}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(g,a){if(this.w[g].conf.allow_park==false){return}if(this.w[g].conf.header==false){return}var c=this.w[g];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(g,"open",a);this._winSetSize(g,c.conf.w,c.conf.lastPH,(a==true&&this.conf.tr.prop!==false));if(!(a==true&&this.conf.tr.prop!==false)){this._callMainEvent("onParkDown",g);if(c.conf.keep_in_vp){this._winAdjustPosition(g,c.conf.x,c.conf.y)}}}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(g,"close",a);this._winSetSize(g,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",g)}}c=null};dhtmlXWindows.prototype._winCellSetOpacity=function(n,m,g,l){var c=this.w[n].cell;for(var h in c.conf.idx){if({pr1:true,pr2:true}[h]!=true){if(g==true&&this.conf.tr.prop!=false){c.cell.childNodes[c.conf.idx[h]].style[this.conf.tr.prop]=this.conf.tr["op_"+m]}c.cell.childNodes[c.conf.idx[h]].style.opacity=this.conf.tr["op_v_"+m]}}c=null};dhtmlXWindows.prototype._winCellClearOpacity=function(h){var c=this.w[h].cell;for(var g in c.conf.idx){if({pr1:true,pr2:true}[g]!=true){if(this.conf.tr.prop!=false){c.cell.childNodes[c.conf.idx[g]].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(h){if(this._callMainEvent("onClose",h)!==true&&this.conf.unloading!=true){return}var g=this.w[h];if(g.conf.fs_mode){g.cell.setToFullScreen(false)}if(g.conf.modal){this._winSetModal(h,false)}window.dhx4.zim.clear(g.conf.z_id);if(this.cm!=null&&this.cm.icon[h]!=null){this._detachContextMenu("icon",h,null)}if(typeof(window.addEventListener)=="function"){g.win.removeEventListener("mousedown",this._winOnMouseDown,false);if(this.conf.dblclick_ev){g.win.removeEventListener("dblclick",this._winOnMouseDown,false)}}else{g.win.detachEvent("onmousedown",this._winOnMouseDown);if(this.conf.dblclick_ev){g.win.attachEvent("ondblclick",this._winOnMouseDown)}}for(var c in g.b){this._winRemoveButton(h,c,true)}g.b=null;g.cell._unload();g.cell=null;g.brd.parentNode.removeChild(g.brd);g.brd=null;if(g.fr_cover!=null){g.fr_cover.parentNode.removeChild(g.fr_cover);g.fr_cover=null}if(g.fr_m_cover!=null){g.fr_m_cover.parentNode.removeChild(g.fr_m_cover);g.fr_m_cover=null}g.hdr._isWinHdr=true;g.hdr.firstChild._isWinIcon=true;g.hdr.onselectstart=null;g.hdr.parentNode.removeChild(g.hdr);g.hdr=null;for(var c in g.conf){g.conf[c]=null;delete g.conf[c]}g.conf=null;g.win._idd=null;g.win._isWindow=null;g.win.parentNode.removeChild(g.win);g.win=null;g=null;this.w[h]=null;delete this.w[h];if(!this.conf.unloading){this._winMakeActive(null,true)}};dhtmlXWindows.prototype._winSetModal=function(n,h,m){if(this.w[n].conf.modal==h){return}if(typeof(m)=="undefined"){m=true}var g=this.w[n];if(h==true&&g.conf.modal==false){if(this.conf.last_modal!=null){this._winSetModal(this.conf.last_modal,false,false)}if(this.mcover==null){var l=document.createElement("DIV");l.className="dhxwins_mcover";this.vp.insertBefore(l,g.fr_m_cover||g.win);this.mcover={d:l};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,l)}l=null}else{if(this.mcover.d.nextSibling!=(g.fr_m_cover||g.win)){this.vp.insertBefore(this.mcover.d,g.fr_m_cover||g.win);if(this.mcover.f!=null){this.vp.insertBefore(this.mcover.f,this.mcover.d)}}}g.conf.modal=true;this.conf.last_modal=n;this._winMakeActive(n,true)}else{if(h==false&&g.conf.modal==true){g.conf.modal=false;this.conf.last_modal=null;if(m&&this.mcover!=null){for(var c in this.mcover){this.vp.removeChild(this.mcover[c]);this.mcover[c]=null}this.mcover=null}}}g=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){this.conf.button_last=null;if(this._winButtonClick(c.id,c.button_name,g)!==true){return}}}}if((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"){this._winMakeActive(c.id)}};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 r=this.w[c];var q=1;var o=(r.conf.header?r.hdr.offsetHeight:1);var h=r.win.clientWidth-2;var s=r.win.clientHeight-o-1;r.brd.style.left=q+"px";r.brd.style.top=o+"px";if(r.conf.brd==null){r.brd.style.width=h+"px";r.brd.style.height=s+"px";r.conf.brd={w:h-r.brd.offsetWidth,h:s-r.brd.offsetHeight}}r.brd.style.width=h+r.conf.brd.w+"px";r.brd.style.height=s+r.conf.brd.h+"px";var g=5;var a=1+g;var n=(r.conf.header?o:o+g);var l=r.brd.clientWidth;var m=r.brd.clientHeight;r.cell._setSize(a,n,l,m);r.fr_cover.style.left=a+"px";r.fr_cover.style.top=n+"px";r.fr_cover.style.width=l+"px";r.fr_cover.style.height=m+"px";r=null};dhtmlXWindows.prototype._winAdjustTitle=function(h){var a=this.w[h].hdr.childNodes[0];var g=this.w[h].hdr.childNodes[1];var c=this.w[h].hdr.childNodes[2];g.style.paddingLeft=a.offsetWidth+12+"px";g.style.paddingRight=c.offsetWidth+10+"px";g=c=a=null};dhtmlXWindows.prototype._callMainEvent=function(c,h){var a=this.w[h];if(a.cell.checkEvent(c)){var g=a.cell._callMainEvent(c,[a.cell])}else{var g=this.callEvent(c,[a.cell])}a=null;return g};dhtmlXWindows.prototype._winInitFRM=function(g){if(this.conf.fr_cover!=true){return}var a=this.w[g];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(l,h){dhtmlXCellObject.apply(this,[l,"_wins"]);this.wins=h;this.cell._winId=l;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;g=null});this.attachEvent("_onContentLoaded",function(){this.wins._callMainEvent("onContentLoaded",this._idd)});this.attachEvent("_onContentMouseDown",function(m,a){this.wins.callEvent("_winMouseDown",[a,{id:m,mode:"win"}])});this._callMainEvent=function(m,a){return this.callEvent(m,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 g=this;this.cell.attachEvent("_setCellSize",function(a,o){var m=g.wins.w[this._winId].conf.w-g.conf.size.w;var n=g.wins.w[this._winId].conf.h-g.conf.size.h;g.setDimension(a+m,o+n)});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(g,a){var c=this.wins.w[this._idd];if(c.conf.parked){this.wins._winPark(this._idd,false)}if(c.conf.maxed){if(g!=null){c.conf.lastMW=g}if(a!=null){c.conf.lastMH=a}this.wins._winMinmax(this._idd)}else{this.wins._winSetSize(this._idd,g,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(g,a){var c=this.wins.w[this._idd];c.conf.min_w=g;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(g,a){var c=this.wins.w[this._idd];c.conf.max_w=g;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 g=this.wins.vp;var c=this.wins.w[this._idd];var a=Math.round((g.clientWidth-c.conf.w)/2);var h=Math.round((g.clientHeight-c.conf.h)/2);this.wins._winSetPosition(this._idd,a,h);g=c=null};dhtmlXWindowsCell.prototype.centerOnScreen=function(){var c=this.wins.w[this._idd];var m=window.dhx4.screenDim();var l=window.dhx4.absLeft(this.wins.vp);var h=window.dhx4.absTop(this.wins.vp);var g=this.wins.vp.parentNode;while(g!=null){if(g.scrollLeft){l=l-g.scrollLeft}if(g.scrollTop){h=h-g.scrollTop}g=g.parentNode}var a=Math.round((m.right-m.left-c.conf.w)/2);var n=Math.round((m.bottom-m.top-c.conf.h)/2);this.wins._winAdjustPosition(this._idd,a-l,n-h);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 g={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<g.z){g.id=c;g.z=this.wins.w[c].win.style.zIndex}}return(g.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(o,m,g){var a=new dhtmlXWindowsButton(this.wins,this._idd,o,g,true);var l=null;var c=this.wins.w[this._idd].hdr.lastChild;if(isNaN(m)){m=0}else{if(m<0){m=0}}if(c.childNodes[m]!=null){l=c.childNodes[m]}if(l!=null){c.insertBefore(a.button,l)}else{c.appendChild(a.button)}this.wins.w[this._idd].b[o]=a;a=l=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(l,c,a,h,g){this.conf={wins:l,winId:c,name:a,enabled:true,visible:true,custom:true};this.button=document.createElement("DIV");this.button._buttonName=a;this.button.title=h;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(n){this.conf.css=n;var m=(this.conf.enabled?"":"_dis");this.button.className="dhxwin_button"+m+" dhxwin_button_"+this.conf.css+m};this._doOnClick=function(m){return this.callEvent("onClick",[this.conf.wins.w[this.conf.winId].cell,this])};this.unload=function(m){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(m!=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(g,a,c){if(!this.w[g].b[a].isEnabled()){return true}if(this.w[g].b[a]._doOnClick()!==true){return}if(a=="help"){this._callMainEvent("onHelp",g)}if(a=="park"){this._winPark(g,true)}if(a=="minmax"){this._winMinmax(g)}if(a=="stick"){this._winStick(g);return false}if(a=="close"){this._winClose(g);return false}return true};dhtmlXWindows.prototype._winRemoveButton=function(g,a,c){this.w[g].b[a].unload(c);this.w[g].b[a]=null;delete this.w[g].b[a]};dhtmlXWindows.prototype._dndInitModule=function(){var a=this;this._dndOnMouseDown=function(h,l){if(a.conf.dblclick_active){return}if(h.preventDefault){h.preventDefault()}else{h.returnValue=false}a.conf.dnd={id:l,x:h.clientX,y:h.clientY,ready:true,css:false,tr:null,mode:"def",moved:false};if(a.w[l].conf.keep_in_vp){a.conf.dnd.minX=0;a.conf.dnd.maxX=a.vp.clientWidth-a.w[l].conf.w;a.conf.dnd.minY=0;a.conf.dnd.maxY=a.vp.clientHeight-a.w[l].conf.h}else{a.conf.dnd.minX=-a.w[l].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[l].win.style[a.conf.dnd.tr]="translate(0px,0px)"}a._dndInitEvents()};this._dndOnMouseMove=function(l){l=l||event;if(l.preventDefault){l.preventDefault()}else{l.returnValue=false}var h=a.conf.dnd;var g=a.w[h.id];if(!h.css){g.win.className+=" dhxwin_dnd";g.fr_cover.className+=" dhxwin_fr_cover_dnd";a.vp.className+=" dhxwins_vp_dnd";h.css=true}var c=l.clientX-h.x;var m=l.clientY-h.y;h.newX=g.conf.x+c;h.newY=g.conf.y+m;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);m=h.newY-g.conf.y;g.win.style[h.tr]="translate("+c+"px,"+m+"px)"}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=l.clientX}if(h.newY<h.minY||h.newY>h.maxY){h.newY=Math.min(Math.max(h.newY,h.minY),h.maxY)}else{h.y=l.clientY}a._winSetPosition(h.id,h.newX,h.newY)}h.moved=true;g=h=null};this._dndOnMouseUp=function(){if(a.conf.dnd!=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(g.css){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,"");a.vp.className=String(a.vp.className).replace(/\s{0,}dhxwins_vp_dnd/gi,"")}a._dndUnloadEvents();if(g.moved){a._callMainEvent("onMoveFinish",g.id)}c=g=a.conf.dnd=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.conf.dnd_evid=this.attachEvent("_winMouseDown",function(g,c){if(g.button>=2){return}if(!(c.mode=="hdr"&&g.type=="mousedown"&&this.w[c.id].conf.allow_move==true)){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)};this._rOnCellMouseMove=function(n){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 l=a.wins.w[a._idd].brd;if(l.style.cursor!="default"){l.style.cursor="default"}l=null;return}n=n||event;var v=a.wins.w[a._idd].brd;var g=a.conf.resize;var q=(a.wins.w[a._idd].conf.header==false);var s=n.clientX;var o=n.clientY;var h=window.dhx4.absLeft(v);var u=window.dhx4.absTop(v);var m="";if(s<=h+g.b_width){m="w"}else{if(s>=h+v.offsetWidth-g.b_width){m="e"}}if(o>=u+v.offsetHeight-g.b_width){m="s"+m}else{if(q&&o<=u+g.b_width){m="n"+m}}if(m==""){m=false}if(g.mode!=m){g.mode=m;if(m==false){v.style.cursor="default"}else{v.style.cursor=m+"-resize"}}v=g=null};this._rOnCellMouseDown=function(m){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(m.preventDefault){m.preventDefault()}else{m.returnValue=false}var g=a.wins.w[a._idd];var l=a.conf.resize;a.wins.conf.resize_actv=true;l.min_w=g.conf.min_w;l.min_h=g.conf.min_h;l.max_w=g.conf.max_w||+Infinity;l.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);l.min_w=Math.max(h.w,l.min_w);l.min_h=Math.max(h.h,l.min_h)}l.vp_l=a.wins.conf.vp_pos_ofs;l.vp_r=a.wins.vp.clientWidth-a.wins.conf.vp_pos_ofs;l.vp_b=a.wins.vp.clientHeight-a.wins.conf.vp_pos_ofs;l.x=m.clientX;l.y=m.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)}l.resized=false;l.vp_cursor=a.wins.vp.style.cursor;a.wins.vp.style.cursor=l.mode+"-resize";g=l=null};this._rOnWinMouseMove=function(m){m=m||event;var h=a.wins.w[a._idd];var l=a.conf.resize;if(!l.resized){h.fr_cover.className+=" dhxwin_fr_cover_resize";l.resized=true}var g=m.clientX-l.x;var n=m.clientY-l.y;if(l.mode.indexOf("e")>=0){l.rw=Math.min(Math.max(h.conf.w+g,l.min_w),l.max_w);l.rx=null;if(h.conf.x+l.rw<l.vp_l){l.rw=l.vp_l-h.conf.x}else{if(h.conf.x+l.rw>a.wins.vp.clientWidth){l.rw=a.wins.vp.clientWidth-h.conf.x}}}else{if(l.mode.indexOf("w")>=0){l.rw=Math.min(Math.max(h.conf.w-g,l.min_w),l.max_w);l.rx=h.conf.x+h.conf.w-l.rw;if(l.rx<0){l.rw=l.rw+l.rx;l.rx=0}else{if(l.rx>l.vp_r){l.rw=l.rw-l.vp_r;l.rx=l.vp_r}}}}if(l.mode.indexOf("s")>=0){l.rh=Math.min(Math.max(h.conf.h+n,l.min_h),l.max_h);l.ry=null;if(h.conf.y+l.rh>a.wins.vp.clientHeight){l.rh=a.wins.vp.clientHeight-h.conf.y}}else{if(l.mode.indexOf("n")>=0){l.rh=Math.min(Math.max(h.conf.h-n,l.min_h),l.max_h);l.ry=h.conf.y+h.conf.h-l.rh;if(l.ry<0){l.rh=l.rh+l.ry;l.ry=0}else{if(l.ry>l.vp_b){l.rh=l.rh-l.vp_b;l.ry=l.vp_b}}}}a._rAdjustSizer();h=l=null};this._rOnWinMouseUp=function(){var h=a.conf.resize;var g=a.wins.w[a._idd];a.wins.conf.resize_actv=false;a.wins.vp.style.cursor=h.vp_cursor;g.fr_cover.className=String(g.fr_cover.className).replace(/\s{0,}dhxwin_fr_cover_resize/gi,"");if(h.resized){a.wins._winSetSize(a._idd,h.rw,h.rh);if(h.rx==null){h.rx=g.conf.x}if(h.ry==null){h.ry=g.conf.y}if(h.rx!=g.conf.x||h.ry!=g.conf.y){a.wins._winSetPosition(a._idd,h.rx,h.ry)}}if(h.obj!=null){h.obj.parentNode.removeChild(h.obj);h.obj=null}if(h.objFR!=null){h.objFR.parentNode.removeChild(h.objFR);h.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(h.resized){if(a.dataType=="layout"&&a.dataObj!=null){a.dataObj.callEvent("onResize",[])}a.wins._callMainEvent("onResizeFinish",a._idd)}h.mode="";g=h=null};this._rOnSelectStart=function(g){g=g||event;if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false};this._rInitSizer=function(){var h=a.conf.resize;var g=a.wins.w[a._idd];h.obj=document.createElement("DIV");h.obj.className="dhxwin_resize";h.obj.style.zIndex=g.win.style.zIndex;h.obj.style.cursor=h.mode+"-resize";a.wins.vp.appendChild(h.obj);if(a.wins.conf.fr_cover==true){h.objFR=document.createElement("IFRAME");h.objFR.className="dhxwin_resize_fr_cover";h.objFR.style.zIndex=h.obj.style.zIndex;a.wins.vp.insertBefore(h.objFR,h.obj)}h.rx=g.conf.x;h.ry=g.conf.y;h.rw=g.conf.w;h.rh=g.conf.h;h=null};this._rAdjustSizer=function(){var g=a.conf.resize;if(!g.obj){this._rInitSizer()}g.obj.style.width=g.rw+"px";g.obj.style.height=g.rh+"px";if(g.rx!=null){g.obj.style.left=g.rx+"px"}if(g.ry!=null){g.obj.style.top=g.ry+"px"}if(g.objFR!=null){g.objFR.style.width=g.obj.style.width;g.objFR.style.height=g.obj.style.height;if(g.rx!=null){g.objFR.style.left=g.obj.style.left}if(g.ry!=null){g.objFR.style.top=g.obj.style.top}}g=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)}else{this.wins.w[this._idd].brd.attachEvent("onmousemove",this._rOnCellMouseMove);this.wins.w[this._idd].brd.attachEvent("onmousedown",this._rOnCellMouseDown)}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)}else{this.wins.w[this._idd].brd.detachEvent("onmousemove",this._rOnCellMouseMove);this.wins.w[this._idd].brd.detachEvent("onmousedown",this._rOnCellMouseDown)}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(n,m,g,c){var h=this;var a=false;if(this.cm==null){this.cm={global:null,icon:{},button:{}};a=true}if(m==null){if(this.cm.global!=null){return}}else{if(n=="icon"){if(this.cm.icon[m]!=null){return}}else{if(n=="button"){if(this.cm.button[m]!=null&&this.cm.button[m][g]!=null){return}}}}if(c==null){c={}}c.parent=null;c.context=true;var l=new dhtmlXMenuObject(c);l.setAutoHideMode(false);l.attachEvent("onShow",function(){this.conf.wins_menu_open=true});l.attachEvent("onHide",function(){this.conf.wins_menu_open=false;h.conf.opened_menu=null});if(m==null){this.cm.global=l}else{if(n=="icon"){this.cm.icon[m]=l}else{if(n=="button"){if(this.cm.button[m]==null){this.cm.button[m]={}}this.cm.button[m][g]=l}}}if(a){this._showContextMenu=function(s,r){if(s.button>=2){return}if(r.mode=="icon"&&r.id!=null&&r.press_type=="mousedown"){var u=this.cm.icon[r.id]||this.cm.global;if(u==null){return}s.cancelBubble=true;var q=this.w[r.id].hdr.firstChild;if(u.conf.wins_menu_open&&this.conf.opened_menu==r.id){u.hideContextMenu()}else{this._hideContextMenu();u.showContextMenu(window.dhx4.absLeft(q),window.dhx4.absTop(q)+q.offsetHeight);this.conf.opened_menu=r.id}u=q=null}if(r.mode=="button"&&r.id!=null&&r.press_type=="mousedown"){if(this.cm.button[r.id]==null||this.cm.button[r.id][r.button_name]==null){return}s.cancelBubble=true;this.conf.button_last=null;var u=this.cm.button[r.id][r.button_name];var o=this.w[r.id].b[r.button_name].button;if(u.conf.wins_menu_open&&this.conf.opened_menu==r.id){u.hideContextMenu()}else{this._hideContextMenu();u.showContextMenu(window.dhx4.absLeft(o),window.dhx4.absTop(o)+o.offsetHeight);this.conf.opened_menu=r.id}u=o=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 q=true;while(s!=null&&q==true){if(s.className!=null&&s.className.search(/SubLevelArea_Polygon/)>=0){q=false}else{s=s.parentNode}}}if(q||u==null){if(h.cm.global!=null){h.cm.global.hideContextMenu()}for(var r in h.cm.icon){if(h.cm.icon[r]!=null){h.cm.icon[r].hideContextMenu()}}for(var r in h.cm.button){for(var o in h.cm.button[r]){if(h.cm.button[r][o]!=null){h.cm.button[r][o].hideContextMenu()}}}}};this._detachContextMenu=function(r,q,o){if(this.cm==null){return}if(q==null){if(this.cm.global!=null){this.cm.global.unload();this.cm.global=null}}else{if(r=="icon"){if(this.cm.icon[q]!=null){this.cm.icon[q].unload();this.cm.icon[q]=null}}else{if(r=="button"){if(this.cm.button[q]!=null&&this.cm.button[q][o]!=null){this.cm.button[q][o].unload();this.cm.button[q][o]=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)}h=null}}return l};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.version="3.0";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(g,c,a){dhx.assert(g,"Invalid mixing target");dhx.assert(c,"Invalid mixing source");if(g._dhx_proto_wait){dhx.PowerArray.insertAt.call(g._dhx_proto_wait,c,1);return g}for(var h in c){if(!g[h]||a){g[h]=c[h]}}if(c.defaults){dhx.extend(g.defaults,c.defaults)}if(c.$init){c.$init.call(g)}return g};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 g in a){if(a[g]&&typeof a[g]=="object"&&!dhx.isDate(a[g])){c[g]=(dhx.isArray(a[g])?[]:{});dhx.copy(c[g],a[g])}else{c[g]=a[g]}}return c};dhx.single=function(g){var a=null;var c=function(h){if(!a){a=new g({})}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 g=arguments;var a=g[0].name;var c=function(l){if(!c){return dhx.ui[a].prototype}var n=c._dhx_proto_wait;if(n){var m=[n[0]];for(var h=1;h<n.length;h++){m[h]=n[h];if(m[h]._dhx_proto_wait){m[h]=m[h].call(dhx,m[h].name)}if(m[h].prototype&&m[h].prototype.name){dhx.ui[m[h].prototype.name]=m[h]}}dhx.ui[a]=dhx.proto.apply(dhx,m);if(c._dhx_type_wait){for(var h=0;h<c._dhx_type_wait.length;h++){dhx.Type(dhx.ui[a],c._dhx_type_wait[h])}}c=n=null}if(this!=dhx){return new dhx.ui[a](l)}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 m=arguments;var l=m[0];var c=!!l.$init;var o=[];dhx.assert(l,"Invalid mixing target");for(var h=m.length-1;h>0;h--){dhx.assert(m[h],"Invalid mixing source");if(typeof m[h]=="function"){m[h]=m[h].prototype}if(m[h].$init){o.push(m[h].$init)}if(m[h].defaults){var g=m[h].defaults;if(!l.defaults){l.defaults={}}for(var a in g){if(dhx.isUndefined(l.defaults[a])){l.defaults[a]=g[a]}}}if(m[h].type&&l.type){for(var a in m[h].type){if(!l.type[a]){l.type[a]=m[h].type[a]}}}for(var n in m[h]){if(!l[n]){l[n]=m[h][n]}}}if(c){o.push(l.$init)}l.$init=function(){for(var r=0;r<o.length;r++){o[r].apply(this,arguments)}};var q=function(r){this.$ready=[];dhx.assert(this.$init,"object without init method");this.$init(r);if(this._parseSettings){this._parseSettings(r,this.defaults)}for(var s=0;s<this.$ready.length;s++){this.$ready[s].call(this)}};q.prototype=l;l=m=null;return q};dhx.bind=function(c,a){return function(){return c.apply(a,arguments)}};dhx.require=function(c,o,n){if(typeof c!="string"){var m=c.length||0;var l=o;if(!m){for(var a in c){m++}o=function(){m--;if(m===0){l.apply(this,arguments)}};for(var a in c){dhx.require(a,o,n)}}else{o=function(){if(m){m--;dhx.require(c[c.length-m-1],o,n)}else{return l.apply(this,arguments)}};o()}return}if(dhx._modules[c]!==true){if(c.substr(-4)==".css"){var h=dhx.html.create("LINK",{type:"text/css",rel:"stylesheet",href:dhx.codebase+c});document.head.appendChild(h);if(o){o.call(n||window)}return}var g=arguments[4];if(!o){dhx.exec(dhx.ajax().sync().get(dhx.codebase+c).responseText);dhx._modules[c]=true}else{if(!dhx._modules[c]){dhx._modules[c]=[[o,n]];dhx.ajax(dhx.codebase+c,function(s){dhx.exec(s);var r=dhx._modules[c];dhx._modules[c]=true;for(var q=0;q<r.length;q++){r[q][0].call(r[q][1]||window,!q)}})}else{dhx._modules[c].push([o,n])}}}};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 g=c.apply(this,arguments);a.apply(this,arguments);return g}};dhx.isUndefined=function(c){return typeof c=="undefined"};dhx.delay=function(h,c,g,a){return window.setTimeout(function(){var l=h.apply(c,(g||[]));h=c=g=null;return l},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(h,g,a,c){h=dhx.toNode(h);var l=dhx.uid();if(c){a=dhx.bind(a,c)}dhx._events[l]=[h,g,a];if(h.addEventListener){h.addEventListener(g,a,false)}else{if(h.attachEvent){h.attachEvent("on"+g,a)}}return l};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,g,a){if(arguments.length==1){g=c;c="log"}if(window.console&&console.log){c=c.toLowerCase();if(window.console[c]){window.console[c](g||"unknown error")}else{window.console.log(c+": "+g)}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 g="_start_time_log"+a;if(!dhx[g]){dhx[g]=new Date();dhx.log("Info","Timing start ["+a+"]")}else{var c=new Date();dhx.log("Info","Timing end ["+a+"]:"+(c.valueOf()-dhx[g].valueOf())/1000+"s");dhx[g]=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(g,l){if(this._evs_events._block){return true}g=g.toLowerCase();var h=this._evs_events[g.toLowerCase()];var a=true;if(dhx.debug){dhx.log("info","["+this.name+"] event:"+g,l)}if(h){for(var c=0;c<h.length;c++){if(h[c].apply(this,(l||[]))===false){a=false}}}if(this._evs_map[g]&&!this._evs_map[g].callEvent(g,l)){a=false}return a},attachEvent:function(c,a,h){dhx.assert(a,"Invalid event handler for "+c);c=c.toLowerCase();h=h||dhx.uid();a=dhx.toFunctor(a);var g=this._evs_events[c]||dhx.toArray();g.push(a);this._evs_events[c]=g;this._evs_handlers[h]={f:a,t:c};return h},detachEvent:function(h){if(!this._evs_handlers[h]){return}var c=this._evs_handlers[h].t;var a=this._evs_handlers[h].f;var g=this._evs_events[c];g.remove(a);delete this._evs_handlers[h]},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,g){if(!g&&g!==0){this.push(c)}else{var a=this.splice(g,(this.length-g));this[g]=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,g){for(var c=0;c<this.length;c++){a.call((g||this),this[c])}},map:function(a,g){for(var c=0;c<this.length;c++){this[c]=a.call((g||this),this[c])}return this},filter:function(a,g){for(var c=0;c<this.length;c++){if(!a.call((g||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 g={};g.names=["transform","transition"];g.transform=["transform","WebkitTransform","MozTransform","OTransform","msTransform"];g.transition=["transition","WebkitTransition","MozTransition","OTransition","msTransition"];var n=document.createElement("DIV");for(var l=0;l<g.names.length;l++){var h=g[g.names[l]];for(var c=0;c<h.length;c++){if(typeof n.style[h[c]]!="undefined"){dhx.env[g.names[l]]=h[c];break}}}n.style[dhx.env.transform]="translate3d(0,0,0)";dhx.env.translate=(n.style[dhx.env.transform])?"translate3d":"translate";var m="";var a=false;if(dhx.env.isOpera){m="-o-";a="O"}if(dhx.env.isFF){m="-Moz-"}if(dhx.env.isWebKit){m="-webkit-"}if(dhx.env.isIE){m="-ms-"}dhx.env.transformCSSPrefix=m;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(g){var h="";for(var c in g){h+=c+":"+g[c]+";"}var a=this._style_cache[h];if(!a){a="s"+dhx.uid();this.addStyle("."+a+"{"+h+"}");this._style_cache[h]=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,g){a=a||{};var h=document.createElement(c);for(var l in a){h.setAttribute(l,a[l])}if(a.style){h.style.cssText=a.style}if(a["class"]){h.className=a["class"]}if(g){h.innerHTML=g}return h},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,g,a){if(!c){return}if(g&&g.parentNode){g.parentNode.insertBefore(c,g)}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(h){if(h.getBoundingClientRect){var n=h.getBoundingClientRect();var o=document.body;var c=document.documentElement;var a=window.pageYOffset||c.scrollTop||o.scrollTop;var l=window.pageXOffset||c.scrollLeft||o.scrollLeft;var m=c.clientTop||o.clientTop||0;var q=c.clientLeft||o.clientLeft||0;var r=n.top+a-m;var g=n.left+l-q;return{y:Math.round(r),x:Math.round(g)}}else{var r=0,g=0;while(h){r=r+parseInt(h.offsetTop,10);g=g+parseInt(h.offsetLeft,10);h=h.offsetParent}return{y:r,x:g}}},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(){dhx.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){dhx.callEvent("onClick",[a||event])})});(function(){var g={};var c=new RegExp("(\\r\\n|\\n)","g");var a=new RegExp('(\\")',"g");dhx.Template=function(l){if(typeof l=="function"){return l}if(g[l]){return g[l]}l=(l||"").toString();if(l.indexOf("->")!=-1){l=l.split("->");switch(l[0]){case"html":l=dhx.html.getValue(l[1]);break;case"http":l=new dhx.ajax().sync().get(l[1],{uid:dhx.uid()}).responseText;break;default:break}}l=(l||"").toString();l=l.replace(c,"\\n");l=l.replace(a,'\\"');l=l.replace(/\{obj\.([^}?]+)\?([^:]*):([^}]*)\}/g,'"+(obj.$1?"$2":"$3")+"');l=l.replace(/\{common\.([^}\(]*)\}/g,"\"+(common.$1||'')+\"");l=l.replace(/\{common\.([^\}\(]*)\(\)\}/g,'"+(common.$1?common.$1.apply(this, arguments):"")+"');l=l.replace(/\{obj\.([^}]*)\}/g,'"+(obj.$1)+"');l=l.replace("{obj}",'"+obj+"');l=l.replace(/#([^#'";, ]+)#/gi,'"+(obj.$1)+"');try{g[l]=Function("obj","common",'return "'+l+'";')}catch(h){dhx.assert_error("Invalid template:"+l)}return g[l]};dhx.Template.empty=function(){return""};dhx.Template.bind=function(h){return dhx.bind(dhx.Template(h),this)};dhx.Type=function(o,n){if(o._dhx_proto_wait){if(!o._dhx_type_wait){o._dhx_type_wait=[]}o._dhx_type_wait.push(n);return}if(typeof o=="function"){o=o.prototype}if(!o.types){o.types={"default":o.type};o.type.name="default"}var h=n.name;var m=o.type;if(h){m=o.types[h]=dhx.clone(n.baseType?o.types[n.baseType]:o.type)}for(var l in n){if(l.indexOf("template")===0){m[l]=dhx.Template(n[l])}else{m[l]=n[l]}}return h}})();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 g=this[c+"_setter"];return this._settings[c]=g?g.call(this,a,c):a},_parseSeetingColl:function(g){if(g){for(var c in g){this._define(c,g[c])}}},_parseSettings:function(g,a){var c={};if(a){c=dhx.extend(c,a)}if(typeof g=="object"&&!g.tagName){dhx.extend(c,g,true)}this._parseSeetingColl(c)},_mergeSettings:function(a,g){for(var c in g){switch(typeof a[c]){case"object":a[c]=this._mergeSettings((a[c]||{}),g[c]);break;case"undefined":a[c]=g[c];break;default:break}}return a},debug_freid_c_id:true,debug_freid_a_name:true};dhx.ajax=function(a,c,g){if(arguments.length!==0){var h=new dhx.ajax();if(g){h.master=g}return h.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(l,q,n){var c=this.getXHR();if(!dhx.isArray(n)){n=[n]}if(typeof q=="object"){var m=[];for(var g in q){var o=q[g];if(o===null||o===dhx.undefined){o=""}m.push(g+"="+encodeURIComponent(o))}q=m.join("&")}if(q&&this.request==="GET"){l=l+(l.indexOf("?")!=-1?"&":"?")+q;q=null}c.open(this.request,l,!this._sync);if(this.request==="POST"){c.setRequestHeader("Content-type","application/x-www-form-urlencoded")}var h=this;c.onreadystatechange=function(){if(!c.readyState||c.readyState==4){if(dhx.debug_time){dhx.log_full_time("data_loading")}dhx.ajax.count++;if(n&&h){for(var a=0;a<n.length;a++){if(n[a]){var r=(n[a].success||n[a]);if(c.status>=400||(!c.status&&!c.responseText)){r=n[a].error}if(r){r.call((h.master||h),c.responseText,c.responseXML,c)}}}}if(h){h.master=null}n=h=null}};c.send(q||null);return c},get:function(a,g,c){if(arguments.length==2){c=g;g=null}this.request="GET";return this.send(a,g,c)},post:function(a,g,c){this.request="POST";return this.send(a,g,c)},put:function(a,g,c){this.request="PUT";return this.send(a,g,c)},del:function(a,g,c){this.request="DELETE";return this.send(a,g,c)},sync:function(){this._sync=true;return this},bind:function(a){this.master=a;return this}};dhx.send=function(g,c,n,m){var h=dhx.html.create("FORM",{target:(m||"_self"),action:g,method:(n||"POST")},"");for(var a in c){var l=dhx.html.create("INPUT",{type:"hidden",name:a,value:c[a]},"");h.appendChild(l)}h.style.display="none";document.body.appendChild(h);h.submit();document.body.removeChild(h)};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 g=[{success:this._onLoad,error:this._onLoadError}];if(c){if(dhx.isArray(c)){g.push.apply(g,c)}else{g.push(c)}}return dhx.ajax(a,g,this)},parse:function(c,a){this.callEvent("onXLS",[]);this.data.driver=dhx.DataDriver[a||"json"];this._onLoad(c,null)},_onLoad:function(n,c,a,g){var l=this.data.driver;var h=l.toObject(n,c);if(h){var m=l.getRecords(h)[0];this.data=(l?l.getDetails(m):n)}else{this._onLoadError(n,c,a)}this.callEvent("onXLE",[])},_onLoadError:function(g,a,c){this.callEvent("onXLE",[]);this.callEvent("onLoadError",arguments);dhx.callEvent("onLoadError",[g,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(m,h,g){this._ignore_feed=true;var l=dhx.DataDriver.toObject(m,h);if(l){this.setValues(l.getDetails(l.getRecords()[0]))}else{this._onLoadError(m,h,g)}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 g=[];for(var a=0;a<c.childNodes.length;a++){var h=c.childNodes[a];if(h.nodeType==1){g.push(h)}}return g},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(g){var a={};for(var c=0;c<g.length;c++){a["data"+c]=g[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(g){g=this.stringToArray(g);var a={};for(var c=0;c<g.length;c++){a["data"+c]=g[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(g,a){if(this._isValidXML(c)){return c}if(typeof g=="string"){var c=this.fromString(g.replace(/^[\s]+/,""))}else{c=g}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,q){if(window.XPathResult){var g=h;if(h.nodeName.indexOf("document")==-1){h=h.ownerDocument}var n=[];var c=h.evaluate(q,g,null,XPathResult.ANY_TYPE,null);var o=c.iterateNext();while(o){n.push(o);o=c.iterateNext()}return n}else{var m=true;try{if(typeof(h.selectNodes)=="undefined"){m=false}}catch(l){}if(m){return h.selectNodes(q)}else{var a=q.split("/").pop();return h.getElementsByTagName(a)}}},assignTypes:function(c){for(var a in c){var g=c[a];if(typeof g=="object"){this.assignTypes(g)}else{if(typeof g=="string"){if(g===""){continue}if(g=="true"){c[a]=true}else{if(g=="false"){c[a]=false}else{if(g==g*1){c[a]=c[a]*1}}}}}}return c},tagToObject:function(g,q){q=q||{};var l=false;var h=g.attributes;if(h&&h.length){for(var n=0;n<h.length;n++){q[h[n].name]=h[n].value}l=true}var c=g.childNodes;var o={};for(var n=0;n<c.length;n++){if(c[n].nodeType==1){var m=c[n].tagName;if(typeof q[m]!="undefined"){if(!dhx.isArray(q[m])){q[m]=[q[m]]}q[m].push(this.tagToObject(c[n],{}))}else{q[c[n].tagName]=this.tagToObject(c[n],{})}l=true}}if(!l){return this.nodeValue(g)}q.value=q.value||this.nodeValue(g);return q},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(g,a,c){if(this._load_count){return this._load_count=[g,a,c]}else{this._load_count=true}this._feed_last=[g,a];this._feed_common.call(this,g,a,c)},_feed_common:function(h,c,g){var a=this.data.url;if(h<0){h=0}this.load(a+((a.indexOf("?")==-1)?"?":"&")+(this.dataCount()?("continue=true&"):"")+"start="+h+"&count="+c,[this._feed_callback,g])},_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 g=dhx.AtomDataLoader.load.apply(this,arguments);this._ajax_queue.push(g);if(!this.data.url){this.data.url=a}},loadNext:function(g,l,h,c,a){if(this._settings.datathrottle&&!a){if(this._throttle_request){window.clearTimeout(this._throttle_request)}this._throttle_request=dhx.delay(function(){this.loadNext(g,l,h,c,true)},this,0,this._settings.datathrottle);return}if(!l&&l!==0){l=this.dataCount()}this.data.url=this.data.url||c;if(this.callEvent("onDataRequest",[l,g,h,c])&&this.data.url){this.data.feed.call(this,l,g,h)}},_maybe_loading_already:function(c,g){var a=this._feed_last;if(this._load_count&&a){if(a[0]<=g&&(a[1]+a[0]>=c+g)){return true}}return false},_onLoad:function(h,c,a){this._ajax_queue.remove(a);var g=this.data.driver.toObject(h,c);if(g){this.data._parse(g)}else{return this._onLoadError(h,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(n,m){if(this._settings.dataFeed){var l={};if(!n&&!m){return}if(typeof n=="function"){if(!m){return}n(m,l)}else{l={text:m}}this.clearAll();var c=this._settings.dataFeed;var h=[];if(typeof c=="function"){return c.call(this,m,l)}for(var g in l){h.push("dhx_filter["+g+"]="+encodeURIComponent(l[g]))}this.load(c+(c.indexOf("?")<0?"?":"&")+h.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(g,a){this.callEvent("onParse",[this.driver,g]);if(this._filter_order){this.filter()}var h=this.driver.getInfo(g);if(h._key){dhx.securityKey=h._key}if(h._config){this.callEvent("onServerConfig",[h._config])}var c=this.driver.getRecords(g);this._inner_parse(h,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,g]);this.refresh()},_inner_parse:function(c,n){var q=(c._from||0)*1;var m=true;var o=false;if(q===0&&this.order[0]){if(this._removeMissed){o={};for(var h=0;h<this.order.length;h++){o[this.order[h]]=true}}m=false;q=this.order.length}var g=0;for(var h=0;h<n.length;h++){var r=this.driver.getDetails(n[h]);var a=this.id(r);if(!this.pull[a]){this.order[g+q]=a;g++}else{if(m&&this.order[g+q]){g++}}if(this.pull[a]){dhx.extend(this.pull[a],r,true);if(this._scheme_update){this._scheme_update(this.pull[a])}if(o){delete o[a]}}else{this.pull[a]=r;if(this._scheme_init){this._scheme_init(r)}}}if(o){this.blockEvent();for(var l in o){this.remove(l)}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(h,g){if(h){h=this.indexById(h)}else{h=(this.$min||this.startOffset)||0}if(g){g=this.indexById(g)}else{g=Math.min(((this.$max||this.endOffset)||Infinity),(this.dataCount()-1));if(g<0){g=0}}if(h>g){var c=g;g=h;h=c}return this.getIndexRange(h,g)},getIndexRange:function(h,g){g=Math.min((g||Infinity),this.dataCount()-1);var a=dhx.toArray();for(var c=(h||0);c<=g;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,h){dhx.assert(a>=0&&h>=0,"DataStore::move","Incorrect indexes");var g=this.idByIndex(a);var c=this.item(g);this.order.removeAt(a);this.order.insertAt(g,Math.min(this.order.length,h));this.callEvent("onStoreUpdated",[g,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(h,g,a){if(typeof h=="string"){h=$$("source")}if(typeof g!="function"){a=g;g=null}if(dhx.debug_bind){this.debug_sync_master=h;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(h.name!="DataStore"){if(h.data&&h.data.name=="DataStore"){h=h.data}else{this._backbone_source=true}}var c=dhx.bind(function(o,l,n){if(this._backbone_source){if(!o){return}if(o.indexOf("change")===0){if(o=="change"){this.pull[l.id]=l.attributes;this.refresh(l.id);return}else{return}}if(o=="reset"){n=l}this.order=[];this.pull={};this._filter_order=null;for(var m=0;m<n.models.length;m++){var q=n.models[m].id;this.order.push(q);this.pull[q]=n.models[m].attributes}}else{this._filter_order=null;this.order=dhx.toArray([].concat(h.order));this.pull=h.pull}if(g){this.silent(g)}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){h.bind("all",c)}else{this._sync_events=[h.attachEvent("onStoreUpdated",c),h.attachEvent("onIdChange",dhx.bind(function(l,m){this.changeId(l,m)},this))]}c()},add:function(m,c){if(this._scheme){for(var g in this._scheme){if(dhx.isUndefined(m[g])){m[g]=this._scheme[g]}}}if(this._scheme_init){this._scheme_init(m)}var n=this.id(m);var a=arguments[2]||this.order;var l=a.length;if(dhx.isUndefined(c)||c<0){c=l}if(c>l){dhx.log("Warning","DataStore:add","Index of out of bounds");c=Math.min(a.length,c)}if(this.callEvent("onBeforeAdd",[n,m,c])===false){return false}dhx.assert(!this.exists(n),"Not unique ID");this.pull[n]=m;a.insertAt(n,c);if(this._filter_order){var h=this._filter_order.length;if(!c&&this.order.length){h=0}this._filter_order.insertAt(n,h)}this.callEvent("onAfterAdd",[n,c]);this.callEvent("onStoreUpdated",[n,m,"add"]);return n},remove:function(g){if(dhx.isArray(g)){for(var a=0;a<g.length;a++){this.remove(g[a])}return}if(this.callEvent("onBeforeDelete",[g])===false){return false}dhx.assert(this.exists(g),"Not existing ID in remove command"+g);var c=this.item(g);this.order.remove(g);if(this._filter_order){this._filter_order.remove(g)}delete this.pull[g];if(this._marks[g]){delete this._marks[g]}this.callEvent("onAfterDelete",[g]);this.callEvent("onStoreUpdated",[g,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(l,c,a){var g=l;if(typeof l=="function"){g={as:l,dir:c}}else{if(typeof l=="string"){g={by:l.replace(/#/g,""),dir:c,as:a}}}var h=[g.by,g.dir,g.as];if(!this.callEvent("onBeforeSort",h)){return}this._sort_core(g);this.refresh();this.callEvent("onAfterSort",h)},_sort_core:function(a){if(this.order.length){var g=this._sort._create(a);var c=this.getRange(this.first(),this.last());c.sort(g);this.order=c.map(function(h){dhx.assert(h,"Client sorting can't be used with dynamic loading");return this.id(h)},this)}},_filter_reset:function(a){if(this._filter_order&&!a){this.order=this._filter_order;delete this._filter_order}},_filter_core:function(g,l,c){var h=dhx.toArray();for(var a=0;a<this.order.length;a++){var m=this.order[a];if(g(this.item(m),l)){h.push(m)}}if(!c||!this._filter_order){this._filter_order=this.order}this.order=h},filter:function(h,g,a){if(!this.callEvent("onBeforeFilter",[h,g])){return}this._filter_reset(a);if(!this.order.length){return}if(h){var c=h;g=g||"";if(typeof h=="string"){h=h.replace(/#/g,"");if(typeof g=="function"){c=function(l){return g(l[h])}}else{g=g.toString().toLowerCase();c=function(m,l){dhx.assert(m,"Client side filtering can't be used with dynamic loading");return(m[h]||"").toString().toLowerCase().indexOf(l)!=-1}}}this._filter_core(c,g,a,this._filterMode)}this.refresh();this.callEvent("onAfterFilter",[])},each:function(g,c){for(var a=0;a<this.order.length;a++){g.call((c||this),this.item(this.order[a]))}},_methodPush:function(a,c){return function(){return a[c].apply(a,arguments)}},addMark:function(l,h,a,c){var g=this._marks[l]||{};this._marks[l]=g;if(!g[h]){g[h]=c||true;if(a){this.item(l).$css=(this.item(l).$css||"")+" "+h;this.refresh(l)}}return g[h]},removeMark:function(l,h,a){var g=this._marks[l];if(g&&g[h]){delete g[h]}if(a){var c=this.item(l).$css;if(c){this.item(l).$css=c.replace(h,"");this.refresh(l)}}},hasMark:function(g,c){var a=this._marks[g];return(a&&a[c])},provideApi:function(h,c){this.debug_bind_master=h;if(c){this.mapEvent({onbeforesort:h,onaftersort:h,onbeforeadd:h,onafteradd:h,onbeforedelete:h,onafterdelete:h,onbeforeupdate:h})}var g=["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<g.length;a++){h[g[a]]=this._methodPush(this,g[a])}},serialize:function(){var h=this.order;var a=[];for(var c=0;c<h.length;c++){var g=this.pull[h[c]];if(this._scheme_serialize){g=this._scheme_serialize(g);if(g===false){continue}}a.push(g)}return a},_sort:{_create:function(a){return this._dir(a.dir,this._by(a.by,a.as))},_as:{date:function(g,c){g=g-0;c=c-0;return g>c?1:(g<c?-1:0)},"int":function(g,c){g=g*1;c=c*1;return g>c?1:(g<c?-1:0)},string_strict:function(g,c){g=g.toString();c=c.toString();return g>c?1:(g<c?-1:0)},string:function(g,c){if(!c){return 1}if(!g){return -1}g=g.toString().toLowerCase();c=c.toString().toLowerCase();return g>c?1:(g<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(h,g){return a(h[c],g[c])}},_dir:function(c,a){if(c=="asc"||!c){return a}return function(h,g){return a(h,g)*-1}}}};dhx.BaseBind={debug_freid_ignore:{id:true},bind:function(l,h,g){if(typeof l=="string"){l=dhx.ui.get(l)}if(l._initBindSource){l._initBindSource()}if(this._initBindSource){this._initBindSource()}if(!l.getBindData){dhx.extend(l,dhx.BindSource)}if(!this._bind_ready){var m=this.render;if(this.filter){var c=this._settings.id;this.data._on_sync=function(){l._bind_updated[c]=false}}this.render=function(){if(this._in_bind_processing){return}this._in_bind_processing=true;var n=this.callEvent("onBindRequest");this._in_bind_processing=false;return m.apply(this,((n===false)?arguments:[]))};if(this.getValue||this.getValues){this.save=function(){if(this.validate&&!this.validate()){return}l.setBindData((this.getValue?this.getValue:this.getValues()),this._settings.id)}}this._bind_ready=true}l.addBind(this._settings.id,h,g);if(dhx.debug_bind){dhx.log("[bind] "+this.name+"@"+this._settings.id+" <= "+l.name+"@"+l._settings.id)}var a=this._settings.id;this.attachEvent(this.touchable?"onAfterRender":"onBindRequest",function(){return l.getBindData(a)});if(!this._settings.dataFeed&&this.loadNext){this.data.attachEvent("onStoreLoad",function(){l._bind_updated[a]=false})}if(this.isVisible(this._settings.id)){this.refresh()}},_unbind:function(g){g.removeBind(this._settings.id);var c=(this._sync_events||(this.data?this.data._sync_events:0));if(c&&g.data){for(var a=0;a<c.length;a++){g.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 g=this.getCursor();if(g){c=dhx.extend(this.item(g),c,true);this.update(g,c)}}}this.callEvent("onBindUpdate",[c,a]);if(this.save){this.save()}if(a){this._ignore_binds[a]=false}},getBindData:function(a,g){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(g&&c.filter){c.refresh()}}},addBind:function(a,g,c){this._bind_hash[a]=[g,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(g,c,a){if(g.setValue){g.setValue(a?a[c]:a)}else{if(!g.filter){if(!a&&g.clear){g.clear()}else{if(g._check_data_feed(a)){g.setValues(dhx.clone(a))}}}else{g.data.silent(function(){this.filter(c,a)})}}g.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(l,h,g){var c=this.getValue()||"";if(g){c=g(c)}if(l.setValue){l.setValue(c)}else{if(!l.filter){var a={};a[h]=c;if(l._check_data_feed(c)){l.setValues(a)}}else{l.data.silent(function(){this.filter(h,c)})}}l.callEvent("onBindApply",[c,h,this])}};dhx.RecordBind={$init:function(){this.attachEvent("onChange",this._update_binds)},_bind_update:function(g,c){var a=this.getValues()||null;this._bind_update_common(g,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(g,a,c){if(g&&g==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(g,c){var a=this.item(this.getCursor())||this._settings.defaultData||null;this._bind_update_common(g,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 g=new dhx.DataCollection(c);var a="_dp_init";g[a]=function(l){var h="_methods";l[h]=["dummy","dummy","changeId","dummy"];this.data._old_names={add:"inserted",update:"updated","delete":"deleted"};this.data.attachEvent("onStoreUpdated",function(o,m,n){if(o&&!l._silent){l.setUpdated(o,true,this._old_names[n])}});h="_getRowData";l[h]=function(r,m){var o=this.obj.data.item(r);var q={id:r};q[this.action_param]=this.obj.getUserData(r);if(o){for(var n in o){q[n]=o[n]}}return q};this.changeId=function(n,m){this.data.changeId(n,m);l._silent=true;this.data.callEvent("onStoreUpdated",[m,this.item(m),"update"]);l._silent=false};h="_clearUpdateFlag";l[h]=function(){};this._userdata={}};g.dummy=function(){};g.setUserData=function(m,h,l){this._userdata[m]=l};g.getUserData=function(l,h){return this._userdata[l]};g.dataFeed=function(h){this.define("dataFeed",h)};dhx.extend(g,dhx.BindSource);return g};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(g){this.save(g);return true});this.attachEvent("onDataRequest",function(l,h){for(var g=l;g<l+h;g++){if(!a.data.order[g]){a.loadNext(h,l);return false}}});this.save=function(m){if(!m){m=this.getCursor()}var l=this.item(m);var g=a.item(m);for(var h in l){if(h.indexOf("$")!==0){g[h]=l[h]}}a.refresh(m)};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(g,l){if(this._initBindSource){this._initBindSource()}if(g._initBindSource){g._initBindSource()}var h="_process_loading";var c=function(r){a.clearAll();var m=g.data.order;var q=g.data.pull;var n=[];for(var o=0;o<m.length;o++){if(l&&l.copy){n[o]=dhx.clone(q[m[o]])}else{n[o]=q[m[o]]}}a[h](n)};this.save=function(o){if(!o){o=this.getCursor()}var n=this.item(o);var m=g.item(o);if(this.callEvent("onStoreSave",[o,n,m])){dhx.extend(g.item(o),n,true);g.update(o)}};this.item=function(m){return this.getEvent(m)};this._sync_events=[g.data.attachEvent("onStoreUpdated",function(o,m,n){c.call(this)}),g.data.attachEvent("onIdChange",function(n,m){combo.changeOptionId(n,m)})];this.attachEvent("onEventChanged",function(m){this.save(m)});this.attachEvent("onEventAdded",function(n,m){if(!g.data.pull[n]){g.add(m)}});this.attachEvent("onEventDeleted",function(m){if(g.data.pull[m]){g.remove(m)}});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,h){if(this._initBindSource){this._initBindSource()}if(c._initBindSource){c._initBindSource()}var g=this;var a=function(l){g.clearAll();g.addOption(this.serialize())};this._sync_events=[c.data.attachEvent("onStoreUpdated",function(n,l,m){a.call(this)}),c.data.attachEvent("onIdChange",function(m,l){g.changeOptionId(m,l)})];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)};dhtmlxEventable(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)};dhtmlXCombo.prototype.filter=function(c,a){alert("not implemented")}}if(window.dhtmlXGridObject){dhtmlXGridObject.prototype.bind=function(a,g,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,q){if(this._initBindSource){this._initBindSource()}if(a._initBindSource){a._initBindSource()}var c=this;var o="_parsing";var g="_parser";var m="_locator";var h="_process_store_row";var n="_get_store_data";this.save=function(r){if(!r){r=this.getCursor()}dhx.extend(a.item(r),this.item(r),true);a.update(r)};var l=function(x){var u=c.getCursor?c.getCursor():null;var w=0;if(c._legacy_ignore_next){w=c._legacy_ignore_next;c._legacy_ignore_next=false}else{c.clearAll()}var s=this.dataCount();if(s){c[o]=true;for(var r=w;r<s;r++){var v=this.order[r];if(!v){continue}if(w&&c.rowsBuffer[r]){continue}c.rowsBuffer[r]={idd:v,data:this.pull[v]};c.rowsBuffer[r][g]=c[h];c.rowsBuffer[r][m]=c[n];c.rowsAr[v]=this.pull[v]}if(!c.rowsBuffer[s-1]){c.rowsBuffer[s-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[o]=false}if(u&&c.setCursor){c.setCursor(c.rowsAr[u]?u:null)}};this._sync_events=[a.data.attachEvent("onStoreUpdated",function(u,r,s){if(s=="delete"){c.deleteRow(u);c.data.callEvent("onStoreUpdated",[u,r,s])}else{if(s=="update"){c.callEvent("onSyncUpdate",[r,s]);c.update(u,r);c.data.callEvent("onStoreUpdated",[u,r,s])}else{if(s=="add"){c.callEvent("onSyncUpdate",[r,s]);c.add(u,r,this.indexById(u));c.data.callEvent("onStoreUpdated",[u,r,s])}else{l.call(this)}}}}),a.data.attachEvent("onStoreLoad",function(s,r){c.xmlFileUrl=a.data.url;c._legacy_ignore_next=s.getInfo(r)._from}),a.data.attachEvent("onIdChange",function(s,r){c.changeRowId(s,r)})];c.attachEvent("onDynXLS",function(u,s){for(var r=u;r<u+s;r++){if(!a.data.order[r]){a.loadNext(s,u);return false}}c._legacy_ignore_next=u;l.call(a.data)});l.call(a.data);c.attachEvent("onEditCell",function(r,w,u,s,v){if(r==2&&s!=v){this.save(w)}return true});c.attachEvent("onClearAll",function(){var r="_f_rowsBuffer";this[r]=null});if(q&&q.sort){c.attachEvent("onBeforeSorting",function(u,s,r){if(s=="connector"){return false}var v=this.getColumnId(u);a.sort("#"+v+"#",(r=="asc"?"asc":"desc"),(s=="int"?s:"string"));c.setSortImgState(true,u,r);return false})}if(q&&q.filter){c.attachEvent("onFilterStart",function(u,r){var s="_con_f_used";if(c[s]&&c[s].length){return false}a.data.silent(function(){a.filter();for(var v=0;v<u.length;v++){if(r[v]==""){continue}var w=c.getColumnId(u[v]);a.filter("#"+w+"#",r[v],v!=0)}});a.refresh();return false});c.collectValues=function(r){var s=this.getColumnId(r);return(function(w){var u=[];var v={};this.data.each(function(y){var x=y[w];if(!v[x]){v[x]=true;u.push(x)}});u.sort();return u}).call(a,s)}}if(q&&q.select){c.attachEvent("onRowSelect",function(r){a.setCursor(r)})}c.clearAndLoad=function(r){a.clearAll();a.load(r)}};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(g){g.call(this)},this)};dhtmlxEventable(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(g){this.callEvent("onSelectChange",[g])});this.attachEvent("onSelectionCleared",function(){this.callEvent("onSelectChange",[null])});this.attachEvent("onEditCell",function(g,h){if(g===2&&this.getCursor){if(h&&h==this.getCursor()){this._update_binds()}}return true});this.attachEvent("onXLE",function(){this.callEvent("onBindRequest",[])})}};dhtmlXGridObject.prototype.item=function(m){if(m===null){return null}var l=this.getRowById(m);if(!l){return null}var a="_attrs";var h=dhx.copy(l[a]);h.id=m;var g=this.getColumnsNum();for(var c=0;c<g;c++){h[this.columnIds[c]]=this.cells(m,c).getValue()}return h};dhtmlXGridObject.prototype.update=function(m,l){for(var h=0;h<this.columnIds.length;h++){var g=this.columnIds[h];if(!dhx.isUndefined(l[g])){this.cells(m,h).setValue(l[g])}}var c="_attrs";var a=this.getRowById(m)[c];for(var g in l){a[g]=l[g]}this.callEvent("onBindUpdate",[m])};dhtmlXGridObject.prototype.add=function(n,m,g){var a=[];for(var l=0;l<this.columnIds.length;l++){var h=this.columnIds[l];a[l]=dhx.isUndefined(m[h])?"":m[h]}this.addRow(n,a,g);var c="_attrs";this.getRowById(n)[c]=dhx.copy(m)};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(m,l){if(this._settings.dataFeed){var h={};if(!m&&!l){return}if(typeof m=="function"){if(!l){return}m(l,h)}else{if(dhx.isUndefined(m)){h=l}else{h[m]=l}}this.clearAll();var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,l,h)}var g=[];for(var c in h){g.push("dhx_filter["+c+"]="+encodeURIComponent(h[c]))}this.load(a+(a.indexOf("?")<0?"?":"&")+g.join("&"));return false}if(l===null){return this.filterBy(0,function(){return false})}this.filterBy(0,function(n,o){return m.call(this,o,l)})}}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)};dhtmlxEventable(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(m,l){if(this._settings.dataFeed){var h={};if(!m&&!l){return}if(typeof m=="function"){if(!l){return}m(l,h)}else{if(dhx.isUndefined(m)){h=l}else{h[m]=l}}this.deleteChildItems(0);var a=this._settings.dataFeed;if(typeof a=="function"){return a.call(this,[(data.id||data),data])}var g=[];for(var c in h){g.push("dhx_filter["+c+"]="+encodeURIComponent(h[c]))}this.loadXML(a+(a.indexOf("?")<0?"?":"&")+g.join("&"));return false}};dhtmlXTreeObject.prototype.update=function(c,a){if(!dhx.isUndefined(a.text)){this.setItemText(c,a.text)}}}if(!window.dhtmlx){window.dhtmlx={}}(function(){var r=null;function u(A,x){var y=A.callback;s(false);A.box.parentNode.removeChild(A.box);r=A.box=null;if(y){y(x)}}function a(y){if(r){y=y||event;var x=y.which||event.keyCode;if(dhtmlx.message.keyboard){if(x==13||x==32){u(r,true)}if(x==27){u(r,false)}}if(y.preventDefault){y.preventDefault()}return !(y.cancelBubble=true)}}if(document.attachEvent){document.attachEvent("onkeydown",a)}else{document.addEventListener("keydown",a,true)}function s(y){if(!s.cover){s.cover=document.createElement("DIV");s.cover.onkeydown=a;s.cover.className="dhx_modal_cover";document.body.appendChild(s.cover)}var x=document.body.scrollHeight;s.cover.style.display=y?"inline-block":"none"}function m(y,x){return"<div class='dhtmlx_popup_button' result='"+x+"' ><div>"+y+"</div></div>"}function g(y){if(!v.area){v.area=document.createElement("DIV");v.area.className="dhtmlx_message_area";v.area.style[v.position]="5px";document.body.appendChild(v.area)}v.hide(y.id);var x=document.createElement("DIV");x.innerHTML="<div>"+y.text+"</div>";x.className="dhtmlx-info dhtmlx-"+y.type;x.onclick=function(){v.hide(y.id);y=null};if(v.position=="bottom"&&v.area.firstChild){v.area.insertBefore(x,v.area.firstChild)}else{v.area.appendChild(x)}if(y.expire>0){v.timers[y.id]=window.setTimeout(function(){v.hide(y.id)},y.expire)}v.pull[y.id]=x;x=null;return y.id}function n(y,C,F){var E=document.createElement("DIV");E.className=" dhtmlx_modal_box dhtmlx-"+y.type;E.setAttribute("dhxbox",1);var x="";if(y.width){E.style.width=y.width}if(y.height){E.style.height=y.height}if(y.title){x+='<div class="dhtmlx_popup_title">'+y.title+"</div>"}x+='<div class="dhtmlx_popup_text"><span>'+(y.content?"":y.text)+'</span></div><div class="dhtmlx_popup_controls">';if(C){x+=m(y.ok||"OK",true)}if(F){x+=m(y.cancel||"Cancel",false)}if(y.buttons){for(var A=0;A<y.buttons.length;A++){x+=m(y.buttons[A],A)}}x+="</div>";E.innerHTML=x;if(y.content){var D=y.content;if(typeof D=="string"){D=document.getElementById(D)}if(D.style.display=="none"){D.style.display=""}E.childNodes[y.title?1:0].appendChild(D)}E.onclick=function(J){J=J||event;var I=J.target||J.srcElement;if(!I.className){I=I.parentNode}if(I.className=="dhtmlx_popup_button"){var H=I.getAttribute("result");H=(H=="true")||(H=="false"?false:H);u(y,H)}};y.box=E;if(C||F){r=y}return E}function w(C,D,F){var E=C.tagName?C:n(C,D,F);if(!C.hidden){s(true)}document.body.appendChild(E);var A=C.left||Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-E.offsetWidth)/2));var H=C.top||Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-E.offsetHeight)/2));if(C.position=="top"){E.style.top="-3px"}else{E.style.top=H+"px"}E.style.left=A+"px";E.onkeydown=a;E.focus();if(C.hidden){dhtmlx.modalbox.hide(E)}return E}function q(x){return w(x,true,false)}function c(x){return w(x,true,true)}function l(x){return w(x)}function o(y,x,A){if(typeof y!="object"){if(typeof x=="function"){A=x;x=""}y={text:y,type:x,callback:A}}return y}function h(A,y,x,C){if(typeof A!="object"){A={text:A,type:y,expire:x,id:C}}A.id=A.id||v.uid();A.expire=A.expire||v.expire;return A}dhtmlx.alert=function(){var x=o.apply(this,arguments);x.type=x.type||"confirm";return q(x)};dhtmlx.confirm=function(){var x=o.apply(this,arguments);x.type=x.type||"alert";return c(x)};dhtmlx.modalbox=function(){var x=o.apply(this,arguments);x.type=x.type||"alert";return l(x)};dhtmlx.modalbox.hide=function(x){while(x&&x.getAttribute&&!x.getAttribute("dhxbox")){x=x.parentNode}if(x){x.parentNode.removeChild(x);s(false)}};var v=dhtmlx.message=function(C,A,y,D){C=h.apply(this,arguments);C.type=C.type||"info";var x=C.type.split("-")[0];switch(x){case"alert":return q(C);case"confirm":return c(C);case"modalbox":return l(C);default:return g(C);break}};v.seed=(new Date()).valueOf();v.uid=function(){return v.seed++};v.expire=4000;v.keyboard=true;v.position="top";v.pull={};v.timers={};v.hideAll=function(){for(var x in v.pull){v.hide(x)}};v.hide=function(y){var x=v.pull[y];if(x&&x.parentNode){window.setTimeout(function(){x.parentNode.removeChild(x);x=null},2000);x.className+=" hidden";if(v.timers[y]){window.clearTimeout(v.timers[y])}delete v.pull[y]}}})();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.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);dhtmlxEventable(this);return this}dataProcessor.prototype={setTransactionMode:function(c,a){this._tMode=c;this._tSend=a},escape:function(a){if(this._utf){return encodeURIComponent(a)}else{return escape(a)}},enableUTFencoding:function(a){this._utf=convertStringToBoolean(a)},setDataColumns:function(a){this._columns=(typeof a=="string")?a.split(","):a},getSyncState:function(){return !this.updatedRows.length},enableDataNames:function(a){this._endnm=convertStringToBoolean(a)},enablePartialDataSend:function(a){this._changed=convertStringToBoolean(a)},setUpdateMode:function(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(h,g,l){if(this._silent_mode){return}var c=this.findRow(h);l=l||"updated";var a=this.obj.getUserData(h,this.action_param);if(a&&l=="updated"){l=a}if(g){this.set_invalid(h,false);this.updatedRows[c]=h;this.obj.setUserData(h,this.action_param,l);if(this._in_progress[h]){this._in_progress[h]="wait"}}else{if(!this.is_invalid(h)){this.updatedRows.splice(c,1);this.obj.setUserData(h,this.action_param,"")}}if(!g){this._clearUpdateFlag(h)}this.markRow(h,g,l);if(g&&this.autoUpdate){this.sendData(h)}},_clearUpdateFlag:function(a){},markRow:function(m,g,l){var h="";var c=this.is_invalid(m);if(c){h=this.styles[c];g=true}if(this.callEvent("onRowMark",[m,g,l,c])){h=this.styles[g?l:"clear"]+h;this.obj[this._methods[0]](m,h);if(c&&c.details){h+=this.styles[c+"_cell"];for(var a=0;a<c.details.length;a++){if(c.details[a]){this.obj[this._methods[1]](m,a,h)}}}}},getState:function(a){return this.obj.getUserData(a,this.action_param)},is_invalid:function(a){return this._invalid[a]},set_invalid:function(g,c,a){if(a){c={value:c,details:a,toString:function(){return this.value.toString()}}}this._invalid[g]=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.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(h,l){if(typeof h=="string"){return h}if(typeof l!="undefined"){return this.serialize_one(h,"")}else{var a=[];var g=[];for(var c in h){if(h.hasOwnProperty(c)){a.push(this.serialize_one(h[c],c+this.post_delim));g.push(c)}}a.push("ids="+this.escape(g.join(",")));if(dhtmlx.security_key){a.push("dhx_security="+dhtmlx.security_key)}return a.join("&")}},serialize_one:function(h,c){if(typeof h=="string"){return h}var a=[];for(var g in h){if(h.hasOwnProperty(g)){a.push(this.escape((c||"")+g)+"="+this.escape(h[g]))}}return a.join("&")},_sendData:function(c,g){if(!c){return}if(!this.callEvent("onBeforeDataSending",g?[g,this.getState(g),c]:[null,null,c])){return false}if(g){this._in_progress[g]=(new Date()).valueOf()}var a=new dtmlXMLLoaderObject(this.afterUpdate,this,true);var h=this.serverProcessor+(this._user?(getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&")):"");if(this._tMode!="POST"){a.loadXML(h+((h.indexOf("?")!=-1)?"&":"?")+this.serialize(c,g))}else{a.loadXML(h,true,this.serialize(c,g))}this._waitMode++},sendAllData:function(){if(!this.updatedRows.length){return}this.messages=[];var c=true;for(var a=0;a<this.updatedRows.length;a++){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(h){var c={};var a=false;for(var g=0;g<this.updatedRows.length;g++){var l=this.updatedRows[g];if(this._in_progress[l]||this.is_invalid(l)){continue}if(!this.callEvent("onBeforeUpdate",[l,this.getState(l)])){continue}c[l]=this._getRowData(l,l+this.post_delim);a=true;this._in_progress[l]=(new Date()).valueOf()}return a?c:null},setVerificator:function(c,a){this.mandatoryFields[c]=a||(function(g){return(g!="")})},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,n,m,l){var a=c;var h=(m!="error"&&m!="invalid");if(!h){this.set_invalid(c,m)}if((this._uActions)&&(this._uActions[m])&&(!this._uActions[m](l))){return(delete this._in_progress[a])}if(this._in_progress[a]!="wait"){this.setUpdated(c,false)}var g=c;switch(m){case"inserted":case"insert":if(n!=c){this.obj[this._methods[2]](c,n);c=n}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,m,n,l]);break}if(this._in_progress[a]!="wait"){if(h){this.obj.setUserData(c,this.action_param,"")}delete this._in_progress[a]}else{delete this._in_progress[a];this.setUpdated(n,true,this.obj.getUserData(c,this.action_param))}this.callEvent("onAfterUpdate",[g,m,n,l])},afterUpdate:function(o,u,r,q,n){n.getXMLTopNode("data");if(!n.xmlDoc.responseXML){return}var s=n.doXPath("//data/action");for(var l=0;l<s.length;l++){var m=s[l];var h=m.getAttribute("type");var a=m.getAttribute("sid");var g=m.getAttribute("tid");o.afterUpdateCallback(a,g,h,m)}o.finalizeUpdate()},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(this.obj._dp_init){this.obj._dp_init(this)}},setOnAfterUpdate:function(a){this.attachEvent("onAfterUpdate",a)},enableDebug:function(a){},setOnBeforeUpdateHandler:function(a){this.attachEvent("onBeforeDataSending",a)},setAutoUpdate:function(g,c){g=g||2000;this._user=c||(new Date()).valueOf();this._need_update=false;this._loader=null;this._update_busy=false;this.attachEvent("onAfterUpdate",function(h,m,n,l){this.afterAutoUpdate(h,m,n,l)});this.attachEvent("onFullSync",function(){this.fullSync()});var a=this;window.setInterval(function(){a.loadUpdate()},g)},afterAutoUpdate:function(a,g,h,c){if(g=="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}this._loader=this._loader||new dtmlXMLLoaderObject(true);this._loader.async=true;this._loader.waitCall=c;this._loader.loadXML(a)},_v:function(a){if(a.firstChild){return a.firstChild.nodeValue}return""},_a:function(a){var g=[];for(var c=0;c<a.length;c++){g[c]=this._v(a[c])}return g},loadUpdate:function(){var c=this;var a=this.obj.getUserData(0,"version");var g=this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+a].join("&");g=g.replace("editing=true&","");this.getUpdates(g,function(){var m=c._loader.doXPath("//userdata");c.obj.setUserData(0,"version",c._v(m[0]));var h=c._loader.doXPath("//update");if(h.length){c._silent_mode=true;for(var n=0;n<h.length;n++){var l=h[n].getAttribute("status");var q=h[n].getAttribute("id");var o=h[n].getAttribute("parent");switch(l){case"inserted":c.callEvent("insertCallback",[h[n],q,o]);break;case"updated":c.callEvent("updateCallback",[h[n],q,o]);break;case"deleted":c.callEvent("deleteCallback",[h[n],q,o]);break}}c._silent_mode=false}c._update_busy=false;c=null})}};if(window.dhtmlXGridObject&&!dhtmlXGridObject.prototype._init_point_connector){dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point;dhtmlXGridObject.prototype._init_point=function(){this._con_f_used=[].concat(this._con_f_used);dhtmlXGridObject.prototype._con_f_used=[];var a=function(l){l=l.replace(/(\?|\&)connector[^\f]*/g,"");return l+(l.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length>0?"&dhx_no_header=1":"")};var h=function(l){return a.call(this,l)+(this._connector_sorting||"")+(this._connector_filter||"")};var g=function(m,n,l){this._connector_sorting="&dhx_sort["+n+"]="+l;return h.call(this,m)};var c=function(m,l,o){var q=[];for(var n=0;n<l.length;n++){q[n]="dhx_filter["+l[n]+"]="+encodeURIComponent(o[n])}this._connector_filter="&"+q.join("&");return h.call(this,m)};this.attachEvent("onCollectValues",function(l){if(this._con_f_used[l]){if(typeof(this._con_f_used[l])=="object"){return this._con_f_used[l]}else{return false}}return true});this.attachEvent("onDynXLS",function(){this.xmlFileUrl=h.call(this,this.xmlFileUrl);return true});this.attachEvent("onBeforeSorting",function(o,n,m){if(n=="connector"){var l=this;this.clearAndLoad(g.call(this,this.xmlFileUrl,o,m),function(){l.setSortImgState(true,o,m)});return false}return true});this.attachEvent("onFilterStart",function(m,l){var o=this.getSortingState();if(this._con_f_used.length){var n=this;this.clearAndLoad(c.call(this,this.xmlFileUrl,m,l));if(o.length){n.setSortImgState(true,o[0],o[1])}return false}return true});this.attachEvent("onXLE",function(m,l,o,n){if(!n){return}});if(this._init_point_connector){this._init_point_connector()}};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)};dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load;dhtmlXGridObject.prototype.load=function(c,l,h){if(!this._colls_loaded&&this.cellType){var a=[];for(var g=0;g<this.cellType.length;g++){if(this.cellType[g].indexOf("co")==0||this.cellType[g].indexOf("clist")==0||this._con_f_used[g]==2){a.push(g)}}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=this.xmlLoader.doXPath("./coll_options",arguments[0]);for(var n=0;n<s.length;n++){var q=s[n].getAttribute("for");var u=[];var h=null;if(this.cellType[q]=="combo"){h=this.getColumnCombo(q)}else{if(this.cellType[q].indexOf("co")==0){h=this.getCombo(q)}}var m=this.xmlLoader.doXPath("./item",s[n]);var a=[];for(var l=0;l<m.length;l++){var g=m[l].getAttribute("value");if(h){var o=m[l].getAttribute("label")||g;if(h.addOption){a.push([g,o])}else{h.put(g,o)}u[u.length]=o}else{u[u.length]=g}}if(a.length){if(h){h.addOption(a)}}else{if(u.length&&!h){if(this.registerCList){this.registerCList(q*1,u)}}}if(this._con_f_used[q*1]){this._con_f_used[q*1]=u}}this._colls_loaded=true}}}if(window.dataProcessor&&!dataProcessor.prototype.init_original){dataProcessor.prototype.init_original=dataProcessor.prototype.init;dataProcessor.prototype.init=function(a){this.init_original(a);a._dataprocessor=this;this.setTransactionMode("POST",true);this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true"}}dhtmlxError.catchError("LoadXML",function(h,g,l){alert(l[0].responseText)});
\ No newline at end of file diff --git a/samples/dhtmlx/dhtmlxscheduler.css b/samples/dhtmlx/dhtmlxscheduler.css deleted file mode 100644 index cb3a882..0000000 --- a/samples/dhtmlx/dhtmlxscheduler.css +++ /dev/null @@ -1 +0,0 @@ -.dhx_cal_container{background-color:#C2D5FC;font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden;}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48;}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap;}.dhx_cal_navline .dhx_cal_date{font-weight:600;left:210px;}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;width:29px;height:17px;left:50px;cursor:pointer;}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;width:29px;height:17px;left:80px;cursor:pointer;}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;width:75px;height:17px;left:112px;cursor:pointer;text-align:center;text-decoration:underline;}.dhx_cal_tab{width:59px;height:19px;text-align:center;text-decoration:underline;padding-top:2px;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:bold;border:1px dotted #586A7E;border-bottom:0;background-color:#C2D5FC;}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;border-top:1px dotted #8894A3;border-right:1px dotted #8894A3;z-index:2;overflow:hidden;color:#2F3A48;}.dhx_cal_data{border-top:1px dotted #8894A3;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;}.dhx_scale_bar{position:absolute;text-align:center;background-color:#C2D5FC;padding-top:3px;border-left:1px dotted #586A7E;}.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}.dhx_month_head{background-color:#EBEFF4;color:#2F3A48;border-right:1px dotted #586A7E;height:18px;padding-right:5px;padding-top:3px;text-align:right;}.dhx_month_body{border-right:1px dotted #586A7E;border-bottom:1px dotted #586A7E;background-color:#FFF;}.dhx_now .dhx_month_body{background-color:#E2EDFF;}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#E2E3E6;color:#94A6BB;}.dhx_now .dhx_month_head{background-color:#D1DEF4;font-weight:bold;}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff;}.dhx_cal_event .dhx_header,.dhx_cal_event .dhx_title,.dhx_cal_event .dhx_body,.dhx_cal_event .dhx_footer{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt;}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0 1px;cursor:pointer;}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:bold;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer;}.dhx_cal_event .dhx_body,.dhx_cal_event.dhx_cal_select_menu .dhx_body{border-width:0 1px 1px 1px;padding:5px;}.dhx_resize_denied{cursor:default!important;}.dhx_cal_event .dhx_event_resize{cursor:s-resize;}.dhx_cal_event .dhx_footer,.dhx_cal_event .dhx_select_menu_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;color:#887A2E;white-space:nowrap;overflow:hidden;cursor:pointer;}.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_light{background-color:#FFE763;border-radius:5px;font-family:Tahoma;font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}.dhx_ie6 .dhx_mark{background-position:6px -41px;}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}.dhx_cal_ltitle span{white-space:nowrap;}.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;white-space:nowrap;}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}.dhx_cal_lsection{font-size:18px;font-family:Arial;}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;}.dhx_time{font-weight:bold;}.dhx_cal_light .dhx_title{padding-left:10px;}.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{font-family:Tahoma;font-size:8pt;color:#887A2E;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;font-family:Arial;cursor:pointer;}.dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;}.dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_scheduler_agenda .dhx_cal_data{background-image:url(./imgs/databg.png);}.dhx_agenda_area{width:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:187px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}.dhx_year_body{border-left:1px dotted #586A7E;}.dhx_year_week{position:relative;}.dhx_scale_bar_last{border-right:1px dotted #586A7E;}.dhx_year_month{height:18px;padding-top:3px;border:1px dotted #586A7E;text-align:center;vertical-align:middle;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#E2E3E6!important;}.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}.dhx_month_head.dhx_year_event{background-color:#FFE763;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head{cursor:default;}.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}.dhx_mini_calendar .dhx_month_head{cursor:pointer;}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}.dhx_cal_event_line .dhx_event_resize{cursor:w-resize;background:url(./imgs/resize_dots.png) repeat-y;position:absolute;top:0;width:4px;}.dhx_event_resize_start{left:0;}.dhx_event_resize_end{right:0;}.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_cal_light_wide .dhx_combo_box,.dhx_combo_list{width:608px!important;left:10px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}.dhx_cal_header div div{border-left:1px dotted #8894A3;}.dhx_grid_area{width:100%;height:100%;overflow-y:auto;background-color:#FCFEFC;}.dhx_grid_line{height:21px;clear:both;overflow:hidden;}.dhx_grid_line div{float:left;padding:0 2px;text-align:center;line-height:21px;overflow:hidden;}.dhx_grid_area div.dhx_body{height:21px;clear:both;overflow:hidden;margin:0 0 1px 0;border-bottom:1px solid #ECEEF4;}.dhx_grid_area div.dhx_body:nth-child(2n+1){border-bottom-width:0;border-bottom-style:none;}.dhx_grid_area div.dhx_body:nth-child(2n){background-color:#ECEEF4;border-bottom-width:0;border-bottom-style:none;}.dhx_grid_area div.dhx_body div table{height:100%;width:100%;}.dhx_grid_area div.dhx_body div{float:left;margin-right:1px;padding:0 2px;height:100%;text-align:center;line-height:21px;overflow:hidden;}.dhx_grid_v_border{position:absolute;border-right:1px solid #A4BED4;width:1px;height:100%;}.dhx_grid_event_selected{background-color:#9cc1db!important;color:white!important;}.dhx_grid_sort_desc .dhx_grid_view_sort{background-position:0 -55px;}.dhx_grid_sort_asc .dhx_grid_view_sort{background-position:0 -66px;}.dhx_grid_view_sort{width:10px;height:10px;position:absolute;border:none!important;top:5px;background-repeat:no-repeat;background-image:url(./imgs/images.png);}.dhx_marked_timespan{position:absolute;width:100%;}.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}.dhx_time_block_reset{opacity:1;filter:alpha(opacity=100);}.dhx_scheduler_month .dhx_marked_timespan{display:none;}.dhx_now_time{width:100%;border-bottom:2px dotted red;z-index:1;}.dhx_scheduler_month .dhx_now_time{border-bottom:0;border-left:2px dotted red;}.dhx_matrix_now_time{border-left:2px dotted red;z-index:1;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;font-family:Tahoma,Verdana;font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;}.dhtmlx_message_area{position:fixed;right:5px;width:250px;z-index:1000;}.dhtmlx-info{min-width:120px;padding:4px 4px 4px 20px;font-family:Tahoma;z-index:10000;margin:5px;margin-bottom:10px;-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:0;border-width:0;margin:0;overflow:hidden;}.dhtmlx_modal_box{overflow:hidden;display:inline-block;min-width:300px;width:300px;text-align:center;position:fixed;background-color:#fff;background:-webkit-linear-gradient(top,#fff 1%,#d0d0d0 99%);background:-moz-linear-gradient(top,#fff 1%,#d0d0d0 99%);box-shadow:0 0 14px #888;font-family:Tahoma;z-index:20000;border-radius:6px;border:1px solid #fff;}.dhtmlx_popup_title{border-top-left-radius:5px;border-top-right-radius:5px;border-width:0;background-color:#4c4c4c;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAARElEQVR4nH3MMQqAQBQD0dnZBTvvf80tBBEhNh9EFKuERwhz2z3OGDA0EwxI5aelvDq/hkn54+O210dtujjEYXN0XJdc1CE1MA5mcdsAAAAASUVORK5CYII=);}.dhtmlx-info,.dhtmlx_popup_button,.dhtmlx_button{user-select:none;-webkit-user-select:none;-moz-user-select:-moz-none;cursor:pointer;}.dhtmlx_popup_text{overflow:hidden;}.dhtmlx_popup_controls{border-radius:6px;padding:5px;}.dhtmlx_popup_button,.dhtmlx_button{height:30px;line-height:30px;display:inline-block;margin:0 5px;border-radius:6px;color:#FFF;}.dhtmlx_popup_button{min-width:120px;}div.dhx_modal_cover{background-color:#000;cursor:default;filter:alpha(opacity = 20);opacity:.2;position:fixed;z-index:19999;left:0;top:0;width:100%;height:100%;border:none;zoom:1;}.dhtmlx-info img,.dhtmlx_modal_box img{float:left;margin-right:20px;}.dhtmlx-info img{margin-left:-10px;}.dhtmlx-alert-error .dhtmlx_popup_title,.dhtmlx-confirm-error .dhtmlx_popup_title{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAATklEQVR4nIWLuw2AMBBDjVuQiBT2oWbRDATrnB0KQOJoqPzRe3BrHI6dcBASYREKovtK6/6DsDOX+stN+3H1YX9ciRgnYq5EWYhS2dftBIuLT4JyIrPCAAAAAElFTkSuQmCC);}.dhtmlx-alert-error,.dhtmlx-confirm-error{border:1px solid #f00;}.dhtmlx_button,.dhtmlx_popup_button{box-shadow:0 0 4px #888;border:1px solid #838383;}.dhtmlx_button input,.dhtmlx_popup_button div{border:1px solid #FFF;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAIAAABi9+OQAAAAQElEQVR4nE3LMQ7AIAxD0R9TxP3PydalW8xAQJ0i2y/M95ONTOxrlCC7MigdMtz92LxdlKPc/3d7jPqDRgv1xgLuDiwEIl5MZQAAAABJRU5ErkJggg==);color:#000;border-radius:6px;font-size:15px;-moz-box-sizing:content-box;box-sizing:content-box;color:#000;padding:0;margin:0;vertical-align:top;height:28px;line-height:28px;}.dhtmlx_button input:focus,.dhtmlx_button input:active,.dhtmlx_popup_button div:active,.dhtmlx_popup_button div:focus{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAeCAIAAABi9+OQAAAARklEQVR4nE2LMQ6AIADEykUG3Nz9/yf4Ar8g7K4Oeg4KOFxyTVNyqUrbLoMwAgt4+dt0nT0+IP/cbD0ag0JAabm1xkvn0R7oABW07Ic3sQAAAABJRU5ErkJggg==);}.dhtmlx_popup_title{color:#000;height:40px;line-height:40px;font-size:20px;}.dhtmlx_popup_text{margin:15px 15px 5px 15px;font-size:14px;color:#000;min-height:30px;border-radius:6px;}.dhtmlx-info,.dhtmlx-error{font-size:14px;color:#000;box-shadow:0 0 4px #000;margin-bottom:10px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAIAAAArRUU2AAAARElEQVR4nH3MMQqAQBQD0dnZBTvvf80tBBEhNh9EFKuERwhz2z3OGDA0EwxI5aelvDq/hkn54+O210dtujjEYXN0XJdc1CE1MA5mcdsAAAAASUVORK5CYII=);background-color:rgba(0,0,0,0.8);border-radius:5px;border:2px solid #fff;}.dhtmlx-error{color:red;}
\ No newline at end of file diff --git a/samples/dhtmlx/dhtmlxscheduler.js b/samples/dhtmlx/dhtmlxscheduler.js deleted file mode 100644 index 2f43ce3..0000000 --- a/samples/dhtmlx/dhtmlxscheduler.js +++ /dev/null @@ -1,31 +0,0 @@ -if(!window.dhtmlx){dhtmlx=function(B){for(var A in B){dhtmlx[A]=B[A]}return dhtmlx}}dhtmlx.extend_api=function(A,D,C){var B=window[A];if(!B){return }window[A]=function(G){if(G&&typeof G=="object"&&!G.tagName&&!(G instanceof Array)){var F=B.apply(this,(D._init?D._init(G):arguments));for(var E in dhtmlx){if(D[E]){this[D[E]](dhtmlx[E])}}for(var E in G){if(D[E]){this[D[E]](G[E])}else{if(E.indexOf("on")==0){this.attachEvent(E,G[E])}}}}else{var F=B.apply(this,arguments)}if(D._patch){D._patch(this)}return F||this};window[A].prototype=B.prototype;if(C){dhtmlXHeir(window[A].prototype,C)}};dhtmlxAjax={get:function(A,C){var B=new dtmlXMLLoaderObject(true);B.async=(arguments.length<3);B.waitCall=C;B.loadXML(A);return B},post:function(A,C,D){var B=new dtmlXMLLoaderObject(true);B.async=(arguments.length<4);B.waitCall=D;B.loadXML(A,true,C);return B},getSync:function(A){return this.get(A,null,true)},postSync:function(A,B){return this.post(A,B,null,true)}};function dtmlXMLLoaderObject(B,D,C,A){this.xmlDoc="";if(typeof (C)!="undefined"){this.async=C}else{this.async=true}this.onloadAction=B||null;this.mainObject=D||null;this.waitCall=null;this.rSeed=A||false;return this}dtmlXMLLoaderObject.prototype.waitLoadFunction=function(B){var A=true;this.check=function(){if((B)&&(B.onloadAction!=null)){if((!B.xmlDoc.readyState)||(B.xmlDoc.readyState==4)){if(!A){return }A=false;if(typeof B.onloadAction=="function"){B.onloadAction(B.mainObject,null,null,null,B)}if(B.waitCall){B.waitCall.call(this,B);B.waitCall=null}}}};return this.check};dtmlXMLLoaderObject.prototype.getXMLTopNode=function(C,A){if(this.xmlDoc.responseXML){var B=this.xmlDoc.responseXML.getElementsByTagName(C);if(B.length==0&&C.indexOf(":")!=-1){var B=this.xmlDoc.responseXML.getElementsByTagName((C.split(":"))[1])}var E=B[0]}else{var E=this.xmlDoc.documentElement}if(E){this._retry=false;return E}if((_isIE)&&(!this._retry)){var D=this.xmlDoc.responseText;var A=this.xmlDoc;this._retry=true;this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");this.xmlDoc.async=false;this.xmlDoc.loadXML(D);return this.getXMLTopNode(C,A)}dhtmlxError.throwError("LoadXML","Incorrect XML",[(A||this.xmlDoc),this.mainObject]);return document.createElement("DIV")};dtmlXMLLoaderObject.prototype.loadXMLString=function(B){try{var C=new DOMParser();this.xmlDoc=C.parseFromString(B,"text/xml")}catch(A){this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");this.xmlDoc.async=this.async;this.xmlDoc.loadXML(B)}this.onloadAction(this.mainObject,null,null,null,this);if(this.waitCall){this.waitCall();this.waitCall=null}};dtmlXMLLoaderObject.prototype.loadXML=function(C,B,A,D){if(this.rSeed){C+=((C.indexOf("?")!=-1)?"&":"?")+"a_dhx_rSeed="+(new Date()).valueOf()}this.filePath=C;if((!_isIE)&&(window.XMLHttpRequest)){this.xmlDoc=new XMLHttpRequest()}else{this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP")}if(this.async){this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this)}this.xmlDoc.open(B?"POST":"GET",C,this.async);if(D){this.xmlDoc.setRequestHeader("User-Agent","dhtmlxRPC v0.1 ("+navigator.userAgent+")");this.xmlDoc.setRequestHeader("Content-type","text/xml")}else{if(B){this.xmlDoc.setRequestHeader("Content-type","application/x-www-form-urlencoded")}}this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");this.xmlDoc.send(null||A);if(!this.async){(new this.waitLoadFunction(this))()}};dtmlXMLLoaderObject.prototype.destructor=function(){this.onloadAction=null;this.mainObject=null;this.xmlDoc=null;return null};dtmlXMLLoaderObject.prototype.xmlNodeToJSON=function(D){var C={};for(var B=0;B<D.attributes.length;B++){C[D.attributes[B].name]=D.attributes[B].value}C._tagvalue=D.firstChild?D.firstChild.nodeValue:"";for(var B=0;B<D.childNodes.length;B++){var A=D.childNodes[B].tagName;if(A){if(!C[A]){C[A]=[]}C[A].push(this.xmlNodeToJSON(D.childNodes[B]))}}return C};function callerFunction(A,B){this.handler=function(C){if(!C){C=window.event}A(C,B);return true};return this.handler}function getAbsoluteLeft(A){return getOffset(A).left}function getAbsoluteTop(A){return getOffset(A).top}function getOffsetSum(A){var C=0,B=0;while(A){C=C+parseInt(A.offsetTop);B=B+parseInt(A.offsetLeft);A=A.offsetParent}return{top:C,left:B}}function getOffsetRect(D){var G=D.getBoundingClientRect();var H=document.body;var B=document.documentElement;var A=window.pageYOffset||B.scrollTop||H.scrollTop;var E=window.pageXOffset||B.scrollLeft||H.scrollLeft;var F=B.clientTop||H.clientTop||0;var I=B.clientLeft||H.clientLeft||0;var J=G.top+A-F;var C=G.left+E-I;return{top:Math.round(J),left:Math.round(C)}}function getOffset(A){if(A.getBoundingClientRect&&!_isChrome){return getOffsetRect(A)}else{return getOffsetSum(A)}}function convertStringToBoolean(A){if(typeof (A)=="string"){A=A.toLowerCase()}switch(A){case"1":case"true":case"yes":case"y":case 1:case true:return true;break;default:return false}}function getUrlSymbol(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,B){A.onmousedown=this.preCreateDragCopy;A.dragStarter=B;this.addDragLanding(A,B)};dhtmlDragAndDropObject.prototype.addDragLanding=function(A,B){A.dragLanding=B};dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(A){if((A||event)&&(A||event).button==2){return }if(window.dhtmlDragAndDrop.waitDrag){window.dhtmlDragAndDrop.waitDrag=0;document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;return false}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(C){if(!C){C=window.event}dragger=window.dhtmlDragAndDrop;if((new Date()).valueOf()-dragger.downtime<100){return }if(!dragger.dragNode&&dragger.waitDrag){dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode,C);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()}if(dragger.dragNode.parentNode!=window.document.body){var A=dragger.gldragNode;if(dragger.gldragNode.old){A=dragger.gldragNode.old}A.parentNode.removeChild(A);var B=dragger.dragNode.pWindow;if(_isIE){var E=document.createElement("Div");E.innerHTML=dragger.dragNode.outerHTML;dragger.dragNode=E.childNodes[0]}else{dragger.dragNode=dragger.dragNode.cloneNode(true)}dragger.dragNode.pWindow=window;dragger.gldragNode.old=dragger.dragNode;document.body.appendChild(dragger.dragNode);B.dhtmlDragAndDrop.dragNode=dragger.dragNode}dragger.dragNode.style.left=C.clientX+15+(dragger.fx?dragger.fx*(-1):0)+(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";dragger.dragNode.style.top=C.clientY+3+(dragger.fy?dragger.fy*(-1):0)+(document.body.scrollTop||document.documentElement.scrollTop)+"px";if(!C.srcElement){var D=C.target}else{D=C.srcElement}dragger.checkLanding(D,C)};dhtmlDragAndDropObject.prototype.calculateFramePosition=function(E){if(window.name){var C=parent.frames[window.name].frameElement.offsetParent;var D=0;var B=0;while(C){D+=C.offsetLeft;B+=C.offsetTop;C=C.offsetParent}if((parent.dhtmlDragAndDrop)){var A=parent.dhtmlDragAndDrop.calculateFramePosition(1);D+=A.split("_")[0]*1;B+=A.split("_")[1]*1}if(E){return D+"_"+B}else{this.fx=D}this.fy=B}return"0_0"};dhtmlDragAndDropObject.prototype.checkLanding=function(B,A){if((B)&&(B.dragLanding)){if(this.lastLanding){this.lastLanding.dragLanding._dragOut(this.lastLanding)}this.lastLanding=B;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((B)&&(B.tagName!="BODY")){this.checkLanding(B.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(B,C){dragger=window.dhtmlDragAndDrop;if(!C){dragger.stopFrameRoute();var A=dragger.lastLanding;dragger.lastLanding=null;if(A){A.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,A,(_isIE?event.srcElement:B.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(C){if(C){window.dhtmlDragAndDrop.stopDrag(1,1)}for(var A=0;A<window.frames.length;A++){try{if((window.frames[A]!=C)&&(window.frames[A].dhtmlDragAndDrop)){window.frames[A].dhtmlDragAndDrop.stopFrameRoute(window)}}catch(B){}}try{if((parent.dhtmlDragAndDrop)&&(parent!=window)&&(parent!=C)){parent.dhtmlDragAndDrop.stopFrameRoute(window)}}catch(B){}};dhtmlDragAndDropObject.prototype.initFrameRoute=function(C,D){if(C){window.dhtmlDragAndDrop.preCreateDragCopy({});window.dhtmlDragAndDrop.dragStartNode=C.dhtmlDragAndDrop.dragStartNode;window.dhtmlDragAndDrop.dragStartObject=C.dhtmlDragAndDrop.dragStartObject;window.dhtmlDragAndDrop.dragNode=C.dhtmlDragAndDrop.dragNode;window.dhtmlDragAndDrop.gldragNode=C.dhtmlDragAndDrop.dragNode;window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;window.waitDrag=0;if(((!_isIE)&&(D))&&((!_isFF)||(_FFrv<1.8))){window.dhtmlDragAndDrop.calculateFramePosition()}}try{if((parent.dhtmlDragAndDrop)&&(parent!=window)&&(parent!=C)){parent.dhtmlDragAndDrop.initFrameRoute(window)}}catch(B){}for(var A=0;A<window.frames.length;A++){try{if((window.frames[A]!=C)&&(window.frames[A].dhtmlDragAndDrop)){window.frames[A].dhtmlDragAndDrop.initFrameRoute(window,((!C||D)?1:0))}}catch(B){}}};_isFF=false;_isIE=false;_isOpera=false;_isKHTML=false;_isMacOS=false;_isChrome=false;_KHTMLrv=false;_OperaRv=false;_FFrv=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)){var _KHTMLrv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari")+7,5));if(_KHTMLrv>525){_isFF=true;var _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&&document.compatMode!="BackCompat"){_isIE=8}}else{_isFF=true;var _FFrv=parseFloat(navigator.userAgent.split("rv:")[1])}}}dtmlXMLLoaderObject.prototype.doXPath=function(C,E,D,I){if(_isKHTML||(!_isIE&&!window.XPathResult)){return this.doXPathOpera(C,E)}if(_isIE){if(!E){if(!this.xmlDoc.nodeName){E=this.xmlDoc.responseXML}else{E=this.xmlDoc}}if(!E){dhtmlxError.throwError("LoadXML","Incorrect XML",[(E||this.xmlDoc),this.mainObject])}if(D!=null){E.setProperty("SelectionNamespaces","xmlns:xsl='"+D+"'")}if(I=="single"){return E.selectSingleNode(C)}else{return E.selectNodes(C)||new Array(0)}}else{var A=E;if(!E){if(!this.xmlDoc.nodeName){E=this.xmlDoc.responseXML}else{E=this.xmlDoc}}if(!E){dhtmlxError.throwError("LoadXML","Incorrect XML",[(E||this.xmlDoc),this.mainObject])}if(E.nodeName.indexOf("document")!=-1){A=E}else{A=E;E=E.ownerDocument}var G=XPathResult.ANY_TYPE;if(I=="single"){G=XPathResult.FIRST_ORDERED_NODE_TYPE}var F=new Array();var B=E.evaluate(C,A,function(J){return D},G,null);if(G==XPathResult.FIRST_ORDERED_NODE_TYPE){return B.singleNodeValue}var H=B.iterateNext();while(H){F[F.length]=H;H=B.iterateNext()}return F}};function _dhtmlxError(B,A,C){if(!this.catches){this.catches=new Array()}return this}_dhtmlxError.prototype.catchError=function(B,A){this.catches[B]=A};_dhtmlxError.prototype.throwError=function(B,A,C){if(this.catches[B]){return this.catches[B](B,A,C)}if(this.catches.ALL){return this.catches.ALL(B,A,C)}alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]);return null};window.dhtmlxError=new _dhtmlxError();dtmlXMLLoaderObject.prototype.doXPathOpera=function(C,A){var E=C.replace(/[\/]+/gi,"/").split("/");var D=null;var B=1;if(!E.length){return[]}if(E[0]=="."){D=[A]}else{if(E[0]==""){D=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(E[B].replace(/\[[^\]]*\]/g,""));B++}else{return[]}}for(B;B<E.length;B++){D=this._getAllNamedChilds(D,E[B])}if(E[B-1].indexOf("[")!=-1){D=this._filterXPath(D,E[B-1])}return D};dtmlXMLLoaderObject.prototype._filterXPath=function(B,A){var D=new Array();var A=A.replace(/[^\[]*\[\@/g,"").replace(/[\[\]\@]*/g,"");for(var C=0;C<B.length;C++){if(B[C].getAttribute(A)){D[D.length]=B[C]}}return D};dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(B,A){var E=new Array();if(_isKHTML){A=A.toUpperCase()}for(var D=0;D<B.length;D++){for(var C=0;C<B[D].childNodes.length;C++){if(_isKHTML){if(B[D].childNodes[C].tagName&&B[D].childNodes[C].tagName.toUpperCase()==A){E[E.length]=B[D].childNodes[C]}}else{if(B[D].childNodes[C].tagName==A){E[E.length]=B[D].childNodes[C]}}}}return E};function dhtmlXHeir(B,A){for(var C in A){if(typeof (A[C])=="function"){B[C]=A[C]}}return B}function dhtmlxEvent(B,C,A){if(B.addEventListener){B.addEventListener(C,A,false)}else{if(B.attachEvent){B.attachEvent("on"+C,A)}}}dtmlXMLLoaderObject.prototype.xslDoc=null;dtmlXMLLoaderObject.prototype.setXSLParamValue=function(B,C,D){if(!D){D=this.xslDoc}if(D.responseXML){D=D.responseXML}var A=this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+B+"']",D,"http://www.w3.org/1999/XSL/Transform","single");if(A!=null){A.firstChild.nodeValue=C}};dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(D,B){if(!D){D=this.xslDoc}if(D.responseXML){D=D.responseXML}if(!B){B=this.xmlDoc}if(B.responseXML){B=B.responseXML}if(!_isIE){if(!this.XSLProcessor){this.XSLProcessor=new XSLTProcessor();this.XSLProcessor.importStylesheet(D)}var A=this.XSLProcessor.transformToDocument(B)}else{var A=new ActiveXObject("Msxml2.DOMDocument.3.0");try{B.transformNodeToObject(D,A)}catch(C){A=B.transformNode(D)}}return A};dtmlXMLLoaderObject.prototype.doXSLTransToString=function(C,B){var A=this.doXSLTransToObject(C,B);if(typeof (A)=="string"){return A}return this.doSerialization(A)};dtmlXMLLoaderObject.prototype.doSerialization=function(B){if(!B){B=this.xmlDoc}if(B.responseXML){B=B.responseXML}if(!_isIE){var A=new XMLSerializer();return A.serializeToString(B)}else{return B.xml}};dhtmlxEventable=function(obj){obj.dhx_SeverCatcherPath="";obj.attachEvent=function(name,catcher,callObj){name="ev_"+name.toLowerCase();if(!this[name]){this[name]=new this.eventCatcher(callObj||this)}return(name+":"+this[name].addEvent(catcher))};obj.callEvent=function(name,arg0){name="ev_"+name.toLowerCase();if(this[name]){return this[name].apply(this,arg0)}return true};obj.checkEvent=function(name){return(!!this["ev_"+name.toLowerCase()])};obj.eventCatcher=function(obj){var dhx_catch=[];var z=function(){var res=true;for(var i=0;i<dhx_catch.length;i++){if(dhx_catch[i]!=null){var zr=dhx_catch[i].apply(obj,arguments);res=res&&zr}}return res};z.addEvent=function(ev){if(typeof (ev)!="function"){ev=eval(ev)}if(ev){return dhx_catch.push(ev)-1}return false};z.removeEvent=function(id){dhx_catch[id]=null};return z};obj.detachEvent=function(id){if(id!=false){var list=id.split(":");this[list[0]].removeEvent(list[1])}};obj.detachAllEvents=function(){for(var name in this){if(name.indexOf("ev_")==0){delete this[name]}}}};if(!window.dhtmlx){window.dhtmlx={}}(function(){var J=null;function L(Q,O){var P=Q.callback;K(false);Q.box.parentNode.removeChild(Q.box);J=Q.box=null;if(P){P(O)}}function A(P){if(J){P=P||event;var O=P.which||event.keyCode;if(dhtmlx.message.keyboard){if(O==13||O==32){L(J,true)}if(O==27){L(J,false)}}if(P.preventDefault){P.preventDefault()}return !(P.cancelBubble=true)}}if(document.attachEvent){document.attachEvent("onkeydown",A)}else{document.addEventListener("keydown",A,true)}function K(P){if(!K.cover){K.cover=document.createElement("DIV");K.cover.onkeydown=A;K.cover.className="dhx_modal_cover";document.body.appendChild(K.cover)}var O=document.body.scrollHeight;K.cover.style.display=P?"inline-block":"none"}function F(P,O){return"<div class='dhtmlx_popup_button' result='"+O+"' ><div>"+P+"</div></div>"}function C(P){if(!M.area){M.area=document.createElement("DIV");M.area.className="dhtmlx_message_area";M.area.style[M.position]="5px";document.body.appendChild(M.area)}M.hide(P.id);var O=document.createElement("DIV");O.innerHTML="<div>"+P.text+"</div>";O.className="dhtmlx-info dhtmlx-"+P.type;O.onclick=function(){M.hide(P.id);P=null};if(M.position=="bottom"&&M.area.firstChild){M.area.insertBefore(O,M.area.firstChild)}else{M.area.appendChild(O)}if(P.expire>0){M.timers[P.id]=window.setTimeout(function(){M.hide(P.id)},P.expire)}M.pull[P.id]=O;O=null;return P.id}function G(P,R,U){var T=document.createElement("DIV");T.className=" dhtmlx_modal_box dhtmlx-"+P.type;T.setAttribute("dhxbox",1);var O="";if(P.width){T.style.width=P.width}if(P.height){T.style.height=P.height}if(P.title){O+='<div class="dhtmlx_popup_title">'+P.title+"</div>"}O+='<div class="dhtmlx_popup_text"><span>'+(P.content?"":P.text)+'</span></div><div class="dhtmlx_popup_controls">';if(R){O+=F(P.ok||"OK",true)}if(U){O+=F(P.cancel||"Cancel",false)}if(P.buttons){for(var Q=0;Q<P.buttons.length;Q++){O+=F(P.buttons[Q],Q)}}O+="</div>";T.innerHTML=O;if(P.content){var S=P.content;if(typeof S=="string"){S=document.getElementById(S)}if(S.style.display=="none"){S.style.display=""}T.childNodes[P.title?1:0].appendChild(S)}T.onclick=function(W){W=W||event;var V=W.target||W.srcElement;if(!V.className){V=V.parentNode}if(V.className=="dhtmlx_popup_button"){result=V.getAttribute("result");result=(result=="true")||(result=="false"?false:result);L(P,result)}};P.box=T;if(R||U){J=P}return T}function N(P,Q,S){var R=P.tagName?P:G(P,Q,S);if(!P.hidden){K(true)}document.body.appendChild(R);var O=Math.abs(Math.floor(((window.innerWidth||document.documentElement.offsetWidth)-R.offsetWidth)/2));var T=Math.abs(Math.floor(((window.innerHeight||document.documentElement.offsetHeight)-R.offsetHeight)/2));if(P.position=="top"){R.style.top="-3px"}else{R.style.top=T+"px"}R.style.left=O+"px";R.onkeydown=A;R.focus();if(P.hidden){dhtmlx.modalbox.hide(R)}return R}function I(O){return N(O,true,false)}function B(O){return N(O,true,true)}function E(O){return N(O)}function H(P,O,Q){if(typeof P!="object"){if(typeof O=="function"){Q=O;O=""}P={text:P,type:O,callback:Q}}return P}function D(Q,P,O,R){if(typeof Q!="object"){Q={text:Q,type:P,expire:O,id:R}}Q.id=Q.id||M.uid();Q.expire=Q.expire||M.expire;return Q}dhtmlx.alert=function(){text=H.apply(this,arguments);text.type=text.type||"confirm";return I(text)};dhtmlx.confirm=function(){text=H.apply(this,arguments);text.type=text.type||"alert";return B(text)};dhtmlx.modalbox=function(){text=H.apply(this,arguments);text.type=text.type||"alert";return E(text)};dhtmlx.modalbox.hide=function(O){while(O&&O.getAttribute&&!O.getAttribute("dhxbox")){O=O.parentNode}if(O){O.parentNode.removeChild(O);K(false)}};var M=dhtmlx.message=function(R,Q,P,S){R=D.apply(this,arguments);R.type=R.type||"info";var O=R.type.split("-")[0];switch(O){case"alert":return I(R);case"confirm":return B(R);case"modalbox":return E(R);default:return C(R);break}};M.seed=(new Date()).valueOf();M.uid=function(){return M.seed++};M.expire=4000;M.keyboard=true;M.position="top";M.pull={};M.timers={};M.hideAll=function(){for(var O in M.pull){M.hide(O)}};M.hide=function(P){var O=M.pull[P];if(O&&O.parentNode){window.setTimeout(function(){O.parentNode.removeChild(O);O=null},2000);O.className+=" hidden";if(M.timers[P]){window.clearTimeout(M.timers[P])}delete M.pull[P]}}})();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.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);dhtmlxEventable(this);return this}dataProcessor.prototype={setTransactionMode:function(B,A){this._tMode=B;this._tSend=A},escape:function(A){if(this._utf){return encodeURIComponent(A)}else{return escape(A)}},enableUTFencoding:function(A){this._utf=convertStringToBoolean(A)},setDataColumns:function(A){this._columns=(typeof A=="string")?A.split(","):A},getSyncState:function(){return !this.updatedRows.length},enableDataNames:function(A){this._endnm=convertStringToBoolean(A)},enablePartialDataSend:function(A){this._changed=convertStringToBoolean(A)},setUpdateMode:function(B,A){this.autoUpdate=(B=="cell");this.updateMode=B;this.dnd=A},ignore:function(B,A){this._silent_mode=true;B.call(A||window);this._silent_mode=false},setUpdated:function(D,C,E){if(this._silent_mode){return }var B=this.findRow(D);E=E||"updated";var A=this.obj.getUserData(D,this.action_param);if(A&&E=="updated"){E=A}if(C){this.set_invalid(D,false);this.updatedRows[B]=D;this.obj.setUserData(D,this.action_param,E);if(this._in_progress[D]){this._in_progress[D]="wait"}}else{if(!this.is_invalid(D)){this.updatedRows.splice(B,1);this.obj.setUserData(D,this.action_param,"")}}if(!C){this._clearUpdateFlag(D)}this.markRow(D,C,E);if(C&&this.autoUpdate){this.sendData(D)}},_clearUpdateFlag:function(A){},markRow:function(F,C,E){var D="";var B=this.is_invalid(F);if(B){D=this.styles[B];C=true}if(this.callEvent("onRowMark",[F,C,E,B])){D=this.styles[C?E:"clear"]+D;this.obj[this._methods[0]](F,D);if(B&&B.details){D+=this.styles[B+"_cell"];for(var A=0;A<B.details.length;A++){if(B.details[A]){this.obj[this._methods[1]](F,A,D)}}}}},getState:function(A){return this.obj.getUserData(A,this.action_param)},is_invalid:function(A){return this._invalid[A]},set_invalid:function(C,B,A){if(A){B={value:B,details:A,toString:function(){return this.value.toString()}}}this._invalid[C]=B},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.checkBeforeUpdate(A)&&this.callEvent("onValidatationError",[A,this.messages])){return false}this._beforeSendData(this._getRowData(A),A)},_beforeSendData:function(A,B){if(!this.callEvent("onBeforeUpdate",[B,this.getState(B),A])){return false}this._sendData(A,B)},serialize:function(D,E){if(typeof D=="string"){return D}if(typeof E!="undefined"){return this.serialize_one(D,"")}else{var A=[];var C=[];for(var B in D){if(D.hasOwnProperty(B)){A.push(this.serialize_one(D[B],B+this.post_delim));C.push(B)}}A.push("ids="+this.escape(C.join(",")));return A.join("&")}},serialize_one:function(D,B){if(typeof D=="string"){return D}var A=[];for(var C in D){if(D.hasOwnProperty(C)){A.push(this.escape((B||"")+C)+"="+this.escape(D[C]))}}return A.join("&")},_sendData:function(B,C){if(!B){return }if(!this.callEvent("onBeforeDataSending",C?[C,this.getState(C),B]:[null,null,B])){return false}if(C){this._in_progress[C]=(new Date()).valueOf()}var A=new dtmlXMLLoaderObject(this.afterUpdate,this,true);var D=this.serverProcessor+(this._user?(getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,"version")].join("&")):"");if(this._tMode!="POST"){A.loadXML(D+((D.indexOf("?")!=-1)?"&":"?")+this.serialize(B,C))}else{A.loadXML(D,true,this.serialize(B,C))}this._waitMode++},sendAllData:function(){if(!this.updatedRows.length){return }this.messages=[];var B=true;for(var A=0;A<this.updatedRows.length;A++){B&=this.checkBeforeUpdate(this.updatedRows[A])}if(!B&&!this.callEvent("onValidatationError",["",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(D){var B={};var A=false;for(var C=0;C<this.updatedRows.length;C++){var E=this.updatedRows[C];if(this._in_progress[E]||this.is_invalid(E)){continue}if(!this.callEvent("onBeforeUpdate",[E,this.getState(E)])){continue}B[E]=this._getRowData(E,E+this.post_delim);A=true;this._in_progress[E]=(new Date()).valueOf()}return A?B:null},setVerificator:function(B,A){this.mandatoryFields[B]=A||(function(C){return(C!="")})},clearVerificator:function(A){this.mandatoryFields[A]=false},findRow:function(B){var A=0;for(A=0;A<this.updatedRows.length;A++){if(B==this.updatedRows[A]){break}}return A},defineAction:function(A,B){if(!this._uActions){this._uActions=[]}this._uActions[A]=B},afterUpdateCallback:function(B,G,F,E){var A=B;var D=(F!="error"&&F!="invalid");if(!D){this.set_invalid(B,F)}if((this._uActions)&&(this._uActions[F])&&(!this._uActions[F](E))){return(delete this._in_progress[A])}if(this._in_progress[A]!="wait"){this.setUpdated(B,false)}var C=B;switch(F){case"update":case"updated":case"inserted":case"insert":if(G!=B){this.obj[this._methods[2]](B,G);B=G}break;case"delete":case"deleted":this.obj.setUserData(B,this.action_param,"true_deleted");this.obj[this._methods[3]](B);delete this._in_progress[A];return this.callEvent("onAfterUpdate",[B,F,G,E]);break}if(this._in_progress[A]!="wait"){if(D){this.obj.setUserData(B,this.action_param,"")}delete this._in_progress[A]}else{delete this._in_progress[A];this.setUpdated(G,true,this.obj.getUserData(B,this.action_param))}this.callEvent("onAfterUpdate",[B,F,G,E])},afterUpdate:function(G,K,I,H,F){F.getXMLTopNode("data");if(!F.xmlDoc.responseXML){return }var J=F.doXPath("//data/action");for(var D=0;D<J.length;D++){var E=J[D];var C=E.getAttribute("type");var A=E.getAttribute("sid");var B=E.getAttribute("tid");G.afterUpdateCallback(A,B,C,E)}G.finalizeUpdate()},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(this.obj._dp_init){this.obj._dp_init(this)}},setOnAfterUpdate:function(A){this.attachEvent("onAfterUpdate",A)},enableDebug:function(A){},setOnBeforeUpdateHandler:function(A){this.attachEvent("onBeforeDataSending",A)}, -/* starts autoupdate mode - @param interval - time interval for sending update requests - */ -setAutoUpdate:function(C,B){C=C||2000;this._user=B||(new Date()).valueOf();this._need_update=false;this._loader=null;this._update_busy=false;this.attachEvent("onAfterUpdate",function(D,F,G,E){this.afterAutoUpdate(D,F,G,E)});this.attachEvent("onFullSync",function(){this.fullSync()});var A=this;window.setInterval(function(){A.loadUpdate()},C)}, -/* process updating request answer - if status == collision version is depricated - set flag for autoupdating immidiatly - */ -afterAutoUpdate:function(A,C,D,B){if(C=="collision"){this._need_update=true;return false}else{return true}}, -/* callback function for onFillSync event - call update function if it's need - */ -fullSync:function(){if(this._need_update==true){this._need_update=false;this.loadUpdate()}return true}, -/* sends query to the server and call callback function - */ -getUpdates:function(A,B){if(this._update_busy){return false}else{this._update_busy=true}this._loader=this._loader||new dtmlXMLLoaderObject(true);this._loader.async=true;this._loader.waitCall=B;this._loader.loadXML(A)}, -/* returns xml node value - @param node - xml node - */ -_v:function(A){if(A.firstChild){return A.firstChild.nodeValue}return""}, -/* returns values array of xml nodes array - @param arr - array of xml nodes - */ -_a:function(A){var C=[];for(var B=0;B<A.length;B++){C[B]=this._v(A[B])}return C}, -/* loads updates and processes them - */ -loadUpdate:function(){var B=this;var A=this.obj.getUserData(0,"version");var C=this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+A].join("&");C=C.replace("editing=true&","");this.getUpdates(C,function(){var F=B._loader.doXPath("//userdata");B.obj.setUserData(0,"version",B._v(F[0]));var D=B._loader.doXPath("//update");if(D.length){B._silent_mode=true;for(var G=0;G<D.length;G++){var E=D[G].getAttribute("status");var I=D[G].getAttribute("id");var H=D[G].getAttribute("parent");switch(E){case"inserted":B.callEvent("insertCallback",[D[G],I,H]);break;case"updated":B.callEvent("updateCallback",[D[G],I,H]);break;case"deleted":B.callEvent("deleteCallback",[D[G],I,H]);break}}B._silent_mode=false}B._update_busy=false;B=null})}};if(window.dhtmlXGridObject){dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point;dhtmlXGridObject.prototype._init_point=function(){var A=function(E){E=E.replace(/(\?|\&)connector[^\f]*/g,"");return E+(E.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length>0?"&dhx_no_header=1":"")};var D=function(E){return A.call(this,E)+(this._connector_sorting||"")+(this._connector_filter||"")};var C=function(F,G,E){this._connector_sorting="&dhx_sort["+G+"]="+E;return D.call(this,F)};var B=function(F,E,H){for(var G=0;G<E.length;G++){E[G]="dhx_filter["+E[G]+"]="+encodeURIComponent(H[G])}this._connector_filter="&"+E.join("&");return D.call(this,F)};this.attachEvent("onCollectValues",function(E){if(this._con_f_used[E]){if(typeof (this._con_f_used[E])=="object"){return this._con_f_used[E]}else{return false}}return true});this.attachEvent("onDynXLS",function(){this.xmlFileUrl=D.call(this,this.xmlFileUrl);return true});this.attachEvent("onBeforeSorting",function(H,G,F){if(G=="connector"){var E=this;this.clearAndLoad(C.call(this,this.xmlFileUrl,H,F),function(){E.setSortImgState(true,H,F)});return false}return true});this.attachEvent("onFilterStart",function(F,E){if(this._con_f_used.length){this.clearAndLoad(B.call(this,this.xmlFileUrl,F,E));return false}return true});this.attachEvent("onXLE",function(F,E,H,G){if(!G){return }});if(this._init_point_connector){this._init_point_connector()}};dhtmlXGridObject.prototype._con_f_used=[];dhtmlXGridObject.prototype._in_header_connector_text_filter=function(B,A){if(!this._con_f_used[A]){this._con_f_used[A]=1}return this._in_header_text_filter(B,A)};dhtmlXGridObject.prototype._in_header_connector_select_filter=function(B,A){if(!this._con_f_used[A]){this._con_f_used[A]=2}return this._in_header_select_filter(B,A)};dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load;dhtmlXGridObject.prototype.load=function(B,E,D){if(!this._colls_loaded&&this.cellType){var A=[];for(var C=0;C<this.cellType.length;C++){if(this.cellType[C].indexOf("co")==0||this._con_f_used[C]==2){A.push(C)}}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(A,L,I){this._parseHead_connector.apply(this,arguments);if(!this._colls_loaded){var J=this.xmlLoader.doXPath("./coll_options",arguments[0]);for(var F=0;F<J.length;F++){var H=J[F].getAttribute("for");var K=[];var C=null;if(this.cellType[H]=="combo"){C=this.getColumnCombo(H)}if(this.cellType[H].indexOf("co")==0){C=this.getCombo(H)}var E=this.xmlLoader.doXPath("./item",J[F]);for(var D=0;D<E.length;D++){var B=E[D].getAttribute("value");if(C){var G=E[D].getAttribute("label")||B;if(C.addOption){C.addOption([[B,G]])}else{C.put(B,G)}K[K.length]=G}else{K[K.length]=B}}if(this._con_f_used[H*1]){this._con_f_used[H*1]=K}}this._colls_loaded=true}}}if(window.dataProcessor){dataProcessor.prototype.init_original=dataProcessor.prototype.init;dataProcessor.prototype.init=function(A){this.init_original(A);A._dataprocessor=this;this.setTransactionMode("POST",true);this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true"}}dhtmlxError.catchError("LoadXML",function(B,A,C){if(C[0].status!=0){alert(C[0].responseText)}});window.dhtmlXScheduler=window.scheduler={version:3};dhtmlxEventable(scheduler);scheduler.init=function(C,A,B){A=A||(new Date());B=B||"week";scheduler.date.init();this._obj=(typeof C=="string")?document.getElementById(C):C;this._els=[];this._scroll=true;this._quirks=(_isIE&&document.compatMode=="BackCompat");this._quirks7=(_isIE&&navigator.appVersion.indexOf("MSIE 8")==-1);this.get_elements();this.init_templates();this.set_actions();dhtmlxEvent(window,"resize",function(){window.clearTimeout(scheduler._resize_timer);scheduler._resize_timer=window.setTimeout(function(){if(scheduler.callEvent("onSchedulerResize",[])){scheduler.update_view()}},100)});this.set_sizes();scheduler.callEvent("onSchedulerReady",[]);this.setCurrentView(A,B)};scheduler.xy={nav_height:22,min_event_height:40,scale_width:50,bar_height:20,scroll_width:18,scale_height:20,month_scale_height:20,menu_width:25,margin_top:0,margin_left:0,editor_width:140};scheduler.keys={edit_save:13,edit_cancel:27};scheduler.set_sizes=function(){var B=this._x=this._obj.clientWidth-this.xy.margin_left;var D=this._y=this._obj.clientHeight-this.xy.margin_top;var E=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);var A=this._table_view?-1:this.xy.scale_width;this.set_xy(this._els.dhx_cal_navline[0],B,this.xy.nav_height,0,0);this.set_xy(this._els.dhx_cal_header[0],B-E,this.xy.scale_height,A,this.xy.nav_height+(this._quirks?-1:1));var F=this._els.dhx_cal_navline[0].offsetHeight;if(F>0){this.xy.nav_height=F}var C=this.xy.scale_height+this.xy.nav_height+(this._quirks?-2:0);this.set_xy(this._els.dhx_cal_data[0],B,D-(C+2),0,C+2)};scheduler.set_xy=function(D,B,C,A,E){D.style.width=Math.max(0,B)+"px";D.style.height=Math.max(0,C)+"px";if(arguments.length>3){D.style.left=A+"px";D.style.top=E+"px"}};scheduler.get_elements=function(){var D=this._obj.getElementsByTagName("DIV");for(var C=0;C<D.length;C++){var A=D[C].className;if(A){A=A.split(" ")[0]}if(!this._els[A]){this._els[A]=[]}this._els[A].push(D[C]);var B=scheduler.locale.labels[D[C].getAttribute("name")||A];if(B){D[C].innerHTML=B}}};scheduler.set_actions=function(){for(var A in this._els){if(this._click[A]){for(var B=0;B<this._els[A].length;B++){this._els[A][B].onclick=scheduler._click[A]}}}this._obj.onselectstart=function(C){return false};this._obj.onmousemove=function(C){scheduler._on_mouse_move(C||event)};this._obj.onmousedown=function(C){scheduler._on_mouse_down(C||event)};this._obj.onmouseup=function(C){scheduler._on_mouse_up(C||event)};this._obj.ondblclick=function(C){scheduler._on_dbl_click(C||event)}};scheduler.select=function(A){if(this._table_view){return }if(this._select_id==A){return }this.editStop(false);this.unselect();this._select_id=A;this.updateEvent(A)};scheduler.unselect=function(B){if(B&&B!=this._select_id){return }var A=this._select_id;this._select_id=null;if(A){this.updateEvent(A)}};scheduler.getState=function(){return{mode:this._mode,date:this._date,min_date:this._min_date,max_date:this._max_date,editor_id:this._edit_id,lightbox_id:this._lightbox_id,new_event:this._new_event,select_id:this._select_id,expanded:this.expanded,drag_id:this._drag_id,drag_mode:this._drag_mode}};scheduler._click={dhx_cal_data:function(C){var B=C?C.target:event.srcElement;var D=scheduler._locate_event(B);C=C||event;if(!D){scheduler.callEvent("onEmptyClick",[scheduler.getActionData(C).date,C])}else{if(!scheduler.callEvent("onClick",[D,C])||scheduler.config.readonly){return }}if(D&&scheduler.config.select){scheduler.select(D);var A=B.className;if(A.indexOf("_icon")!=-1){scheduler._click.buttons[A.split(" ")[1].replace("icon_","")](D)}}else{scheduler._close_not_saved()}},dhx_cal_prev_button:function(){scheduler._click.dhx_cal_next_button(0,-1)},dhx_cal_next_button:function(B,A){scheduler.setCurrentView(scheduler.date.add(scheduler.date[scheduler._mode+"_start"](scheduler._date),(A||1),scheduler._mode))},dhx_cal_today_button:function(){scheduler.setCurrentView(new Date())},dhx_cal_tab:function(){var A=this.getAttribute("name");var B=A.substring(0,A.search("_tab"));scheduler.setCurrentView(scheduler._date,B)},buttons:{"delete":function(B){var A=scheduler.locale.labels.confirm_deleting;scheduler._dhtmlx_confirm(A,function(){scheduler.deleteEvent(B)})},edit:function(A){scheduler.edit(A)},save:function(A){scheduler.editStop(true)},details:function(A){scheduler.showLightbox(A)},cancel:function(A){scheduler.editStop(false)}}};scheduler._dhtmlx_confirm=function(A,B){if(!A){return B()}dhtmlx.confirm(A,function(C){if(C){B()}})};scheduler.addEventNow=function(H,B,D){var C={};if(H&&H.constructor.toString().match(/object/i)!==null){C=H;H=null}var E=(this.config.event_duration||this.config.time_step)*60000;if(!H){H=Math.round((new Date()).valueOf()/E)*E}var A=new Date(H);if(!B){var G=this.config.first_hour;if(G>A.getHours()){A.setHours(G);H=A.valueOf()}B=H.valueOf()+E}var F=new Date(B);if(A.valueOf()==F.valueOf()){F.setTime(F.valueOf()+E)}C.start_date=C.start_date||A;C.end_date=C.end_date||F;C.text=C.text||this.locale.labels.new_event;C.id=this._drag_id=this.uid();this._drag_mode="new-size";this._loading=true;this.addEvent(C);this.callEvent("onEventCreated",[this._drag_id,D]);this._loading=false;this._drag_event={};this._on_mouse_up(D)};scheduler._on_dbl_click=function(C,D){D=D||(C.target||C.srcElement);if(this.config.readonly){return }var A=D.className.split(" ")[0];switch(A){case"dhx_scale_holder":case"dhx_scale_holder_now":case"dhx_month_body":case"dhx_wa_day_data":case"dhx_marked_timespan":if(!scheduler.config.dblclick_create){break}this.addEventNow(this.getActionData(C).date,null,C);break;case"dhx_cal_event":case"dhx_wa_ev_body":case"dhx_agenda_line":case"dhx_cal_event_line":case"dhx_cal_event_clear":var E=this._locate_event(D);if(!this.callEvent("onDblClick",[E,C])){return }if(this.config.details_on_dblclick||this._table_view||!this.getEvent(E)._timed||!this.config.select){this.showLightbox(E)}else{this.edit(E)}break;case"dhx_cal_container":return ;break;default:var B=this["dblclick_"+A];if(B){B.call(this,C)}else{if(D.parentNode&&D!=this){return scheduler._on_dbl_click(C,D.parentNode)}}break}};scheduler._mouse_coords=function(D){var F;var A=document.body;var E=document.documentElement;if(D.pageX||D.pageY){F={x:D.pageX,y:D.pageY}}else{F={x:D.clientX+(A.scrollLeft||E.scrollLeft||0)-A.clientLeft,y:D.clientY+(A.scrollTop||E.scrollTop||0)-A.clientTop}}F.x-=getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);F.y-=getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els.dhx_cal_data[0].scrollTop;F.ev=D;var C=this["mouse_"+this._mode];if(C){return C.call(this,F)}if(!this._table_view){F.x=Math.min(this._cols.length-1,Math.max(0,Math.ceil(F.x/this._cols[0])-1));F.y=Math.max(0,Math.ceil(F.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step)}else{var B=0;for(B=1;B<this._colsS.heights.length;B++){if(this._colsS.heights[B]>F.y){break}}F.y=Math.ceil((Math.max(0,F.x/this._cols[0])+Math.max(0,B-1)*7)*24*60/this.config.time_step);if(scheduler._drag_mode){F.y=(Math.max(0,Math.ceil(F.x/this._cols[0])-1)+Math.max(0,B-1)*7)*24*60/this.config.time_step}F.x=0}return F};scheduler._close_not_saved=function(){if(new Date().valueOf()-(scheduler._new_event||0)>500&&scheduler._edit_id){var A=scheduler.locale.labels.confirm_closing;scheduler._dhtmlx_confirm(A,function(){scheduler.editStop(scheduler.config.positive_closing)})}};scheduler._correct_shift=function(B,A){return B-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(B)).getTimezoneOffset())*60000*(A?-1:1)};scheduler._on_mouse_move=function(F){if(this._drag_mode){var I=this._mouse_coords(F);if(!this._drag_pos||I.custom||this._drag_pos.x!=I.x||this._drag_pos.y!=I.y){var B,E;if(this._edit_id!=this._drag_id){this._close_not_saved()}this._drag_pos=I;if(this._drag_mode=="create"){this._close_not_saved();this._loading=true;B=this._get_date_from_pos(I).valueOf();var G=this.callEvent("onBeforeEventCreated",[F]);if(!G){return }if(!this._drag_start){this._drag_start=B;return }E=B;if(E==this._drag_start){return }this._drag_id=this.uid();this.addEvent(new Date(this._drag_start),new Date(E),this.locale.labels.new_event,this._drag_id,I.fields);this.callEvent("onEventCreated",[this._drag_id,F]);this._loading=false;this._drag_mode="new-size"}var J=this.getEvent(this._drag_id);if(this._drag_mode=="move"){B=this._min_date.valueOf()+(I.y*this.config.time_step+I.x*24*60)*60000;if(!I.custom&&this._table_view){B+=this.date.time_part(J.start_date)*1000}B=this._correct_shift(B);E=J.end_date.valueOf()-(J.start_date.valueOf()-B)}else{B=J.start_date.valueOf();E=J.end_date.valueOf();if(this._table_view){var H=this._min_date.valueOf()+I.y*this.config.time_step*60000+(I.custom?0:24*60*60000);if(this._mode=="month"){H=this._correct_shift(H,false)}if(I.resize_from_start){B=H}else{E=H}}else{E=this.date.date_part(new Date(J.end_date)).valueOf()+I.y*this.config.time_step*60000;this._els.dhx_cal_data[0].style.cursor="s-resize";if(this._mode=="week"||this._mode=="day"){E=this._correct_shift(E)}}if(this._drag_mode=="new-size"){if(E<=this._drag_start){var D=I.shift||((this._table_view&&!I.custom)?24*60*60000:0);B=E-(I.shift?0:D);E=this._drag_start+(D||(this.config.time_step*60000))}else{B=this._drag_start}}else{if(E<=B){E=B+this.config.time_step*60000}}}var L=new Date(E-1);var C=new Date(B);if(this._table_view||(L.getDate()==C.getDate()&&L.getHours()<this.config.last_hour)||scheduler._allow_dnd){J.start_date=C;J.end_date=new Date(E);if(this.config.update_render){var K=scheduler._els.dhx_cal_data[0].scrollTop;this.update_view();scheduler._els.dhx_cal_data[0].scrollTop=K}else{this.updateEvent(this._drag_id)}}if(this._table_view){this.for_rendered(this._drag_id,function(M){M.className+=" dhx_in_move"})}}}else{if(scheduler.checkEvent("onMouseMove")){var A=this._locate_event(F.target||F.srcElement);this.callEvent("onMouseMove",[A,F])}}};scheduler._on_mouse_context=function(A,B){return this.callEvent("onContextMenu",[this._locate_event(B),A])};scheduler._on_mouse_down=function(B,C){if(this.config.readonly||this._drag_mode){return }C=C||(B.target||B.srcElement);if(B.button==2||B.ctrlKey){return this._on_mouse_context(B,C)}var A=C.className&&C.className.split(" ")[0];switch(A){case"dhx_cal_event_line":case"dhx_cal_event_clear":if(this._table_view){this._drag_mode="move"}break;case"dhx_event_move":case"dhx_wa_ev_body":this._drag_mode="move";break;case"dhx_event_resize":this._drag_mode="resize";break;case"dhx_scale_holder":case"dhx_scale_holder_now":case"dhx_month_body":case"dhx_matrix_cell":case"dhx_marked_timespan":this._drag_mode="create";break;case"":if(C.parentNode){return scheduler._on_mouse_down(B,C.parentNode)}default:if(scheduler.checkEvent("onMouseDown")&&scheduler.callEvent("onMouseDown",[A])){if(C.parentNode&&C!=this){return scheduler._on_mouse_down(B,C.parentNode)}}this._drag_mode=null;this._drag_id=null;break}if(this._drag_mode){var D=this._locate_event(C);if(!this.config["drag_"+this._drag_mode]||!this.callEvent("onBeforeDrag",[D,this._drag_mode,B])){this._drag_mode=this._drag_id=0}else{this._drag_id=D;this._drag_event=scheduler._lame_copy({},this._copy_event(this.getEvent(this._drag_id)||{}))}}this._drag_start=null};scheduler._on_mouse_up=function(C){if(this._drag_mode&&this._drag_id){this._els.dhx_cal_data[0].style.cursor="default";var A=this.getEvent(this._drag_id);if(this._drag_event._dhx_changed||!this._drag_event.start_date||A.start_date.valueOf()!=this._drag_event.start_date.valueOf()||A.end_date.valueOf()!=this._drag_event.end_date.valueOf()){var D=(this._drag_mode=="new-size");if(!this.callEvent("onBeforeEventChanged",[A,C,D,this._drag_event])){if(D){this.deleteEvent(A.id,true)}else{this._drag_event._dhx_changed=false;scheduler._lame_copy(A,this._drag_event);this.updateEvent(A.id)}}else{var B=this._drag_id;this._drag_id=null;if(D&&this.config.edit_on_create){this.unselect();this._new_event=new Date();if(this._table_view||this.config.details_on_create||!this.config.select){this._drag_mode=null;return this.showLightbox(B)}this._drag_pos=true;this._select_id=this._edit_id=B}else{this._drag_id=this._drag_mode=null;if(!this._new_event){this.callEvent(D?"onEventAdded":"onEventChanged",[B,this.getEvent(B)])}}}}if(this._drag_pos){this.render_view_data()}}this._drag_mode=null;this._drag_pos=null};scheduler.update_view=function(){this._reset_scale();if(this._load_mode&&this._load()){return this._render_wait=true}this.render_view_data()};scheduler.setCurrentView=function(B,E){B=B||this._date;E=E||this._mode;if(!this.callEvent("onBeforeViewChange",[this._mode,this._date,E,B])){return }var H="dhx_cal_data";if(!this._mode){this._obj.className+=" dhx_scheduler_"+E}else{this._obj.className=this._obj.className.replace("dhx_scheduler_"+this._mode,"dhx_scheduler_"+E)}var C=(this._mode==E&&this.config.preserve_scroll)?this._els[H][0].scrollTop:false;if(this[this._mode+"_view"]&&E&&this._mode!=E){this[this._mode+"_view"](false)}this._close_not_saved();var I="dhx_multi_day";if(this._els[I]){this._els[I][0].parentNode.removeChild(this._els[I][0]);this._els[I]=null}this._mode=E;this._date=B;this._table_view=(this._mode=="month");var G=this._els.dhx_cal_tab;for(var D=0;D<G.length;D++){var A=G[D].className;A=A.replace(/ active/g,"");if(G[D].getAttribute("name")==this._mode+"_tab"){A=A+" active"}G[D].className=A}var F=this[this._mode+"_view"];F?F(true):this.update_view();if(typeof C=="number"){this._els[H][0].scrollTop=C}this.callEvent("onViewChange",[this._mode,this._date])};scheduler._render_x_header=function(B,D,E,C){var A=document.createElement("DIV");A.className="dhx_scale_bar";this.set_xy(A,this._cols[B]-1,this.xy.scale_height-2,D,0);A.innerHTML=this.templates[this._mode+"_scale_date"](E,this._mode);C.appendChild(A)};scheduler._reset_scale=function(){if(!this.templates[this._mode+"_date"]){return }var P=this._els.dhx_cal_header[0];var U=this._els.dhx_cal_data[0];var S=this.config;P.innerHTML="";U.scrollTop=0;U.innerHTML="";var N=((S.readonly||(!S.drag_resize))?" dhx_resize_denied":"")+((S.readonly||(!S.drag_move))?" dhx_move_denied":"");if(N){U.className="dhx_cal_data"+N}this._scales={};this._cols=[];this._colsS={height:0};this._dy_shift=0;this.set_sizes();var L=parseInt(P.style.width,10);var C=0;var R,T,A,Q;T=this.date[this._mode+"_start"](new Date(this._date.valueOf()));R=A=this._table_view?scheduler.date.week_start(T):T;Q=this.date.date_part(new Date());var D=scheduler.date.add(T,1,this._mode);var F=7;if(!this._table_view){var H=this.date["get_"+this._mode+"_end"];if(H){D=H(T)}F=Math.round((D.valueOf()-T.valueOf())/(1000*60*60*24))}this._min_date=R;this._els.dhx_cal_date[0].innerHTML=this.templates[this._mode+"_date"](T,D,this._mode);for(var O=0;O<F;O++){this._cols[O]=Math.floor(L/(F-O));this._render_x_header(O,C,R,P);if(!this._table_view){var G=document.createElement("DIV");var B="dhx_scale_holder";if(R.valueOf()==Q.valueOf()){B="dhx_scale_holder_now"}G.className=B+" "+this.templates.week_date_class(R,Q);this.set_xy(G,this._cols[O]-1,S.hour_size_px*(S.last_hour-S.first_hour),C+this.xy.scale_width+1,0);U.appendChild(G);this.callEvent("onScaleAdd",[G,R])}R=this.date.add(R,1,"day");L-=this._cols[O];C+=this._cols[O];this._colsS[O]=(this._cols[O-1]||0)+(this._colsS[O-1]||(this._table_view?0:this.xy.scale_width+2));this._colsS.col_length=F+1}this._max_date=R;this._colsS[F]=this._cols[F-1]+this._colsS[F-1];if(this._table_view){this._reset_month_scale(U,T,A)}else{this._reset_hours_scale(U,T,A);if(S.multi_day){var E="dhx_multi_day";if(this._els[E]){this._els[E][0].parentNode.removeChild(this._els[E][0]);this._els[E]=null}var I=this._els.dhx_cal_navline[0];var J=I.offsetHeight+this._els.dhx_cal_header[0].offsetHeight+1;var M=document.createElement("DIV");M.className=E;M.style.visibility="hidden";this.set_xy(M,this._colsS[this._colsS.col_length-1]+this.xy.scroll_width,0,0,J);U.parentNode.insertBefore(M,U);var K=M.cloneNode(true);K.className=E+"_icon";K.style.visibility="hidden";this.set_xy(K,this.xy.scale_width,0,0,J);M.appendChild(K);this._els[E]=[M,K];this._els[E][0].onclick=this._click.dhx_cal_data}}};scheduler._reset_hours_scale=function(B,A,E){var G=document.createElement("DIV");G.className="dhx_scale_holder";var C=new Date(1980,1,1,this.config.first_hour,0,0);for(var D=this.config.first_hour*1;D<this.config.last_hour;D++){var F=document.createElement("DIV");F.className="dhx_scale_hour";F.style.height=this.config.hour_size_px-(this._quirks?0:1)+"px";F.style.width=this.xy.scale_width+"px";F.innerHTML=scheduler.templates.hour_scale(C);G.appendChild(F);C=this.date.add(C,1,"hour")}B.appendChild(G);if(this.config.scroll_hour){B.scrollTop=this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour)}};scheduler._reset_month_scale=function(Q,P,A){var D=scheduler.date.add(P,1,"month");var I=new Date();this.date.date_part(I);this.date.date_part(A);var F=Math.ceil(Math.round((D.valueOf()-A.valueOf())/(60*60*24*1000))/7);var R=[];var J=(Math.floor(Q.clientHeight/F)-22);this._colsS.height=J+22;var N=this._colsS.heights=[];for(var M=0;M<=7;M++){R[M]=" style='height:"+J+"px; width:"+((this._cols[M]||0)-1)+"px;' "}var C=0;this._min_date=A;var G="<table cellpadding='0' cellspacing='0'>";var E=[];for(var M=0;M<F;M++){G+="<tr>";for(var L=0;L<7;L++){G+="<td";var B="";if(A<P){B="dhx_before"}else{if(A>=D){B="dhx_after"}else{if(A.valueOf()==I.valueOf()){B="dhx_now"}}}G+=" class='"+B+" "+this.templates.month_date_class(A,I)+"' ";G+="><div class='dhx_month_head'>"+this.templates.month_day(A)+"</div><div class='dhx_month_body' "+R[L]+"></div></td>";E.push(A);A=this.date.add(A,1,"day")}G+="</tr>";N[M]=C;C+=this._colsS.height}G+="</table>";this._max_date=A;Q.innerHTML=G;this._scales={};var K=Q.getElementsByTagName("div");for(var M=0;M<E.length;M++){var H=K[(M*2)+1];var O=E[M];this._scales[+O]=H}for(var M=0;M<E.length;M++){var O=E[M];this.callEvent("onScaleAdd",[this._scales[+O],O])}return A};scheduler.getLabel=function(E,D){var F=this.config.lightbox.sections;for(var C=0;C<F.length;C++){if(F[C].map_to==E){var B=F[C].options;for(var A=0;A<B.length;A++){if(B[A].key==D){return B[A].label}}}}return""};scheduler.updateCollection=function(A,C){var B=scheduler.serverList(A);if(!B){return false}B.splice(0,B.length);B.push.apply(B,C||[]);scheduler.callEvent("onOptionsLoad",[]);scheduler.resetLightbox();return true};scheduler._lame_clone=function(C,B){var E,D,A;B=B||[];for(E=0;E<B.length;E+=2){if(C===B[E]){return B[E+1]}}if(C&&typeof C=="object"){A={};D=[Array,Date,Number,String,Boolean];for(E=0;E<D.length;E++){if(C instanceof D[E]){A=E?new D[E](C):new D[E]()}}B.push(C,A);for(E in C){if(Object.prototype.hasOwnProperty.apply(C,[E])){A[E]=scheduler._lame_clone(C[E],B)}}}return A||C};scheduler._lame_copy=function(C,B){for(var A in B){if(B.hasOwnProperty(A)){C[A]=B[A]}}return C};scheduler._get_date_from_pos=function(B){var A=this._min_date.valueOf()+(B.y*this.config.time_step+(this._table_view?0:B.x)*24*60)*60000;return new Date(this._correct_shift(A))};scheduler.getActionData=function(A){var B=this._mouse_coords(A);return{date:this._get_date_from_pos(B),section:B.section}};scheduler.date={init:function(){var C=scheduler.locale.date.month_short;var B=scheduler.locale.date.month_short_hash={};for(var A=0;A<C.length;A++){B[C[A]]=A}var C=scheduler.locale.date.month_full;var B=scheduler.locale.date.month_full_hash={};for(var A=0;A<C.length;A++){B[C[A]]=A}},date_part:function(A){A.setHours(0);A.setMinutes(0);A.setSeconds(0);A.setMilliseconds(0);if(A.getHours()!=0){A.setTime(A.getTime()+60*60*1000*(24-A.getHours()))}return A},time_part:function(A){return(A.valueOf()/1000-A.getTimezoneOffset()*60)%86400},week_start:function(B){var A=B.getDay();if(scheduler.config.start_on_monday){if(A===0){A=6}else{A--}}return this.date_part(this.add(B,-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(B,E,F){var A=new Date(B.valueOf());switch(F){case"week":E*=7;case"day":A.setDate(A.getDate()+E);if(!B.getHours()&&A.getHours()){A.setTime(A.getTime()+60*60*1000*(24-A.getHours()))}break;case"month":var C=A.getMonth()+E;var D=new Date(A);A.setMonth(C);if(A.getMonth()!=C&&A.getMonth()!=(C%12)){D.setDate(1);D.setMonth(C);D.setDate(new Date(D.getFullYear(),C+1,0).getDate());A=D}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 scheduler.date["add_"+F](B,E,F)}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(B,A){B=B.replace(/%[a-zA-Z]/g,function(C){switch(C){case"%d":return'"+scheduler.date.to_fixed(date.getDate())+"';case"%m":return'"+scheduler.date.to_fixed((date.getMonth()+1))+"';case"%j":return'"+date.getDate()+"';case"%n":return'"+(date.getMonth()+1)+"';case"%y":return'"+scheduler.date.to_fixed(date.getFullYear()%100)+"';case"%Y":return'"+date.getFullYear()+"';case"%D":return'"+scheduler.locale.date.day_short[date.getDay()]+"';case"%l":return'"+scheduler.locale.date.day_full[date.getDay()]+"';case"%M":return'"+scheduler.locale.date.month_short[date.getMonth()]+"';case"%F":return'"+scheduler.locale.date.month_full[date.getMonth()]+"';case"%h":return'"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+"';case"%g":return'"+((date.getHours()+11)%12+1)+"';case"%G":return'"+date.getHours()+"';case"%H":return'"+scheduler.date.to_fixed(date.getHours())+"';case"%i":return'"+scheduler.date.to_fixed(date.getMinutes())+"';case"%a":return'"+(date.getHours()>11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+scheduler.date.to_fixed(date.getSeconds())+"';case"%W":return'"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+"';default:return C}});if(A){B=B.replace(/date\.get/g,"date.getUTC")}return new Function("date",'return "'+B+'";')},str_to_date:function(E,C){var F="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);";var A=E.match(/%[a-zA-Z]/g);for(var B=0;B<A.length;B++){switch(A[B]){case"%j":case"%d":F+="set[2]=temp["+B+"]||1;";break;case"%n":case"%m":F+="set[1]=(temp["+B+"]||1)-1;";break;case"%y":F+="set[0]=temp["+B+"]*1+(temp["+B+"]>50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":F+="set[3]=temp["+B+"]||0;";break;case"%i":F+="set[4]=temp["+B+"]||0;";break;case"%Y":F+="set[0]=temp["+B+"]||0;";break;case"%a":case"%A":F+="set[3]=set[3]%12+((temp["+B+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":F+="set[5]=temp["+B+"]||0;";break;case"%M":F+="set[1]=scheduler.locale.date.month_short_hash[temp["+B+"]]||0;";break;case"%F":F+="set[1]=scheduler.locale.date.month_full_hash[temp["+B+"]]||0;";break;default:break}}var D="set[0],set[1],set[2],set[3],set[4],set[5]";if(C){D=" Date.UTC("+D+")"}return new Function("date","var set=[0,0,1,0,0,0]; "+F+" return new Date("+D+");")},getISOWeek:function(C){if(!C){return false}var B=C.getDay();if(B===0){B=7}var D=new Date(C.valueOf());D.setDate(C.getDate()+(4-B));var A=D.getFullYear();var F=Math.round((D.getTime()-new Date(A,0,1).getTime())/86400000);var E=1+Math.floor(F/7);return E},getUTCISOWeek:function(A){return this.getISOWeek(A)},convert_to_utc:function(A){return new Date(A.getUTCFullYear(),A.getUTCMonth(),A.getUTCDate(),A.getUTCHours(),A.getUTCMinutes(),A.getUTCSeconds())}};scheduler.locale={date:{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"]},labels:{dhx_cal_today_button:"Today",day_tab:"Day",week_tab:"Week",month_tab:"Month",new_event:"New event",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Event will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",full_day:"Full day",confirm_recurring:"Do you want to edit the whole set of repeated events?",section_recurring:"Repeat event",button_recurring:"Disabled",button_recurring_open:"Enabled",button_edit_series:"Edit series",button_edit_occurrence:"Edit occurrence",agenda_tab:"Agenda",date:"Date",description:"Description",year_tab:"Year",week_agenda_tab:"Agenda",grid_tab:"Grid"}};scheduler.config={default_date:"%j %M %Y",month_date:"%F %Y",load_date:"%Y-%m-%d",week_date:"%l",day_date:"%D, %F %j",hour_date:"%H:%i",month_day:"%d",xml_date:"%m/%d/%Y %H:%i",api_date:"%d-%m-%Y %H:%i",hour_size_px:42,time_step:5,start_on_monday:1,first_hour:0,last_hour:24,readonly:false,drag_resize:1,drag_move:1,drag_create:1,dblclick_create:1,edit_on_create:1,details_on_create:0,click_form_details:0,cascade_event_display:false,cascade_event_count:4,cascade_event_margin:30,drag_lightbox:true,preserve_scroll:true,select:true,server_utc:false,positive_closing:false,icons_edit:["icon_save","icon_cancel"],icons_select:["icon_details","icon_edit","icon_delete"],buttons_left:["dhx_save_btn","dhx_cancel_btn"],buttons_right:["dhx_delete_btn"],lightbox:{sections:[{name:"description",height:200,map_to:"text",type:"textarea",focus:true},{name:"time",height:72,type:"time",map_to:"auto"}]},repeat_date_of_end:"01.01.2012"};scheduler.templates={};scheduler.init_templates=function(){var D=scheduler.locale.labels;D.dhx_save_btn=D.icon_save;D.dhx_cancel_btn=D.icon_cancel;D.dhx_delete_btn=D.icon_delete;var B=scheduler.date.date_to_str;var C=scheduler.config;var A=function(F,E){for(var G in E){if(!F[G]){F[G]=E[G]}}};A(scheduler.templates,{day_date:B(C.default_date),month_date:B(C.month_date),week_date:function(F,E){return scheduler.templates.day_date(F)+" – "+scheduler.templates.day_date(scheduler.date.add(E,-1,"day"))},day_scale_date:B(C.default_date),month_scale_date:B(C.week_date),week_scale_date:B(C.day_date),hour_scale:B(C.hour_date),time_picker:B(C.hour_date),event_date:B(C.hour_date),month_day:B(C.month_day),xml_date:scheduler.date.str_to_date(C.xml_date,C.server_utc),load_format:B(C.load_date,C.server_utc),xml_format:B(C.xml_date,C.server_utc),api_date:scheduler.date.str_to_date(C.api_date),event_header:function(G,E,F){return scheduler.templates.event_date(G)+" - "+scheduler.templates.event_date(E)},event_text:function(G,E,F){return F.text},event_class:function(G,E,F){return""},month_date_class:function(E){return""},week_date_class:function(E){return""},event_bar_date:function(G,E,F){return scheduler.templates.event_date(G)+" "},event_bar_text:function(G,E,F){return F.text}});this.callEvent("onTemplatesReady",[])};scheduler.uid=function(){if(!this._seed){this._seed=(new Date).valueOf()}return this._seed++};scheduler._events={};scheduler.clearAll=function(){this._events={};this._loaded={};this.clear_view()};scheduler.addEvent=function(A,H,E,G,B){if(!arguments.length){return this.addEventNow()}var C=A;if(arguments.length!=1){C=B||{};C.start_date=A;C.end_date=H;C.text=E;C.id=G}C.id=C.id||scheduler.uid();C.text=C.text||"";if(typeof C.start_date=="string"){C.start_date=this.templates.api_date(C.start_date)}if(typeof C.end_date=="string"){C.end_date=this.templates.api_date(C.end_date)}var D=(this.config.event_duration||this.config.time_step)*60000;if(C.start_date.valueOf()==C.end_date.valueOf()){C.end_date.setTime(C.end_date.valueOf()+D)}C._timed=this.is_one_day_event(C);var F=!this._events[C.id];this._events[C.id]=C;this.event_updated(C);if(!this._loading){this.callEvent(F?"onEventAdded":"onEventChanged",[C.id,C])}return C.id};scheduler.deleteEvent=function(C,A){var B=this._events[C];if(!A&&(!this.callEvent("onBeforeEventDelete",[C,B])||!this.callEvent("onConfirmedBeforeEventDelete",[C,B]))){return }if(B){delete this._events[C];this.unselect(C);this.event_updated(B)}this.callEvent("onEventDeleted",[C,B])};scheduler.getEvent=function(A){return this._events[A]};scheduler.setEvent=function(B,A){this._events[B]=A};scheduler.for_rendered=function(C,B){for(var A=this._rendered.length-1;A>=0;A--){if(this._rendered[A].getAttribute("event_id")==C){B(this._rendered[A],A)}}};scheduler.changeEventId=function(C,A){if(C==A){return }var B=this._events[C];if(B){B.id=A;this._events[A]=B;delete this._events[C]}this.for_rendered(C,function(D){D.setAttribute("event_id",A)});if(this._select_id==C){this._select_id=A}if(this._edit_id==C){this._edit_id=A}this.callEvent("onEventIdChange",[C,A])};(function(){var A=["text","Text","start_date","StartDate","end_date","EndDate"];var C=function(E){return function(F){return(scheduler.getEvent(F))[E]}};var D=function(E){return function(H,G){var F=scheduler.getEvent(H);F[E]=G;F._changed=true;F._timed=this.is_one_day_event(F);scheduler.event_updated(F,true)}};for(var B=0;B<A.length;B+=2){scheduler["getEvent"+A[B+1]]=C(A[B]);scheduler["setEvent"+A[B+1]]=D(A[B])}})();scheduler.event_updated=function(A,B){if(this.is_visible_events(A)){this.render_view_data()}else{this.clear_event(A.id)}};scheduler.is_visible_events=function(A){return(A.start_date<this._max_date&&this._min_date<A.end_date)};scheduler.is_one_day_event=function(A){var B=A.end_date.getDate()-A.start_date.getDate();if(!B){return A.start_date.getMonth()==A.end_date.getMonth()&&A.start_date.getFullYear()==A.end_date.getFullYear()}else{if(B<0){B=Math.ceil((A.end_date.valueOf()-A.start_date.valueOf())/(24*60*60*1000))}return(B==1&&!A.end_date.getHours()&&!A.end_date.getMinutes()&&(A.start_date.getHours()||A.start_date.getMinutes()))}};scheduler.get_visible_events=function(C){var A=[];var B=this["filter_"+this._mode];for(var D in this._events){if(this.is_visible_events(this._events[D])){if(!C||this._events[D]._timed){if(!B||B(D,this._events[D])){A.push(this._events[D])}}}}return A};scheduler.render_view_data=function(B,E){if(!B){if(this._not_render){this._render_wait=true;return }this._render_wait=false;this.clear_view();B=this.get_visible_events(!(this._table_view||this.config.multi_day))}if(this.config.multi_day&&!this._table_view){var D=[];var A=[];for(var C=0;C<B.length;C++){if(B[C]._timed){D.push(B[C])}else{A.push(B[C])}}this._rendered_location=this._els.dhx_multi_day[0];this._table_view=true;this.render_data(A,E);this._table_view=false;this._rendered_location=this._els.dhx_cal_data[0];this._table_view=false;this.render_data(D,E)}else{this._rendered_location=this._els.dhx_cal_data[0];this.render_data(B,E)}};scheduler.render_data=function(A,C){A=this._pre_render_events(A,C);for(var B=0;B<A.length;B++){if(this._table_view){this.render_event_bar(A[B])}else{this.render_event(A[B])}}};scheduler._pre_render_events=function(N,A){var H=this.xy.bar_height;var D=this._colsS.heights;var G=this._colsS.heights=[0,0,0,0,0,0,0];var E=this._els.dhx_cal_data[0];if(!this._table_view){N=this._pre_render_events_line(N,A)}else{N=this._pre_render_events_table(N,A)}if(this._table_view){if(A){this._colsS.heights=D}else{var B=E.firstChild;if(B.rows){for(var F=0;F<B.rows.length;F++){G[F]++;if((G[F])*H>this._colsS.height-22){var O=B.rows[F].cells;for(var C=0;C<O.length;C++){O[C].childNodes[1].style.height=G[F]*H+"px"}G[F]=(G[F-1]||0)+O[0].offsetHeight}G[F]=(G[F-1]||0)+B.rows[F].cells[0].offsetHeight}G.unshift(0);if(B.parentNode.offsetHeight<B.parentNode.scrollHeight&&!B._h_fix){for(var F=0;F<B.rows.length;F++){var M=B.rows[F].cells[6].childNodes[0];var K=M.offsetWidth-scheduler.xy.scroll_width+"px";M.style.width=K;M.nextSibling.style.width=K}B._h_fix=true}}else{if(!N.length&&this._els.dhx_multi_day[0].style.visibility=="visible"){G[0]=-1}if(N.length||G[0]==-1){var I=B.parentNode.childNodes;var J=((G[0]+1)*H+1)+"px";E.style.top=(this._els.dhx_cal_navline[0].offsetHeight+this._els.dhx_cal_header[0].offsetHeight+parseInt(J,10))+"px";E.style.height=(this._obj.offsetHeight-parseInt(E.style.top,10)-(this.xy.margin_top||0))+"px";var L=this._els.dhx_multi_day[0];L.style.height=J;L.style.visibility=(G[0]==-1?"hidden":"visible");L=this._els.dhx_multi_day[1];L.style.height=J;L.style.visibility=(G[0]==-1?"hidden":"visible");L.className=G[0]?"dhx_multi_day_icon":"dhx_multi_day_icon_small";this._dy_shift=(G[0]+1)*H;G[0]=0}}}}return N};scheduler._get_event_sday=function(A){return Math.floor((A.start_date.valueOf()-this._min_date.valueOf())/(24*60*60*1000))};scheduler._get_event_mapped_end_date=function(B){var C=B.end_date;if(this.config.separate_short_events){var A=(B.end_date-B.start_date)/60000;if(A<this._min_mapped_duration){C=this.date.add(C,this._min_mapped_duration-A,"minute")}}return C};scheduler._pre_render_events_line=function(J,I){J.sort(function(T,S){if(T.start_date.valueOf()==S.start_date.valueOf()){return T.id>S.id?1:-1}return T.start_date>S.start_date?1:-1});var F=[];var E=[];this._min_mapped_duration=Math.ceil(this.xy.min_event_height*60/this.config.hour_size_px);for(var P=0;P<J.length;P++){var Q=J[P];var A=Q.start_date;var D=Q.end_date;var R=A.getHours();var B=D.getHours();Q._sday=this._get_event_sday(Q);if(!F[Q._sday]){F[Q._sday]=[]}if(!I){Q._inner=false;var G=F[Q._sday];while(G.length){var K=G[G.length-1];var L=this._get_event_mapped_end_date(K);if(L.valueOf()<=Q.start_date.valueOf()){G.splice(G.length-1,1)}else{break}}var N=false;for(var O=0;O<G.length;O++){var K=G[O];var L=this._get_event_mapped_end_date(K);if(L.valueOf()<=Q.start_date.valueOf()){N=true;Q._sorder=K._sorder;G.splice(O,1);Q._inner=true;break}}if(G.length){G[G.length-1]._inner=true}if(!N){if(G.length){if(G.length<=G[G.length-1]._sorder){if(!G[G.length-1]._sorder){Q._sorder=0}else{for(O=0;O<G.length;O++){var H=false;for(var M=0;M<G.length;M++){if(G[M]._sorder==O){H=true;break}}if(!H){Q._sorder=O;break}}}Q._inner=true}else{var C=G[0]._sorder;for(O=1;O<G.length;O++){if(G[O]._sorder>C){C=G[O]._sorder}}Q._sorder=C+1;Q._inner=false}}else{Q._sorder=0}}G.push(Q);if(G.length>(G.max_count||0)){G.max_count=G.length;Q._count=G.length}else{Q._count=(Q._count)?Q._count:1}}if(R<this.config.first_hour||B>=this.config.last_hour){if(!Q._timed){E.push(Q);J[P]=Q=this._copy_event(Q)}if(R<this.config.first_hour){Q.start_date.setHours(this.config.first_hour);Q.start_date.setMinutes(0)}if(B>=this.config.last_hour){Q.end_date.setMinutes(0);Q.end_date.setHours(this.config.last_hour)}if(Q.start_date>Q.end_date||R==this.config.last_hour){J.splice(P,1);P--;continue}}}if(!I){for(var P=0;P<J.length;P++){J[P]._count=F[J[P]._sday].max_count}for(var P=0;P<E.length;P++){E[P]._count=F[E[P]._sday].max_count}}return J};scheduler._time_order=function(A){A.sort(function(C,B){if(C.start_date.valueOf()==B.start_date.valueOf()){if(C._timed&&!B._timed){return 1}if(!C._timed&&B._timed){return -1}return C.id>B.id?1:-1}return C.start_date>B.start_date?1:-1})};scheduler._pre_render_events_table=function(P,C){this._time_order(P);var F=[];var A=[[],[],[],[],[],[],[]];var N=this._colsS.heights;var I;var M=this._cols.length;for(var G=0;G<P.length;G++){var L=P[G];var J=(I||L.start_date);var H=L.end_date;if(J<this._min_date){J=this._min_date}if(H>this._max_date){H=this._max_date}var E=this.locate_holder_day(J,false,L);L._sday=E%M;var O=this.locate_holder_day(H,true,L)||M;L._eday=(O%M)||M;L._length=O-E;L._sweek=Math.floor((this._correct_shift(J.valueOf(),1)-this._min_date.valueOf())/(60*60*1000*24*M));var K=A[L._sweek];var D;for(D=0;D<K.length;D++){if(K[D]._eday<=L._sday){break}}if(!L._sorder||!C){L._sorder=D}if(L._sday+L._length<=M){I=null;F.push(L);K[D]=L;N[L._sweek]=K.length-1}else{var B=this._copy_event(L);B._length=M-L._sday;B._eday=M;B._sday=L._sday;B._sweek=L._sweek;B._sorder=L._sorder;B.end_date=this.date.add(J,B._length,"day");F.push(B);K[D]=B;I=B.end_date;N[L._sweek]=K.length-1;G--;continue}}return F};scheduler._copy_dummy=function(){var B=new Date(this.start_date);var A=new Date(this.end_date);this.start_date=B;this.end_date=A};scheduler._copy_event=function(A){this._copy_dummy.prototype=A;return new this._copy_dummy()};scheduler._rendered=[];scheduler.clear_view=function(){for(var A=0;A<this._rendered.length;A++){var B=this._rendered[A];if(B.parentNode){B.parentNode.removeChild(B)}}this._rendered=[]};scheduler.updateEvent=function(B){var A=this.getEvent(B);this.clear_event(B);if(A&&this.is_visible_events(A)){if(this.config.update_render){this.render_view_data()}else{this.render_view_data([A],true)}}};scheduler.clear_event=function(A){this.for_rendered(A,function(C,B){if(C.parentNode){C.parentNode.removeChild(C)}scheduler._rendered.splice(B,1)})};scheduler.render_event=function(R){var B=scheduler.xy.menu_width;if(R._sday<0){return }var E=scheduler.locate_holder(R._sday);if(!E){return }var P=R.start_date.getHours()*60+R.start_date.getMinutes();var C=(R.end_date.getHours()*60+R.end_date.getMinutes())||(scheduler.config.last_hour*60);var L=R._count||1;var N=R._sorder||0;var G=(Math.round((P*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24);var J=Math.max(scheduler.xy.min_event_height,(C-P)*this.config.hour_size_px/60);var K=Math.floor((E.clientWidth-B)/L);var D=N*K+1;if(!R._inner){K=K*(L-N)}if(this.config.cascade_event_display){var Q=this.config.cascade_event_count;var H=this.config.cascade_event_margin;D=N%Q*H;var T=(R._inner)?(L-N-1)%Q*H/2:0;K=Math.floor(E.clientWidth-B-D-T)}var S=this._render_v_bar(R.id,B+D,G,K,J,R._text_style,scheduler.templates.event_header(R.start_date,R.end_date,R),scheduler.templates.event_text(R.start_date,R.end_date,R));this._rendered.push(S);E.appendChild(S);D=D+parseInt(E.style.left,10)+B;if(this._edit_id==R.id){S.style.zIndex=1;K=Math.max(K-4,scheduler.xy.editor_width);S=document.createElement("DIV");S.setAttribute("event_id",R.id);this.set_xy(S,K,J-20,D,G+14);S.className="dhx_cal_editor";var V=document.createElement("DIV");this.set_xy(V,K-6,J-26);V.style.cssText+=";margin:2px 2px 2px 2px;overflow:hidden;";S.appendChild(V);this._els.dhx_cal_data[0].appendChild(S);this._rendered.push(S);V.innerHTML="<textarea class='dhx_cal_editor'>"+R.text+"</textarea>";if(this._quirks7){V.firstChild.style.height=J-12+"px"}this._editor=V.firstChild;this._editor.onkeypress=function(X){if((X||event).shiftKey){return true}var W=(X||event).keyCode;if(W==scheduler.keys.edit_save){scheduler.editStop(true)}if(W==scheduler.keys.edit_cancel){scheduler.editStop(false)}};this._editor.onselectstart=function(W){return(W||event).cancelBubble=true};V.firstChild.focus();this._els.dhx_cal_data[0].scrollLeft=0;V.firstChild.select()}if(this.xy.menu_width!==0&&this._select_id==R.id){if(this.config.cascade_event_display&&this._drag_mode){S.style.zIndex=1}var U=this.config["icons_"+((this._edit_id==R.id)?"edit":"select")];var A="";var I=(R.color?("background:"+R.color+";"):"");var M=(R.textColor?("color:"+R.textColor+";"):"");for(var O=0;O<U.length;O++){A+="<div class='dhx_menu_icon "+U[O]+"' style='"+I+""+M+"' title='"+this.locale.labels[U[O]]+"'></div>"}var F=this._render_v_bar(R.id,D-B+1,G,B,U.length*20+26-2,"","<div style='"+I+""+M+"' class='dhx_menu_head'></div>",A,true);F.style.left=D-B+1;this._els.dhx_cal_data[0].appendChild(F);this._rendered.push(F)}};scheduler._render_v_bar=function(I,D,C,E,M,N,Q,O,B){var S=document.createElement("DIV");var R=this.getEvent(I);var A=(B)?"dhx_cal_event dhx_cal_select_menu":"dhx_cal_event";var L=scheduler.templates.event_class(R.start_date,R.end_date,R);if(L){A=A+" "+L}var H=(R.color?("background:"+R.color+";"):"");var J=(R.textColor?("color:"+R.textColor+";"):"");var F='<div event_id="'+I+'" class="'+A+'" style="position:absolute; top:'+C+"px; left:"+D+"px; width:"+(E-4)+"px; height:"+M+"px;"+(N||"")+'"></div>';S.innerHTML=F;if(scheduler.renderEvent&&!B){scheduler.renderEvent(S.firstChild,R);return S.firstChild}else{var G=S.firstChild;var P='<div class="dhx_event_move dhx_header" style=" width:'+(E-6)+"px;"+H+'" > </div>';P+='<div class="dhx_event_move dhx_title" style="'+H+""+J+'">'+Q+"</div>";P+='<div class="dhx_body" style=" width:'+(E-(this._quirks?4:14))+"px; height:"+(M-(this._quirks?20:30)+1)+"px;"+H+""+J+'">'+O+"</div>";var K="dhx_event_resize dhx_footer";if(B){K="dhx_resize_denied "+K}P+='<div class="'+K+'" style=" width:'+(E-8)+"px;"+(B?" margin-top:-1px;":"")+""+H+""+J+'" ></div>';G.innerHTML=P}return S.firstChild};scheduler.locate_holder=function(A){if(this._mode=="day"){return this._els.dhx_cal_data[0].firstChild}return this._els.dhx_cal_data[0].childNodes[A]};scheduler.locate_holder_day=function(B,C){var A=Math.floor((this._correct_shift(B,1)-this._min_date)/(60*60*24*1000));if(C&&this.date.time_part(B)){A++}return A};scheduler.render_event_bar=function(I){var L=this._rendered_location;var K=this._colsS[I._sday];var A=this._colsS[I._eday];if(A==K){A=this._colsS[I._eday+1]}var E=this.xy.bar_height;var H=this._colsS.heights[I._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+(I._sorder*E);var G=document.createElement("DIV");var F=I._timed?"dhx_cal_event_clear":"dhx_cal_event_line";var B=scheduler.templates.event_class(I.start_date,I.end_date,I);if(B){F=F+" "+B}var J=(I.color?("background:"+I.color+";"):"");var C=(I.textColor?("color:"+I.textColor+";"):"");var D='<div event_id="'+I.id+'" class="'+F+'" style="position:absolute; top:'+H+"px; left:"+K+"px; width:"+(A-K-15)+"px;"+C+""+J+""+(I._text_style||"")+'">';if(I._timed){D+=scheduler.templates.event_bar_date(I.start_date,I.end_date,I)}D+=scheduler.templates.event_bar_text(I.start_date,I.end_date,I)+"</div>";D+="</div>";G.innerHTML=D;this._rendered.push(G.firstChild);L.appendChild(G.firstChild)};scheduler._locate_event=function(A){var B=null;while(A&&!B&&A.getAttribute){B=A.getAttribute("event_id");A=A.parentNode}return B};scheduler.edit=function(A){if(this._edit_id==A){return }this.editStop(false,A);this._edit_id=A;this.updateEvent(A)};scheduler.editStop=function(B,C){if(C&&this._edit_id==C){return }var A=this.getEvent(this._edit_id);if(A){if(B){A.text=this._editor.value}this._edit_id=null;this._editor=null;this.updateEvent(A.id);this._edit_stop_event(A,B)}};scheduler._edit_stop_event=function(A,B){if(this._new_event){if(!B){this.deleteEvent(A.id,true)}else{this.callEvent("onEventAdded",[A.id,A])}this._new_event=null}else{if(B){this.callEvent("onEventChanged",[A.id,A])}}};scheduler.getEvents=function(E,D){var A=[];for(var B in this._events){var C=this._events[B];if(C&&C.start_date<D&&C.end_date>E){A.push(C)}}return A};scheduler._loaded={};scheduler._load=function(C,F){C=C||this._load_url;C+=(C.indexOf("?")==-1?"?":"&")+"timeshift="+(new Date()).getTimezoneOffset();if(this.config.prevent_cache){C+="&uid="+this.uid()}var E;F=F||this._date;if(this._load_mode){var B=this.templates.load_format;F=this.date[this._load_mode+"_start"](new Date(F.valueOf()));while(F>this._min_date){F=this.date.add(F,-1,this._load_mode)}E=F;var D=true;while(E<this._max_date){E=this.date.add(E,1,this._load_mode);if(this._loaded[B(F)]&&D){F=this.date.add(F,1,this._load_mode)}else{D=false}}var A=E;do{E=A;A=this.date.add(E,-1,this._load_mode)}while(A>F&&this._loaded[B(A)]);if(E<=F){return false}dhtmlxAjax.get(C+"&from="+B(F)+"&to="+B(E),function(G){scheduler.on_load(G)});while(F<E){this._loaded[B(F)]=true;F=this.date.add(F,1,this._load_mode)}}else{dhtmlxAjax.get(C,function(G){scheduler.on_load(G)})}this.callEvent("onXLS",[]);return true};scheduler.on_load=function(A){var B;if(this._process){B=this[this._process].parse(A.xmlDoc.responseText)}else{B=this._magic_parser(A)}scheduler._process_loading(B);this.callEvent("onXLE",[])};scheduler._process_loading=function(A){this._loading=true;this._not_render=true;for(var B=0;B<A.length;B++){if(!this.callEvent("onEventLoading",[A[B]])){continue}this.addEvent(A[B])}this._not_render=false;if(this._render_wait){this.render_view_data()}this._loading=false;if(this._after_call){this._after_call()}this._after_call=null};scheduler.json={};scheduler.json.parse=function(data){if(typeof data=="string"){eval("scheduler._temp = "+data+";");data=scheduler._temp.data||scheduler._temp}var collections=(scheduler._temp&&scheduler._temp.collections)?scheduler._temp.collections:{};var collections_loaded=false;for(var key in collections){if(collections.hasOwnProperty(key)){collections_loaded=true;var collection=collections[key];var arr=scheduler.serverList[key];if(!arr){continue}arr.splice(0,arr.length);for(var j=0;j<collection.length;j++){var option=collection[j];var obj={key:option.value,label:option.label};for(var option_key in option){if(option.hasOwnProperty(option_key)){if(option_key=="value"||option_key=="label"){continue}obj[option_key]=option[option_key]}}arr.push(obj)}}}if(collections_loaded){scheduler.callEvent("onOptionsLoad",[])}var evs=[];for(var i=0;i<data.length;i++){data[i].start_date=scheduler.templates.xml_date(data[i].start_date);data[i].end_date=scheduler.templates.xml_date(data[i].end_date);evs.push(data[i])}return evs};scheduler.parse=function(B,A){this._process=A;this.on_load({xmlDoc:{responseText:B}})};scheduler.load=function(A,B){if(typeof B=="string"){this._process=B;B=arguments[2]}this._load_url=A;this._after_call=B;this._load(A,this._date)};scheduler.setLoadMode=function(A){if(A=="all"){A=""}this._load_mode=A};scheduler.refresh=function(A){alert("not implemented")};scheduler.serverList=function(A,B){if(B){return this.serverList[A]=B.slice(0)}return this.serverList[A]=(this.serverList[A]||[])};scheduler._userdata={};scheduler._magic_parser=function(M){var H;if(!M.getXMLTopNode){var B=M.xmlDoc.responseText;M=new dtmlXMLLoaderObject(function(){});M.loadXMLString(B)}H=M.getXMLTopNode("data");if(H.tagName!="data"){return[]}var A=M.doXPath("//coll_options");for(var G=0;G<A.length;G++){var K=A[G].getAttribute("for");var I=this.serverList[K];if(!I){continue}I.splice(0,I.length);var P=M.doXPath(".//item",A[G]);for(var D=0;D<P.length;D++){var L=P[D];var N=L.attributes;var F={key:P[D].getAttribute("value"),label:P[D].getAttribute("label")};for(var C=0;C<N.length;C++){var J=N[C];if(J.nodeName=="value"||J.nodeName=="label"){continue}F[J.nodeName]=J.nodeValue}I.push(F)}}if(A.length){scheduler.callEvent("onOptionsLoad",[])}var Q=M.doXPath("//userdata");for(var G=0;G<Q.length;G++){var E=this.xmlNodeToJSON(Q[G]);this._userdata[E.name]=E.text}var O=[];H=M.doXPath("//event");for(var G=0;G<H.length;G++){O[G]=this.xmlNodeToJSON(H[G]);O[G].text=O[G].text||O[G]._tagvalue;O[G].start_date=this.templates.xml_date(O[G].start_date);O[G].end_date=this.templates.xml_date(O[G].end_date)}return O};scheduler.xmlNodeToJSON=function(C){var B={};for(var A=0;A<C.attributes.length;A++){B[C.attributes[A].name]=C.attributes[A].value}for(var A=0;A<C.childNodes.length;A++){var D=C.childNodes[A];if(D.nodeType==1){B[D.tagName]=D.firstChild?D.firstChild.nodeValue:""}}if(!B.text){B.text=C.firstChild?C.firstChild.nodeValue:""}return B};scheduler.attachEvent("onXLS",function(){if(this.config.show_loading===true){var A;A=this.config.show_loading=document.createElement("DIV");A.className="dhx_loading";A.style.left=Math.round((this._x-128)/2)+"px";A.style.top=Math.round((this._y-15)/2)+"px";this._obj.appendChild(A)}});scheduler.attachEvent("onXLE",function(){var A;if(A=this.config.show_loading){if(typeof A=="object"){this._obj.removeChild(A);this.config.show_loading=true}}});scheduler.ical={parse:function(H){var E=H.match(RegExp(this.c_start+"[^\f]*"+this.c_end,""));if(!E.length){return }E[0]=E[0].replace(/[\r\n]+(?=[a-z \t])/g," ");E[0]=E[0].replace(/\;[^:\r\n]*/g,"");var B=[];var D;var C=RegExp("(?:"+this.e_start+")([^\f]*?)(?:"+this.e_end+")","g");while(D=C.exec(E)){var F={};var G;var A=/[^\r\n]+[\r\n]+/g;while(G=A.exec(D[1])){this.parse_param(G.toString(),F)}if(F.uid&&!F.id){F.id=F.uid}B.push(F)}return B},parse_param:function(E,C){var D=E.indexOf(":");if(D==-1){return }var A=E.substr(0,D).toLowerCase();var B=E.substr(D+1).replace(/\\\,/g,",").replace(/[\r\n]+$/,"");if(A=="summary"){A="text"}else{if(A=="dtstart"){A="start_date";B=this.parse_date(B,0,0)}else{if(A=="dtend"){A="end_date";B=this.parse_date(B,0,0)}}}C[A]=B},parse_date:function(G,F,D){var E=G.split("T");if(E[1]){F=E[1].substr(0,2);D=E[1].substr(2,2)}var C=E[0].substr(0,4);var B=parseInt(E[0].substr(4,2),10)-1;var A=E[0].substr(6,2);if(scheduler.config.server_utc&&!E[1]){return new Date(Date.UTC(C,B,A,F,D))}return new Date(C,B,A,F,D)},c_start:"BEGIN:VCALENDAR",e_start:"BEGIN:VEVENT",e_end:"END:VEVENT",c_end:"END:VCALENDAR"};scheduler.lightbox={};scheduler.formSection=function(C){var B=this.config.lightbox.sections;var D=0;for(D;D<B.length;D++){if(B[D].name==C){break}}var G=B[D];if(!scheduler._lightbox){scheduler.getLightbox()}var H=document.getElementById(G.id);var F=H.nextSibling;var A={section:G,header:H,node:F,getValue:function(I){return scheduler.form_blocks[G.type].get_value(F,(I||{}),G)},setValue:function(J,I){return scheduler.form_blocks[G.type].set_value(F,J,(I||{}),G)}};var E=scheduler.lightbox["get_"+G.type+"_control"];return E?E(A):A};scheduler.lightbox.get_template_control=function(A){A.control=A.node;return A};scheduler.lightbox.get_select_control=function(A){A.control=A.node.getElementsByTagName("select")[0];return A};scheduler.lightbox.get_textarea_control=function(A){A.control=A.node.getElementsByTagName("textarea")[0];return A};scheduler.lightbox.get_time_control=function(A){A.control=A.node.getElementsByTagName("select");return A};scheduler.form_blocks={template:{render:function(B){var A=(B.height||"30")+"px";return"<div class='dhx_cal_ltext dhx_cal_template' style='height:"+A+";'></div>"},set_value:function(C,D,B,A){C.innerHTML=D||""},get_value:function(C,B,A){return C.innerHTML||""},focus:function(A){}},textarea:{render:function(B){var A=(B.height||"130")+"px";return"<div class='dhx_cal_ltext' style='height:"+A+";'><textarea></textarea></div>"},set_value:function(B,C,A){B.firstChild.value=C||""},get_value:function(B,A){return B.firstChild.value},focus:function(B){var A=B.firstChild;A.select();A.focus()}},select:{render:function(D){var A=(D.height||"23")+"px";var C="<div class='dhx_cal_ltext' style='height:"+A+";'><select style='width:100%;'>";for(var B=0;B<D.options.length;B++){C+="<option value='"+D.options[B].key+"'>"+D.options[B].label+"</option>"}C+="</select></div>";return C},set_value:function(C,E,B,D){var A=C.firstChild;if(!A._dhx_onchange&&D.onchange){A.onchange=D.onchange;A._dhx_onchange=true}if(typeof E=="undefined"){E=(A.options[0]||{}).value}A.value=E||""},get_value:function(B,A){return B.firstChild.value},focus:function(B){var A=B.firstChild;if(A.select){A.select()}A.focus()}},time:{render:function(H){var G=scheduler.config;var A=this.date.date_part(new Date());var J=24*60,E=0;if(scheduler.config.limit_time_select){J=60*G.last_hour+1;E=60*G.first_hour;A.setHours(G.first_hour)}var F="<select>";var D=E;var B=A.getDate();H._time_values=[];while(D<J){var C=this.templates.time_picker(A);F+="<option value='"+D+"'>"+C+"</option>";H._time_values.push(D);A.setTime(A.valueOf()+this.config.time_step*60*1000);var I=(A.getDate()!=B)?1:0;D=I*24*60+A.getHours()*60+A.getMinutes()}F+="</select> <select>";for(var D=1;D<32;D++){F+="<option value='"+D+"'>"+D+"</option>"}F+="</select> <select>";for(var D=0;D<12;D++){F+="<option value='"+D+"'>"+this.locale.date.month_full[D]+"</option>"}F+="</select> <select>";A=A.getFullYear()-5;for(var D=0;D<10;D++){F+="<option value='"+(A+D)+"'>"+(A+D)+"</option>"}F+="</select> ";return"<div style='height:30px;padding-top:0px;font-size:inherit;' class='dhx_section_time'>"+F+"<span style='font-weight:normal; font-size:10pt;'> – </span>"+F+"</div>"},set_value:function(B,K,I,A){var H=scheduler.config;var L=B.getElementsByTagName("select");if(H.full_day){if(!B._full_day){var F="<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> "+scheduler.locale.labels.full_day+" </label></input>";if(!scheduler.config.wide_form){F=B.previousSibling.innerHTML+F}B.previousSibling.innerHTML=F;B._full_day=true}var J=B.previousSibling.getElementsByTagName("input")[0];J.checked=(scheduler.date.time_part(I.start_date)===0&&scheduler.date.time_part(I.end_date)===0);for(var C in L){L[C].disabled=J.checked}J.onclick=function(){if(J.checked){var O={};scheduler.form_blocks.time.get_value(B,O);var M=scheduler.date.date_part(O.start_date);var P=scheduler.date.date_part(O.end_date);if(M.valueOf()==P.valueOf()){P=scheduler.date.add(M,1,"day")}}for(var N in L){L[N].disabled=J.checked}D(L,0,M||I.start_date);D(L,4,P||I.end_date)}}if(H.auto_end_date&&H.event_duration){function G(){I.start_date=new Date(L[3].value,L[2].value,L[1].value,0,L[0].value);I.end_date.setTime(I.start_date.getTime()+(scheduler.config.event_duration*60*1000));D(L,4,I.end_date)}for(var E=0;E<4;E++){L[E].onchange=G}}function D(U,Q,S){var N=A._time_values;var T=S.getHours()*60+S.getMinutes();var P=T;var R=false;for(var O=0;O<N.length;O++){var M=N[O];if(M===T){R=true;break}if(M<T){P=M}}U[Q+0].value=(R)?T:P;U[Q+1].value=S.getDate();U[Q+2].value=S.getMonth();U[Q+3].value=S.getFullYear()}D(L,0,I.start_date);D(L,4,I.end_date)},get_value:function(B,A){s=B.getElementsByTagName("select");A.start_date=new Date(s[3].value,s[2].value,s[1].value,0,s[0].value);A.end_date=new Date(s[7].value,s[6].value,s[5].value,0,s[4].value);if(A.end_date<=A.start_date){A.end_date=scheduler.date.add(A.start_date,scheduler.config.time_step,"minute")}},focus:function(A){A.getElementsByTagName("select")[0].focus()}}};scheduler.showCover=function(C){if(C){C.style.display="block";var A=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;var D=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft;var B=window.innerHeight||document.documentElement.clientHeight;if(A){C.style.top=Math.round(A+Math.max((B-C.offsetHeight)/2,0))+"px"}else{C.style.top=Math.round(Math.max(((B-C.offsetHeight)/2),0)+9)+"px"}if(document.documentElement.scrollWidth>document.body.offsetWidth){C.style.left=Math.round(D+(document.body.offsetWidth-C.offsetWidth)/2)+"px"}else{C.style.left=Math.round((document.body.offsetWidth-C.offsetWidth)/2)+"px"}}this.show_cover()};scheduler.showLightbox=function(B){if(!B){return }if(!this.callEvent("onBeforeLightbox",[B])){return }var A=this.getLightbox();this.showCover(A);this._fill_lightbox(B,A);this.callEvent("onLightbox",[B])};scheduler._fill_lightbox=function(H,E){var D=this.getEvent(H);var B=E.getElementsByTagName("span");if(scheduler.templates.lightbox_header){B[1].innerHTML="";B[2].innerHTML=scheduler.templates.lightbox_header(D.start_date,D.end_date,D)}else{B[1].innerHTML=this.templates.event_header(D.start_date,D.end_date,D);B[2].innerHTML=(this.templates.event_bar_text(D.start_date,D.end_date,D)||"").substr(0,70)}var F=this.config.lightbox.sections;for(var A=0;A<F.length;A++){var C=document.getElementById(F[A].id).nextSibling;var G=this.form_blocks[F[A].type];G.set_value.call(this,C,D[F[A].map_to],D,F[A]);if(F[A].focus){G.focus.call(this,C)}}scheduler._lightbox_id=H};scheduler._lightbox_out=function(D){var E=this.config.lightbox.sections;for(var B=0;B<E.length;B++){var C=document.getElementById(E[B].id);C=(C?C.nextSibling:C);var F=this.form_blocks[E[B].type];var A=F.get_value.call(this,C,D,E[B]);if(E[B].map_to!="auto"){D[E[B].map_to]=A}}return D};scheduler._empty_lightbox=function(C){var D=scheduler._lightbox_id;var B=this.getEvent(D);var A=this.getLightbox();this._lame_copy(B,C);B._timed=this.is_one_day_event(B);this.setEvent(B.id,B);this._edit_stop_event(B,true);this.render_view_data()};scheduler.hide_lightbox=function(A){this.hideCover(this.getLightbox());this._lightbox_id=null;this.callEvent("onAfterLightbox",[])};scheduler.hideCover=function(A){if(A){A.style.display="none"}this.hide_cover()};scheduler.hide_cover=function(){if(this._cover){this._cover.parentNode.removeChild(this._cover)}this._cover=null};scheduler.show_cover=function(){this._cover=document.createElement("DIV");this._cover.className="dhx_cal_cover";var B=((document.height!==undefined)?document.height:document.body.offsetHeight);var A=((document.documentElement)?document.documentElement.scrollHeight:0);this._cover.style.height=Math.max(B,A)+"px";document.body.appendChild(this._cover)};scheduler.save_lightbox=function(){var A=this._lightbox_out(this._lame_copy(this.getEvent(this._lightbox_id)));if(this.checkEvent("onEventSave")&&!this.callEvent("onEventSave",[this._lightbox_id,A,this._new_event])){return }this._empty_lightbox(A);this.hide_lightbox()};scheduler.startLightbox=function(B,A){this._lightbox_id=B;this._lightbox=A;this.showCover(A)};scheduler.endLightbox=function(B,A){this._edit_stop_event(scheduler.getEvent(this._lightbox_id),B);if(B){scheduler.render_view_data()}this.hideCover(A);this._lightbox_id=null};scheduler.resetLightbox=function(){if(scheduler._lightbox){scheduler._lightbox.parentNode.removeChild(scheduler._lightbox)}scheduler._lightbox=null};scheduler.cancel_lightbox=function(){this.callEvent("onEventCancel",[this._lightbox_id,this._new_event]);this.endLightbox(false);this.hide_lightbox()};scheduler._init_lightbox_events=function(){this.getLightbox().onclick=function(C){var E=C?C.target:event.srcElement;if(!E.className){E=E.previousSibling}if(E&&E.className){switch(E.className){case"dhx_save_btn":scheduler.save_lightbox();break;case"dhx_delete_btn":var F=scheduler.locale.labels.confirm_deleting;scheduler._dhtmlx_confirm(F,function(){scheduler.deleteEvent(scheduler._lightbox_id);scheduler._new_event=null;scheduler.hide_lightbox()});break;case"dhx_cancel_btn":scheduler.cancel_lightbox();break;default:if(E.getAttribute("dhx_button")){scheduler.callEvent("onLightboxButton",[E.className,E,C])}else{if(E.className.indexOf("dhx_custom_button_")!=-1){var A=E.parentNode.getAttribute("index");var D=scheduler.form_blocks[scheduler.config.lightbox.sections[A].type];var B=E.parentNode.parentNode;D.button_click(A,E,B,B.nextSibling)}}break}}};this.getLightbox().onkeydown=function(A){switch((A||event).keyCode){case scheduler.keys.edit_save:if((A||event).shiftKey){return }scheduler.save_lightbox();break;case scheduler.keys.edit_cancel:scheduler.cancel_lightbox();break;default:break}}};scheduler.setLightboxSize=function(){var B=this._lightbox;if(!B){return }var A=B.childNodes[1];A.style.height="0px";A.style.height=A.scrollHeight+"px";B.style.height=A.scrollHeight+50+"px";A.style.height=A.scrollHeight+"px"};scheduler._init_dnd_events=function(){dhtmlxEvent(document.body,"mousemove",scheduler._move_while_dnd);dhtmlxEvent(document.body,"mouseup",scheduler._finish_dnd);scheduler._init_dnd_events=function(){}};scheduler._move_while_dnd=function(C){if(scheduler._dnd_start_lb){if(!document.dhx_unselectable){document.body.className+=" dhx_unselectable";document.dhx_unselectable=true}var B=scheduler.getLightbox();var A=(C&&C.target)?[C.pageX,C.pageY]:[event.clientX,event.clientY];B.style.top=scheduler._lb_start[1]+A[1]-scheduler._dnd_start_lb[1]+"px";B.style.left=scheduler._lb_start[0]+A[0]-scheduler._dnd_start_lb[0]+"px"}};scheduler._ready_to_dnd=function(B){var A=scheduler.getLightbox();scheduler._lb_start=[parseInt(A.style.left,10),parseInt(A.style.top,10)];scheduler._dnd_start_lb=(B&&B.target)?[B.pageX,B.pageY]:[event.clientX,event.clientY]};scheduler._finish_dnd=function(){if(scheduler._lb_start){scheduler._lb_start=scheduler._dnd_start_lb=false;document.body.className=document.body.className.replace(" dhx_unselectable","");document.dhx_unselectable=false}};scheduler.getLightbox=function(){if(!this._lightbox){var H=document.createElement("DIV");H.className="dhx_cal_light";if(scheduler.config.wide_form){H.className+=" dhx_cal_light_wide"}if(scheduler.form_blocks.recurring){H.className+=" dhx_cal_light_rec"}if(/msie|MSIE 6/.test(navigator.userAgent)){H.className+=" dhx_ie6"}H.style.visibility="hidden";var C=this._lightbox_template;var D=this.config.buttons_left;for(var B=0;B<D.length;B++){C+="<div class='dhx_btn_set'><div dhx_button='1' class='"+D[B]+"'></div><div>"+scheduler.locale.labels[D[B]]+"</div></div>"}D=this.config.buttons_right;for(var B=0;B<D.length;B++){C+="<div class='dhx_btn_set' style='float:right;'><div dhx_button='1' class='"+D[B]+"'></div><div>"+scheduler.locale.labels[D[B]]+"</div></div>"}C+="</div>";H.innerHTML=C;if(scheduler.config.drag_lightbox){H.firstChild.onmousedown=scheduler._ready_to_dnd;H.firstChild.onselectstart=function(){return false};H.firstChild.style.cursor="pointer";scheduler._init_dnd_events()}document.body.insertBefore(H,document.body.firstChild);this._lightbox=H;var F=this.config.lightbox.sections;C="";for(var B=0;B<F.length;B++){var G=this.form_blocks[F[B].type];if(!G){continue}F[B].id="area_"+this.uid();var A="";if(F[B].button){A="<div class='dhx_custom_button' index='"+B+"'><div class='dhx_custom_button_"+F[B].button+"'></div><div>"+this.locale.labels["button_"+F[B].button]+"</div></div>"}if(this.config.wide_form){C+="<div class='dhx_wrap_section'>"}C+="<div id='"+F[B].id+"' class='dhx_cal_lsection'>"+A+this.locale.labels["section_"+F[B].name]+"</div>"+G.render.call(this,F[B]);C+="</div>"}var E=H.getElementsByTagName("div");E[1].innerHTML=C;this.setLightboxSize();this._init_lightbox_events(this);H.style.display="none";H.style.visibility="visible"}return this._lightbox};scheduler._lightbox_template="<div class='dhx_cal_ltitle'><span class='dhx_mark'> </span><span class='dhx_time'></span><span class='dhx_title'></span></div><div class='dhx_cal_larea'></div>";scheduler._dp_init=function(A){A._methods=["setEventTextStyle","","changeEventId","deleteEvent"];this.attachEvent("onEventAdded",function(B){if(!this._loading&&this.validId(B)){A.setUpdated(B,true,"inserted")}});this.attachEvent("onConfirmedBeforeEventDelete",function(C){if(!this.validId(C)){return }var B=A.getState(C);if(B=="inserted"||this._new_event){A.setUpdated(C,false);return true}if(B=="deleted"){return false}if(B=="true_deleted"){return true}A.setUpdated(C,true,"deleted");return false});this.attachEvent("onEventChanged",function(B){if(!this._loading&&this.validId(B)){A.setUpdated(B,true,"updated")}});A._getRowData=function(F,B){var D=this.obj.getEvent(F);var E={};for(var C in D){if(C.indexOf("_")==0){continue}if(D[C]&&D[C].getUTCFullYear){E[C]=this.obj.templates.xml_format(D[C])}else{E[C]=D[C]}}return E};A._clearUpdateFlag=function(){};A.attachEvent("insertCallback",scheduler._update_callback);A.attachEvent("updateCallback",scheduler._update_callback);A.attachEvent("deleteCallback",function(B,C){this.obj.setUserData(C,this.action_param,"true_deleted");this.obj.deleteEvent(C)})};scheduler.setUserData=function(C,A,B){if(C){this.getEvent(C)[A]=B}else{this._userdata[A]=B}};scheduler.getUserData=function(B,A){return B?this.getEvent(B)[A]:this._userdata[A]};scheduler.setEventTextStyle=function(C,A){this.for_rendered(C,function(D){D.style.cssText+=";"+A});var B=this.getEvent(C);B._text_style=A;this.event_updated(B)};scheduler.validId=function(A){return true};scheduler._update_callback=function(B,C){var A=scheduler.xmlNodeToJSON(B.firstChild);A.text=A.text||A._tagvalue;A.start_date=scheduler.templates.xml_date(A.start_date);A.end_date=scheduler.templates.xml_date(A.end_date);scheduler.addEvent(A)};
\ No newline at end of file diff --git a/samples/dhtmlx/dhtmlxscheduler_recurring.js b/samples/dhtmlx/dhtmlxscheduler_recurring.js deleted file mode 100644 index 375fedf..0000000 --- a/samples/dhtmlx/dhtmlxscheduler_recurring.js +++ /dev/null @@ -1,31 +0,0 @@ -scheduler.form_blocks.recurring={render:function(){return scheduler.__recurring_template},_ds:{},_init_set_value:function(a,b,c){function d(a){for(var b=0;b<a.length;b++){var c=a[b];c.type=="checkbox"||c.type=="radio"?(g[c.name]||(g[c.name]=[]),g[c.name].push(c)):g[c.name]=c}}function f(a){for(var b=g[a],c=0;c<b.length;c++)if(b[c].checked)return b[c].value}function e(){m("dhx_repeat_day").style.display="none";m("dhx_repeat_week").style.display="none";m("dhx_repeat_month").style.display="none";m("dhx_repeat_year").style.display= -"none";m("dhx_repeat_"+this.value).style.display="block"}function h(a){var b=[f("repeat")];for(p[b[0]](b,a);b.length<5;)b.push("");var c="";if(g.end[0].checked)a.end=new Date(9999,1,1),c="no";else if(g.end[2].checked)a.end=i(g.date_of_end.value);else{scheduler.transpose_type(b.join("_"));var c=Math.max(1,g.occurences_count.value),e=b[0]=="week"&&b[4]&&b[4].toString().indexOf(scheduler.config.start_on_monday?1:0)==-1?1:0;a.end=scheduler.date.add(new Date(a.start),c+e,b.join("_"))}return b.join("_")+ -"#"+c}function j(a,b){var c=a.split("#"),a=c[0].split("_");q[a[0]](a,b);var e=g.repeat[{day:0,week:1,month:2,year:3}[a[0]]];switch(c[1]){case "no":g.end[0].checked=!0;break;case "":g.end[2].checked=!0;g.date_of_end.value=k(b.end);break;default:g.end[1].checked=!0,g.occurences_count.value=c[1]}e.checked=!0;e.onclick()}scheduler.form_blocks.recurring._ds={start:c.start_date,end:c._end_date};var i=scheduler.date.str_to_date(scheduler.config.repeat_date),k=scheduler.date.date_to_str(scheduler.config.repeat_date), -l=a.getElementsByTagName("FORM")[0],g=[];d(l.getElementsByTagName("INPUT"));d(l.getElementsByTagName("SELECT"));var m=function(a){return document.getElementById(a)};scheduler.form_blocks.recurring._get_repeat_code=h;var p={month:function(a,b){f("month_type")=="d"?(a.push(Math.max(1,g.month_count.value)),b.start.setDate(g.month_day.value)):(a.push(Math.max(1,g.month_count2.value)),a.push(g.month_day2.value),a.push(Math.max(1,g.month_week2.value)),b.start.setDate(1));b._start=!0},week:function(a,b){a.push(Math.max(1, -g.week_count.value));a.push("");a.push("");for(var c=[],e=g.week_day,d=0;d<e.length;d++)e[d].checked&&c.push(e[d].value);c.length||c.push(b.start.getDay());b.start=scheduler.date.week_start(b.start);b._start=!0;a.push(c.sort().join(","))},day:function(a){f("day_type")=="d"?a.push(Math.max(1,g.day_count.value)):(a.push("week"),a.push(1),a.push(""),a.push(""),a.push("1,2,3,4,5"),a.splice(0,1))},year:function(a,b){f("year_type")=="d"?(a.push("1"),b.start.setMonth(0),b.start.setDate(g.year_day.value), -b.start.setMonth(g.year_month.value)):(a.push("1"),a.push(g.year_day2.value),a.push(g.year_week2.value),b.start.setDate(1),b.start.setMonth(g.year_month2.value));b._start=!0}},q={week:function(a){g.week_count.value=a[1];for(var b=g.week_day,c=a[4].split(","),e={},d=0;d<c.length;d++)e[c[d]]=!0;for(d=0;d<b.length;d++)b[d].checked=!!e[b[d].value]},month:function(a,b){a[2]==""?(g.month_type[0].checked=!0,g.month_count.value=a[1],g.month_day.value=b.start.getDate()):(g.month_type[1].checked=!0,g.month_count2.value= -a[1],g.month_week2.value=a[3],g.month_day2.value=a[2])},day:function(a){g.day_type[0].checked=!0;g.day_count.value=a[1]},year:function(a,b){a[2]==""?(g.year_type[0].checked=!0,g.year_day.value=b.start.getDate(),g.year_month.value=b.start.getMonth()):(g.year_type[1].checked=!0,g.year_week2.value=a[3],g.year_day2.value=a[2],g.year_month2.value=b.start.getMonth())}};scheduler.form_blocks.recurring._set_repeat_code=j;for(var n=0;n<l.elements.length;n++){var o=l.elements[n];switch(o.name){case "repeat":o.onclick= -e}}scheduler._lightbox._rec_init_done=!0},set_value:function(a,b,c){var d=scheduler.form_blocks.recurring;scheduler._lightbox._rec_init_done||d._init_set_value(a,b,c);a.open=!c.rec_type;a.blocked=c.event_pid&&c.event_pid!="0"?!0:!1;var f=d._ds;f.start=c.start_date;f.end=c._end_date;d.button_click(0,a.previousSibling.firstChild.firstChild,a,a);b&&d._set_repeat_code(b,f)},get_value:function(a,b){if(a.open){var c=scheduler.form_blocks.recurring._ds;b.rec_type=scheduler.form_blocks.recurring._get_repeat_code(c); -c._start?(b.start_date=new Date(c.start),b._start_date=new Date(c.start),c._start=!1):b._start_date=null;b._end_date=b.end_date=c.end;b.rec_pattern=b.rec_type.split("#")[0]}else b.rec_type=b.rec_pattern="",b._end_date=b.end_date;return b.rec_type},focus:function(){},button_click:function(a,b,c,d){!d.open&&!d.blocked?(d.style.height="115px",b.style.backgroundPosition="-5px 0px",b.nextSibling.innerHTML=scheduler.locale.labels.button_recurring_open):(d.style.height="0px",b.style.backgroundPosition="-5px 20px", -b.nextSibling.innerHTML=scheduler.locale.labels.button_recurring);d.open=!d.open;scheduler.setLightboxSize()}};scheduler._rec_markers={};scheduler._rec_markers_pull={};scheduler._add_rec_marker=function(a,b){a._pid_time=b;this._rec_markers[a.id]=a;this._rec_markers_pull[a.event_pid]||(this._rec_markers_pull[a.event_pid]={});this._rec_markers_pull[a.event_pid][b]=a};scheduler._get_rec_marker=function(a,b){var c=this._rec_markers_pull[b];return c?c[a]:null}; -scheduler._get_rec_markers=function(a){return this._rec_markers_pull[a]||[]};scheduler._rec_temp=[];scheduler.attachEvent("onEventLoading",function(a){a.event_pid!=0&&scheduler._add_rec_marker(a,a.event_length*1E3);if(a.rec_type)a.rec_pattern=a.rec_type.split("#")[0];return!0}); -scheduler.attachEvent("onEventIdChange",function(a,b){if(!this._ignore_call){this._ignore_call=!0;for(var c=0;c<this._rec_temp.length;c++){var d=this._rec_temp[c];if(d.event_pid==a)d.event_pid=b,this.changeEventId(d.id,b+"#"+d.id.split("#")[1])}delete this._ignore_call}}); -scheduler.attachEvent("onBeforeEventDelete",function(a){var b=this.getEvent(a);if(a.toString().indexOf("#")!=-1||b.event_pid&&b.event_pid!="0"&&b.rec_type!="none"){var a=a.split("#"),c=this.uid(),d=a[1]?a[1]:b._pid_time/1E3,f=this._copy_event(b);f.id=c;f.event_pid=b.event_pid||a[0];f.event_length=d;f.rec_type=f.rec_pattern="none";this.addEvent(f);this._add_rec_marker(f,d*1E3)}else{b.rec_type&&this._roll_back_dates(b);var e=this._get_rec_markers(a),h;for(h in e)e.hasOwnProperty(h)&&this.deleteEvent(e[h].id, -!0)}return!0}); -scheduler.attachEvent("onEventChanged",function(a){if(this._loading)return!0;var b=this.getEvent(a);if(a.toString().indexOf("#")!=-1){var a=a.split("#"),c=this.uid();this._not_render=!0;var d=this._copy_event(b);d.id=c;d.event_pid=a[0];d.event_length=a[1];d.rec_type=d.rec_pattern="";this.addEvent(d);this._not_render=!1;this._add_rec_marker(d,a[1]*1E3)}else{b.rec_type&&this._roll_back_dates(b);var f=this._get_rec_markers(a),e;for(e in f)f.hasOwnProperty(e)&&(delete this._rec_markers[f[e].id],this.deleteEvent(f[e].id, -!0));delete this._rec_markers_pull[a];for(var h=!1,j=0;j<this._rendered.length;j++)this._rendered[j].getAttribute("event_id")==a&&(h=!0);if(!h)this._select_id=null}return!0});scheduler.attachEvent("onEventAdded",function(a){if(!this._loading){var b=this.getEvent(a);b.rec_type&&!b.event_length&&this._roll_back_dates(b)}return!0});scheduler.attachEvent("onEventSave",function(a,b){var c=this.getEvent(a);if(!c.rec_type&&b.rec_type&&(a+"").indexOf("#")==-1)this._select_id=null;return!0}); -scheduler.attachEvent("onEventCreated",function(a){var b=this.getEvent(a);if(!b.rec_type)b.rec_type=b.rec_pattern=b.event_length=b.event_pid="";return!0});scheduler.attachEvent("onEventCancel",function(a){var b=this.getEvent(a);b.rec_type&&(this._roll_back_dates(b),this.render_view_data())}); -scheduler._roll_back_dates=function(a){a.event_length=(a.end_date.valueOf()-a.start_date.valueOf())/1E3;a.end_date=a._end_date;a._start_date&&(a.start_date.setMonth(0),a.start_date.setDate(a._start_date.getDate()),a.start_date.setMonth(a._start_date.getMonth()),a.start_date.setFullYear(a._start_date.getFullYear()))};scheduler.validId=function(a){return a.toString().indexOf("#")==-1};scheduler.showLightbox_rec=scheduler.showLightbox; -scheduler.showLightbox=function(a){var b=this.getEvent(a).event_pid;a.toString().indexOf("#")!=-1&&(b=a.split("#")[0]);if(!b||b==0||!this.locale.labels.confirm_recurring||!confirm(this.locale.labels.confirm_recurring))return this.showLightbox_rec(a);b=this.getEvent(b);b._end_date=b.end_date;b.end_date=new Date(b.start_date.valueOf()+b.event_length*1E3);return this.showLightbox_rec(b.id)};scheduler.get_visible_events_rec=scheduler.get_visible_events; -scheduler.get_visible_events=function(){for(var a=0;a<this._rec_temp.length;a++)delete this._events[this._rec_temp[a].id];this._rec_temp=[];for(var b=this.get_visible_events_rec(),c=[],a=0;a<b.length;a++)b[a].rec_type?b[a].rec_pattern!="none"&&this.repeat_date(b[a],c):c.push(b[a]);return c};(function(){var a=scheduler.is_one_day_event;scheduler.is_one_day_event=function(b){return b.rec_type?!0:a.call(this,b)}})();scheduler.transponse_size={day:1,week:7,month:1,year:12}; -scheduler.date.day_week=function(a,b,c){a.setDate(1);var c=(c-1)*7,d=a.getDay(),f=b*1+c-d+1;a.setDate(f<=c?f+7:f)};scheduler.transpose_day_week=function(a,b,c,d,f){for(var e=(a.getDay()||(scheduler.config.start_on_monday?7:0))-c,h=0;h<b.length;h++)if(b[h]>e)return a.setDate(a.getDate()+b[h]*1-e-(d?c:f));this.transpose_day_week(a,b,c+d,null,c)}; -scheduler.transpose_type=function(a){var b="transpose_"+a;if(!this.date[b]){var c=a.split("_"),d=864E5,f="add_"+a,e=this.transponse_size[c[0]]*c[1];if(c[0]=="day"||c[0]=="week"){var h=null;if(c[4]&&(h=c[4].split(","),scheduler.config.start_on_monday)){for(var j=0;j<h.length;j++)h[j]=h[j]*1||7;h.sort()}this.date[b]=function(a,b){var c=Math.floor((b.valueOf()-a.valueOf())/(d*e));c>0&&a.setDate(a.getDate()+c*e);h&&scheduler.transpose_day_week(a,h,1,e)};this.date[f]=function(a,b){var c=new Date(a.valueOf()); -if(h)for(var d=0;d<b;d++)scheduler.transpose_day_week(c,h,0,e);else c.setDate(c.getDate()+b*e);return c}}else if(c[0]=="month"||c[0]=="year")this.date[b]=function(a,b){var d=Math.ceil((b.getFullYear()*12+b.getMonth()*1-(a.getFullYear()*12+a.getMonth()*1))/e);d>=0&&a.setMonth(a.getMonth()+d*e);c[3]&&scheduler.date.day_week(a,c[2],c[3])},this.date[f]=function(a,b){var d=new Date(a.valueOf());d.setMonth(d.getMonth()+b*e);c[3]&&scheduler.date.day_week(d,c[2],c[3]);return d}}}; -scheduler.repeat_date=function(a,b,c,d,f){var d=d||this._min_date,f=f||this._max_date,e=new Date(a.start_date.valueOf());if(!a.rec_pattern&&a.rec_type)a.rec_pattern=a.rec_type.split("#")[0];this.transpose_type(a.rec_pattern);for(scheduler.date["transpose_"+a.rec_pattern](e,d);e<a.start_date||e.valueOf()+a.event_length*1E3<=d.valueOf();)e=this.date.add(e,1,a.rec_pattern);for(;e<f&&e<a.end_date;){var h=this._get_rec_marker(e.valueOf(),a.id);if(h)c&&b.push(h);else{var j=new Date(e.valueOf()+a.event_length* -1E3),i=this._copy_event(a);i.text=a.text;i.start_date=e;i.event_pid=a.id;i.id=a.id+"#"+Math.ceil(e.valueOf()/1E3);i.end_date=j;var k=i.start_date.getTimezoneOffset()-i.end_date.getTimezoneOffset();if(k)i.end_date=k>0?new Date(e.valueOf()+a.event_length*1E3-k*6E4):new Date(i.end_date.valueOf()+k*6E4);i._timed=this.is_one_day_event(i);if(!i._timed&&!this._table_view&&!this.config.multi_day)break;b.push(i);c||(this._events[i.id]=i,this._rec_temp.push(i))}e=this.date.add(e,1,a.rec_pattern)}}; -scheduler.getRecDates=function(a,b){var c=typeof a=="object"?a:scheduler.getEvent(a),d=0,f=[],b=b||1E3,e=new Date(c.start_date.valueOf()),h=new Date(e.valueOf());if(!c.rec_type)return[{start_date:c.start_date,end_date:c.end_date}];this.transpose_type(c.rec_pattern);for(scheduler.date["transpose_"+c.rec_pattern](e,h);e<c.start_date||e.valueOf()+c.event_length*1E3<=h.valueOf();)e=this.date.add(e,1,c.rec_pattern);for(;e<c.end_date;){var j=this._get_rec_marker(e.valueOf(),c.id),i=!0;if(j)j.rec_type== -"none"?i=!1:f.push({start_date:j.start_date,end_date:j.end_date});else{var k=new Date(e.valueOf()+c.event_length*1E3),l=new Date(e);f.push({start_date:l,end_date:k})}e=this.date.add(e,1,c.rec_pattern);if(i&&(d++,d==b))break}return f}; -scheduler.getEvents=function(a,b){var c=[],d;for(d in this._events){var f=this._events[d];if(f&&f.start_date<b&&f.end_date>a)if(f.rec_pattern){if(f.rec_pattern!="none"){var e=[];this.repeat_date(f,e,!0,a,b);for(var h=0;h<e.length;h++)!e[h].rec_pattern&&e[h].start_date<b&&e[h].end_date>a&&!this._rec_markers[e[h].id]&&c.push(e[h])}}else f.id.toString().indexOf("#")==-1&&c.push(f)}return c};scheduler.config.repeat_date="%m.%d.%Y"; -scheduler.config.lightbox.sections=[{name:"description",height:130,map_to:"text",type:"textarea",focus:!0},{name:"recurring",type:"recurring",map_to:"rec_type",button:"recurring"},{name:"time",height:72,type:"time",map_to:"auto"}];scheduler._copy_dummy=function(){this.start_date=new Date(this.start_date);this.end_date=new Date(this.end_date);this.event_length=this.event_pid=this.rec_pattern=this.rec_type=this._timed=null}; -scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+ -'" /><br /> </div> </form> </div> <div style="clear:both"> </div>'; diff --git a/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_btns.gif b/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_btns.gif Binary files differdeleted file mode 100644 index 7de4aab..0000000 --- a/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_btns.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_cell_progress.gif b/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_cell_progress.gif Binary files differdeleted file mode 100644 index 1df5c43..0000000 --- a/samples/dhtmlx/imgs/dhxacc_skyblue/dhxacc_cell_progress.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif b/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif Binary files differdeleted file mode 100644 index f927e47..0000000 --- a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_left.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif b/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif Binary files differdeleted file mode 100644 index c2a4835..0000000 --- a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_arrow_right.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_clock.gif b/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_clock.gif Binary files differdeleted file mode 100644 index c3f7391..0000000 --- a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_clock.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_mark.gif b/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_mark.gif Binary files differdeleted file mode 100644 index 7390c60..0000000 --- a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_mark.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_bottom.gif b/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_bottom.gif Binary files differdeleted file mode 100644 index b6f2c4b..0000000 --- a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_bottom.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_top.gif b/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_top.gif Binary files differdeleted file mode 100644 index 090b597..0000000 --- a/samples/dhtmlx/imgs/dhxcalendar_skyblue/dhxcalendar_selector_top.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif b/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif Binary files differdeleted file mode 100644 index 7fdb358..0000000 --- a/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif b/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif Binary files differdeleted file mode 100644 index c256a28..0000000 --- a/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_arrow_down_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif b/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif Binary files differdeleted file mode 100644 index 60d880e..0000000 --- a/samples/dhtmlx/imgs/dhxcombo_skyblue/dhxcombo_chbx.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_colors.png b/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_colors.png Binary files differdeleted file mode 100644 index ede480c..0000000 --- a/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_colors.png +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_icon_save.png b/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_icon_save.png Binary files differdeleted file mode 100644 index d56e0b1..0000000 --- a/samples/dhtmlx/imgs/dhxcp_skyblue/dhxcp_icon_save.png +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector.png b/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector.png Binary files differdeleted file mode 100644 index 5d8e9b4..0000000 --- a/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector.png +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_cells.png b/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_cells.png Binary files differdeleted file mode 100644 index 63da638..0000000 --- a/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_cells.png +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_lines.png b/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_lines.png Binary files differdeleted file mode 100644 index 576ecfd..0000000 --- a/samples/dhtmlx/imgs/dhxdataview_skyblue/dnd_selector_lines.png +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxdataview_skyblue/marker.png b/samples/dhtmlx/imgs/dhxdataview_skyblue/marker.png Binary files differdeleted file mode 100644 index ceec125..0000000 --- a/samples/dhtmlx/imgs/dhxdataview_skyblue/marker.png +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_center.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/align_center.gif Binary files differdeleted file mode 100644 index bc3f7ce..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_center.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_justify.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/align_justify.gif Binary files differdeleted file mode 100644 index 6efd2ce..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_justify.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_left.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/align_left.gif Binary files differdeleted file mode 100644 index 2acb732..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_left.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_right.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/align_right.gif Binary files differdeleted file mode 100644 index 35c828b..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/align_right.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/bold.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/bold.gif Binary files differdeleted file mode 100644 index 32416d4..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/bold.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/buttons.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/buttons.gif Binary files differdeleted file mode 100644 index 5170c32..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/buttons.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/clear.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/clear.gif Binary files differdeleted file mode 100644 index 51f1aee..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/clear.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/h1.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/h1.gif Binary files differdeleted file mode 100644 index 6b13a66..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/h1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/h2.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/h2.gif Binary files differdeleted file mode 100644 index b83cf54..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/h2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/h3.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/h3.gif Binary files differdeleted file mode 100644 index b5647b8..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/h3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/h4.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/h4.gif Binary files differdeleted file mode 100644 index b5c1dc2..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/h4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_dec.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_dec.gif Binary files differdeleted file mode 100644 index b16fbb5..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_dec.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_inc.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_inc.gif Binary files differdeleted file mode 100644 index a4567b1..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/indent_inc.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/italic.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/italic.gif Binary files differdeleted file mode 100644 index 8dc358c..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/italic.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/list_bullet.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/list_bullet.gif Binary files differdeleted file mode 100644 index dc64941..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/list_bullet.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/list_number.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/list_number.gif Binary files differdeleted file mode 100644 index eea183d..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/list_number.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/script_sub.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/script_sub.gif Binary files differdeleted file mode 100644 index 02d1cb6..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/script_sub.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/script_super.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/script_super.gif Binary files differdeleted file mode 100644 index 945ae76..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/script_super.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/strike.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/strike.gif Binary files differdeleted file mode 100644 index 0324297..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/strike.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxeditor_skyblue/underline.gif b/samples/dhtmlx/imgs/dhxeditor_skyblue/underline.gif Binary files differdeleted file mode 100644 index 16aa16d..0000000 --- a/samples/dhtmlx/imgs/dhxeditor_skyblue/underline.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_chbxrd.gif b/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_chbxrd.gif Binary files differdeleted file mode 100644 index d176df1..0000000 --- a/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_chbxrd.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_buttons.gif b/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_buttons.gif Binary files differdeleted file mode 100644 index 96a9b8a..0000000 --- a/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_buttons.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_uploading.gif b/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_uploading.gif Binary files differdeleted file mode 100644 index fbdfbdd..0000000 --- a/samples/dhtmlx/imgs/dhxform_skyblue/dhxform_upload_uploading.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left.gif Binary files differdeleted file mode 100644 index 07ef2fc..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs.gif Binary files differdeleted file mode 100644 index 2d32720..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs_dis.gif Binary files differdeleted file mode 100644 index 35050e8..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_abs_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_dis.gif Binary files differdeleted file mode 100644 index 2ac953e..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_left_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right.gif Binary files differdeleted file mode 100644 index cf326d3..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs.gif Binary files differdeleted file mode 100644 index 0736a5f..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs_dis.gif Binary files differdeleted file mode 100644 index f454ee7..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_abs_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_dis.gif Binary files differdeleted file mode 100644 index 2cf6399..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/ar_right_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/blank.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/blank.gif Binary files differdeleted file mode 100644 index d7ae406..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/blank.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_.gif Binary files differdeleted file mode 100644 index 361094a..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_down.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_down.gif Binary files differdeleted file mode 100644 index b73c84e..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_down.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_up.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_up.gif Binary files differdeleted file mode 100644 index 556a9fb..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/dyn_up.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/imageloaderror.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/imageloaderror.gif Binary files differdeleted file mode 100644 index d7ae406..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/imageloaderror.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0.gif Binary files differdeleted file mode 100644 index a98e298..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0_dis.gif Binary files differdeleted file mode 100644 index 2082b54..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk0_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1.gif Binary files differdeleted file mode 100644 index 2ebae89..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1_dis.gif Binary files differdeleted file mode 100644 index 17a0b16..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/item_chk1_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/minus.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/minus.gif Binary files differdeleted file mode 100644 index ef04a54..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/minus.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_page.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_page.gif Binary files differdeleted file mode 100644 index efda03a..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_page.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_pages.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_pages.gif Binary files differdeleted file mode 100644 index 5c17308..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_pages.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_rows.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_rows.gif Binary files differdeleted file mode 100644 index 217fb96..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/paging_rows.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/plus.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/plus.gif Binary files differdeleted file mode 100644 index abb84bd..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/plus.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0.gif Binary files differdeleted file mode 100644 index f2ee489..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0_dis.gif Binary files differdeleted file mode 100644 index ada7848..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk0_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1.gif Binary files differdeleted file mode 100644 index 54af4c8..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1_dis.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1_dis.gif Binary files differdeleted file mode 100644 index af5d41f..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/radio_chk1_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_asc.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_asc.gif Binary files differdeleted file mode 100644 index c3c0983..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_asc.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_desc.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_desc.gif Binary files differdeleted file mode 100644 index e080183..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/sort_desc.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/blank.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/blank.gif Binary files differdeleted file mode 100644 index d7ae406..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/blank.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/folder.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/folder.gif Binary files differdeleted file mode 100644 index e0a88ce..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/folder.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/leaf.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/leaf.gif Binary files differdeleted file mode 100644 index 9c3e531..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/leaf.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line.gif Binary files differdeleted file mode 100644 index b4f560c..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line1.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line1.gif Binary files differdeleted file mode 100644 index b4f560c..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line2.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line2.gif Binary files differdeleted file mode 100644 index 23b2ce3..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line3.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line3.gif Binary files differdeleted file mode 100644 index 43152c5..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line4.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line4.gif Binary files differdeleted file mode 100644 index 907fe7a..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/line4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus.gif Binary files differdeleted file mode 100644 index ea11fd9..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus1.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus1.gif Binary files differdeleted file mode 100644 index d6a8b2b..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus2.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus2.gif Binary files differdeleted file mode 100644 index a3fad45..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus3.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus3.gif Binary files differdeleted file mode 100644 index dbc1292..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus4.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus4.gif Binary files differdeleted file mode 100644 index 1c2fccf..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus5.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus5.gif Binary files differdeleted file mode 100644 index 031c160..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/minus5.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus.gif Binary files differdeleted file mode 100644 index 2d50cd2..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus1.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus1.gif Binary files differdeleted file mode 100644 index cb8add4..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus2.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus2.gif Binary files differdeleted file mode 100644 index d57afa9..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus3.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus3.gif Binary files differdeleted file mode 100644 index 2b6546b..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus4.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus4.gif Binary files differdeleted file mode 100644 index a4fe8c0..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus5.gif b/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus5.gif Binary files differdeleted file mode 100644 index 88c35a4..0000000 --- a/samples/dhtmlx/imgs/dhxgrid_skyblue/tree/plus5.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_btns.gif b/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_btns.gif Binary files differdeleted file mode 100644 index f23cd77..0000000 --- a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_btns.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif b/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif Binary files differdeleted file mode 100644 index 1df5c43..0000000 --- a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_cell_progress.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif b/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif Binary files differdeleted file mode 100644 index 3996e4f..0000000 --- a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_h.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif b/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif Binary files differdeleted file mode 100644 index 5f4391d..0000000 --- a/samples/dhtmlx/imgs/dhxlayout_skyblue/dhxlayout_sep_v.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down.gif Binary files differdeleted file mode 100644 index 60be3f7..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down_dis.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down_dis.gif Binary files differdeleted file mode 100644 index d849732..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_down_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up.gif Binary files differdeleted file mode 100644 index c23a23a..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up_dis.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up_dis.gif Binary files differdeleted file mode 100644 index a43cfe3..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_arrow_up_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_chrd.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_chrd.gif Binary files differdeleted file mode 100644 index 235caaf..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_chrd.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_loader.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_loader.gif Binary files differdeleted file mode 100644 index 21cc17e..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_loader.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_subar.gif b/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_subar.gif Binary files differdeleted file mode 100644 index 4603471..0000000 --- a/samples/dhtmlx/imgs/dhxmenu_skyblue/dhxmenu_subar.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_bottom.gif b/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_bottom.gif Binary files differdeleted file mode 100644 index e20fd4c..0000000 --- a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_bottom.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_left.gif b/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_left.gif Binary files differdeleted file mode 100644 index e337c53..0000000 --- a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_left.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_right.gif b/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_right.gif Binary files differdeleted file mode 100644 index f0c7c59..0000000 --- a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_right.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_top.gif b/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_top.gif Binary files differdeleted file mode 100644 index bec146f..0000000 --- a/samples/dhtmlx/imgs/dhxpopup_skyblue/dhxpopup_arrow_top.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_arrow.gif b/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_arrow.gif Binary files differdeleted file mode 100644 index f64e20b..0000000 --- a/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_arrow.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked.gif b/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked.gif Binary files differdeleted file mode 100644 index 9858188..0000000 --- a/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked_dis.gif b/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked_dis.gif Binary files differdeleted file mode 100644 index 2aa750b..0000000 --- a/samples/dhtmlx/imgs/dhxribbon_skyblue/dhxribbon_checked_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif b/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif Binary files differdeleted file mode 100644 index 56490ce..0000000 --- a/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_arrows.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_button_close.gif b/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_button_close.gif Binary files differdeleted file mode 100644 index 1445534..0000000 --- a/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_button_close.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif b/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif Binary files differdeleted file mode 100644 index 1df5c43..0000000 --- a/samples/dhtmlx/imgs/dhxtabbar_skyblue/dhxtabbar_cell_progress.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow.gif b/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow.gif Binary files differdeleted file mode 100644 index 8e805d8..0000000 --- a/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow_dis.gif b/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow_dis.gif Binary files differdeleted file mode 100644 index 3eddbbd..0000000 --- a/samples/dhtmlx/imgs/dhxtoolbar_skyblue/dhxtoolbar_arrow_dis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/blank.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/blank.gif Binary files differdeleted file mode 100644 index d7ae406..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/blank.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/but_cut.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/but_cut.gif Binary files differdeleted file mode 100644 index 942bd18..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/but_cut.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/folderClosed.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/folderClosed.gif Binary files differdeleted file mode 100644 index e0a88ce..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/folderClosed.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/folderOpen.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/folderOpen.gif Binary files differdeleted file mode 100644 index 1680dbc..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/folderOpen.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckAll.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckAll.gif Binary files differdeleted file mode 100644 index a61302a..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckAll.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckDis.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckDis.gif Binary files differdeleted file mode 100644 index 42447b8..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckDis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckGray.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckGray.gif Binary files differdeleted file mode 100644 index 0350b2a..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/iconCheckGray.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckAll.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckAll.gif Binary files differdeleted file mode 100644 index 9f3fe50..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckAll.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckDis.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckDis.gif Binary files differdeleted file mode 100644 index f15d9f7..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/iconUncheckDis.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/leaf.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/leaf.gif Binary files differdeleted file mode 100644 index 9c3e531..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/leaf.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line.gif Binary files differdeleted file mode 100644 index b4f560c..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line1.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line1.gif Binary files differdeleted file mode 100644 index b4f560c..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line1_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line1_rtl.gif Binary files differdeleted file mode 100644 index bf32db2..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line1_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line2.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line2.gif Binary files differdeleted file mode 100644 index 23b2ce3..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line2_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line2_rtl.gif Binary files differdeleted file mode 100644 index 6ec17b5..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line2_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line3.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line3.gif Binary files differdeleted file mode 100644 index 43152c5..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line3_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line3_rtl.gif Binary files differdeleted file mode 100644 index 74a874c..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line3_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line4.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line4.gif Binary files differdeleted file mode 100644 index 907fe7a..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/line4_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/line4_rtl.gif Binary files differdeleted file mode 100644 index 5c7e162..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/line4_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/lock.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/lock.gif Binary files differdeleted file mode 100644 index 67456b1..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/lock.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus.gif Binary files differdeleted file mode 100644 index caa3f57..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus1.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus1.gif Binary files differdeleted file mode 100644 index 2ab1070..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus2.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus2.gif Binary files differdeleted file mode 100644 index 036e5b3..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus2_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus2_rtl.gif Binary files differdeleted file mode 100644 index b4672bf..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus2_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus3.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus3.gif Binary files differdeleted file mode 100644 index 3242cca..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus3_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus3_rtl.gif Binary files differdeleted file mode 100644 index 8c279e0..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus3_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus4.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus4.gif Binary files differdeleted file mode 100644 index 1c7c0a7..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus4_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus4_rtl.gif Binary files differdeleted file mode 100644 index 70992fe..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus4_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus5.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus5.gif Binary files differdeleted file mode 100644 index 031c160..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus5.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/minus5_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/minus5_rtl.gif Binary files differdeleted file mode 100644 index 47e25cd..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/minus5_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus.gif Binary files differdeleted file mode 100644 index 019cfbd..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus1.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus1.gif Binary files differdeleted file mode 100644 index 34dee94..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus1.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus2.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus2.gif Binary files differdeleted file mode 100644 index d57afa9..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus2.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus2_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus2_rtl.gif Binary files differdeleted file mode 100644 index fde3a58..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus2_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus3.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus3.gif Binary files differdeleted file mode 100644 index 2b6546b..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus3.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus3_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus3_rtl.gif Binary files differdeleted file mode 100644 index 863d34c..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus3_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus4.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus4.gif Binary files differdeleted file mode 100644 index a4fe8c0..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus4.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus4_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus4_rtl.gif Binary files differdeleted file mode 100644 index 635e6f6..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus4_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus5.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus5.gif Binary files differdeleted file mode 100644 index 88c35a4..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus5.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/plus5_rtl.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/plus5_rtl.gif Binary files differdeleted file mode 100644 index 2ae5444..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/plus5_rtl.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/radio_off.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/radio_off.gif Binary files differdeleted file mode 100644 index a050afd..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/radio_off.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxtree_skyblue/radio_on.gif b/samples/dhtmlx/imgs/dhxtree_skyblue/radio_on.gif Binary files differdeleted file mode 100644 index 4d594b5..0000000 --- a/samples/dhtmlx/imgs/dhxtree_skyblue/radio_on.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_buttons.gif b/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_buttons.gif Binary files differdeleted file mode 100644 index 625a0e7..0000000 --- a/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_buttons.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_icon.gif b/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_icon.gif Binary files differdeleted file mode 100644 index e9427ac..0000000 --- a/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_icon.gif +++ /dev/null diff --git a/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_progress.gif b/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_progress.gif Binary files differdeleted file mode 100644 index 1df5c43..0000000 --- a/samples/dhtmlx/imgs/dhxwins_skyblue/dhxwins_progress.gif +++ /dev/null diff --git a/samples/dump.sql b/samples/dump.sql deleted file mode 100644 index 4c91e59..0000000 --- a/samples/dump.sql +++ /dev/null @@ -1,500 +0,0 @@ --- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32) --- --- Host: localhost Database: sampledb1 --- ------------------------------------------------------ --- Server version 5.1.41 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; - --- --- Table structure for table `actions_table` --- - -DROP TABLE IF EXISTS `actions_table`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `actions_table` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `dataId` int(11) NOT NULL, - `type` varchar(255) NOT NULL, - `user` varchar(255) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `actions_table` --- - -LOCK TABLES `actions_table` WRITE; -/*!40000 ALTER TABLE `actions_table` DISABLE KEYS */; -/*!40000 ALTER TABLE `actions_table` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `countries` --- - -DROP TABLE IF EXISTS `countries`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `countries` ( - `item_id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `item_nm` varchar(200) DEFAULT NULL, - `item_cd` varchar(15) DEFAULT NULL, - PRIMARY KEY (`item_id`) -) ENGINE=MyISAM AUTO_INCREMENT=196 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `countries` --- - -LOCK TABLES `countries` WRITE; -/*!40000 ALTER TABLE `countries` DISABLE KEYS */; -INSERT INTO `countries` VALUES (1,'Afghanistan ','293141'),(2,'Albania ','553524'),(3,'Algeria ','727298'),(4,'Andorra ','804756'),(5,'Angola ','376164'),(6,'Antigua and Barbuda ','366907'),(7,'Argentina ','316613'),(8,'Armenia ','816466'),(9,'Australia ','410238'),(10,'Austria ','894267'),(11,'Azerbaijan ','815701'),(12,'Bahamas ','610438'),(13,'Bahrain ','908482'),(14,'Bangladesh ','164149'),(15,'Barbados ','793231'),(16,'Belarus ','591765'),(17,'Belgium ','223516'),(18,'Belize ','958196'),(19,'Benin ','978371'),(20,'Bhutan ','733443'),(21,'Bolivia ','596856'),(22,'Bosnia and Herzegovina ','440752'),(23,'Botswana ','803991'),(24,'Brazil ','576364'),(25,'Brunei ','381122'),(26,'Bulgaria ','529261'),(27,'Burkina Faso ','135060'),(28,'Burundi ','957721'),(29,'Cambodia ','953633'),(30,'Cameroon ','980666'),(31,'Canada ','132844'),(32,'Cape Verde ','554210'),(33,'Central African Republic ','667008'),(34,'Chad ','255612'),(35,'Chile ','662314'),(36,'China ','203024'),(37,'Colombia ','898566'),(38,'Comoros ','703641'),(39,'Congo (Brazzaville) ','292139'),(40,'Congo, Democratic Republic of the ','309255'),(41,'Costa Rica ','865124'),(42,'Croatia ','615686'),(43,'Cuba ','845898'),(44,'Cyprus ','215604'),(45,'Czech Republic ','257827'),(46,'Denmark ','201626'),(47,'Djibouti ','489648'),(48,'Dominica ','759420'),(49,'Dominican Republic ','174171'),(50,'East Timor (Timor Timur) ','643325'),(51,'Ecuador ','941897'),(52,'Egypt ','417095'),(53,'El Salvador ','291374'),(54,'Equatorial Guinea ','509455'),(55,'Eritrea ','879340'),(56,'Estonia ','133847'),(57,'Ethiopia ','798479'),(58,'Fiji ','529182'),(59,'Finland ','274970'),(60,'France ','422792'),(61,'Gabon ','588231'),(62,'Gambia, The ','135376'),(63,'Georgia ','398080'),(64,'Germany ','500751'),(65,'Ghana ','713874'),(66,'Greece ','921405'),(67,'Grenada ','357465'),(68,'Guatemala ','880843'),(69,'Guinea ','932350'),(70,'Guinea-Bissau ','591739'),(71,'Guyana ','558219'),(72,'Haiti ','779886'),(73,'Honduras ','568504'),(74,'Hungary ','739746'),(75,'Iceland ','973334'),(76,'India ','710999'),(77,'Indonesia ','243480'),(78,'Iran ','798294'),(79,'Iraq ','279506'),(80,'Ireland ','755201'),(81,'Israel ','146321'),(82,'Italy ','632354'),(83,'Jamaica ','178127'),(84,'Japan ','561410'),(85,'Jordan ','898170'),(86,'Kazakhstan ','538993'),(87,'Kenya ','210092'),(88,'Kiribati ','210645'),(89,'Korea, North ','959672'),(90,'Korea, South ','383179'),(91,'Kuwait ','348393'),(92,'Kyrgyzstan ','216026'),(93,'Laos ','951971'),(94,'Latvia ','461983'),(95,'Lebanon ','133926'),(96,'Lesotho ','658569'),(97,'Liberia ','199912'),(98,'Libya ','640371'),(99,'Liechtenstein ','403882'),(100,'Lithuania ','322996'),(101,'Luxembourg ','188835'),(102,'Macedonia','351215'),(103,'Madagascar ','699157'),(104,'Malawi ','154523'),(105,'Malaysia ','243586'),(106,'Maldives ','323681'),(107,'Mali ','128546'),(108,'Malta ','666270'),(109,'Marshall Islands ','985307'),(110,'Mauritania ','854839'),(111,'Mauritius ','825538'),(112,'Mexico ','210856'),(113,'Micronesia, Federated States of ','874645'),(114,'Moldova ','945457'),(115,'Monaco ','170532'),(116,'Mongolia ','165600'),(117,'Montenegro ','532742'),(118,'Morocco ','892605'),(119,'Mozambique ','297018'),(120,'Myanmar (Burma) ','611519'),(121,'Namibia ','148642'),(122,'Nauru ','561252'),(123,'Nepal ','313791'),(124,'Netherlands ','333334'),(125,'New Zealand ','343488'),(126,'Nicaragua ','248465'),(127,'Niger ','625945'),(128,'Nigeria ','276262'),(129,'Norway ','442124'),(130,'Oman ','683413'),(131,'Pakistan ','342274'),(132,'Palau ','953422'),(133,'Panama ','201494'),(134,'Papua New Guinea ','434765'),(135,'Paraguay ','732071'),(136,'Peru ','717434'),(137,'Philippines ','674841'),(138,'Poland ','231691'),(139,'Portugal ','904130'),(140,'Qatar ','945616'),(141,'Romania ','754910'),(142,'Russia ','371259'),(143,'Rwanda ','399346'),(144,'Saint Kitts and Nevis ','854786'),(145,'Saint Lucia ','630745'),(146,'Saint Vincent and The Grenadines ','718436'),(147,'Samoa ','919110'),(148,'San Marino ','958064'),(149,'Sao Tome and Principe ','923488'),(150,'Saudi Arabia ','706094'),(151,'Senegal ','275919'),(152,'Serbia ','472268'),(153,'Seychelles ','957985'),(154,'Sierra Leone ','199200'),(155,'Singapore ','171165'),(156,'Slovakia ','774717'),(157,'Slovenia ','491178'),(158,'Solomon Islands ','359021'),(159,'Somalia ','145741'),(160,'South Africa ','218030'),(161,'Spain ','576311'),(162,'Sri Lanka ','186329'),(163,'Sudan ','172642'),(164,'Suriname ','179525'),(165,'Swaziland ','970327'),(166,'Sweden ','842391'),(167,'Switzerland ','656960'),(168,'Syria ','740221'),(169,'Taiwan ','133873'),(170,'Tajikistan ','463776'),(171,'Tanzania ','707491'),(172,'Thailand ','684837'),(173,'Togo ','416489'),(174,'Tonga ','211753'),(175,'Trinidad and Tobago ','729328'),(176,'Tunisia ','958591'),(177,'Turkey ','278820'),(178,'Turkmenistan ','815490'),(179,'Tuvalu ','695465'),(180,'Uganda ','346204'),(181,'Ukraine ','342011'),(182,'United Arab Emirates ','843656'),(183,'United Kingdom ','146796'),(184,'United States ','657092'),(185,'Uruguay ','795103'),(186,'Uzbekistan ','161222'),(187,'Vanuatu ','784712'),(188,'Vatican City ','675975'),(189,'Venezuela ','530843'),(190,'Vietnam ','793653'),(191,'Western Sahara ','421711'),(192,'Yemen ','483872'),(193,'Zambia ','602473'),(194,'Zimbabwe ','877520'),(195,'','759183'); -/*!40000 ALTER TABLE `countries` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `country_data` --- - -DROP TABLE IF EXISTS `country_data`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `country_data` ( - `country_id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `full_name` varchar(255) NOT NULL, - `type` varchar(255) NOT NULL, - `subtype` varchar(255) NOT NULL, - `sovereignty` varchar(255) NOT NULL, - `capital` varchar(255) NOT NULL, - `currency_code` char(3) NOT NULL, - `currency_name` varchar(20) NOT NULL, - `phone_code` char(8) NOT NULL, - `letter_code` char(3) NOT NULL, - `letter_code_alt` char(3) NOT NULL, - `iso_number` char(3) NOT NULL, - `code` varchar(4) NOT NULL, - PRIMARY KEY (`country_id`) -) ENGINE=MyISAM AUTO_INCREMENT=273 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `country_data` --- - -LOCK TABLES `country_data` WRITE; -/*!40000 ALTER TABLE `country_data` DISABLE KEYS */; -INSERT INTO `country_data` VALUES (1,'Afghanistan','Islamic State of Afghanistan','Independent State','','','Kabul','AFN','Afghani','+93','AF','AFG','004','.af'),(2,'Albania','Republic of Albania','Independent State','','','Tirana','ALL','Lek','+355','AL','ALB','008','.al'),(3,'Algeria','People\'s Democratic Republic of Algeria','Independent State','','','Algiers','DZD','Dinar','+213','DZ','DZA','012','.dz'),(4,'Andorra','Principality of Andorra','Independent State','','','Andorra la Vella','EUR','Euro','+376','AD','AND','020','.ad'),(5,'Angola','Republic of Angola','Independent State','','','Luanda','AOA','Kwanza','+244','AO','AGO','024','.ao'),(6,'Antigua and Barbuda','','Independent State','','','Saint John\'s','XCD','Dollar','+1-268','AG','ATG','028','.ag'),(7,'Argentina','Argentine Republic','Independent State','','','Buenos Aires','ARS','Peso','+54','AR','ARG','032','.ar'),(8,'Armenia','Republic of Armenia','Independent State','','','Yerevan','AMD','Dram','+374','AM','ARM','051','.am'),(9,'Australia','Commonwealth of Australia','Independent State','','','Canberra','AUD','Dollar','+61','AU','AUS','036','.au'),(10,'Austria','Republic of Austria','Independent State','','','Vienna','EUR','Euro','+43','AT','AUT','040','.at'),(11,'Azerbaijan','Republic of Azerbaijan','Independent State','','','Baku','AZN','Manat','+994','AZ','AZE','031','.az'),(12,'Bahamas, The','Commonwealth of The Bahamas','Independent State','','','Nassau','BSD','Dollar','+1-242','BS','BHS','044','.bs'),(13,'Bahrain','Kingdom of Bahrain','Independent State','','','Manama','BHD','Dinar','+973','BH','BHR','048','.bh'),(14,'Bangladesh','People\'s Republic of Bangladesh','Independent State','','','Dhaka','BDT','Taka','+880','BD','BGD','050','.bd'),(15,'Barbados','','Independent State','','','Bridgetown','BBD','Dollar','+1-246','BB','BRB','052','.bb'),(16,'Belarus','Republic of Belarus','Independent State','','','Minsk','BYR','Ruble','+375','BY','BLR','112','.by'),(17,'Belgium','Kingdom of Belgium','Independent State','','','Brussels','EUR','Euro','+32','BE','BEL','056','.be'),(18,'Belize','','Independent State','','','Belmopan','BZD','Dollar','+501','BZ','BLZ','084','.bz'),(19,'Benin','Republic of Benin','Independent State','','','Porto-Novo','XOF','Franc','+229','BJ','BEN','204','.bj'),(20,'Bhutan','Kingdom of Bhutan','Independent State','','','Thimphu','BTN','Ngultrum','+975','BT','BTN','064','.bt'),(21,'Bolivia','Republic of Bolivia','Independent State','','','La Paz (administrative/legislative) and Sucre (judical)','BOB','Boliviano','+591','BO','BOL','068','.bo'),(22,'Bosnia and Herzegovina','','Independent State','','','Sarajevo','BAM','Marka','+387','BA','BIH','070','.ba'),(23,'Botswana','Republic of Botswana','Independent State','','','Gaborone','BWP','Pula','+267','BW','BWA','072','.bw'),(24,'Brazil','Federative Republic of Brazil','Independent State','','','Brasilia','BRL','Real','+55','BR','BRA','076','.br'),(25,'Brunei','Negara Brunei Darussalam','Independent State','','','Bandar Seri Begawan','BND','Dollar','+673','BN','BRN','096','.bn'),(26,'Bulgaria','Republic of Bulgaria','Independent State','','','Sofia','BGN','Lev','+359','BG','BGR','100','.bg'),(27,'Burkina Faso','','Independent State','','','Ouagadougou','XOF','Franc','+226','BF','BFA','854','.bf'),(28,'Burundi','Republic of Burundi','Independent State','','','Bujumbura','BIF','Franc','+257','BI','BDI','108','.bi'),(29,'Cambodia','Kingdom of Cambodia','Independent State','','','Phnom Penh','KHR','Riels','+855','KH','KHM','116','.kh'),(30,'Cameroon','Republic of Cameroon','Independent State','','','Yaounde','XAF','Franc','+237','CM','CMR','120','.cm'),(31,'Canada','','Independent State','','','Ottawa','CAD','Dollar','+1','CA','CAN','124','.ca'),(32,'Cape Verde','Republic of Cape Verde','Independent State','','','Praia','CVE','Escudo','+238','CV','CPV','132','.cv'),(33,'Central African Republic','','Independent State','','','Bangui','XAF','Franc','+236','CF','CAF','140','.cf'),(34,'Chad','Republic of Chad','Independent State','','','N\'Djamena','XAF','Franc','+235','TD','TCD','148','.td'),(35,'Chile','Republic of Chile','Independent State','','','Santiago (administrative/judical) and Valparaiso (legislative)','CLP','Peso','+56','CL','CHL','152','.cl'),(36,'China, People\'s Republic of','People\'s Republic of China','Independent State','','','Beijing','CNY','Yuan Renminbi','+86','CN','CHN','156','.cn'),(37,'Colombia','Republic of Colombia','Independent State','','','Bogota','COP','Peso','+57','CO','COL','170','.co'),(38,'Comoros','Union of Comoros','Independent State','','','Moroni','KMF','Franc','+269','KM','COM','174','.km'),(39,'Congo, Democratic Republic of the (Congo ? Kinshasa)','Democratic Republic of the Congo','Independent State','','','Kinshasa','CDF','Franc','+243','CD','COD','180','.cd'),(40,'Congo, Republic of the (Congo ? Brazzaville)','Republic of the Congo','Independent State','','','Brazzaville','XAF','Franc','+242','CG','COG','178','.cg'),(41,'Costa Rica','Republic of Costa Rica','Independent State','','','San Jose','CRC','Colon','+506','CR','CRI','188','.cr'),(42,'Cote d\'Ivoire (Ivory Coast)','Republic of Cote d\'Ivoire','Independent State','','','Yamoussoukro','XOF','Franc','+225','CI','CIV','384','.ci'),(43,'Croatia','Republic of Croatia','Independent State','','','Zagreb','HRK','Kuna','+385','HR','HRV','191','.hr'),(44,'Cuba','Republic of Cuba','Independent State','','','Havana','CUP','Peso','+53','CU','CUB','192','.cu'),(45,'Cyprus','Republic of Cyprus','Independent State','','','Nicosia','CYP','Pound','+357','CY','CYP','196','.cy'),(46,'Czech Republic','','Independent State','','','Prague','CZK','Koruna','+420','CZ','CZE','203','.cz'),(47,'Denmark','Kingdom of Denmark','Independent State','','','Copenhagen','DKK','Krone','+45','DK','DNK','208','.dk'),(48,'Djibouti','Republic of Djibouti','Independent State','','','Djibouti','DJF','Franc','+253','DJ','DJI','262','.dj'),(49,'Dominica','Commonwealth of Dominica','Independent State','','','Roseau','XCD','Dollar','+1-767','DM','DMA','212','.dm'),(50,'Dominican Republic','','Independent State','','','Santo Domingo','DOP','Peso','+1-809 a','DO','DOM','214','.do'),(51,'Ecuador','Republic of Ecuador','Independent State','','','Quito','USD','Dollar','+593','EC','ECU','218','.ec'),(52,'Egypt','Arab Republic of Egypt','Independent State','','','Cairo','EGP','Pound','+20','EG','EGY','818','.eg'),(53,'El Salvador','Republic of El Salvador','Independent State','','','San Salvador','USD','Dollar','+503','SV','SLV','222','.sv'),(54,'Equatorial Guinea','Republic of Equatorial Guinea','Independent State','','','Malabo','XAF','Franc','+240','GQ','GNQ','226','.gq'),(55,'Eritrea','State of Eritrea','Independent State','','','Asmara','ERN','Nakfa','+291','ER','ERI','232','.er'),(56,'Estonia','Republic of Estonia','Independent State','','','Tallinn','EEK','Kroon','+372','EE','EST','233','.ee'),(57,'Ethiopia','Federal Democratic Republic of Ethiopia','Independent State','','','Addis Ababa','ETB','Birr','+251','ET','ETH','231','.et'),(58,'Fiji','Republic of the Fiji Islands','Independent State','','','Suva','FJD','Dollar','+679','FJ','FJI','242','.fj'),(59,'Finland','Republic of Finland','Independent State','','','Helsinki','EUR','Euro','+358','FI','FIN','246','.fi'),(60,'France','French Republic','Independent State','','','Paris','EUR','Euro','+33','FR','FRA','250','.fr'),(61,'Gabon','Gabonese Republic','Independent State','','','Libreville','XAF','Franc','+241','GA','GAB','266','.ga'),(62,'Gambia, The','Republic of The Gambia','Independent State','','','Banjul','GMD','Dalasi','+220','GM','GMB','270','.gm'),(63,'Georgia','Republic of Georgia','Independent State','','','Tbilisi','GEL','Lari','+995','GE','GEO','268','.ge'),(64,'Germany','Federal Republic of Germany','Independent State','','','Berlin','EUR','Euro','+49','DE','DEU','276','.de'),(65,'Ghana','Republic of Ghana','Independent State','','','Accra','GHS','Cedi','+233','GH','GHA','288','.gh'),(66,'Greece','Hellenic Republic','Independent State','','','Athens','EUR','Euro','+30','GR','GRC','300','.gr'),(67,'Grenada','','Independent State','','','Saint George\'s','XCD','Dollar','+1-473','GD','GRD','308','.gd'),(68,'Guatemala','Republic of Guatemala','Independent State','','','Guatemala','GTQ','Quetzal','+502','GT','GTM','320','.gt'),(69,'Guinea','Republic of Guinea','Independent State','','','Conakry','GNF','Franc','+224','GN','GIN','324','.gn'),(70,'Guinea-Bissau','Republic of Guinea-Bissau','Independent State','','','Bissau','XOF','Franc','+245','GW','GNB','624','.gw'),(71,'Guyana','Co-operative Republic of Guyana','Independent State','','','Georgetown','GYD','Dollar','+592','GY','GUY','328','.gy'),(72,'Haiti','Republic of Haiti','Independent State','','','Port-au-Prince','HTG','Gourde','+509','HT','HTI','332','.ht'),(73,'Honduras','Republic of Honduras','Independent State','','','Tegucigalpa','HNL','Lempira','+504','HN','HND','340','.hn'),(74,'Hungary','Republic of Hungary','Independent State','','','Budapest','HUF','Forint','+36','HU','HUN','348','.hu'),(75,'Iceland','Republic of Iceland','Independent State','','','Reykjavik','ISK','Krona','+354','IS','ISL','352','.is'),(76,'India','Republic of India','Independent State','','','New Delhi','INR','Rupee','+91','IN','IND','356','.in'),(77,'Indonesia','Republic of Indonesia','Independent State','','','Jakarta','IDR','Rupiah','+62','ID','IDN','360','.id'),(78,'Iran','Islamic Republic of Iran','Independent State','','','Tehran','IRR','Rial','+98','IR','IRN','364','.ir'),(79,'Iraq','Republic of Iraq','Independent State','','','Baghdad','IQD','Dinar','+964','IQ','IRQ','368','.iq'),(80,'Ireland','','Independent State','','','Dublin','EUR','Euro','+353','IE','IRL','372','.ie'),(81,'Israel','State of Israel','Independent State','','','Jerusalem','ILS','Shekel','+972','IL','ISR','376','.il'),(82,'Italy','Italian Republic','Independent State','','','Rome','EUR','Euro','+39','IT','ITA','380','.it'),(83,'Jamaica','','Independent State','','','Kingston','JMD','Dollar','+1-876','JM','JAM','388','.jm'),(84,'Japan','','Independent State','','','Tokyo','JPY','Yen','+81','JP','JPN','392','.jp'),(85,'Jordan','Hashemite Kingdom of Jordan','Independent State','','','Amman','JOD','Dinar','+962','JO','JOR','400','.jo'),(86,'Kazakhstan','Republic of Kazakhstan','Independent State','','','Astana','KZT','Tenge','+7','KZ','KAZ','398','.kz'),(87,'Kenya','Republic of Kenya','Independent State','','','Nairobi','KES','Shilling','+254','KE','KEN','404','.ke'),(88,'Kiribati','Republic of Kiribati','Independent State','','','Tarawa','AUD','Dollar','+686','KI','KIR','296','.ki'),(89,'Korea, Democratic People\'s Republic of (North Korea)','Democratic People\'s Republic of Korea','Independent State','','','Pyongyang','KPW','Won','+850','KP','PRK','408','.kp'),(90,'Korea, Republic of (South Korea)','Republic of Korea','Independent State','','','Seoul','KRW','Won','+82','KR','KOR','410','.kr'),(91,'Kuwait','State of Kuwait','Independent State','','','Kuwait','KWD','Dinar','+965','KW','KWT','414','.kw'),(92,'Kyrgyzstan','Kyrgyz Republic','Independent State','','','Bishkek','KGS','Som','+996','KG','KGZ','417','.kg'),(93,'Laos','Lao People\'s Democratic Republic','Independent State','','','Vientiane','LAK','Kip','+856','LA','LAO','418','.la'),(94,'Latvia','Republic of Latvia','Independent State','','','Riga','LVL','Lat','+371','LV','LVA','428','.lv'),(95,'Lebanon','Lebanese Republic','Independent State','','','Beirut','LBP','Pound','+961','LB','LBN','422','.lb'),(96,'Lesotho','Kingdom of Lesotho','Independent State','','','Maseru','LSL','Loti','+266','LS','LSO','426','.ls'),(97,'Liberia','Republic of Liberia','Independent State','','','Monrovia','LRD','Dollar','+231','LR','LBR','430','.lr'),(98,'Libya','Great Socialist People\'s Libyan Arab Jamahiriya','Independent State','','','Tripoli','LYD','Dinar','+218','LY','LBY','434','.ly'),(99,'Liechtenstein','Principality of Liechtenstein','Independent State','','','Vaduz','CHF','Franc','+423','LI','LIE','438','.li'),(100,'Lithuania','Republic of Lithuania','Independent State','','','Vilnius','LTL','Litas','+370','LT','LTU','440','.lt'),(101,'Luxembourg','Grand Duchy of Luxembourg','Independent State','','','Luxembourg','EUR','Euro','+352','LU','LUX','442','.lu'),(102,'Macedonia','Republic of Macedonia','Independent State','','','Skopje','MKD','Denar','+389','MK','MKD','807','.mk'),(103,'Madagascar','Republic of Madagascar','Independent State','','','Antananarivo','MGA','Ariary','+261','MG','MDG','450','.mg'),(104,'Malawi','Republic of Malawi','Independent State','','','Lilongwe','MWK','Kwacha','+265','MW','MWI','454','.mw'),(105,'Malaysia','','Independent State','','','Kuala Lumpur (legislative/judical) and Putrajaya (administrative)','MYR','Ringgit','+60','MY','MYS','458','.my'),(106,'Maldives','Republic of Maldives','Independent State','','','Male','MVR','Rufiyaa','+960','MV','MDV','462','.mv'),(107,'Mali','Republic of Mali','Independent State','','','Bamako','XOF','Franc','+223','ML','MLI','466','.ml'),(108,'Malta','Republic of Malta','Independent State','','','Valletta','MTL','Lira','+356','MT','MLT','470','.mt'),(109,'Marshall Islands','Republic of the Marshall Islands','Independent State','','','Majuro','USD','Dollar','+692','MH','MHL','584','.mh'),(110,'Mauritania','Islamic Republic of Mauritania','Independent State','','','Nouakchott','MRO','Ouguiya','+222','MR','MRT','478','.mr'),(111,'Mauritius','Republic of Mauritius','Independent State','','','Port Louis','MUR','Rupee','+230','MU','MUS','480','.mu'),(112,'Mexico','United Mexican States','Independent State','','','Mexico','MXN','Peso','+52','MX','MEX','484','.mx'),(113,'Micronesia','Federated States of Micronesia','Independent State','','','Palikir','USD','Dollar','+691','FM','FSM','583','.fm'),(114,'Moldova','Republic of Moldova','Independent State','','','Chisinau','MDL','Leu','+373','MD','MDA','498','.md'),(115,'Monaco','Principality of Monaco','Independent State','','','Monaco','EUR','Euro','+377','MC','MCO','492','.mc'),(116,'Mongolia','','Independent State','','','Ulaanbaatar','MNT','Tugrik','+976','MN','MNG','496','.mn'),(117,'Montenegro','Republic of Montenegro','Independent State','','','Podgorica','EUR','Euro','+382','ME','MNE','499','.me '),(118,'Morocco','Kingdom of Morocco','Independent State','','','Rabat','MAD','Dirham','+212','MA','MAR','504','.ma'),(119,'Mozambique','Republic of Mozambique','Independent State','','','Maputo','MZM','Meticail','+258','MZ','MOZ','508','.mz'),(120,'Myanmar (Burma)','Union of Myanmar','Independent State','','','Naypyidaw','MMK','Kyat','+95','MM','MMR','104','.mm'),(121,'Namibia','Republic of Namibia','Independent State','','','Windhoek','NAD','Dollar','+264','NA','NAM','516','.na'),(122,'Nauru','Republic of Nauru','Independent State','','','Yaren','AUD','Dollar','+674','NR','NRU','520','.nr'),(123,'Nepal','','Independent State','','','Kathmandu','NPR','Rupee','+977','NP','NPL','524','.np'),(124,'Netherlands','Kingdom of the Netherlands','Independent State','','','Amsterdam (administrative) and The Hague (legislative/judical)','EUR','Euro','+31','NL','NLD','528','.nl'),(125,'New Zealand','','Independent State','','','Wellington','NZD','Dollar','+64','NZ','NZL','554','.nz'),(126,'Nicaragua','Republic of Nicaragua','Independent State','','','Managua','NIO','Cordoba','+505','NI','NIC','558','.ni'),(127,'Niger','Republic of Niger','Independent State','','','Niamey','XOF','Franc','+227','NE','NER','562','.ne'),(128,'Nigeria','Federal Republic of Nigeria','Independent State','','','Abuja','NGN','Naira','+234','NG','NGA','566','.ng'),(129,'Norway','Kingdom of Norway','Independent State','','','Oslo','NOK','Krone','+47','NO','NOR','578','.no'),(130,'Oman','Sultanate of Oman','Independent State','','','Muscat','OMR','Rial','+968','OM','OMN','512','.om'),(131,'Pakistan','Islamic Republic of Pakistan','Independent State','','','Islamabad','PKR','Rupee','+92','PK','PAK','586','.pk'),(132,'Palau','Republic of Palau','Independent State','','','Melekeok','USD','Dollar','+680','PW','PLW','585','.pw'),(133,'Panama','Republic of Panama','Independent State','','','Panama','PAB','Balboa','+507','PA','PAN','591','.pa'),(134,'Papua New Guinea','Independent State of Papua New Guinea','Independent State','','','Port Moresby','PGK','Kina','+675','PG','PNG','598','.pg'),(135,'Paraguay','Republic of Paraguay','Independent State','','','Asuncion','PYG','Guarani','+595','PY','PRY','600','.py'),(136,'Peru','Republic of Peru','Independent State','','','Lima','PEN','Sol','+51','PE','PER','604','.pe'),(137,'Philippines','Republic of the Philippines','Independent State','','','Manila','PHP','Peso','+63','PH','PHL','608','.ph'),(138,'Poland','Republic of Poland','Independent State','','','Warsaw','PLN','Zloty','+48','PL','POL','616','.pl'),(139,'Portugal','Portuguese Republic','Independent State','','','Lisbon','EUR','Euro','+351','PT','PRT','620','.pt'),(140,'Qatar','State of Qatar','Independent State','','','Doha','QAR','Rial','+974','QA','QAT','634','.qa'),(141,'Romania','','Independent State','','','Bucharest','RON','Leu','+40','RO','ROU','642','.ro'),(142,'Russia','Russian Federation','Independent State','','','Moscow','RUB','Ruble','+7','RU','RUS','643','.ru '),(143,'Rwanda','Republic of Rwanda','Independent State','','','Kigali','RWF','Franc','+250','RW','RWA','646','.rw'),(144,'Saint Kitts and Nevis','Federation of Saint Kitts and Nevis','Independent State','','','Basseterre','XCD','Dollar','+1-869','KN','KNA','659','.kn'),(145,'Saint Lucia','','Independent State','','','Castries','XCD','Dollar','+1-758','LC','LCA','662','.lc'),(146,'Saint Vincent and the Grenadines','','Independent State','','','Kingstown','XCD','Dollar','+1-784','VC','VCT','670','.vc'),(147,'Samoa','Independent State of Samoa','Independent State','','','Apia','WST','Tala','+685','WS','WSM','882','.ws'),(148,'San Marino','Republic of San Marino','Independent State','','','San Marino','EUR','Euro','+378','SM','SMR','674','.sm'),(149,'Sao Tome and Principe','Democratic Republic of Sao Tome and Principe','Independent State','','','Sao Tome','STD','Dobra','+239','ST','STP','678','.st'),(150,'Saudi Arabia','Kingdom of Saudi Arabia','Independent State','','','Riyadh','SAR','Rial','+966','SA','SAU','682','.sa'),(151,'Senegal','Republic of Senegal','Independent State','','','Dakar','XOF','Franc','+221','SN','SEN','686','.sn'),(152,'Serbia','Republic of Serbia','Independent State','','','Belgrade','RSD','Dinar','+381','RS','SRB','688','.rs '),(153,'Seychelles','Republic of Seychelles','Independent State','','','Victoria','SCR','Rupee','+248','SC','SYC','690','.sc'),(154,'Sierra Leone','Republic of Sierra Leone','Independent State','','','Freetown','SLL','Leone','+232','SL','SLE','694','.sl'),(155,'Singapore','Republic of Singapore','Independent State','','','Singapore','SGD','Dollar','+65','SG','SGP','702','.sg'),(156,'Slovakia','Slovak Republic','Independent State','','','Bratislava','SKK','Koruna','+421','SK','SVK','703','.sk'),(157,'Slovenia','Republic of Slovenia','Independent State','','','Ljubljana','EUR','Euro','+386','SI','SVN','705','.si'),(158,'Solomon Islands','','Independent State','','','Honiara','SBD','Dollar','+677','SB','SLB','090','.sb'),(159,'Somalia','','Independent State','','','Mogadishu','SOS','Shilling','+252','SO','SOM','706','.so'),(160,'South Africa','Republic of South Africa','Independent State','','','Pretoria (administrative), Cape Town (legislative), and Bloemfontein (judical)','ZAR','Rand','+27','ZA','ZAF','710','.za'),(161,'Spain','Kingdom of Spain','Independent State','','','Madrid','EUR','Euro','+34','ES','ESP','724','.es'),(162,'Sri Lanka','Democratic Socialist Republic of Sri Lanka','Independent State','','','Colombo (administrative/judical) and Sri Jayewardenepura Kotte (legislative)','LKR','Rupee','+94','LK','LKA','144','.lk'),(163,'Sudan','Republic of the Sudan','Independent State','','','Khartoum','SDG','Pound','+249','SD','SDN','736','.sd'),(164,'Suriname','Republic of Suriname','Independent State','','','Paramaribo','SRD','Dollar','+597','SR','SUR','740','.sr'),(165,'Swaziland','Kingdom of Swaziland','Independent State','','','Mbabane (administrative) and Lobamba (legislative)','SZL','Lilangeni','+268','SZ','SWZ','748','.sz'),(166,'Sweden','Kingdom of Sweden','Independent State','','','Stockholm','SEK','Kronoa','+46','SE','SWE','752','.se'),(167,'Switzerland','Swiss Confederation','Independent State','','','Bern','CHF','Franc','+41','CH','CHE','756','.ch'),(168,'Syria','Syrian Arab Republic','Independent State','','','Damascus','SYP','Pound','+963','SY','SYR','760','.sy'),(169,'Tajikistan','Republic of Tajikistan','Independent State','','','Dushanbe','TJS','Somoni','+992','TJ','TJK','762','.tj'),(170,'Tanzania','United Republic of Tanzania','Independent State','','','Dar es Salaam (administrative/judical) and Dodoma (legislative)','TZS','Shilling','+255','TZ','TZA','834','.tz'),(171,'Thailand','Kingdom of Thailand','Independent State','','','Bangkok','THB','Baht','+66','TH','THA','764','.th'),(172,'Timor-Leste (East Timor)','Democratic Republic of Timor-Leste','Independent State','','','Dili','USD','Dollar','+670','TL','TLS','626','.tp '),(173,'Togo','Togolese Republic','Independent State','','','Lome','XOF','Franc','+228','TG','TGO','768','.tg'),(174,'Tonga','Kingdom of Tonga','Independent State','','','Nuku\'alofa','TOP','Pa\'anga','+676','TO','TON','776','.to'),(175,'Trinidad and Tobago','Republic of Trinidad and Tobago','Independent State','','','Port-of-Spain','TTD','Dollar','+1-868','TT','TTO','780','.tt'),(176,'Tunisia','Tunisian Republic','Independent State','','','Tunis','TND','Dinar','+216','TN','TUN','788','.tn'),(177,'Turkey','Republic of Turkey','Independent State','','','Ankara','TRY','Lira','+90','TR','TUR','792','.tr'),(178,'Turkmenistan','','Independent State','','','Ashgabat','TMM','Manat','+993','TM','TKM','795','.tm'),(179,'Tuvalu','','Independent State','','','Funafuti','AUD','Dollar','+688','TV','TUV','798','.tv'),(180,'Uganda','Republic of Uganda','Independent State','','','Kampala','UGX','Shilling','+256','UG','UGA','800','.ug'),(181,'Ukraine','','Independent State','','','Kiev','UAH','Hryvnia','+380','UA','UKR','804','.ua'),(182,'United Arab Emirates','United Arab Emirates','Independent State','','','Abu Dhabi','AED','Dirham','+971','AE','ARE','784','.ae'),(183,'United Kingdom','United Kingdom of Great Britain and Northern Ireland','Independent State','','','London','GBP','Pound','+44','GB','GBR','826','.uk'),(184,'United States','United States of America','Independent State','','','Washington','USD','Dollar','+1','US','USA','840','.us'),(185,'Uruguay','Oriental Republic of Uruguay','Independent State','','','Montevideo','UYU','Peso','+598','UY','URY','858','.uy'),(186,'Uzbekistan','Republic of Uzbekistan','Independent State','','','Tashkent','UZS','Som','+998','UZ','UZB','860','.uz'),(187,'Vanuatu','Republic of Vanuatu','Independent State','','','Port-Vila','VUV','Vatu','+678','VU','VUT','548','.vu'),(188,'Vatican City','State of the Vatican City','Independent State','','','Vatican City','EUR','Euro','+379','VA','VAT','336','.va'),(189,'Venezuela','Bolivarian Republic of Venezuela','Independent State','','','Caracas','VEB','Bolivar','+58','VE','VEN','862','.ve'),(190,'Vietnam','Socialist Republic of Vietnam','Independent State','','','Hanoi','VND','Dong','+84','VN','VNM','704','.vn'),(191,'Yemen','Republic of Yemen','Independent State','','','Sanaa','YER','Rial','+967','YE','YEM','887','.ye'),(192,'Zambia','Republic of Zambia','Independent State','','','Lusaka','ZMK','Kwacha','+260','ZM','ZMB','894','.zm'),(193,'Zimbabwe','Republic of Zimbabwe','Independent State','','','Harare','ZWD','Dollar','+263','ZW','ZWE','716','.zw'),(194,'Abkhazia','Republic of Abkhazia','Proto Independent State','','','Sokhumi','RUB','Ruble','+995','GE','GEO','268','.ge'),(195,'China, Republic of (Taiwan)','Republic of China','Proto Independent State','','','Taipei','TWD','Dollar','+886','TW','TWN','158','.tw'),(196,'Nagorno-Karabakh','Nagorno-Karabakh Republic','Proto Independent State','','','Stepanakert','AMD','Dram','+374-97','AZ','AZE','031','.az'),(197,'Northern Cyprus','Turkish Republic of Northern Cyprus','Proto Independent State','','','Nicosia','TRY','Lira','+90-392','CY','CYP','196','.nc.'),(198,'Pridnestrovie (Transnistria)','Pridnestrovian Moldavian Republic','Proto Independent State','','','Tiraspol','','Ruple','+373-533','MD','MDA','498','.md'),(199,'Somaliland','Republic of Somaliland','Proto Independent State','','','Hargeisa','','Shilling','+252','SO','SOM','706','.so'),(200,'South Ossetia','Republic of South Ossetia','Proto Independent State','','','Tskhinvali','RUB','Ruble and Lari','+995','GE','GEO','268','.ge'),(201,'Ashmore and Cartier Islands','Territory of Ashmore and Cartier Islands','Dependency','External Territory','Australia','','','','','AU','AUS','036','.au'),(202,'Christmas Island','Territory of Christmas Island','Dependency','External Territory','Australia','The Settlement (Flying Fish Cove)','AUD','Dollar','+61','CX','CXR','162','.cx'),(203,'Cocos (Keeling) Islands','Territory of Cocos (Keeling) Islands','Dependency','External Territory','Australia','West Island','AUD','Dollar','+61','CC','CCK','166','.cc'),(204,'Coral Sea Islands','Coral Sea Islands Territory','Dependency','External Territory','Australia','','','','','AU','AUS','036','.au'),(205,'Heard Island and McDonald Islands','Territory of Heard Island and McDonald Islands','Dependency','External Territory','Australia','','','','','HM','HMD','334','.hm'),(206,'Norfolk Island','Territory of Norfolk Island','Dependency','External Territory','Australia','Kingston','AUD','Dollar','+672','NF','NFK','574','.nf'),(207,'New Caledonia','','Dependency','Sui generis Collectivity','France','Noumea','XPF','Franc','+687','NC','NCL','540','.nc'),(208,'French Polynesia','Overseas Country of French Polynesia','Dependency','Overseas Collectivity','France','Papeete','XPF','Franc','+689','PF','PYF','258','.pf'),(209,'Mayotte','Departmental Collectivity of Mayotte','Dependency','Overseas Collectivity','France','Mamoudzou','EUR','Euro','+262','YT','MYT','175','.yt'),(210,'Saint Barthelemy','Collectivity of Saint Barthelemy','Dependency','Overseas Collectivity','France','Gustavia','EUR','Euro','+590','GP','GLP','312','.gp'),(211,'Saint Martin','Collectivity of Saint Martin','Dependency','Overseas Collectivity','France','Marigot','EUR','Euro','+590','GP','GLP','312','.gp'),(212,'Saint Pierre and Miquelon','Territorial Collectivity of Saint Pierre and Miquelon','Dependency','Overseas Collectivity','France','Saint-Pierre','EUR','Euro','+508','PM','SPM','666','.pm'),(213,'Wallis and Futuna','Collectivity of the Wallis and Futuna Islands','Dependency','Overseas Collectivity','France','Mata\'utu','XPF','Franc','+681','WF','WLF','876','.wf'),(214,'French Southern and Antarctic Lands','Territory of the French Southern and Antarctic Lands','Dependency','Overseas Territory','France','Martin-de-Vivi','','','','TF','ATF','260','.tf'),(215,'Clipperton Island','','Dependency','Possession','France','','','','','PF','PYF','258','.pf'),(216,'Bouvet Island','','Dependency','Territory','Norway','','','','','BV','BVT','074','.bv'),(217,'Cook Islands','','Dependency','Self-Governing in Free Association','New Zealand','Avarua','NZD','Dollar','+682','CK','COK','184','.ck'),(218,'Niue','','Dependency','Self-Governing in Free Association','New Zealand','Alofi','NZD','Dollar','+683','NU','NIU','570','.nu'),(219,'Tokelau','','Dependency','Territory','New Zealand','','NZD','Dollar','+690','TK','TKL','772','.tk'),(220,'Guernsey','Bailiwick of Guernsey','Dependency','Crown Dependency','United Kingdom','Saint Peter Port','GGP','Pound','+44','GG','GGY','831','.gg'),(221,'Isle of Man','','Dependency','Crown Dependency','United Kingdom','Douglas','IMP','Pound','+44','IM','IMN','833','.im'),(222,'Jersey','Bailiwick of Jersey','Dependency','Crown Dependency','United Kingdom','Saint Helier','JEP','Pound','+44','JE','JEY','832','.je'),(223,'Anguilla','','Dependency','Overseas Territory','United Kingdom','The Valley','XCD','Dollar','+1-264','AI','AIA','660','.ai'),(224,'Bermuda','','Dependency','Overseas Territory','United Kingdom','Hamilton','BMD','Dollar','+1-441','BM','BMU','060','.bm'),(225,'British Indian Ocean Territory','','Dependency','Overseas Territory','United Kingdom','','','','+246','IO','IOT','086','.io'),(226,'British Sovereign Base Areas','','Dependency','Overseas Territory','United Kingdom','Episkopi','CYP','Pound','+357','','','',''),(227,'British Virgin Islands','','Dependency','Overseas Territory','United Kingdom','Road Town','USD','Dollar','+1-284','VG','VGB','092','.vg'),(228,'Cayman Islands','','Dependency','Overseas Territory','United Kingdom','George Town','KYD','Dollar','+1-345','KY','CYM','136','.ky'),(229,'Falkland Islands (Islas Malvinas)','','Dependency','Overseas Territory','United Kingdom','Stanley','FKP','Pound','+500','FK','FLK','238','.fk'),(230,'Gibraltar','','Dependency','Overseas Territory','United Kingdom','Gibraltar','GIP','Pound','+350','GI','GIB','292','.gi'),(231,'Montserrat','','Dependency','Overseas Territory','United Kingdom','Plymouth','XCD','Dollar','+1-664','MS','MSR','500','.ms'),(232,'Pitcairn Islands','','Dependency','Overseas Territory','United Kingdom','Adamstown','NZD','Dollar','','PN','PCN','612','.pn'),(233,'Saint Helena','','Dependency','Overseas Territory','United Kingdom','Jamestown','SHP','Pound','+290','SH','SHN','654','.sh'),(234,'South Georgia and the South Sandwich Islands','','Dependency','Overseas Territory','United Kingdom','','','','','GS','SGS','239','.gs'),(235,'Turks and Caicos Islands','','Dependency','Overseas Territory','United Kingdom','Grand Turk','USD','Dollar','+1-649','TC','TCA','796','.tc'),(236,'Northern Mariana Islands','Commonwealth of The Northern Mariana Islands','Dependency','Commonwealth','United States','Saipan','USD','Dollar','+1-670','MP','MNP','580','.mp'),(237,'Puerto Rico','Commonwealth of Puerto Rico','Dependency','Commonwealth','United States','San Juan','USD','Dollar','+1-787 a','PR','PRI','630','.pr'),(238,'American Samoa','Territory of American Samoa','Dependency','Territory','United States','Pago Pago','USD','Dollar','+1-684','AS','ASM','016','.as'),(239,'Baker Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(240,'Guam','Territory of Guam','Dependency','Territory','United States','Hagatna','USD','Dollar','+1-671','GU','GUM','316','.gu'),(241,'Howland Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(242,'Jarvis Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(243,'Johnston Atoll','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(244,'Kingman Reef','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(245,'Midway Islands','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(246,'Navassa Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(247,'Palmyra Atoll','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(248,'U.S. Virgin Islands','United States Virgin Islands','Dependency','Territory','United States','Charlotte Amalie','USD','Dollar','+1-340','VI','VIR','850','.vi'),(249,'Wake Island','','Dependency','Territory','United States','','','','','UM','UMI','850',''),(250,'Hong Kong','Hong Kong Special Administrative Region','Proto Dependency','Special Administrative Region','China','','HKD','Dollar','+852','HK','HKG','344','.hk'),(251,'Macau','Macau Special Administrative Region','Proto Dependency','Special Administrative Region','China','Macau','MOP','Pataca','+853','MO','MAC','446','.mo'),(252,'Faroe Islands','','Proto Dependency','','Denmark','Torshavn','DKK','Krone','+298','FO','FRO','234','.fo'),(253,'Greenland','','Proto Dependency','','Denmark','Nuuk (Godthab)','DKK','Krone','+299','GL','GRL','304','.gl'),(254,'French Guiana','Overseas Region of Guiana','Proto Dependency','Overseas Region','France','Cayenne','EUR','Euro','+594','GF','GUF','254','.gf'),(255,'Guadeloupe','Overseas Region of Guadeloupe','Proto Dependency','Overseas Region','France','Basse-Terre','EUR','Euro','+590','GP','GLP','312','.gp'),(256,'Martinique','Overseas Region of Martinique','Proto Dependency','Overseas Region','France','Fort-de-France','EUR','Euro','+596','MQ','MTQ','474','.mq'),(257,'Reunion','Overseas Region of Reunion','Proto Dependency','Overseas Region','France','Saint-Denis','EUR','Euro','+262','RE','REU','638','.re'),(258,'Aland','','Proto Dependency','','Finland','Mariehamn','EUR','Euro','+358-18','AX','ALA','248','.ax'),(259,'Aruba','','Proto Dependency','','Netherlands','Oranjestad','AWG','Guilder','+297','AW','ABW','533','.aw'),(260,'Netherlands Antilles','','Proto Dependency','','Netherlands','Willemstad','ANG','Guilder','+599','AN','ANT','530','.an'),(261,'Svalbard','','Proto Dependency','','Norway','Longyearbyen','NOK','Krone','+47','SJ','SJM','744','.sj'),(262,'Ascension','','Proto Dependency','Dependency of Saint Helena','United Kingdom','Georgetown','SHP','Pound','+247','AC','ASC','','.ac'),(263,'Tristan da Cunha','','Proto Dependency','Dependency of Saint Helena','United Kingdom','Edinburgh','SHP','Pound','+290','TA','TAA','',''),(264,'Antarctica','','Disputed Territory','','Undetermined','','','','','AQ','ATA','010','.aq'),(265,'Kosovo','','Disputed Territory','','Administrated by the UN','Pristina','CSD','Dinar and Euro','+381','CS','SCG','891','.cs '),(266,'Palestinian Territories (Gaza Strip and West Bank)','','Disputed Territory','','Administrated by Israel','Gaza City (Gaza Strip) and Ramallah (West Bank)','ILS','Shekel','+970','PS','PSE','275','.ps'),(267,'Western Sahara','','Disputed Territory','','Administrated by Morocco','El-Aaiun','MAD','Dirham','+212','EH','ESH','732','.eh'),(268,'Australian Antarctic Territory','','Antarctic Territory','External Territory','Australia','','','','','AQ','ATA','010','.aq'),(269,'Ross Dependency','','Antarctic Territory','Territory','New Zealand','','','','','AQ','ATA','010','.aq'),(270,'Peter I Island','','Antarctic Territory','Territory','Norway','','','','','AQ','ATA','010','.aq'),(271,'Queen Maud Land','','Antarctic Territory','Territory','Norway','','','','','AQ','ATA','010','.aq'),(272,'British Antarctic Territory','','Antarctic Territory','Overseas Territory','United Kingdom','','','','','AQ','ATA','010','.aq'); -/*!40000 ALTER TABLE `country_data` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `developers` --- - -DROP TABLE IF EXISTS `developers`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `developers` ( - `developer_id` int(11) NOT NULL AUTO_INCREMENT, - `developer_name` varchar(255) NOT NULL, - `developer_team` int(11) NOT NULL, - `developer_email` varchar(255) NOT NULL, - PRIMARY KEY (`developer_id`) -) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `developers` --- - -LOCK TABLES `developers` WRITE; -/*!40000 ALTER TABLE `developers` DISABLE KEYS */; -INSERT INTO `developers` VALUES (1,'Developer 1',1,'developer1@mail.com'),(2,'Developer 2',1,'developer2@mail.com'),(3,'Developer 3',1,'developer3@mail.com'),(4,'Developer 4',2,'developer4@mail.com'),(5,'Developer 5',2,'developer5@mail.com'),(6,'Developer 6',2,'developer6@mail.com'),(7,'Developer 7',3,'developer7@mail.com'),(8,'Developer 8',3,'developer8@mail.com'),(9,'Developer 9',3,'developer9@mail.com'),(10,'Developer 10',4,'developer10@mail.com'),(11,'Developer 11232',4,'developer11@mail.com'),(12,'Developer 12',4,'developer12@mail.com'),(13,'Developer 13',5,'developer13@mail.com'),(14,'Developer 14',5,'developer14@mail.com'),(15,'Developer 15',5,'developer15@mail.com'),(16,'Developer 16',6,'developer16@mail.com'),(17,'Developer 17',6,'developer17@mail.com'),(18,'Developer 18',6,'developer18@mail.com'),(19,'Developer 19',7,'developer19@mail.com'),(20,'Developer 20',7,'developer20@mail.com'),(21,'Developer 21',7,'developer21@mail.com'),(22,'Developer 22',8,'developer22@mail.com'),(23,'Developer 23',8,'developer23@mail.com'),(24,'Developer 24',8,'developer24@mail.com'),(25,'Developer 25',9,'developer25@mail.com'),(26,'Developer 26',9,'developer26@mail.com'),(27,'Developer 27',9,'developer27@mail.com'),(28,'Developer 28',10,'developer28@mail.com'),(29,'Developer 29',10,'developer29@mail.com'),(30,'Developer 30',10,'developer30@mail.com'); -/*!40000 ALTER TABLE `developers` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `events` --- - -DROP TABLE IF EXISTS `events`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `events` ( - `event_id` int(11) NOT NULL AUTO_INCREMENT, - `event_name` varchar(127) NOT NULL, - `start_date` datetime NOT NULL, - `end_date` datetime NOT NULL, - `details` text NOT NULL, - PRIMARY KEY (`event_id`) -) ENGINE=MyISAM AUTO_INCREMENT=85 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `events` --- - -LOCK TABLES `events` WRITE; -/*!40000 ALTER TABLE `events` DISABLE KEYS */; -INSERT INTO `events` VALUES (2,'French Open','2009-05-24 00:00:00','2009-06-08 00:00:00','Philippe-Chatrier Court \nParis, FRA'),(3,'Aegon Championship','2009-06-10 00:00:00','2009-06-13 00:00:00','The Queens Club \nLondon, ENG'),(4,'Wimbledon','2009-06-21 00:00:00','2009-07-05 00:00:00','Wimbledon\nJune 21, 2009 - July 5, 2009'),(5,'Indianapolis Tennis Championships','2009-07-18 00:00:00','2009-07-27 00:00:00','Indianapolis Tennis Center \nIndianapolis, IN'),(8,'Countrywide Classic Tennis','2009-07-27 00:00:00','2009-08-02 00:00:00','Los Angeles Tennis Center. Los Angeles, CA '),(7,'ATP Master Tennis','2009-05-11 00:00:00','2009-05-18 00:00:00','La Caja Magica.\nMadrid, Spain'),(9,'Legg Mason Tennis Classic','2009-08-01 00:00:00','2009-08-11 00:00:00','Fitzgerald Tennis Center\nWashington D.C.'),(10,'Western & Southern Financial Group Women\\\'s Open','2009-08-07 00:00:00','2009-08-17 00:00:00','Lindner Family Tennis Center\nMason, OH'),(11,'Rogers Cup Women\\\'s Tennis','2009-08-15 00:00:00','2009-08-24 00:00:00','Rexall Centre\nToronto, ON'),(12,'US Open Tennis Championship','2009-08-29 00:00:00','2009-09-14 00:00:00','Arthur Ashe Stadium\nFlushing, NY'),(13,'Barclays ATP World Tour Finals','2009-11-22 00:00:00','2009-11-28 00:00:00','O2 Dome\nLondon, ENG\n'),(14,'Western & Southern Financial Group Masters Tennis','2009-08-17 00:00:00','2009-08-24 00:00:00','Lindner Family Tennis Center\nMason, OH'),(15,' Parc Izvor ','2009-05-16 15:00:00','2009-05-16 18:00:00',' Bucharest, Romania '),(16,' Arena Zagreb ','2009-05-21 14:00:00','2009-05-21 17:00:00',' Zagreb, Croatia '),(17,' Gwardia Stadium ','2009-05-23 11:00:00','2009-05-23 14:00:00',' Warsaw, Poland '),(18,' Skonto Stadium - Riga ','2009-05-25 19:00:00','2009-05-25 22:00:00',' Riga, Latvia '),(19,' Zalgirio Stadionas ','2009-05-27 15:00:00','2009-05-27 18:00:00',' Vilnius, Lithuania '),(20,' O2 Dome ','2009-05-30 17:00:00','2009-05-30 20:00:00',' London, ENG '),(21,' Evenemententerrein Megaland ','2009-05-31 16:00:00','2009-05-31 19:00:00',' Landgraaf, NL '),(22,' HSH Nordbank Arena (formerly AOL Arena) ','2009-06-02 10:00:00','2009-06-02 13:00:00',' Hamburg, GER '),(23,' LTU Arena ','2009-06-04 11:00:00','2009-06-04 14:00:00',' Dusseldorf, GER '),(24,' LTU Arena ','2009-06-05 12:00:00','2009-06-05 15:00:00',' Dusseldorf, GER '),(25,' Zentralstadion - Leipzig ','2009-06-07 20:00:00','2009-06-07 23:00:00',' Leipzig, GER '),(26,' Zentralstadion - Leipzig ','2009-06-08 17:00:00','2009-06-08 20:00:00',' Leipzig, GER '),(27,' Olympiastadion - Berlin ','2009-06-10 14:00:00','2009-06-10 17:00:00',' Berlin, GER '),(28,' Commerz Bank Arena ','2009-06-12 14:00:00','2009-06-12 17:00:00',' Frankfurt, GER '),(29,' Olympic Stadium - Munich ','2009-06-13 11:00:00','2009-06-13 14:00:00',' Munich, GER '),(30,' Stadio Olimpico ','2009-06-16 19:00:00','2009-06-16 22:00:00',' Rome, Italy '),(31,' Comunale Giuseppe Meazza - San Siro ','2009-06-18 20:00:00','2009-06-18 23:00:00',' Milan, Italy '),(32,' Inter Stadion Slovakia ','2009-06-22 19:00:00','2009-06-22 22:00:00',' Bratislava, Slovakia '),(33,' Puskas Ferenc Stadium ','2009-06-23 14:00:00','2009-06-23 17:00:00',' Budapest, Hungary '),(34,' Slavia Stadion ','2009-06-25 10:00:00','2009-06-25 13:00:00',' Prague, Czech Republic '),(35,' Stade de France - Paris ','2009-06-27 19:00:00','2009-06-27 22:00:00',' Paris, FRA '),(36,' Parken Stadium ','2009-06-30 18:00:00','2009-06-30 21:00:00',' Copenhagen, DK '),(37,' Koengen ','2009-07-02 18:00:00','2009-07-02 21:00:00',' Bergen, Norway '),(38,' Folkets Park ','2009-07-03 11:00:00','2009-07-03 14:00:00',' Malmo, SE '),(39,' Estadio Jose Zorila ','2009-07-08 18:00:00','2009-07-08 21:00:00',' Valladolid, Spain '),(40,' Bessa Stadium ','2009-07-11 10:00:00','2009-07-11 13:00:00',' Porto, Portugal '),(41,' Estadio Olimpico - Seville ','2009-07-12 14:00:00','2009-07-12 17:00:00',' Seville, Spain '),(42,' Molson Amphitheatre ','2009-07-24 16:00:00','2009-07-24 19:00:00',' Toronto, ON '),(43,' Bell Centre ','2009-07-25 18:00:00','2009-07-25 21:00:00',' Montreal, QC '),(44,' Nissan Pavilion ','2009-07-28 17:00:00','2009-07-28 20:00:00',' Bristow, VA '),(45,' Comcast Center - MA (formerly Tweeter Center) ','2009-07-31 12:00:00','2009-07-31 15:00:00',' Mansfield, MA '),(46,' Borgata Hotel Casino & Spa ','2009-08-01 15:00:00','2009-08-01 18:00:00',' Atlantic City, NJ '),(47,' Madison Square Garden ','2009-08-03 14:00:00','2009-08-03 17:00:00',' New York, NY '),(48,' Madison Square Garden ','2009-08-04 15:00:00','2009-08-04 18:00:00',' New York, NY '),(49,' Key Arena ','2009-08-10 16:00:00','2009-08-10 19:00:00',' Seattle, WA '),(50,' Shoreline Amphitheatre ','2009-08-12 11:00:00','2009-08-12 14:00:00',' Mountain View, CA '),(51,' Cricket Wireless Amphitheatre ','2009-08-14 19:00:00','2009-08-14 22:00:00',' Chula Vista, CA '),(52,' Hollywood Bowl ','2009-08-16 17:00:00','2009-08-16 20:00:00',' Los Angeles, CA '),(53,' Hollywood Bowl ','2009-08-17 13:00:00','2009-08-17 16:00:00',' Los Angeles, CA '),(54,' Honda Center ','2009-08-19 17:00:00','2009-08-19 20:00:00',' Anaheim, CA '),(55,' Santa Barbara Bowl ','2009-08-20 16:00:00','2009-08-20 19:00:00',' Santa Barbara, CA '),(56,' Palms Casino-the Pearl ','2009-08-22 10:00:00','2009-08-22 13:00:00',' Las Vegas, NV '),(57,' US Airways Center ','2009-08-23 18:00:00','2009-08-23 21:00:00',' Phoenix, AZ '),(58,' E Center ','2009-08-25 15:00:00','2009-08-25 18:00:00',' West Valley City, UT '),(59,' Red Rocks Amphitheatre ','2009-08-27 18:00:00','2009-08-27 21:00:00',' Morrison, CO '),(60,' Superpages.com Center ','2009-08-29 17:00:00','2009-08-29 20:00:00',' Dallas, TX '),(61,' Cynthia Woods Mitchell Pavilion ','2009-08-30 18:00:00','2009-08-30 21:00:00',' Houston, TX '),(62,' Lakewood Amphitheatre ','2009-09-01 15:00:00','2009-09-01 18:00:00',' Atlanta, GA '),(63,' Ford Amphitheatre at the Florida State Fairgrounds ','2009-09-04 10:00:00','2009-09-04 13:00:00',' Tampa Bay, FL '),(64,' BankAtlantic Center ','2009-09-05 13:00:00','2009-09-05 16:00:00',' Sunrise, FL '),(65,' Konig Pilsener Arena ','2009-10-31 17:00:00','2009-10-31 20:00:00',' Oberhausen, GER '),(66,' Awd Dome ','2009-11-01 13:00:00','2009-11-01 16:00:00',' Bremen, GER '),(67,' TUI Arena (formerly Preussag Arena) ','2009-11-03 14:00:00','2009-11-03 17:00:00',' Hanover, GER '),(68,' SAP Arena ','2009-11-07 13:00:00','2009-11-07 16:00:00',' Mannheim, GER '),(69,' Schleyerhalle ','2009-11-08 12:00:00','2009-11-08 15:00:00',' Stuttgart, GER '),(70,' Stade De Geneve ','2009-11-10 17:00:00','2009-11-10 20:00:00',' Geneva, CH '),(71,' Recinto Ferial - Valencia ','2009-11-12 15:00:00','2009-11-12 18:00:00',' Valencia, Spain '),(72,' Palau Sant Jordi ','2009-11-20 12:00:00','2009-11-20 15:00:00',' Barcelona, Spain '),(73,' Halle Tony Garnier ','2009-11-23 20:00:00','2009-11-23 23:00:00',' Lyon, FRA '),(74,' Arena Nurnberg ','2009-12-01 13:00:00','2009-12-01 16:00:00',' Nuremberg, GER '),(75,' Stadthalle ','2009-12-03 14:00:00','2009-12-03 17:00:00',' Vienna, Austria '),(76,' Stadthalle Graz ','2009-12-04 13:00:00','2009-12-04 16:00:00',' Graz, AT '),(77,' Hallenstadion ','2009-12-06 16:00:00','2009-12-06 19:00:00',' Zurich, CH '),(78,' Hallenstadion ','2009-12-07 10:00:00','2009-12-07 13:00:00',' Zurich, CH '),(79,' The O2 - Dublin ','2009-12-10 17:00:00','2009-12-10 20:00:00',' Dublin, IE '),(80,' Scottish Exhibition & Conference Center ','2009-12-12 14:00:00','2009-12-12 17:00:00',' Glasgow, Scotland '),(81,' LG Arena ','2009-12-13 15:00:00','2009-12-13 18:00:00',' Birmingham, ENG '),(82,' O2 Dome ','2009-12-15 13:00:00','2009-12-15 16:00:00',' London, ENG '),(83,' O2 Dome ','2009-12-16 15:00:00','2009-12-16 18:00:00',' London, ENG '),(84,' MEN Arena Manchester ','2009-12-18 16:00:00','2009-12-18 19:00:00',' Manchester, ENG '); -/*!40000 ALTER TABLE `events` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `events_rec` --- - -DROP TABLE IF EXISTS `events_rec`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `events_rec` ( - `event_id` int(11) NOT NULL AUTO_INCREMENT, - `start_date` datetime NOT NULL, - `end_date` datetime NOT NULL, - `text` varchar(255) NOT NULL, - `rec_type` varchar(64) NOT NULL, - `event_pid` int(11) NOT NULL, - `event_length` int(11) NOT NULL, - PRIMARY KEY (`event_id`) -) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `events_rec` --- - -LOCK TABLES `events_rec` WRITE; -/*!40000 ALTER TABLE `events_rec` DISABLE KEYS */; -INSERT INTO `events_rec` VALUES (1,'2009-07-01 00:00:00','9999-02-01 00:00:00','Second Friday','month_1_5_2_#no',0,86400),(2,'2009-06-29 10:00:00','9999-02-01 00:00:00','Test build','week_1___1,3,5#no',0,3600),(3,'2009-07-22 10:00:00','2009-07-22 11:00:00','','none',2,1248246000),(4,'2009-07-21 00:00:00','2009-08-30 00:00:00','Each 8 days, 5 times','day_8___#5',0,172800),(5,'2009-07-16 10:00:00','2009-07-16 11:00:00','Test build','',2,1247814000),(6,'2009-06-29 10:00:00','2009-06-29 11:00:00','','none',2,1246258800),(15,'2009-07-06 00:00:00','2009-07-19 23:59:00','2 Wed','week_1___0#2',0,300),(17,'2009-07-01 00:00:00','2009-08-04 23:59:00','New event','month_1_2_2_#2',0,300),(19,'2009-07-01 00:00:00','9999-02-01 00:00:00','2nd monday','month_1_2_1_#no',0,300),(20,'2009-01-01 00:00:00','9999-02-01 00:00:00','New event','year_1_1_2_#no',0,300),(21,'2010-01-31 00:00:00','9999-02-01 00:00:00','New event','month_1___#no',0,86400); -/*!40000 ALTER TABLE `events_rec` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `grid50000` --- - -DROP TABLE IF EXISTS `grid50000`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `grid50000` ( - `item_id` int(11) NOT NULL AUTO_INCREMENT, - `item_nm` varchar(255) NOT NULL, - `item_cd` varchar(255) NOT NULL, - PRIMARY KEY (`item_id`) -) ENGINE=MyISAM AUTO_INCREMENT=10073 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `grid50000` --- - -LOCK TABLES `grid50000` WRITE; -/*!40000 ALTER TABLE `grid50000` DISABLE KEYS */; -INSERT INTO `grid50000` VALUES (781,'man34','s123221df8381183у33333'),(782,'and34','383811843d343sdÑ‹'),(783,'34','12s1sdfыòыòы'),(784,'seemed','183811843òò'),(785,'surprised','1283811843фыòыы1'),(786,'at','83811843343'),(787,'all','83811843'),(788,'at','83811843ч'),(789,'this','83811843'),(790,'','83811843'),(791,'neither','83811843'),(792,'the','83811843'),(793,'humans','83811843s'),(794,'nor','83811843'),(795,'the','83811843'),(796,'horse','83811843'),(797,'nor','83811843'),(798,'even','83811843'),(799,'the','83811843'),(800,'man','83811843'),(801,'himself','83811843'),(802,'and','83811843'),(803,'Przemysl','83811843'),(804,'Ploughman','83811843'),(805,'Premysl','83811843'),(806,'Orac','83811843'),(807,'in','83811843'),(808,'Czech','83811843'),(809,'came','83811843'),(810,'to','83811843'),(811,'Vysehrad','83811843'),(812,'and','83811843'),(813,'married','83811843'),(814,'Libuse','83811843'),(815,'and','83811843'),(816,'took','83811843'),(817,'over','83811843'),(818,'the','83811843'),(819,'job','83811843'),(820,'of','83811843'),(821,'ruling','83811843'),(822,'the','83811843'),(823,'unruly','83811843'),(824,'Czechs','83811843'),(825,'and','83811843'),(826,'he','83811843'),(827,'and','83811843'),(828,'Libuse','83811843'),(829,'together','83811843'),(830,'started','83811843'),(831,'the','83811843'),(832,'Przemyslid','83811843'),(833,'Dynasty','83811843'),(834,'which','83811843'),(835,'ruled','83811843'),(836,'over','83811843'),(837,'the','83811843'),(838,'Czech','83811843'),(839,'lands','83811843'),(840,'till','83811843'),(841,'the','83811843'),(842,'th','83811843'),(843,'century','83811843'),(844,'','83811843'),(845,'\r\nOne','83811843'),(846,'day','83811843'),(847,'not','83811843'),(848,'long','83811843'),(849,'after','83811843'),(850,'the','83811843'),(851,'wedding','83811843'),(852,'Libuse','83811843'),(853,'had','83811843'),(854,'a','83811843'),(855,'vision','83811843'),(856,'in','83811843'),(857,'which','83811843'),(858,'she','83811843'),(859,'foretold','83811843'),(860,'of','83811843'),(861,'the','83811843'),(862,'glory','83811843'),(863,'of','83811843'),(864,'the','83811843'),(865,'Czech','83811843'),(866,'capital','83811843'),(867,'Standing','83811843'),(868,'atop','83811843'),(869,'Vysehrad','83811843'),(870,'hill','83811843'),(871,'she','83811843'),(872,'went','83811843'),(873,'into','83811843'),(874,'a','83811843'),(875,'trance','83811843'),(876,'and','83811843'),(877,'told','83811843'),(878,'her','83811843'),(879,'vision','83811843'),(880,'to','83811843'),(881,'the','83811843'),(882,'people','83811843'),(883,'even','83811843'),(884,'as','83811843'),(885,'the','83811843'),(886,'gods','83811843'),(887,'sent','83811843'),(888,'it','83811843'),(889,'to','83811843'),(890,'her','83811843'),(891,'She','83811843'),(892,'said','83811843'),(893,'that','83811843'),(894,'on','83811843'),(895,'the','83811843'),(896,'seven','83811843'),(897,'hills','83811843'),(898,'of','83811843'),(899,'Prague','83811843'),(900,'a','83811843'),(901,'fair','83811843'),(902,'city','83811843'),(903,'would','83811843'),(904,'grow','83811843'),(905,'the','83811843'),(906,'fame','83811843'),(907,'of','83811843'),(921,'all','83811843'),(922,'of','83811843'),(923,'which','83811843'),(924,'she','83811843'),(925,'foretold','83811843'),(926,'really','83811843'),(927,'came','83811843'),(928,'true','83811843'),(929,'Of','83811843'),(930,'course!','83811843'),(931,'\r\nNo','83811843'),(932,'while','83811843'),(933,'Cech','83811843'),(934,'and','83811843'),(935,'Libuse','83811843'),(936,'are','83811843'),(937,'the','83811843'),(938,'stuff','83811843'),(939,'of','83811843'),(940,'imaginative','83811843'),(941,'Czech','83811843'),(942,'legend','83811843'),(943,'it','83811843'),(944,'is','83811843'),(945,'believed','83811843'),(946,'that','83811843'),(947,'Samo','83811843'),(948,'','83811843'),(949,'who','83811843'),(950,'may','83811843'),(951,'or','83811843'),(952,'may','83811843'),(953,'not','83811843'),(954,'have','83811843'),(955,'ruled','83811843'),(956,'this','83811843'),(957,'part','83811843'),(958,'of','83811843'),(959,'the','83811843'),(960,'world','83811843'),(961,'in','83811843'),(962,'the','83811843'),(963,'first','83811843'),(964,'half','83811843'),(965,'of','83811843'),(1761,'inhabitants','83811843'),(1762,'Adalbert','83811843'),(1763,'or','83811843'),(1764,'Vojtech','83811843'),(1765,'as','83811843'),(1766,'he','83811843'),(1767,'is','83811843'),(1768,'known','83811843'),(1769,'in','83811843'),(1770,'Czech','83811843'),(1771,'is','83811843'),(1772,'another','83811843'),(1773,'of','83811843'),(1774,'the','83811843'),(1775,'Czech','83811843'),(1776,'nations','83811843'),(1777,'patron','83811843'),(1778,'saints','83811843'),(1779,'today','83811843'),(1780,'\r\n','83811843'),(1781,'\r\n\r\nBut','83811843'),(1782,'Vojtech','83811843'),(1783,'was','83811843'),(1784,'not','83811843'),(1785,'the','83811843'),(1786,'only','83811843'),(1787,'early','83811843'),(1788,'Czech','83811843'),(1789,'guy','83811843'),(1790,'to','83811843'),(1791,'be','83811843'),(1792,'made','83811843'),(1793,'a','83811843'),(1794,'saint','83811843'),(1795,'thanks','83811843'),(1796,'to','83811843'),(1797,'the','83811843'),(1798,'Przemyslids','83811843'),(1799,'bloodthirstiness','83811843'),(1800,'On','83811843'),(1801,'the','83811843'),(1802,'contrary','83811843'),(1803,'','83811843'),(1804,'the','83811843'),(1805,'Przemyslid','83811843'),(1806,'rulers','83811843'),(1807,'were','83811843'),(1808,'rather','83811843'),(1809,'a','83811843'),(1810,'mixed','83811843'),(1811,'bag','83811843'),(1812,'and','83811843'),(1813,'when','83811843'),(1814,'they','83811843'),(1815,'ran','83811843'),(1816,'out','83811843'),(1817,'of','83811843'),(1818,'rival','83811843'),(1819,'clans','83811843'),(1820,'to','83811843'),(1821,'murder','83811843'),(1822,'they','83811843'),(1823,'started','83811843'),(1824,'murdering','83811843'),(1825,'each','83811843'),(1826,'other','83811843'),(1827,'','83811843'),(1828,'resulting','83811843'),(1829,'in','83811843'),(1830,'some','83811843'),(1831,'more','83811843'),(1832,'early','83811843'),(1833,'saints','83811843'),(1834,'for','83811843'),(1835,'the','83811843'),(1836,'Czechs','83811843'),(1837,'\r\n\r\nWenceslas','83811843'),(1838,'I','83811843'),(1839,'the','83811843'),(1840,'fourth','83811843'),(1841,'Przemyslid','83811843'),(1842,'Czech','83811843'),(1843,'ruler','83811843'),(1844,'was','83811843'),(1845,'made','83811843'),(1846,'a','83811843'),(1847,'saint','83811843'),(1848,'soon','83811843'),(1849,'after','83811843'),(1850,'his','83811843'),(1851,'murder','83811843'),(1852,'in','83811843'),(1853,'929','83811843'),(1854,'or','83811843'),(1855,'935','83811843'),(1856,'This','83811843'),(1857,'Wenceslas','83811843'),(1858,'in','83811843'),(1859,'Czech','83811843'),(1860,'Vaclav','83811843'),(1861,'is','83811843'),(1862,'the','83811843'),(1863,'Good','83811843'),(1864,'King','83811843'),(1865,'Wenceslas','83811843'),(1866,'of','83811843'),(1867,'the','83811843'),(1868,'Christmas','83811843'),(1869,'carol','83811843'),(1870,'and','83811843'),(1872,'was','83811843'),(1873,'during','83811843'),(1874,'his','83811843'),(1875,'reign','83811843'),(1876,'that','83811843'),(1877,'the','83811843'),(1878,'Czech','83811843'),(1879,'lands','83811843'),(1880,'entered','83811843'),(1881,'into','83811843'),(1882,'an','83811843'),(1883,'alliance','83811843'),(1884,'with','83811843'),(1885,'Saxony','83811843'),(1886,'thereby','83811843'),(1887,'laying','83811843'),(1888,'the','83811843'),(1889,'foundations','83811843'),(1890,'for','83811843'),(1891,'closer','83811843'),(1892,'relations','83811843'),(1893,'with','83811843'),(1894,'the','83811843'),(1895,'restored','83811843'),(1896,'Roman','83811843'),(1897,'Empire','83811843'),(1898,'\r\n\r\nThis','83811843'),(1899,'mischievous','83811843'),(1900,'affability','83811843'),(1901,'on','83811843'),(1902,'Wenceslas','83811843'),(1903,'part','83811843'),(1904,'towards','83811843'),(1905,'the','83811843'),(1906,'Czechs','83811843'),(1907,'western','83811843'),(1908,'neighbors','83811843'),(1909,'is','83811843'),(1910,'a','83811843'),(1911,'main','83811843'),(1912,'reason','83811843'),(1913,'that','83811843'),(1914,'he','83811843'),(1915,'was','83811843'),(1916,'killed','83811843'),(1917,'by','83811843'),(1918,'his','83811843'),(1919,'brother','83811843'),(1920,'who','83811843'),(1921,'wasnt','83811843'),(1922,'very','83811843'),(1923,'good','83811843'),(1924,'in','83811843'),(1925,'fact','83811843'),(1926,'he','83811843'),(1927,'is','83811843'),(1928,'known','83811843'),(1929,'as','83811843'),(1930,'Boleslav','83811843'),(1931,'the','83811843'),(1932,'Cruel','83811843'),(1933,'Another','83811843'),(1934,'reason','83811843'),(1935,'might','83811843'),(1936,'be','83811843'),(1937,'that','83811843'),(1938,'Boleslav','83811843'),(1939,'was','83811843'),(1940,'a','83811843'),(1941,'pagan','83811843'),(1942,'and','83811843'),(1943,'he','83811843'),(1944,'felt','83811843'),(1945,'that','83811843'),(1946,'Wenceslas','83811843'),(1947,'was','83811843'),(1948,'frittering','83811843'),(1949,'away','83811843'),(1950,'too','83811843'),(1951,'much','83811843'),(1952,'time','83811843'),(1953,'with','83811843'),(1954,'this','83811843'),(1955,'new','83811843'),(1956,'Christian','83811843'),(1957,'fashion','83811843'),(1958,'hed','83811843'),(1959,'picked','83811843'),(1960,'up','83811843'),(1961,'','83811843'),(1962,'though','83811843'),(1963,'lust','83811843'),(1964,'for','83811843'),(1965,'power','83811843'),(1966,'probably','83811843'),(1967,'also','83811843'),(1968,'played','83811843'),(1969,'a','83811843'),(1970,'role','83811843'),(1971,'in','83811843'),(1972,'Boleslavs','83811843'),(1973,'motive','83811843'),(1974,'for','83811843'),(1975,'the','83811843'),(1976,'murder','83811843'),(1977,'which','83811843'),(1978,'took','83811843'),(1979,'place','83811843'),(1980,'at','83811843'),(1981,'the','83811843'),(1982,'very','83811843'),(1983,'door','83811843'),(1984,'of','83811843'),(1985,'the','83811843'),(1986,'church','83811843'),(1987,'in','83811843'),(1988,'Stara','83811843'),(1989,'Boleslav','83811843'),(1990,'where','83811843'),(1991,'Wenceslas','83811843'),(1992,'was','83811843'),(1993,'trying','83811843'),(1994,'to','83811843'),(1995,'seek','83811843'),(1996,'refuge','83811843'),(1997,'\r\n\r\nIncidentally','83811843'),(1998,'Boleslav','83811843'),(1999,'and','83811843'),(2000,'Wenceslas','83811843'),(2001,'Grandmother','83811843'),(2002,'on','83811843'),(2003,'their','83811843'),(2004,'fathers','83811843'),(2005,'side','83811843'),(2006,'was','83811843'),(2007,'also','83811843'),(2008,'murdered','83811843'),(2009,'and','83811843'),(2010,'also','83811843'),(2011,'made','83811843'),(2012,'a','83811843'),(2013,'saint','83811843'),(2014,'It','83811843'),(2015,'is','83811843'),(2016,'said','83811843'),(2017,'that','83811843'),(2018,'she','83811843'),(2019,'was','83811843'),(2020,'either','83811843'),(2021,'smothered','83811843'),(2022,'to','83811843'),(2023,'death','83811843'),(2024,'with','83811843'),(2025,'a','83811843'),(2026,'pillow','83811843'),(2027,'or','83811843'),(2028,'choked','83811843'),(2029,'to','83811843'),(2030,'death','83811843'),(2031,'','83811843'),(2032,'this','83811843'),(2033,'time','83811843'),(2034,'the','83811843'),(2035,'killer','83811843'),(2036,'was','83811843'),(2037,'her','83811843'),(2038,'daughterinlaw','83811843'),(2039,'Boleslav','83811843'),(2040,'and','83811843'),(2041,'Wenceslas','83811843'),(2042,'mother','83811843'),(2043,'and','83811843'),(2044,'the','83811843'),(2045,'motive','83811843'),(2046,'was','83811843'),(2047,'again','83811843'),(2048,'power','83811843'),(2049,'Drahomira','83811843'),(2050,'wanted','83811843'),(2051,'to','83811843'),(2052,'place','83811843'),(2053,'Wenceslas','83811843'),(2054,'on','83811843'),(2055,'the','83811843'),(2056,'throne','83811843'),(2057,'\r\n\r\nThings','83811843'),(2058,'didnt','83811843'),(2059,'get','83811843'),(2060,'much','83811843'),(2061,'better','83811843'),(2062,'within','83811843'),(2063,'the','83811843'),(2064,'Przemyslid','83811843'),(2065,'family','83811843'),(2066,'it','83811843'),(2067,'is','83811843'),(2068,'suspected','83811843'),(2069,'that','83811843'),(2070,'','83811843'),(2071,'Interestingly','83811843'),(2072,'enough','83811843'),(2073,'the','83811843'),(2074,'Przemyslids','83811843'),(2075,'are','83811843'),(2076,'remembered','83811843'),(2077,'rather','83811843'),(2078,'fondly','83811843'),(2079,'in','83811843'),(2080,'the','83811843'),(2081,'Czech','83811843'),(2082,'Republic','83811843'),(2083,'today','83811843'),(2084,'as','83811843'),(2085,'it','83811843'),(2086,'seems','83811843'),(2087,'that','83811843'),(2088,'most','83811843'),(2089,'people','83811843'),(2090,'are','83811843'),(2091,'blissfully','83811843'),(2092,'unaware','83811843'),(2093,'of','83811843'),(2094,'the','83811843'),(2095,'familys','83811843'),(2096,'murderous','83811843'),(2097,'streak','83811843'),(2098,'\r\n\r\nMaybe','83811843'),(2099,'that','83811843'),(2100,'is','83811843'),(2101,'because','83811843'),(2102,'the','83811843'),(2103,'Przemyslids','83811843'),(2104,'occasionally','83811843'),(2105,'took','83811843'),(2106,'time','83811843'),(2107,'off','83811843'),(2108,'from','83811843'),(2109,'their','83811843'),(2110,'favorite','83811843'),(2111,'sport','83811843'),(2112,'to','83811843'),(2113,'increase','83811843'),(2114,'Bohemias','83811843'),(2115,'power','83811843'),(2116,'and','83811843'),(2117,'prestige','83811843'),(2118,'In','83811843'),(2119,'typical','83811843'),(2120,'early','83811843'),(2121,'feudal','83811843'),(2122,'fashion','83811843'),(2123,'this','83811843'),(2124,'meant','83811843'),(2125,'that','83811843'),(2126,'they','83811843'),(2127,'went','83811843'),(2128,'out','83811843'),(2129,'killing','83811843'),(2130,'people','83811843'),(2131,'in','83811843'),(2132,'other','83811843'),(2133,'countries','83811843'),(2134,'instead','83811843'),(2135,'expanding','83811843'),(2136,'their','83811843'),(2137,'empire','83811843'),(2138,'to','83811843'),(2139,'Moravia','83811843'),(2140,'and','83811843'),(2141,'Silesia','83811843'),(2142,'as','83811843'),(2143,'well','83811843'),(2144,'as','83811843'),(2145,'the','83811843'),(2146,'upper','83811843'),(2147,'reaches','83811843'),(2148,'of','83811843'),(2149,'the','83811843'),(2150,'river','83811843'),(2151,'Vistula','83811843'),(2152,'and','83811843'),(2153,'parts','83811843'),(2154,'of','83811843'),(2155,'western','83811843'),(2156,'Slovakia','83811843'),(2157,'In','83811843'),(2158,'Moravia','83811843'),(2159,'they','83811843'),(2160,'set','83811843'),(2161,'up','83811843'),(2162,'a','83811843'),(2163,'system','83811843'),(2164,'of','83811843'),(2165,'dukedoms','83811843'),(2166,'with','83811843'),(2167,'the','83811843'),(2168,'office','83811843'),(2169,'of','83811843'),(2170,'Margrave','83811843'),(2171,'ruler','83811843'),(2172,'of','83811843'),(2173,'Moravia','83811843'),(2174,'sometimes','83811843'),(2175,'being','83811843'),(2176,'held','83811843'),(2177,'by','83811843'),(2178,'the','83811843'),(2179,'Bohemian','83811843'),(2180,'Dauphin','83811843'),(2181,'sometimes','83811843'),(2182,'by','83811843'),(2183,'a','83811843'),(2184,'rival','83811843'),(2185,'for','83811843'),(2186,'the','83811843'),(2187,'Bohemian','83811843'),(2188,'throne','83811843'),(2189,'In','83811843'),(2190,'this','83811843'),(2191,'way','83811843'),(2192,'the','83811843'),(2193,'Przemyslide','83811843'),(2194,'dynastic','83811843'),(2195,'killings','83811843'),(2196,'were','83811843'),(2197,'stayed','83811843'),(2198,'and','83811843'),(2199,'both','83811843'),(2200,'Bohemia','83811843'),(2201,'and','83811843'),(2202,'Moravia','83811843'),(2203,'came','83811843'),(2204,'to','83811843'),(2205,'be','83811843'),(2206,'regarded','83811843'),(2207,'as','83811843'),(2208,'hereditary','83811843'),(2209,'lands','83811843'),(2210,'of','83811843'),(2211,'the','83811843'),(2212,'Przemyslid','83811843'),(2213,'dynasty','83811843'),(2214,'All','83811843'),(2215,'the','83811843'),(2216,'while','83811843'),(2217,'the','83811843'),(2218,'expansion','83811843'),(2219,'of','83811843'),(2220,'the','83811843'),(2221,'Przemyslid','83811843'),(2222,'Dynastys','83811843'),(2223,'power','83811843'),(2224,'went','83811843'),(2225,'hand','83811843'),(2226,'in','83811843'),(2227,'hand','83811843'),(2228,'with','83811843'),(2229,'the','83811843'),(2230,'spread','83811843'),(2231,'of','83811843'),(2232,'Christianity','83811843'),(2233,'in','83811843'),(2234,'the','83811843'),(2235,'region','83811843'),(2236,'\r\n\r\n','83811843'),(2237,'This','83811843'),(2238,'growing','83811843'),(2239,'Przemyslide','83811843'),(2240,'state','83811843'),(2241,'maintained','83811843'),(2242,'its','83811843'),(2243,'sovereignty','83811843'),(2244,'though','83811843'),(2245,'it','83811843'),(2246,'formally','83811843'),(2247,'recognized','83811843'),(2248,'the','83811843'),(2249,'feudal','83811843'),(2250,'supremacy','83811843'),(2251,'of','83811843'),(2252,'the','83811843'),(2253,'RomanGerman','83811843'),(2254,'Empire','83811843'),(2255,'The','83811843'),(2256,'Czech','83811843'),(2257,'lands','83811843'),(2258,'ranked','83811843'),(2259,'among','83811843'),(2260,'the','83811843'),(2261,'most','83811843'),(2262,'advanced','83811843'),(2263,'of','83811843'),(2264,'the','83811843'),(2265,'European','83811843'),(2266,'feudal','83811843'),(2267,'states','83811843'),(2268,'being','83811843'),(2269,'at','83811843'),(2270,'the','83811843'),(2271,'forefront','83811843'),(2272,'of','83811843'),(2273,'economic','83811843'),(2274,'power','83811843'),(2275,'and','83811843'),(2276,'cultural','83811843'),(2277,'achievement','83811843'),(2278,'at','83811843'),(2279,'the','83811843'),(2280,'time','83811843'),(2281,'In','83811843'),(2282,'keeping','83811843'),(2283,'with','83811843'),(2284,'this','83811843'),(2285,'growing','83811843'),(2286,'importance','83811843'),(2287,'the','83811843'),(2288,'territory','83811843'),(2289,'was','83811843'),(2290,'officially','83811843'),(2291,'recognized','83811843'),(2292,'through','83811843'),(2293,'the','83811843'),(2294,'granting','83811843'),(2295,'of','83811843'),(2296,'a','83811843'),(2297,'royal','83811843'),(2298,'crown','83811843'),(2299,'to','83811843'),(2300,'the','83811843'),(2301,'Przemyslid','83811843'),(2302,'Dynasty','83811843'),(2303,'in','83811843'),(2304,'the','83811843'),(2305,'eleventh','83811843'),(2306,'century','83811843'),(2307,'it','83811843'),(2308,'was','83811843'),(2309,'made','83811843'),(2310,'hereditary','83811843'),(2311,'in','83811843'),(2312,'1212','83811843'),(2313,'by','83811843'),(2314,'the','83811843'),(2315,'Golden','83811843'),(2316,'Sicilian','83811843'),(2317,'Bull','83811843'),(2318,'and','83811843'),(2319,'the','83811843'),(2320,'granting','83811843'),(2321,'of','83811843'),(2322,'the','83811843'),(2323,'title','83811843'),(2324,'of','83811843'),(2325,'emperor','83811843'),(2326,'for','83811843'),(2327,'Czech','83811843'),(2328,'rulers','83811843'),(2329,'\r\n\r\nThe','83811843'),(2330,'1100s','83811843'),(2331,'and','83811843'),(2332,'1200s','83811843'),(2333,'were','83811843'),(2334,'a','83811843'),(2335,'very','83811843'),(2336,'busy','83811843'),(2337,'time','83811843'),(2338,'in','83811843'),(2339,'this','83811843'),(2340,'part','83811843'),(2341,'of','83811843'),(2342,'Europe','83811843'),(2343,'and','83811843'),(2344,'colonization','83811843'),(2345,'trade','83811843'),(2346,'and','83811843'),(2347,'cultural','83811843'),(2348,'activity','83811843'),(2349,'were','83811843'),(2350,'steadily','83811843'),(2351,'on','83811843'),(2352,'the','83811843'),(2353,'increase','83811843'),(2354,'Prague','83811843'),(2355,'which','83811843'),(2356,'lay','83811843'),(2357,'smack','83811843'),(2358,'dab','83811843'),(2359,'in','83811843'),(2360,'the','83811843'),(2361,'middle','83811843'),(2362,'of','83811843'),(2363,'several','83811843'),(2364,'continental','83811843'),(2365,'trade','83811843'),(2366,'routes','83811843'),(2367,'flourished','83811843'),(2368,'Pragues','83811843'),(2369,'Old','83811843'),(2370,'Town','83811843'),(2371,'was','83811843'),(2372,'founded','83811843'),(2373,'in','83811843'),(2374,'1234','83811843'),(2375,'as','83811843'),(2376,'the','83811843'),(2377,'first','83811843'),(2378,'of','83811843'),(2379,'Pragues','83811843'),(2380,'five','83811843'),(2381,'towns','83811843'),(2382,'and','83811843'),(2383,'the','83811843'),(2384,'Lesser','83811843'),(2385,'Quarter','83811843'),(2386,'was','83811843'),(2387,'founded','83811843'),(2388,'in','83811843'),(2389,'1257','83811843'),(2390,'Border','83811843'),(2391,'forests','83811843'),(2392,'were','83811843'),(2393,'settled','83811843'),(2394,'and','83811843'),(2395,'towns','83811843'),(2396,'and','83811843'),(2397,'fortresses','83811843'),(2398,'were','83811843'),(2399,'founded','83811843'),(2400,'and','83811843'),(2401,'fortified','83811843'),(2402,'These','83811843'),(2403,'sweeping','83811843'),(2404,'changes','83811843'),(2405,'literally','83811843'),(2406,'transformed','83811843'),(2407,'the','83811843'),(2408,'country','83811843'),(2409,'and','83811843'),(2410,'in','83811843'),(2411,'keeping','83811843'),(2412,'with','83811843'),(2413,'these','83811843'),(2414,'physical','83811843'),(2415,'changes','83811843'),(2416,'the','83811843'),(2417,'social','83811843'),(2418,'structure','83811843'),(2419,'of','83811843'),(2420,'the','83811843'),(2421,'territory','83811843'),(2422,'also','83811843'),(2423,'evolved','83811843'),(2424,'From','83811843'),(2426,'this','83811843'),(2427,'time','83811843'),(2428,'aristocrats','83811843'),(2429,'burghers','83811843'),(2430,'and','83811843'),(2431,'serfs','83811843'),(2432,'were','83811843'),(2433,'to','83811843'),(2434,'be','83811843'),(2435,'spotted','83811843'),(2436,'in','83811843'),(2437,'the','83811843'),(2438,'Czech','83811843'),(2439,'lands','83811843'),(2440,'','83811843'),(2441,'as','83811843'),(2442,'were','83811843'),(2443,'German','83811843'),(2444,'settlers','83811843'),(2445,'who','83811843'),(2446,'were','83811843'),(2447,'invited','83811843'),(2448,'to','83811843'),(2449,'colonize','83811843'),(2450,'previously','83811843'),(2451,'uninhabited','83811843'),(2452,'mostly','83811843'),(2453,'border','83811843'),(2454,'regions','83811843'),(2455,'of','83811843'),(2456,'Bohemia','83811843'),(2457,'and','83811843'),(2458,'Moravia','83811843'),(2459,'The','83811843'),(2460,'German','83811843'),(2461,'settlers','83811843'),(2462,'whether','83811843'),(2463,'burghers','83811843'),(2464,'or','83811843'),(2465,'peasants','83811843'),(2466,'did','83811843'),(2467,'not','83811843'),(2468,'form','83811843'),(2469,'a','83811843'),(2470,'homogeneous','83811843'),(2471,'or','83811843'),(2472,'politically','83811843'),(2473,'separate','83811843'),(2474,'group','83811843'),(2475,'and','83811843'),(2476,'they','83811843'),(2477,'soon','83811843'),(2478,'became','83811843'),(2479,'part','83811843'),(2480,'of','83811843'),(2481,'the','83811843'),(2482,'local','83811843'),(2483,'community','83811843'),(2484,'identifying','83811843'),(2485,'with','83811843'),(2486,'Czech','83811843'),(2487,'statehood','83811843'),(2488,'and','83811843'),(2489,'sharing','83811843'),(2490,'in','83811843'),(2491,'the','83811843'),(2492,'development','83811843'),(2493,'of','83811843'),(2494,'the','83811843'),(2495,'Czech','83811843'),(2496,'and','83811843'),(2497,'Moravian','83811843'),(2498,'lands','83811843'),(2499,'as','83811843'),(2500,'fully','83811843'),(2501,'enfranchised','83811843'),(2502,'members','83811843'),(2503,'of','83811843'),(2504,'the','83811843'),(2505,'population','83811843'),(2506,'but','83811843'),(2507,'mostly','83811843'),(2508,'but','83811843'),(2509,'keeping','83811843'),(2510,'their','83811843'),(2511,'native','83811843'),(2512,'language','83811843'),(2513,'in','83811843'),(2514,'addition','83811843'),(2515,'to','83811843'),(2516,'learning','83811843'),(2517,'Czech','83811843'),(2518,'Many','83811843'),(2519,'many','83811843'),(2520,'many','83811843'),(2521,'many','83811843'),(2522,'centuries','83811843'),(2523,'later','83811843'),(2524,'the','83811843'),(2525,'places','83811843'),(2526,'that','83811843'),(2527,'they','83811843'),(2528,'settled','83811843'),(2529,'would','83811843'),(2530,'come','83811843'),(2531,'to','83811843'),(2532,'be','83811843'),(2533,'known','83811843'),(2534,'as','83811843'),(2535,'the','83811843'),(2536,'Sudetenland','83811843'),(2537,'\r\n\r\nFrom','83811843'),(2538,'the','83811843'),(2539,'thirteenth','83811843'),(2540,'century','83811843'),(2541,'the','83811843'),(2542,'Czech','83811843'),(2543,'kingdom','83811843'),(2544,'was','83811843'),(2545,'one','83811843'),(2546,'of','83811843'),(2547,'the','83811843'),(2548,'most','83811843'),(2549,'robust','83811843'),(2550,'states','83811843'),(2551,'in','83811843'),(2552,'all','83811843'),(2553,'of','83811843'),(2554,'Europe','83811843'),(2555,'with','83811843'),(2556,'a','83811843'),(2557,'growing','83811843'),(2558,'population','83811843'),(2559,'and','83811843'),(2560,'a','83811843'),(2561,'vigorous','83811843'),(2562,'economy','83811843'),(2563,'This','83811843'),(2564,'in','83811843'),(2565,'turn','83811843'),(2566,'made','83811843'),(2567,'the','83811843'),(2568,'Czech','83811843'),(2569,'nobility','83811843'),(2570,'and','83811843'),(2571,'rulers','83811843'),(2572,'all','83811843'),(2573,'the','83811843'),(2574,'more','83811843'),(2575,'rich','83811843'),(2576,'and','83811843'),(2577,'powerful','83811843'),(2578,'and','83811843'),(2579,'enabled','83811843'),(2580,'king','83811843'),(2581,'Przemysl','83811843'),(2582,'Otakar','83811843'),(2583,'II','83811843'),(2584,'to','83811843'),(2585,'expand','83811843'),(2586,'his','83811843'),(2587,'territory','83811843'),(2588,'rather','83811843'),(2589,'extensively','83811843'),(2590,'if','83811843'),(2591,'briefly','83811843'),(2592,'Otakar','83811843'),(2593,'II','83811843'),(2594,'was','83811843'),(2595,'quite','83811843'),(2596,'wellknown','83811843'),(2597,'in','83811843'),(2598,'his','83811843'),(2599,'time','83811843'),(2600,'and','83811843'),(2601,'he','83811843'),(2602,'even','83811843'),(2603,'makes','83811843'),(2604,'an','83811843'),(2605,'appearance','83811843'),(2606,'in','83811843'),(2607,'Dantes','83811843'),(2608,'Divine','83811843'),(2609,'Comedy','83811843'),(2610,'Otokar','83811843'),(2611,'II','83811843'),(2612,'also','83811843'),(2613,'known','83811843'),(2614,'as','83811843'),(2615,'the','83811843'),(2616,'King','83811843'),(2617,'of','83811843'),(2618,'Gold','83811843'),(2619,'and','83811843'),(2620,'Iron','83811843'),(2621,'because','83811843'),(2622,'of','83811843'),(2623,'his','83811843'),(2624,'considerable','83811843'),(2625,'wealth','83811843'),(2626,'and','83811843'),(2627,'his','83811843'),(2628,'considerable','83811843'),(2629,'military','83811843'),(2630,'might','83811843'),(2631,'defeated','83811843'),(2632,'the','83811843'),(2633,'armies','83811843'),(2634,'of','83811843'),(2635,'the','83811843'),(2636,'Hungarian','83811843'),(2637,'king','83811843'),(2638,'in','83811843'),(2639,'1256','83811843'),(2640,'and','83811843'),(2641,'again','83811843'),(2642,'in','83811843'),(2643,'1260','83811843'),(2644,'This','83811843'),(2645,'military','83811843'),(2646,'victory','83811843'),(2647,'allowed','83811843'),(2648,'him','83811843'),(2649,'to','83811843'),(2650,'annex','83811843'),(2651,'the','83811843'),(2652,'Alpine','83811843'),(2653,'countries','83811843'),(2654,'todays','83811843'),(2655,'Austria','83811843'),(2656,'and','83811843'),(2657,'beyond','83811843'),(2658,'','83811843'),(2659,'extending','83811843'),(2660,'his','83811843'),(2661,'territories','83811843'),(2662,'all','83811843'),(2663,'the','83811843'),(2664,'way','83811843'),(2665,'to','83811843'),(2666,'the','83811843'),(2667,'Adriatic','83811843'),(2668,'Sea','83811843'),(2669,'Some','83811843'),(2670,'people','83811843'),(2671,'claim','83811843'),(2672,'that','83811843'),(2673,'this','83811843'),(2674,'brief','83811843'),(2675,'period','83811843'),(2676,'','83811843'),(2677,'in','83811843'),(2678,'which','83811843'),(2679,'Bohemia','83811843'),(2680,'controlled','83811843'),(2681,'territory','83811843'),(2682,'bordering','83811843'),(2683,'on','83811843'),(2684,'the','83811843'),(2685,'sea','83811843'),(2686,'','83811843'),(2687,'is','83811843'),(2688,'the','83811843'),(2689,'basis','83811843'),(2690,'for','83811843'),(2691,'Shakespeares','83811843'),(2692,'infamous','83811843'),(2693,'Bohemian','83811843'),(2694,'seacoast','83811843'),(2695,'from','83811843'),(2696,'his','83811843'),(2697,'play','83811843'),(2698,'The','83811843'),(2699,'Tempest','83811843'),(2700,'\r\n\r\nWell','83811843'),(2701,'while','83811843'),(2702,'the','83811843'),(2703,'Czech','83811843'),(2704,'lands','83811843'),(2705,'were','83811843'),(2706,'gaining','83811843'),(2707,'power','83811843'),(2708,'prestige','83811843'),(2709,'oceanfront','83811843'),(2710,'property','83811843'),(2711,'and','83811843'),(2712,'other','83811843'),(2713,'things','83811843'),(2714,'a','83811843'),(2715,'powerful','83811843'),(2716,'rival','83811843'),(2717,'appeared','83811843'),(2718,'in','83811843'),(2719,'Germany','83811843'),(2720,'in','83811843'),(2721,'the','83811843'),(2722,'person','83811843'),(2723,'of','83811843'),(2724,'the','83811843'),(2725,'newlyelected','83811843'),(2726,'ruler','83811843'),(2727,'of','83811843'),(2728,'the','83811843'),(2729,'Holy','83811843'),(2730,'Roman','83811843'),(2731,'Empire','83811843'),(2732,'Rudolf','83811843'),(2733,'Habsburg','83811843'),(2734,'','83811843'),(2735,'a','83811843'),(2736,'member','83811843'),(2737,'of','83811843'),(2738,'a','83811843'),(2739,'previously','83811843'),(2740,'unimportant','83811843'),(2741,'family','83811843'),(2742,'from','83811843'),(2743,'the','83811843'),(2744,'Rhineland','83811843'),(2745,'This','83811843'),(2746,'Rudolf','83811843'),(2747,'formed','83811843'),(2748,'an','83811843'),(2749,'alliance','83811843'),(2750,'of','83811843'),(2751,'German','83811843'),(2752,'princes','83811843'),(2753,'and','83811843'),(2754,'','83811843'),(2755,'after','83811843'),(2756,'the','83811843'),(2757,'Czech','83811843'),(2758,'King','83811843'),(2759,'Przemysl','83811843'),(2760,'Otakar','83811843'),(2761,'II','83811843'),(2762,'was','83811843'),(2763,'killed','83811843'),(2764,'in','83811843'),(2765,'battle','83811843'),(2766,'in','83811843'),(2767,'Moravia','83811843'),(2768,'against','83811843'),(2769,'the','83811843'),(2770,'combined','83811843'),(2771,'Roman','83811843'),(2772,'and','83811843'),(2773,'Hungarian','83811843'),(2774,'forces','83811843'),(2775,'on','83811843'),(2776,'August','83811843'),(2777,'26','83811843'),(2778,'1278','83811843'),(2779,'','83811843'),(2780,'Rudolf','83811843'),(2781,'took','83811843'),(2782,'possession','83811843'),(2783,'of','83811843'),(2784,'the','83811843'),(2785,'abovementioned','83811843'),(2786,'Alpine','83811843'),(2787,'lands','83811843'),(2788,'which','83811843'),(2789,'later','83811843'),(2790,'became','83811843'),(2791,'the','83811843'),(2792,'basis','83811843'),(2793,'of','83811843'),(2794,'the','83811843'),(2795,'Habsburgs','83811843'),(2796,'power','83811843'),(2797,'','83811843'),(2798,'ie','83811843'),(2799,'Austria','83811843'),(2800,'\r\n\r\nThe','83811843'),(2801,'late','83811843'),(2802,'Czech','83811843'),(2803,'King','83811843'),(2804,'Przemysl','83811843'),(2805,'Otakar','83811843'),(2806,'II','83811843'),(2807,'was','83811843'),(2808,'succeeded','83811843'),(2809,'by','83811843'),(2810,'his','83811843'),(2811,'son','83811843'),(2812,'Wenceslas','83811843'),(2813,'II','83811843'),(2814,'12781305','83811843'),(2815,'Under','83811843'),(2816,'his','83811843'),(2817,'reign','83811843'),(2818,'the','83811843'),(2819,'mining','83811843'),(2820,'of','83811843'),(2821,'Czech','83811843'),(2822,'silver','83811843'),(2823,'at','83811843'),(2824,'Kutna','83811843'),(2825,'Hora','83811843'),(2826,'and','83811843'),(2827,'the','83811843'),(2828,'minting','83811843'),(2829,'of','83811843'),(2830,'the','83811843'),(2831,'Czech','83811843'),(2832,'silver','83811843'),(2833,'groschen','83811843'),(2834,'','83811843'),(2835,'one','83811843'),(2836,'of','83811843'),(2837,'the','83811843'),(2838,'hardest','83811843'),(2839,'European','83811843'),(2840,'currencies','83811843'),(2841,'of','83811843'),(2842,'the','83811843'),(2843,'time','83811843'),(2844,'','83811843'),(2845,'flourished','83811843'),(2846,'Wenceslas','83811843'),(2847,'II','83811843'),(2848,'also','83811843'),(2849,'created','83811843'),(2850,'a','83811843'),(2851,'confederation','83811843'),(2852,'between','83811843'),(2853,'Bohemia','83811843'),(2854,'and','83811843'),(2855,'Poland','83811843'),(2856,'For','83811843'),(2857,'a','83811843'),(2858,'short','83811843'),(2859,'time','83811843'),(2860,'Hungary','83811843'),(2861,'','83811843'),(2862,'under','83811843'),(2863,'the','83811843'),(2864,'rule','83811843'),(2865,'of','83811843'),(2866,'Matthias','83811843'),(2867,'Czak','83811843'),(2868,'Trenciansky','83811843'),(2869,'who','83811843'),(2870,'held','83811843'),(2871,'absolute','83811843'),(2872,'rule','83811843'),(2873,'over','83811843'),(2874,'most','83811843'),(2875,'of','83811843'),(2876,'Slovakia','83811843'),(2877,'as','83811843'),(2878,'well','83811843'),(2879,'','83811843'),(2880,'also','83811843'),(2881,'joined','83811843'),(2882,'this','83811843'),(2883,'confederation','83811843'),(2884,'\r\n\r\nThe','83811843'),(2885,'PolishCzech','83811843'),(2886,'union','83811843'),(2887,'was','83811843'),(2888,'strengthened','83811843'),(2889,'under','83811843'),(2890,'the','83811843'),(2891,'brief','83811843'),(2892,'rule','83811843'),(2893,'of','83811843'),(2894,'Wenceslas','83811843'),(2895,'III','83811843'),(2896,'Had','83811843'),(2897,'it','83811843'),(2898,'survived','83811843'),(2899,'it','83811843'),(2900,'might','83811843'),(2901,'have','83811843'),(2902,'contributed','83811843'),(2903,'to','83811843'),(2904,'the','83811843'),(2905,'creation','83811843'),(2906,'of','83811843'),(2907,'a','83811843'),(2908,'more','83811843'),(2909,'advanced','83811843'),(2910,'region','83811843'),(2911,'in','83811843'),(2912,'Europe','83811843'),(2913,'as','83811843'),(2914,'the','83811843'),(2915,'earlier','83811843'),(2916,'Czech','83811843'),(2917,'Austrian','83811843'),(2918,'union','83811843'),(2919,'had','83811843'),(2920,'However','83811843'),(2921,'this','83811843'),(2922,'was','83811843'),(2923,'precluded','83811843'),(2924,'by','83811843'),(2925,'the','83811843'),(2926,'death','83811843'),(2927,'of','83811843'),(2928,'young','83811843'),(2929,'Wenceslas','83811843'),(2930,'III','83811843'),(2931,'in','83811843'),(2932,'1306','83811843'),(2933,'when','83811843'),(2934,'he','83811843'),(2935,'was','83811843'),(2936,'just','83811843'),(2937,'17','83811843'),(2938,'years','83811843'),(2939,'old','83811843'),(2940,'Wenceslas','83811843'),(2941,'III','83811843'),(2942,'was','83811843'),(2943,'the','83811843'),(2944,'last','83811843'),(2945,'male','83811843'),(2946,'member','83811843'),(2947,'of','83811843'),(2948,'the','83811843'),(2949,'Przemyslids','83811843'),(2950,'line','83811843'),(2951,'and','83811843'),(2952,'after','83811843'),(2953,'his','83811843'),(2954,'death','83811843'),(2955,'the','83811843'),(2956,'CzechPolish','83811843'),(2957,'union','83811843'),(2958,'fell','83811843'),(2959,'apart\r\n\r\n\r\nWith','83811843'),(2960,'the','83811843'),(2961,'demise','83811843'),(2962,'of','83811843'),(2963,'Wenceslas','83811843'),(2964,'III','83811843'),(2965,'the','83811843'),(2966,'last','83811843'),(2967,'of','83811843'),(2968,'the','83811843'),(2969,'Przemyslid','83811843'),(2970,'rulers','83811843'),(2971,'of','83811843'),(2972,'the','83811843'),(2973,'Czech','83811843'),(2974,'lands','83811843'),(2975,'the','83811843'),(2976,'difficult','83811843'),(2977,'question','83811843'),(2978,'of','83811843'),(2979,'who','83811843'),(2980,'should','83811843'),(2981,'rule','83811843'),(2982,'next','83811843'),(2983,'had','83811843'),(2984,'to','83811843'),(2985,'be','83811843'),(2986,'answered','83811843'),(2987,'And','83811843'),(2988,'answered','83811843'),(2989,'it','83811843'),(2990,'was','83811843'),(2991,'','83811843'),(2992,'by','83811843'),(2993,'14yearold','83811843'),(2994,'John','83811843'),(2995,'of','83811843'),(2996,'Luxembourg','83811843'),(2997,'the','83811843'),(2998,'first','83811843'),(2999,'of','83811843'),(3000,'the','83811843'),(3001,'Luxembourgs','83811843'),(3002,'to','83811843'),(3003,'occupy','83811843'),(3004,'the','83811843'),(3005,'Czech','83811843'),(3006,'throne','83811843'),(3007,'13101437','83811843'),(3008,'John','83811843'),(3009,'of','83811843'),(3010,'Luxembourg','83811843'),(3011,'gained','83811843'),(3012,'this','83811843'),(3013,'position','83811843'),(3014,'with','83811843'),(3015,'the','83811843'),(3016,'support','83811843'),(3017,'of','83811843'),(3018,'the','83811843'),(3019,'Czech','83811843'),(3020,'nobility','83811843'),(3021,'by','83811843'),(3022,'marrying','83811843'),(3023,'18yearold','83811843'),(3024,'Eliska','83811843'),(3025,'Przemyslova','83811843'),(3026,'the','83811843'),(3027,'sister','83811843'),(3028,'of','83811843'),(3029,'the','83811843'),(3030,'late','83811843'),(3031,'Wenceslas','83811843'),(3032,'III','83811843'),(3033,'\r\n\r\nUnder','83811843'),(3034,'John','83811843'),(3035,'of','83811843'),(3036,'Luxembourgs','83811843'),(3037,'rule','83811843'),(3038,'more','83811843'),(3039,'territories','83811843'),(3040,'','83811843'),(3041,'including','83811843'),(3042,'the','83811843'),(3043,'regions','83811843'),(3044,'of','83811843'),(3045,'Cheb','83811843'),(3046,'Lusatia','83811843'),(3047,'and','83811843'),(3048,'Silesia','83811843'),(3049,'','83811843'),(3050,'were','83811843'),(3051,'joined','83811843'),(3052,'to','83811843'),(3053,'Bohemia','83811843'),(3054,'All','83811843'),(3055,'of','83811843'),(3056,'these','83811843'),(3057,'regions','83811843'),(3058,'together','83811843'),(3059,'under','83811843'),(3060,'the','83811843'),(3061,'rule','83811843'),(3062,'of','83811843'),(3063,'John','83811843'),(3064,'of','83811843'),(3065,'Luxembourg','83811843'),(3066,'came','83811843'),(3067,'to','83811843'),(3068,'be','83811843'),(3069,'known','83811843'),(3070,'as','83811843'),(3071,'the','83811843'),(3072,'Lands','83811843'),(3073,'of','83811843'),(3074,'the','83811843'),(3075,'Czech','83811843'),(3076,'Crown','83811843'),(3077,'So','83811843'),(3078,'you','83811843'),(3079,'see','83811843'),(3080,'there','83811843'),(3081,'never','83811843'),(3082,'was','83811843'),(3083,'an','83811843'),(3084,'easy','83811843'),(3085,'oneword','83811843'),(3086,'way','83811843'),(3087,'like','83811843'),(3088,'Czechia','83811843'),(3089,'to','83811843'),(3090,'describe','83811843'),(3091,'this','83811843'),(3092,'part','83811843'),(3093,'of','83811843'),(3094,'the','83811843'),(3095,'world','83811843'),(3096,'not','83811843'),(3097,'even','83811843'),(3098,'in','83811843'),(3099,'way','83811843'),(3100,'back','83811843'),(3101,'in','83811843'),(3102,'the','83811843'),(3103,'14th','83811843'),(3104,'century','83811843'),(3105,'\r\n\r\nJohn','83811843'),(3106,'of','83811843'),(3107,'Luxembourg','83811843'),(3108,'was','83811843'),(3109,'a','83811843'),(3110,'good','83811843'),(3111,'king','83811843'),(3112,'but','83811843'),(3113,'he','83811843'),(3114,'had','83811843'),(3115,'a','83811843'),(3116,'fatal','83811843'),(3117,'weakness','83811843'),(3119,'chivalry','83811843'),(3120,'knighthood','83811843'),(3121,'honour','83811843'),(3122,'','83811843'),(3123,'and','83811843'),(3124,'especially','83811843'),(3125,'for','83811843'),(3126,'battles','83811843'),(3127,'He','83811843'),(3128,'loved','83811843'),(3129,'to','83811843'),(3130,'fight','83811843'),(3131,'When','83811843'),(3132,'there','83811843'),(3133,'werent','83811843'),(3134,'any','83811843'),(3135,'battles','83811843'),(3136,'in','83811843'),(3137,'his','83811843'),(3138,'immediate','83811843'),(3139,'neighborhood','83811843'),(3140,'he','83811843'),(3141,'went','83811843'),(3142,'abroad','83811843'),(3143,'to','83811843'),(3144,'help','83811843'),(3145,'his','83811843'),(3146,'friends','83811843'),(3147,'fight','83811843'),(3148,'their','83811843'),(3149,'battles','83811843'),(3150,'And','83811843'),(3151,'so','83811843'),(3152,'it','83811843'),(3153,'happened','83811843'),(3154,'that','83811843'),(3155,'he','83811843'),(3156,'fell','83811843'),(3157,'at','83811843'),(3158,'the','83811843'),(3159,'battle','83811843'),(3160,'of','83811843'),(3161,'Crecy','83811843'),(3162,'in','83811843'),(3163,'1346','83811843'),(3164,'fighting','83811843'),(3165,'on','83811843'),(3166,'the','83811843'),(3167,'side','83811843'),(3168,'of','83811843'),(3169,'his','83811843'),(3170,'French','83811843'),(3171,'friend','83811843'),(3172,'and','83811843'),(3173,'distant','83811843'),(3174,'relative','83811843'),(3175,'Charles','83811843'),(3176,'against','83811843'),(3177,'the','83811843'),(3178,'Black','83811843'),(3179,'Prince','83811843'),(3180,'And','83811843'),(3181,'so','83811843'),(3182,'he','83811843'),(3183,'was','83811843'),(3184,'succeeded','83811843'),(3185,'by','83811843'),(3186,'his','83811843'),(3187,'young','83811843'),(3188,'son','83811843'),(3189,'Charles','83811843'),(3190,'IV','83811843'),(3191,'\r\n\r\n','83811843'),(3192,'Charles','83811843'),(3193,'IV','83811843'),(3194,'was','83811843'),(3195,'just','83811843'),(3196,'as','83811843'),(3197,'noble','83811843'),(3198,'','83811843'),(3199,'but','83811843'),(3200,'much','83811843'),(3201,'more','83811843'),(3202,'practical','83811843'),(3203,'than','83811843'),(3204,'his','83811843'),(3205,'caravanting','83811843'),(3206,'father','83811843'),(3207,'had','83811843'),(3208,'been','83811843'),(3209,'and','83811843'),(3210,'he','83811843'),(3211,'took','83811843'),(3212,'a','83811843'),(3213,'keen','83811843'),(3214,'interest','83811843'),(3215,'in','83811843'),(3216,'all','83811843'),(3217,'aspects','83811843'),(3218,'of','83811843'),(3219,'rule','83811843'),(3220,'over','83811843'),(3221,'the','83811843'),(3222,'Czech','83811843'),(3223,'lands','83811843'),(3224,'Charles','83811843'),(3225,'IV','83811843'),(3226,'was','83811843'),(3227,'not','83811843'),(3228,'really','83811843'),(3229,'named','83811843'),(3230,'Charles','83811843'),(3231,'He','83811843'),(3232,'was','83811843'),(3233,'named','83811843'),(3234,'Wenceslas','83811843'),(3235,'IV','83811843'),(3236,'','83811843'),(3237,'but','83811843'),(3238,'he','83811843'),(3239,'had','83811843'),(3240,'been','83811843'),(3241,'reared','83811843'),(3242,'at','83811843'),(3243,'the','83811843'),(3244,'French','83811843'),(3245,'court','83811843'),(3246,'and','83811843'),(3247,'everyone','83811843'),(3248,'there','83811843'),(3249,'called','83811843'),(3250,'him','83811843'),(3251,'Charles','83811843'),(3252,'and','83811843'),(3253,'so','83811843'),(3254,'the','83811843'),(3255,'name','83811843'),(3256,'stuck','83811843'),(3257,'His','83811843'),(3258,'son','83811843'),(3259,'who','83811843'),(3260,'succeeded','83811843'),(3261,'him','83811843'),(3262,'on','83811843'),(3263,'the','83811843'),(3264,'Czech','83811843'),(3265,'throne','83811843'),(3266,'was','83811843'),(3267,'also','83811843'),(3268,'named','83811843'),(3269,'Wenceslas','83811843'),(3270,'IV','83811843'),(3271,'and','83811843'),(3272,'this','83811843'),(3273,'sometimes','83811843'),(3274,'leads','83811843'),(3275,'to','83811843'),(3276,'some','83811843'),(3277,'confusion','83811843'),(3278,'When','83811843'),(3279,'Charles','83811843'),(3280,'IV','83811843'),(3281,'came','83811843'),(3282,'to','83811843'),(3283,'power','83811843'),(3284,'he','83811843'),(3285,'was','83811843'),(3286,'still','83811843'),(3287,'very','83811843'),(3288,'young','83811843'),(3289,'Since','83811843'),(3290,'hed','83811843'),(3291,'been','83811843'),(3292,'raised','83811843'),(3293,'in','83811843'),(3294,'France','83811843'),(3295,'he','83811843'),(3296,'didnt','83811843'),(3297,'speak','83811843'),(3298,'Czech','83811843'),(3299,'Wicked','83811843'),(3300,'advisors','83811843'),(3301,'surrounded','83811843'),(3302,'the','83811843'),(3303,'young','83811843'),(3304,'king','83811843'),(3305,'and','83811843'),(3306,'attempted','83811843'),(3307,'to','83811843'),(3308,'usurp','83811843'),(3309,'the','83811843'),(3310,'real','83811843'),(3311,'rule','83811843'),(3312,'of','83811843'),(3313,'Bohemia','83811843'),(3314,'while','83811843'),(3315,'leaving','83811843'),(3316,'young','83811843'),(3317,'Charles','83811843'),(3318,'IV','83811843'),(3319,'in','83811843'),(3320,'place','83811843'),(3321,'as','83811843'),(3322,'a','83811843'),(3323,'figurehead','83811843'),(3324,'\r\n\r\nCharles','83811843'),(3325,'IV','83811843'),(3326,'','83811843'),(3327,'may','83811843'),(3328,'have','83811843'),(3329,'been','83811843'),(3330,'young','83811843'),(3331,'but','83811843'),(3332,'he','83811843'),(3333,'was','83811843'),(3334,'no','83811843'),(3335,'dummy','83811843'),(3336,'He','83811843'),(3337,'spoke','83811843'),(3338,'5','83811843'),(3339,'languages','83811843'),(3340,'fluently','83811843'),(3341,'at','83811843'),(3342,'a','83811843'),(3343,'time','83811843'),(3344,'when','83811843'),(3345,'many','83811843'),(3346,'crowned','83811843'),(3347,'heads','83811843'),(3348,'could','83811843'),(3349,'not','83811843'),(3350,'even','83811843'),(3351,'read','83811843'),(3352,'and','83811843'),(3353,'write','83811843'),(3354,'and','83811843'),(3355,'he','83811843'),(3356,'was','83811843'),(3357,'a','83811843'),(3358,'masterful','83811843'),(3359,'diplomat','83811843'),(3360,'He','83811843'),(3361,'also','83811843'),(3362,'had','83811843'),(3363,'friends','83811843'),(3364,'in','83811843'),(3365,'high','83811843'),(3366,'places','83811843'),(3367,'','83811843'),(3368,'Pope','83811843'),(3369,'Klement','83811843'),(3370,'who','83811843'),(3371,'was','83811843'),(3372,'elected','83811843'),(3373,'during','83811843'),(3374,'Charles','83811843'),(3375,'IVs','83811843'),(3376,'reign','83811843'),(3377,'had','83811843'),(3378,'been','83811843'),(3379,'the','83811843'),(3380,'Czech','83811843'),(3381,'sovereigns','83811843'),(3382,'tutor','83811843'),(3383,'at','83811843'),(3384,'the','83811843'),(3385,'court','83811843'),(3386,'in','83811843'),(3387,'Paris','83811843'),(3388,'\r\n\r\nYoung','83811843'),(3389,'Charles','83811843'),(3390,'IV','83811843'),(3391,'saw','83811843'),(3392,'through','83811843'),(3393,'the','83811843'),(3394,'transparent','83811843'),(3395,'plans','83811843'),(3396,'of','83811843'),(3397,'the','83811843'),(3398,'wicked','83811843'),(3399,'advisors','83811843'),(3400,'who','83811843'),(3401,'surrounded','83811843'),(3402,'him','83811843'),(3403,'He','83811843'),(3404,'quickly','83811843'),(3405,'learned','83811843'),(3406,'Czech','83811843'),(3407,'and','83811843'),(3408,'took','83811843'),(3409,'over','83811843'),(3410,'rule','83811843'),(3411,'of','83811843'),(3412,'his','83811843'),(3413,'own','83811843'),(3414,'land','83811843'),(3415,'himself','83811843'),(3416,'\r\n\r\nCharles','83811843'),(3417,'IV','83811843'),(3418,'was','83811843'),(3419,'very','83811843'),(3420,'clever','83811843'),(3421,'very','83811843'),(3422,'devout','83811843'),(3423,'and','83811843'),(3424,'very','83811843'),(3425,'savvy','83811843'),(3426,'He','83811843'),(3427,'was','83811843'),(3428,'also','83811843'),(3429,'a','83811843'),(3430,'lover','83811843'),(3431,'of','83811843'),(3432,'art','83811843'),(3433,'and','83811843'),(3434,'a','83811843'),(3435,'collector','83811843'),(3436,'of','83811843'),(3437,'holy','83811843'),(3438,'relics','83811843'),(3439,'which','83811843'),(3440,'he','83811843'),(3441,'kept','83811843'),(3442,'under','83811843'),(3443,'lock','83811843'),(3444,'and','83811843'),(3445,'key','83811843'),(3446,'all','83811843'),(3447,'year','83811843'),(3448,'long','83811843'),(3449,'except','83811843'),(3450,'for','83811843'),(3451,'Easter','83811843'),(3452,'when','83811843'),(3453,'he','83811843'),(3454,'paraded','83811843'),(3455,'them','83811843'),(3456,'through','83811843'),(3457,'the','83811843'),(3458,'country','83811843'),(3459,'like','83811843'),(3460,'a','83811843'),(3461,'travelling','83811843'),(3462,'circus','83811843'),(3463,'\r\n\r\nThe','83811843'),(3464,'medieval','83811843'),(3465,'Czech','83811843'),(3466,'state','83811843'),(3467,'reached','83811843'),(3468,'the','83811843'),(3469,'zenith','83811843'),(3470,'of','83811843'),(3471,'its','83811843'),(3472,'power','83811843'),(3473,'and','83811843'),(3474,'importance','83811843'),(3475,'Charles','83811843'),(3476,'IV','83811843'),(3477,'He','83811843'),(3478,'was','83811843'),(3479,'the','83811843'),(3480,'King','83811843'),(3481,'of','83811843'),(3482,'Bohemia','83811843'),(3483,'later','83811843'),(3484,'also','83811843'),(3485,'Holy','83811843'),(3486,'Roman','83811843'),(3487,'Emperor','83811843'),(3488,'and','83811843'),(3489,'today','83811843'),(3490,'he','83811843'),(3491,'is','83811843'),(3492,'known','83811843'),(3493,'as','83811843'),(3494,'the','83811843'),(3495,'Father','83811843'),(3496,'of','83811843'),(3497,'the','83811843'),(3498,'Czech','83811843'),(3499,'Nation','83811843'),(3500,'\r\n\r\n','83811843'),(3501,'Charles','83811843'),(3502,'was','83811843'),(3503,'a','83811843'),(3504,'very','83811843'),(3505,'good','83811843'),(3506,'king','83811843'),(3507,'and','83811843'),(3508,'he','83811843'),(3509,'paid','83811843'),(3510,'attention','83811843'),(3511,'to','83811843'),(3512,'detail','83811843'),(3513,'It','83811843'),(3514,'was','83811843'),(3515,'he','83811843'),(3516,'who','83811843'),(3517,'made','83811843'),(3518,'sure','83811843'),(3519,'that','83811843'),(3520,'the','83811843'),(3521,'status','83811843'),(3522,'of','83811843'),(3523,'the','83811843'),(3524,'Lands','83811843'),(3525,'of','83811843'),(3526,'the','83811843'),(3527,'Czech','83811843'),(3528,'Crown','83811843'),(3529,'','83811843'),(3530,'the','83811843'),(3531,'territories','83811843'),(3532,'his','83811843'),(3533,'father','83811843'),(3534,'had','83811843'),(3535,'gathered','83811843'),(3536,'together','83811843'),(3537,'under','83811843'),(3538,'his','83811843'),(3539,'rule','83811843'),(3540,'','83811843'),(3541,'was','83811843'),(3542,'legally','83811843'),(3543,'fixed','83811843'),(3544,'this','83811843'),(3545,'task','83811843'),(3546,'was','83811843'),(3547,'made','83811843'),(3548,'all','83811843'),(3549,'the','83811843'),(3550,'easier','83811843'),(3551,'since','83811843'),(3552,'he','83811843'),(3553,'was','83811843'),(3554,'Holy','83811843'),(3555,'Roman','83811843'),(3556,'Emperor','83811843'),(3557,'He','83811843'),(3558,'initiated','83811843'),(3559,'a','83811843'),(3560,'number','83811843'),(3561,'of','83811843'),(3562,'building','83811843'),(3563,'projects','83811843'),(3564,'in','83811843'),(3565,'his','83811843'),(3566,'reign','83811843'),(3567,'especially','83811843'),(3568,'in','83811843'),(3569,'Prague','83811843'),(3570,'It','83811843'),(3571,'was','83811843'),(3572,'at','83811843'),(3573,'his','83811843'),(3574,'behest','83811843'),(3575,'that','83811843'),(3576,'Charles','83811843'),(3577,'Bridge','83811843'),(3578,'and','83811843'),(3579,'St','83811843'),(3580,'Vitus','83811843'),(3581,'Cathedral','83811843'),(3582,'were','83811843'),(3583,'built','83811843'),(3584,'and','83811843'),(3585,'the','83811843'),(3586,'Hunger','83811843'),(3587,'Wall','83811843'),(3588,'that','83811843'),(3589,'he','83811843'),(3590,'commissioned','83811843'),(3591,'remnants','83811843'),(3592,'of','83811843'),(3593,'which','83811843'),(3594,'still','83811843'),(3595,'stand','83811843'),(3596,'today','83811843'),(3597,'on','83811843'),(3598,'Petrin','83811843'),(3599,'Hill','83811843'),(3600,'in','83811843'),(3601,'Prague','83811843'),(3602,'is','83811843'),(3603,'thought','83811843'),(3604,'to','83811843'),(3605,'be','83811843'),(3606,'the','83811843'),(3607,'first','83811843'),(3608,'worksproject','83811843'),(3609,'in','83811843'),(3610,'the','83811843'),(3611,'world','83811843'),(3612,'as','83811843'),(3613,'he','83811843'),(3614,'had','83811843'),(3615,'it','83811843'),(3616,'built','83811843'),(3617,'to','83811843'),(3618,'create','83811843'),(3619,'employment','83811843'),(3620,'for','83811843'),(3621,'the','83811843'),(3622,'poor','83811843'),(3623,'and','83811843'),(3624,'hungry','83811843'),(3625,'masses','83811843'),(3626,'hence','83811843'),(3627,'the','83811843'),(3628,'name','83811843'),(3629,'','83811843'),(3630,'Charles','83811843'),(3631,'IV','83811843'),(3632,'personally','83811843'),(3633,'planned','83811843'),(3634,'Pragues','83811843'),(3635,'New','83811843'),(3636,'Town','83811843'),(3637,'district','83811843'),(3638,'where','83811843'),(3639,'Charles','83811843'),(3640,'Square','83811843'),(3641,'','83811843'),(3642,'which','83811843'),(3643,'is','83811843'),(3644,'also','83811843'),(3645,'named','83811843'),(3646,'for','83811843'),(3647,'him','83811843'),(3648,'','83811843'),(3649,'lies','83811843'),(3650,'Karlstejn','83811843'),(3651,'Castle','83811843'),(3652,'and','83811843'),(3653,'Karlovy','83811843'),(3654,'Vary','83811843'),(3655,'Carlsbad','83811843'),(3656,'are','83811843'),(3657,'also','83811843'),(3658,'named','83811843'),(3659,'for','83811843'),(3660,'Charles','83811843'),(3661,'IV','83811843'),(3662,'\r\n\r\nMany','83811843'),(3663,'of','83811843'),(3664,'the','83811843'),(3665,'building','83811843'),(3666,'projects','83811843'),(3667,'initiated','83811843'),(3668,'by','83811843'),(3669,'Charles','83811843'),(3670,'IV','83811843'),(3671,'still','83811843'),(3672,'stand','83811843'),(3673,'and','83811843'),(3674,'most','83811843'),(3675,'are','83811843'),(3676,'perfect','83811843'),(3677,'examples','83811843'),(3678,'of','83811843'),(3679,'the','83811843'),(3680,'Gothic','83811843'),(3681,'style','83811843'),(3682,'of','83811843'),(3683,'architecture','83811843'),(3684,'which','83811843'),(3685,'is','83811843'),(3686,'characterized','83811843'),(3687,'by','83811843'),(3688,'clean','83811843'),(3689,'simple','83811843'),(3690,'lines','83811843'),(3691,'and','83811843'),(3692,'solid','83811843'),(3693,'structure','83811843'),(3694,'','83811843'),(3695,'like','83811843'),(3696,'the','83811843'),(3697,'Charles','83811843'),(3698,'Bridge','83811843'),(3699,'and','83811843'),(3700,'its','83811843'),(3701,'towers','83811843'),(3702,'the','83811843'),(3703,'Carolinum','83811843'),(3704,'or','83811843'),(3705,'the','83811843'),(3706,'OldNew','83811843'),(3707,'Synagogue','83811843'),(3708,'\r\n\r\n','83811843'),(3709,'Charles','83811843'),(3710,'IV','83811843'),(3711,'also','83811843'),(3712,'founded','83811843'),(3713,'Charles','83811843'),(3714,'University','83811843'),(3715,'the','83811843'),(3716,'first','83811843'),(3717,'center','83811843'),(3718,'of','83811843'),(3719,'higher','83811843'),(3720,'education','83811843'),(3721,'in','83811843'),(3722,'all','83811843'),(3723,'of','83811843'),(3724,'Central','83811843'),(3725,'Europe','83811843'),(3726,'During','83811843'),(3727,'his','83811843'),(3728,'reign','83811843'),(3729,'Prague','83811843'),(3730,'was','83811843'),(3731,'the','83811843'),(3732,'capital','83811843'),(3733,'of','83811843'),(3734,'the','83811843'),(3735,'Holy','83811843'),(3736,'Roman','83811843'),(3737,'Empire','83811843'),(3738,'a','83811843'),(3739,'gilded','83811843'),(3740,'sign','83811843'),(3741,'on','83811843'),(3742,'the','83811843'),(3743,'Old','83811843'),(3744,'Town','83811843'),(3745,'Hall','83811843'),(3746,'still','83811843'),(3747,'proclaims','83811843'),(3748,'Praga','83811843'),(3749,'Caput','83811843'),(3750,'Regni','83811843'),(3751,'today','83811843'),(3752,'and','83811843'),(3753,'he','83811843'),(3754,'successfully','83811843'),(3755,'lobbied','83811843'),(3756,'to','83811843'),(3757,'have','83811843'),(3758,'the','83811843'),(3759,'Prague','83811843'),(3760,'bishopric','83811843'),(3761,'made','83811843'),(3762,'an','83811843'),(3763,'archbishopric','83811843'),(3764,'this','83811843'),(3765,'task','83811843'),(3766,'was','83811843'),(3767,'actually','83811843'),(3768,'quite','83811843'),(3769,'easy','83811843'),(3770,'as','83811843'),(3771,'the','83811843'),(3772,'privelege','83811843'),(3773,'was','83811843'),(3774,'granted','83811843'),(3775,'him','83811843'),(3776,'by','83811843'),(3777,'his','83811843'),(3778,'former','83811843'),(3779,'tutor','83811843'),(3780,'now','83811843'),(3781,'the','83811843'),(3782,'Pope','83811843'),(3783,'\r\n\r\nIt','83811843'),(3784,'was','83811843'),(3785,'Charles','83811843'),(3786,'IV','83811843'),(3787,'too','83811843'),(3788,'who','83811843'),(3789,'brought','83811843'),(3790,'the','83811843'),(3791,'cultivation','83811843'),(3792,'of','83811843'),(3793,'the','83811843'),(3794,'grape','83811843'),(3795,'and','83811843'),(3796,'the','83811843'),(3797,'wine','83811843'),(3798,'industry','83811843'),(3799,'to','83811843'),(3800,'the','83811843'),(3801,'beerdrinking','83811843'),(3802,'Czech','83811843'),(3803,'lands','83811843'),(3804,'That','83811843'),(3805,'isnt','83811843'),(3806,'to','83811843'),(3807,'say','83811843'),(3808,'that','83811843'),(3809,'he','83811843'),(3810,'neglected','83811843'),(3811,'the','83811843'),(3812,'beer','83811843'),(3813,'industry','83811843'),(3814,'','83811843'),(3815,'under','83811843'),(3816,'his','83811843'),(3817,'reign','83811843'),(3818,'stiff','83811843'),(3819,'prison','83811843'),(3820,'sentences','83811843'),(3821,'were','83811843'),(3822,'meted','83811843'),(3823,'out','83811843'),(3824,'to','83811843'),(3825,'those','83811843'),(3826,'caught','83811843'),(3827,'exporting','83811843'),(3828,'cuttings','83811843'),(3829,'of','83811843'),(3830,'prize','83811843'),(3831,'Czech','83811843'),(3832,'hops','83811843'),(3833,'','83811843'),(3834,'essential','83811843'),(3835,'to','83811843'),(3836,'the','83811843'),(3837,'brewing','83811843'),(3838,'of','83811843'),(3839,'great','83811843'),(3840,'Czech','83811843'),(3841,'beer','83811843'),(3842,'','83811843'),(3843,'abroad','83811843'),(3844,'\r\n\r\nCharles','83811843'),(3845,'IV','83811843'),(3846,'had','83811843'),(3847,'no','83811843'),(3848,'fewer','83811843'),(3849,'than','83811843'),(3850,'four','83811843'),(3851,'wives','83811843'),(3852,'and','83811843'),(3853,'any','83811843'),(3854,'number','83811843'),(3855,'of','83811843'),(3856,'progeny','83811843'),(3857,'both','83811843'),(3858,'legitimate','83811843'),(3859,'and','83811843'),(3860,'il','83811843'),(3861,'Of','83811843'),(3862,'these','83811843'),(3863,'his','83811843'),(3864,'oldest','83811843'),(3865,'legitimate','83811843'),(3866,'son','83811843'),(3867,'Vaclav','83811843'),(3868,'IV','83811843'),(3869,'was','83811843'),(3870,'naturally','83811843'),(3871,'chosen','83811843'),(3872,'as','83811843'),(3873,'his','83811843'),(3874,'successor','83811843'),(3875,'\r\n\r\nWenceslas','83811843'),(3876,'IV','83811843'),(3877,'13781419','83811843'),(3878,'son','83811843'),(3879,'of','83811843'),(3880,'Charles','83811843'),(3881,'IV','83811843'),(3882,'and','83811843'),(3883,'heir','83811843'),(3884,'to','83811843'),(3885,'the','83811843'),(3886,'Czech','83811843'),(3887,'and','83811843'),(3888,'Roman','83811843'),(3889,'crowns','83811843'),(3890,'was','83811843'),(3891,'a','83811843'),(3892,'weak','83811843'),(3893,'and','83811843'),(3894,'ineffective','83811843'),(3895,'ruler','83811843'),(3896,'He','83811843'),(3897,'was','83811843'),(3898,'also','83811843'),(3899,'mean','83811843'),(3900,'a','83811843'),(3901,'drunk','83811843'),(3902,'and','83811843'),(3903,'wildly','83811843'),(3904,'unpopular','83811843'),(3905,'He','83811843'),(3906,'was','83811843'),(3907,'imprisoned','83811843'),(3908,'twice','83811843'),(3909,'during','83811843'),(3910,'his','83811843'),(3911,'reign','83811843'),(3912,'Had','83811843'),(3913,'times','83811843'),(3914,'been','83811843'),(3915,'different','83811843'),(3916,'this','83811843'),(3917,'may','83811843'),(3918,'not','83811843'),(3919,'have','83811843'),(3920,'mattered','83811843'),(3921,'much','83811843'),(3922,'As','83811843'),(3923,'luck','83811843'),(3924,'would','83811843'),(3925,'have','83811843'),(3926,'it','83811843'),(3927,'however','83811843'),(3928,'he','83811843'),(3929,'became','83811843'),(3930,'king','83811843'),(3931,'during','83811843'),(3932,'a','83811843'),(3933,'particularly','83811843'),(3934,'turbulent','83811843'),(3935,'time','83811843'),(3936,'in','83811843'),(3937,'Czech','83811843'),(3938,'history','83811843'),(3939,'\r\n\r\n','83811843'),(3940,'Unfortunately','83811843'),(3941,'Wenceslas','83811843'),(3942,'IV','83811843'),(3943,'was','83811843'),(3944,'much','83811843'),(3945,'more','83811843'),(3946,'interested','83811843'),(3947,'in','83811843'),(3948,'drinking','83811843'),(3949,'than','83811843'),(3950,'in','83811843'),(3951,'ruling','83811843'),(3952,'He','83811843'),(3953,'was','83811843'),(3954,'terribly','83811843'),(3955,'spoiled','83811843'),(3956,'and','83811843'),(3957,'even','83811843'),(3958,'as','83811843'),(3959,'an','83811843'),(3960,'adult','83811843'),(3961,'he','83811843'),(3962,'would','83811843'),(3963,'throw','83811843'),(3964,'fits','83811843'),(3965,'when','83811843'),(3966,'people','83811843'),(3967,'didnt','83811843'),(3968,'do','83811843'),(3969,'exactly','83811843'),(3970,'as','83811843'),(3971,'he','83811843'),(3972,'wished','83811843'),(3973,'them','83811843'),(3974,'to','83811843'),(3975,'He','83811843'),(3976,'is','83811843'),(3977,'remembered','83811843'),(3978,'by','83811843'),(3979,'history','83811843'),(3980,'today','83811843'),(3981,'in','83811843'),(3982,'two','83811843'),(3983,'ways:','83811843'),(3984,'sometimes','83811843'),(3985,'as','83811843'),(3986,'a','83811843'),(3987,'wishy','83811843'),(3988,'washy','83811843'),(3989,'goodfornothing','83811843'),(3990,'drunkard','83811843'),(3991,'and','83811843'),(3992,'sometimes','83811843'),(3993,'as','83811843'),(3994,'a','83811843'),(3995,'benefactor','83811843'),(3996,'of','83811843'),(3997,'the','83811843'),(3998,'common','83811843'),(3999,'man','83811843'),(4000,'The','83811843'),(4001,'way','83811843'),(4002,'in','83811843'),(4003,'which','83811843'),(4004,'this','83811843'),(4005,'latter','83811843'),(4006,'reputation','83811843'),(4007,'was','83811843'),(4008,'earned','83811843'),(4009,'is','83811843'),(4010,'usually','83811843'),(4011,'explained','83811843'),(4012,'in','83811843'),(4013,'this','83811843'),(4014,'way:','83811843'),(4015,'Wenceslas','83811843'),(4016,'IV','83811843'),(4017,'used','83811843'),(4018,'to','83811843'),(4019,'go','83811843'),(4020,'around','83811843'),(4021,'Prague','83811843'),(4022,'dressed','83811843'),(4023,'as','83811843'),(4024,'a','83811843'),(4025,'commoner','83811843'),(4026,'He','83811843'),(4027,'would','83811843'),(4028,'go','83811843'),(4029,'to','83811843'),(4030,'pubs','83811843'),(4031,'and','83811843'),(4032,'shops','83811843'),(4033,'this','83811843'),(4034,'way','83811843'),(4035,'and','83811843'),(4036,'whenever','83811843'),(4037,'he','83811843'),(4038,'found','83811843'),(4039,'a','83811843'),(4040,'merchant','83811843'),(4041,'giving','83811843'),(4042,'the','83811843'),(4043,'public','83811843'),(4044,'short','83811843'),(4045,'measures','83811843'),(4046,'he','83811843'),(4047,'would','83811843'),(4048,'punish','83811843'),(4049,'them','83811843'),(4050,'by','83811843'),(4051,'having','83811843'),(4052,'them','83811843'),(4053,'thrown','83811843'),(4054,'off','83811843'),(4055,'Charles','83811843'),(4056,'Bridge','83811843'),(4057,'into','83811843'),(4058,'the','83811843'),(4059,'river','83811843'),(4060,'to','83811843'),(4061,'drown','83811843'),(4062,'If','83811843'),(4063,'this','83811843'),(4064,'legend','83811843'),(4065,'is','83811843'),(4066,'based','83811843'),(4067,'on','83811843'),(4068,'fact','83811843'),(4069,'then','83811843'),(4070,'it','83811843'),(4071,'is','83811843'),(4072,'probably','83811843'),(4073,'likely','83811843'),(4074,'that','83811843'),(4075,'Wenceslas','83811843'),(4076,'IV','83811843'),(4077,'pursued','83811843'),(4078,'this','83811843'),(4079,'hobby','83811843'),(4080,'not','83811843'),(4081,'so','83811843'),(4082,'much','83811843'),(4083,'to','83811843'),(4084,'help','83811843'),(4085,'the','83811843'),(4086,'common','83811843'),(4087,'man','83811843'),(4088,'but','83811843'),(4089,'rather','83811843'),(4090,'from','83811843'),(4091,'the','83811843'),(4092,'pleasure','83811843'),(4093,'he','83811843'),(4094,'derived','83811843'),(4095,'from','83811843'),(4096,'having','83811843'),(4097,'people','83811843'),(4098,'thrown','83811843'),(4099,'into','83811843'),(4100,'the','83811843'),(4101,'river','83811843'),(4102,'\r\n\r\n','83811843'),(4103,'\r\n\r\nProbably','83811843'),(4104,'the','83811843'),(4105,'most','83811843'),(4106,'famous','83811843'),(4107,'person','83811843'),(4108,'Wenceslas','83811843'),(4109,'IV','83811843'),(4110,'had','83811843'),(4111,'thrown','83811843'),(4112,'into','83811843'),(4113,'the','83811843'),(4114,'river','83811843'),(4115,'was','83811843'),(4116,'an','83811843'),(4117,'insignificant','83811843'),(4118,'court','83811843'),(4119,'clerk','83811843'),(4120,'by','83811843'),(4121,'name','83811843'),(4122,'of','83811843'),(4123,'John','83811843'),(4124,'of','83811843'),(4125,'Pomuk','83811843'),(4126,'During','83811843'),(4127,'the','83811843'),(4128,'CounterReformation','83811843'),(4129,'the','83811843'),(4130,'Catholic','83811843'),(4131,'Church','83811843'),(4132,'recovered','83811843'),(4133,'the','83811843'),(4134,'story','83811843'),(4135,'of','83811843'),(4136,'John','83811843'),(4137,'of','83811843'),(4138,'Pomuks','83811843'),(4139,'death','83811843'),(4140,'and','83811843'),(4141,'entirely','83811843'),(4142,'overhauled','83811843'),(4143,'it','83811843'),(4144,'','83811843'),(4145,'making','83811843'),(4146,'Johns','83811843'),(4147,'name','83811843'),(4148,'John','83811843'),(4149,'of','83811843'),(4150,'Nepomuk','83811843'),(4151,'making','83811843'),(4152,'his','83811843'),(4153,'job','83811843'),(4154,'the','83811843'),(4155,'confessor','83811843'),(4156,'to','83811843'),(4157,'the','83811843'),(4158,'Queen','83811843'),(4159,'instead','83811843'),(4160,'of','83811843'),(4161,'an','83811843'),(4162,'office','83811843'),(4163,'clerk','83811843'),(4164,'and','83811843'),(4165,'making','83811843'),(4166,'the','83811843'),(4167,'reason','83811843'),(4168,'for','83811843'),(4169,'his','83811843'),(4170,'execution','83811843'),(4171,'the','83811843'),(4172,'fact','83811843'),(4173,'that','83811843'),(4174,'John','83811843'),(4175,'refused','83811843'),(4176,'to','83811843'),(4177,'divulge','83811843'),(4178,'the','83811843'),(4179,'Queens','83811843'),(4180,'secrets','83811843'),(4181,'','83811843'),(4182,'told','83811843'),(4183,'in','83811843'),(4184,'Confession','83811843'),(4185,'','83811843'),(4186,'to','83811843'),(4187,'the','83811843'),(4188,'king','83811843'),(4189,'John','83811843'),(4190,'of','83811843'),(4191,'Nepumuk','83811843'),(4192,'was','83811843'),(4193,'eventually','83811843'),(4194,'made','83811843'),(4195,'a','83811843'),(4196,'saint','83811843'),(4197,'on','83811843'),(4198,'the','83811843'),(4199,'basis','83811843'),(4200,'of','83811843'),(4201,'this','83811843'),(4202,'story','83811843'),(4203,'but','83811843'),(4204,'the','83811843'),(4205,'Vatican','83811843'),(4206,'rescinded','83811843'),(4207,'the','83811843'),(4208,'decision','83811843'),(4209,'in','83811843'),(4210,'1961','83811843'),(4211,'explaining','83811843'),(4212,'that','83811843'),(4213,'testimony','83811843'),(4214,'of','83811843'),(4215,'his','83811843'),(4216,'miracles','83811843'),(4217,'and','83811843'),(4218,'other','83811843'),(4219,'evidence','83811843'),(4220,'of','83811843'),(4221,'his','83811843'),(4222,'deeds','83811843'),(4223,'was','83811843'),(4224,'fishy','83811843'),(4225,'','83811843'),(4226,'\r\n\r\nIts','83811843'),(4227,'hard','83811843'),(4228,'to','83811843'),(4229,'say','83811843'),(4230,'what','83811843'),(4231,'the','83811843'),(4232,'common','83811843'),(4233,'people','83811843'),(4234,'of','83811843'),(4235,'the','83811843'),(4236,'time','83811843'),(4237,'really','83811843'),(4238,'thought','83811843'),(4239,'of','83811843'),(4240,'Wenceslas','83811843'),(4241,'IV','83811843'),(4242,'as','83811843'),(4243,'common','83811843'),(4244,'people','83811843'),(4245,'dont','83811843'),(4246,'usually','83811843'),(4247,'have','83811843'),(4248,'much','83811843'),(4249,'of','83811843'),(4250,'a','83811843'),(4251,'say','83811843'),(4252,'in','83811843'),(4253,'the','83811843'),(4254,'writing','83811843'),(4255,'of','83811843'),(4256,'history','83811843'),(4257,'It','83811843'),(4258,'is','83811843'),(4259,'known','83811843'),(4260,'that','83811843'),(4261,'he','83811843'),(4262,'was','83811843'),(4263,'wildly','83811843'),(4264,'unpopular','83811843'),(4265,'with','83811843'),(4266,'the','83811843'),(4267,'nobility','83811843'),(4268,'who','83811843'),(4269,'had','83811843'),(4270,'him','83811843'),(4271,'imprisoned','83811843'),(4272,'not','83811843'),(4273,'once','83811843'),(4274,'but','83811843'),(4275,'several','83811843'),(4276,'times','83811843'),(4277,'during','83811843'),(4278,'his','83811843'),(4279,'reign','83811843'),(4280,'\r\n\r\nHe','83811843'),(4281,'wasnt','83811843'),(4282,'exactly','83811843'),(4283,'revered','83811843'),(4284,'by','83811843'),(4285,'his','83811843'),(4286,'brother','83811843'),(4287,'Sigismund','83811843'),(4288,'either','83811843'),(4289,'Even','83811843'),(4290,'as','83811843'),(4291,'the','83811843'),(4292,'careless','83811843'),(4293,'blood','83811843'),(4294,'of','83811843'),(4295,'his','83811843'),(4296,'grandfather','83811843'),(4297,'John','83811843'),(4298,'of','83811843'),(4299,'Luxembourg','83811843'),(4300,'coursed','83811843'),(4301,'through','83811843'),(4302,'Vaclav','83811843'),(4303,'IVs','83811843'),(4304,'veins','83811843'),(4305,'','83811843'),(4306,'so','83811843'),(4307,'did','83811843'),(4308,'the','83811843'),(4309,'powerhungry','83811843'),(4310,'blood','83811843'),(4311,'of','83811843'),(4312,'the','83811843'),(4313,'early','83811843'),(4314,'Przemyslide','83811843'),(4315,'rulers','83811843'),(4316,'flow','83811843'),(4317,'freely','83811843'),(4318,'through','83811843'),(4319,'the','83811843'),(4320,'arteries','83811843'),(4321,'of','83811843'),(4322,'Sigismund','83811843'),(4323,'In','83811843'),(4324,'short','83811843'),(4325,'he','83811843'),(4326,'wanted','83811843'),(4327,'to','83811843'),(4328,'be','83811843'),(4329,'king','83811843'),(4330,'and','83811843'),(4331,'it','83811843'),(4332,'was','83811843'),(4333,'he','83811843'),(4334,'who','83811843'),(4335,'was','83811843'),(4336,'behind','83811843'),(4337,'at','83811843'),(4338,'least','83811843'),(4339,'one','83811843'),(4340,'of','83811843'),(4341,'the','83811843'),(4342,'conspiracies','83811843'),(4343,'to','83811843'),(4344,'imprison','83811843'),(4345,'King','83811843'),(4346,'Vaclav','83811843'),(4347,'IV','83811843'),(4348,'','83811843'),(4349,'\r\n\r\nWhile','83811843'),(4350,'this','83811843'),(4351,'court','83811843'),(4352,'intrigue','83811843'),(4353,'was','83811843'),(4354,'going','83811843'),(4355,'on','83811843'),(4356,'things','83811843'),(4357,'couldnt','83811843'),(4358,'really','83811843'),(4359,'have','83811843'),(4360,'been','83811843'),(4361,'all','83811843'),(4362,'that','83811843'),(4363,'good','83811843'),(4364,'for','83811843'),(4365,'the','83811843'),(4366,'common','83811843'),(4367,'man','83811843'),(4368,'else','83811843'),(4369,'hed','83811843'),(4370,'not','83811843'),(4371,'have','83811843'),(4372,'been','83811843'),(4373,'spending','83811843'),(4374,'much','83811843'),(4375,'of','83811843'),(4376,'his','83811843'),(4377,'leisure','83811843'),(4378,'time','83811843'),(4379,'listening','83811843'),(4380,'to','83811843'),(4381,'the','83811843'),(4382,'rabblerousing','83811843'),(4383,'preachers','83811843'),(4384,'who','83811843'),(4385,'started','83811843'),(4386,'travelling','83811843'),(4387,'around','83811843'),(4388,'the','83811843'),(4389,'country','83811843'),(4390,'at','83811843'),(4391,'this','83811843'),(4392,'time','83811843'),(4393,'full','83811843'),(4394,'of','83811843'),(4395,'criticism','83811843'),(4396,'for','83811843'),(4397,'the','83811843'),(4398,'excesses','83811843'),(4399,'of','83811843'),(4400,'the','83811843'),(4401,'Catholic','83811843'),(4402,'Church','83811843'),(4403,'\r\n\r\nOne','83811843'),(4404,'such','83811843'),(4405,'religious','83811843'),(4406,'reformer','83811843'),(4407,'was','83811843'),(4408,'to','83811843'),(4409,'play','83811843'),(4410,'a','83811843'),(4411,'pivotal','83811843'),(4412,'though','83811843'),(4413,'posthumous','83811843'),(4414,'role','83811843'),(4415,'in','83811843'),(4416,'deciding','83811843'),(4417,'the','83811843'),(4418,'countrys','83811843'),(4419,'fate','83811843'),(4420,'for','83811843'),(4421,'the','83811843'),(4422,'next','83811843'),(4423,'several','83811843'),(4424,'hundred','83811843'),(4425,'years','83811843'),(4426,'\r\n\r\nJan','83811843'),(4427,'Hus','83811843'),(4428,'had','83811843'),(4429,'been','83811843'),(4430,'greatly','83811843'),(4431,'influenced','83811843'),(4432,'by','83811843'),(4433,'the','83811843'),(4434,'writings','83811843'),(4435,'of','83811843'),(4436,'John','83811843'),(4437,'Wycliffe','83811843'),(4438,'and','83811843'),(4439,'he','83811843'),(4440,'began','83811843'),(4441,'conducting','83811843'),(4442,'his','83811843'),(4443,'sermons','83811843'),(4444,'at','83811843'),(4445,'Bethlehem','83811843'),(4446,'Chapel','83811843'),(4447,'in','83811843'),(4448,'Prague','83811843'),(4449,'in','83811843'),(4450,'Czech','83811843'),(4451,'rather','83811843'),(4452,'than','83811843'),(4453,'in','83811843'),(4454,'Latin','83811843'),(4455,'so','83811843'),(4456,'that','83811843'),(4457,'the','83811843'),(4458,'common','83811843'),(4459,'man','83811843'),(4460,'could','83811843'),(4461,'understand','83811843'),(4462,'them','83811843'),(4463,'He','83811843'),(4464,'also','83811843'),(4465,'advocated','83811843'),(4466,'the','83811843'),(4467,'giving','83811843'),(4468,'of','83811843'),(4469,'communion','83811843'),(4470,'in','83811843'),(4471,'both','83811843'),(4472,'species','83811843'),(4473,'and','83811843'),(4474,'was','83811843'),(4475,'critical','83811843'),(4476,'of','83811843'),(4477,'the','83811843'),(4478,'church','83811843'),(4479,'for','83811843'),(4480,'its','83811843'),(4481,'excessive','83811843'),(4482,'policies','83811843'),(4483,'','83811843'),(4484,'of','83811843'),(4485,'amassing','83811843'),(4486,'wealth','83811843'),(4487,'selling','83811843'),(4488,'indulgences','83811843'),(4489,'and','83811843'),(4490,'allowing','83811843'),(4491,'the','83811843'),(4492,'rich','83811843'),(4493,'to','83811843'),(4494,'tithe','83811843'),(4495,'their','83811843'),(4496,'way','83811843'),(4497,'out','83811843'),(4498,'of','83811843'),(4499,'even','83811843'),(4500,'mortal','83811843'),(4501,'sins','83811843'),(4502,'\r\n\r\nEven','83811843'),(4503,'as','83811843'),(4504,'these','83811843'),(4505,'ideas','83811843'),(4506,'were','83811843'),(4507,'gaining','83811843'),(4508,'popularity','83811843'),(4509,'in','83811843'),(4510,'the','83811843'),(4511,'Czech','83811843'),(4512,'lands','83811843'),(4513,'they','83811843'),(4514,'were','83811843'),(4515,'becoming','83811843'),(4516,'most','83811843'),(4517,'wildly','83811843'),(4518,'unpopular','83811843'),(4519,'in','83811843'),(4520,'other','83811843'),(4521,'areas','83811843'),(4522,'of','83811843'),(4523,'the','83811843'),(4524,'Holy','83811843'),(4525,'Roman','83811843'),(4526,'Empire','83811843'),(4527,'especially','83811843'),(4528,'the','83811843'),(4529,'Vatican','83811843'),(4530,'This','83811843'),(4531,'led','83811843'),(4532,'to','83811843'),(4533,'the','83811843'),(4534,'burning','83811843'),(4535,'of','83811843'),(4536,'Master','83811843'),(4537,'Jan','83811843'),(4538,'Hus','83811843'),(4539,'at','83811843'),(4540,'the','83811843'),(4541,'stake','83811843'),(4542,'at','83811843'),(4543,'the','83811843'),(4544,'Council','83811843'),(4545,'at','83811843'),(4546,'Constance','83811843'),(4547,'on','83811843'),(4548,'July','83811843'),(4549,'6','83811843'),(4550,'1415','83811843'),(4551,'when','83811843'),(4552,'he','83811843'),(4553,'refused','83811843'),(4554,'to','83811843'),(4555,'recant','83811843'),(4556,'his','83811843'),(4557,'words','83811843'),(4558,'and','83811843'),(4559,'despite','83811843'),(4560,'that','83811843'),(4561,'he','83811843'),(4562,'had','83811843'),(4563,'letter','83811843'),(4564,'of','83811843'),(4565,'safe','83811843'),(4566,'conduct','83811843'),(4567,'from','83811843'),(4568,'Wenceslas','83811843'),(4569,'IVs','83811843'),(4570,'brother','83811843'),(4571,'Sigismund','83811843'),(4572,'\r\n\r\nThe','83811843'),(4573,'brutal','83811843'),(4574,'killing','83811843'),(4575,'of','83811843'),(4576,'Jan','83811843'),(4577,'Hus','83811843'),(4578,'only','83811843'),(4579,'served','83811843'),(4580,'to','83811843'),(4581,'incense','83811843'),(4582,'and','83811843'),(4583,'unite','83811843'),(4584,'his','83811843'),(4585,'followers','83811843'),(4586,'who','83811843'),(4587,'came','83811843'),(4588,'to','83811843'),(4589,'be','83811843'),(4590,'known','83811843'),(4591,'as','83811843'),(4592,'the','83811843'),(4593,'Hussites','83811843'),(4594,'\r\n\r\n','83811843'),(4595,'The','83811843'),(4596,'Hussites','83811843'),(4597,'were','83811843'),(4598,'highly','83811843'),(4599,'critical','83811843'),(4600,'of','83811843'),(4601,'the','83811843'),(4602,'abuses','83811843'),(4603,'of','83811843'),(4604,'the','83811843'),(4605,'Roman','83811843'),(4606,'Catholic','83811843'),(4607,'Church','83811843'),(4608,'and','83811843'),(4609,'in','83811843'),(4610,'the','83811843'),(4611,'Four','83811843'),(4612,'Articles','83811843'),(4613,'of','83811843'),(4614,'Prague','83811843'),(4615,'they','83811843'),(4616,'demanded','83811843'),(4617,'that','83811843'),(4618,'1','83811843'),(4619,'all','83811843'),(4620,'believers','83811843'),(4621,'be','83811843'),(4622,'permitted','83811843'),(4623,'to','83811843'),(4624,'receive','83811843'),(4625,'Communion','83811843'),(4626,'in','83811843'),(4627,'both','83811843'),(4628,'species;','83811843'),(4629,'2','83811843'),(4630,'all','83811843'),(4631,'mortal','83811843'),(4632,'and','83811843'),(4633,'public','83811843'),(4634,'sins','83811843'),(4635,'be','83811843'),(4636,'punished','83811843'),(4637,'equally','83811843'),(4638,'regardless','83811843'),(4639,'of','83811843'),(4640,'the','83811843'),(4641,'sinners','83811843'),(4642,'status','83811843'),(4643,'3','83811843'),(4644,'the','83811843'),(4645,'Word','83811843'),(4646,'of','83811843'),(4647,'God','83811843'),(4648,'be','83811843'),(4649,'freely','83811843'),(4650,'preached;','83811843'),(4651,'and','83811843'),(4652,'4','83811843'),(4653,'the','83811843'),(4654,'clergy','83811843'),(4655,'give','83811843'),(4656,'up','83811843'),(4657,'their','83811843'),(4658,'worldly','83811843'),(4659,'wealth','83811843'),(4660,'\r\n\r\nThis','83811843'),(4661,'situation','83811843'),(4662,'culminated','83811843'),(4663,'in','83811843'),(4664,'1419','83811843'),(4665,'with','83811843'),(4666,'the','83811843'),(4667,'First','83811843'),(4668,'Defenestration','83811843'),(4669,'of','83811843'),(4670,'Prague','83811843'),(4671,'in','83811843'),(4672,'which','83811843'),(4673,'Hussites','83811843'),(4674,'threw','83811843'),(4675,'7','83811843'),(4676,'members','83811843'),(4677,'of','83811843'),(4678,'the','83811843'),(4679,'Czech','83811843'),(4680,'Town','83811843'),(4681,'Council','83811843'),(4682,'out','83811843'),(4683,'of','83811843'),(4684,'Pragues','83811843'),(4685,'New','83811843'),(4686,'Town','83811843'),(4687,'Hall','83811843'),(4688,'window','83811843'),(4689,'','83811843'),(4690,'and','83811843'),(4691,'to','83811843'),(4692,'their','83811843'),(4693,'deaths','83811843'),(4694,'on','83811843'),(4695,'the','83811843'),(4696,'points','83811843'),(4697,'of','83811843'),(4698,'Hussiteweilded','83811843'),(4699,'pikes','83811843'),(4700,'below','83811843'),(4701,'','83811843'),(4702,'To','83811843'),(4703,'make','83811843'),(4704,'the','83811843'),(4705,'situation','83811843'),(4706,'more','83811843'),(4707,'interesting','83811843'),(4708,'King','83811843'),(4709,'Wenceslas','83811843'),(4710,'IV','83811843'),(4711,'had','83811843'),(4713,'apopleptic','83811843'),(4714,'fit','83811843'),(4715,'and','83811843'),(4716,'died','83811843'),(4717,'of','83811843'),(4718,'a','83811843'),(4719,'heart','83811843'),(4720,'attack','83811843'),(4721,'upon','83811843'),(4722,'learning','83811843'),(4723,'of','83811843'),(4724,'the','83811843'),(4725,'defenestration','83811843'),(4726,'\r\n\r\nBut','83811843'),(4727,'even','83811843'),(4728,'after','83811843'),(4729,'the','83811843'),(4730,'death','83811843'),(4731,'of','83811843'),(4732,'his','83811843'),(4733,'brother','83811843'),(4734,'Wenceslas','83811843'),(4735,'IV','83811843'),(4736,'King','83811843'),(4737,'Sigismund','83811843'),(4738,'of','83811843'),(4739,'Luxembourg','83811843'),(4740,'who','83811843'),(4741,'also','83811843'),(4742,'inherited','83811843'),(4743,'the','83811843'),(4744,'title','83811843'),(4745,'of','83811843'),(4746,'Holy','83811843'),(4747,'Roman','83811843'),(4748,'Emperor','83811843'),(4749,'never','83811843'),(4750,'really','83811843'),(4751,'got','83811843'),(4752,'to','83811843'),(4753,'be','83811843'),(4754,'king','83811843'),(4755,'of','83811843'),(4756,'Bohemia','83811843'),(4757,'The','83811843'),(4758,'situation','83811843'),(4759,'with','83811843'),(4760,'the','83811843'),(4761,'Hussites','83811843'),(4762,'had','83811843'),(4763,'gone','83811843'),(4764,'too','83811843'),(4765,'far','83811843'),(4766,'and','83811843'),(4767,'he','83811843'),(4768,'spent','83811843'),(4769,'the','83811843'),(4770,'rest','83811843'),(4771,'of','83811843'),(4772,'his','83811843'),(4773,'life','83811843'),(4774,'fighting','83811843'),(4775,'them','83811843'),(4776,'in','83811843'),(4777,'the','83811843'),(4778,'hopes','83811843'),(4779,'of','83811843'),(4780,'taking','83811843'),(4781,'control','83811843'),(4782,'of','83811843'),(4783,'the','83811843'),(4784,'throne','83811843'),(4785,'hed','83811843'),(4786,'inherited','83811843'),(4787,'from','83811843'),(4788,'his','83811843'),(4789,'brother','83811843'),(4790,'When','83811843'),(4791,'his','83811843'),(4792,'initial','83811843'),(4793,'attempts','83811843'),(4794,'to','83811843'),(4795,'do','83811843'),(4796,'this','83811843'),(4797,'met','83811843'),(4798,'with','83811843'),(4799,'failure','83811843'),(4800,'he','83811843'),(4801,'beseeched','83811843'),(4802,'the','83811843'),(4803,'Pope','83811843'),(4804,'to','83811843'),(4805,'send','83811843'),(4806,'help','83811843'),(4807,'\r\n\r\nThe','83811843'),(4808,'mighty','83811843'),(4809,'Hussites','83811843'),(4810,'led','83811843'),(4811,'by','83811843'),(4812,'the','83811843'),(4813,'oneeyed','83811843'),(4814,'military','83811843'),(4815,'genius','83811843'),(4816,'Jan','83811843'),(4817,'Zizka','83811843'),(4818,'defeated','83811843'),(4819,'five','83811843'),(4820,'waves','83811843'),(4821,'of','83811843'),(4822,'crusaders','83811843'),(4823,'in','83811843'),(4824,'a','83811843'),(4825,'row:','83811843'),(4826,'in','83811843'),(4827,'1420','83811843'),(4828,'1421','83811843'),(4829,'1422','83811843'),(4830,'1427','83811843'),(4831,'and','83811843'),(4832,'in','83811843'),(4833,'1437','83811843'),(4834,'','83811843'),(4835,'\r\n\r\nActually','83811843'),(4836,'the','83811843'),(4837,'fifth','83811843'),(4838,'army','83811843'),(4839,'of','83811843'),(4840,'crusaders','83811843'),(4841,'sent','83811843'),(4842,'to','83811843'),(4843,'battle','83811843'),(4844,'the','83811843'),(4845,'Hussites','83811843'),(4846,'turned','83811843'),(4847,'tail','83811843'),(4848,'and','83811843'),(4849,'fled','83811843'),(4850,'before','83811843'),(4851,'even','83811843'),(4852,'catching','83811843'),(4853,'sight','83811843'),(4854,'of','83811843'),(4855,'the','83811843'),(4856,'famed','83811843'),(4857,'warriors','83811843'),(4858,'','83811843'),(4859,'because','83811843'),(4860,'they','83811843'),(4861,'were','83811843'),(4862,'so','83811843'),(4863,'terrified','83811843'),(4864,'at','83811843'),(4865,'hearing','83811843'),(4866,'the','83811843'),(4867,'refrain','83811843'),(4868,'of','83811843'),(4869,'the','83811843'),(4870,'terrible','83811843'),(4871,'Hussite','83811843'),(4872,'battle','83811843'),(4873,'song','83811843'),(4874,'Ye','83811843'),(4875,'Warriors','83811843'),(4876,'of','83811843'),(4877,'God','83811843'),(4878,'It','83811843'),(4879,'was','83811843'),(4880,'either','83811843'),(4881,'that','83811843'),(4882,'or','83811843'),(4883,'maybe','83811843'),(4884,'just','83811843'),(4885,'that','83811843'),(4886,'the','83811843'),(4887,'warriors','83811843'),(4888,'didnt','83811843'),(4889,'sing','83811843'),(4890,'very','83811843'),(4891,'well','83811843'),(4892,'\r\n\r\nWell','83811843'),(4893,'in','83811843'),(4894,'addition','83811843'),(4895,'to','83811843'),(4896,'fearinspiring','83811843'),(4897,'songs','83811843'),(4898,'and','83811843'),(4899,'the','83811843'),(4900,'other','83811843'),(4901,'tricks','83811843'),(4902,'the','83811843'),(4903,'Hussites','83811843'),(4904,'had','83811843'),(4905,'up','83811843'),(4906,'their','83811843'),(4907,'sleeves','83811843'),(4908,'they','83811843'),(4909,'also','83811843'),(4910,'had','83811843'),(4911,'the','83811843'),(4912,'thing','83811843'),(4913,'that','83811843'),(4914,'matters','83811843'),(4915,'most','83811843'),(4916,'','83811843'),(4917,'conviction','83811843'),(4918,'that','83811843'),(4919,'their','83811843'),(4920,'cause','83811843'),(4921,'was','83811843'),(4922,'the','83811843'),(4923,'Just','83811843'),(4924,'one','83811843'),(4925,'Their','83811843'),(4926,'symbol','83811843'),(4927,'was','83811843'),(4928,'the','83811843'),(4929,'chalice','83811843'),(4930,'and','83811843'),(4931,'their','83811843'),(4932,'motto','83811843'),(4933,'Truth','83811843'),(4934,'Prevails','83811843'),(4935,'this','83811843'),(4936,'motto','83811843'),(4937,'was','83811843'),(4938,'later','83811843'),(4939,'used','83811843'),(4940,'by','83811843'),(4941,'the','83811843'),(4942,'first','83811843'),(4943,'President','83811843'),(4944,'of','83811843'),(4945,'Czechoslovakia','83811843'),(4946,'Tomas','83811843'),(4947,'Garrigue','83811843'),(4948,'Masaryk','83811843'),(4949,'as','83811843'),(4950,'well','83811843'),(4951,'as','83811843'),(4952,'by','83811843'),(4953,'a','83811843'),(4954,'later','83811843'),(4955,'President','83811843'),(4956,'of','83811843'),(4957,'Czechoslovakia','83811843'),(4958,'Vaclav','83811843'),(4959,'Havel','83811843'),(4960,'','83811843'),(4961,'during','83811843'),(4962,'the','83811843'),(4963,'Velvet','83811843'),(4964,'Revolution','83811843'),(4965,'\r\n\r\nWell','83811843'),(4966,'despite','83811843'),(4967,'this','83811843'),(4968,'and','83811843'),(4969,'despite','83811843'),(4970,'their','83811843'),(4971,'brilliant','83811843'),(4972,'military','83811843'),(4973,'successes','83811843'),(4974,'all','83811843'),(4975,'was','83811843'),(4976,'not','83811843'),(4977,'well','83811843'),(4978,'within','83811843'),(4979,'the','83811843'),(4980,'Hussite','83811843'),(4981,'movement','83811843'),(4982,'itself','83811843'),(4983,'From','83811843'),(4984,'the','83811843'),(4985,'very','83811843'),(4986,'start','83811843'),(4987,'the','83811843'),(4988,'Hussite','83811843'),(4989,'movement','83811843'),(4990,'had','83811843'),(4991,'been','83811843'),(4992,'divided','83811843'),(4993,'into','83811843'),(4994,'factions','83811843'),(4995,'','83811843'),(4996,'the','83811843'),(4997,'most','83811843'),(4998,'prominent','83811843'),(4999,'division','83811843'),(5000,'was','83811843'),(5001,'along','83811843'),(5002,'economic','83811843'),(5003,'lines','83811843'),(5004,'\r\n\r\nA','83811843'),(5005,'number','83811843'),(5006,'of','83811843'),(5007,'peasant','83811843'),(5008,'Hussites','83811843'),(5009,'were','83811843'),(5010,'nothing','83811843'),(5011,'more','83811843'),(5012,'than','83811843'),(5013,'hooligans','83811843'),(5014,'at','83811843'),(5015,'best','83811843'),(5016,'','83811843'),(5017,'terrorists','83811843'),(5018,'at','83811843'),(5019,'worst','83811843'),(5020,'','83811843'),(5021,'who','83811843'),(5022,'joined','83811843'),(5023,'the','83811843'),(5024,'cause','83811843'),(5025,'only','83811843'),(5026,'so','83811843'),(5027,'that','83811843'),(5028,'they','83811843'),(5029,'could','83811843'),(5030,'have','83811843'),(5031,'a','83811843'),(5032,'good','83811843'),(5033,'excuse','83811843'),(5034,'to','83811843'),(5035,'go','83811843'),(5036,'around','83811843'),(5037,'robbing','83811843'),(5038,'churches','83811843'),(5039,'and','83811843'),(5040,'setting','83811843'),(5041,'them','83811843'),(5042,'aflame','83811843'),(5043,'with','83811843'),(5044,'Catholics','83811843'),(5045,'inside','83811843'),(5046,'These','83811843'),(5047,'practices','83811843'),(5048,'were','83811843'),(5049,'considered','83811843'),(5050,'to','83811843'),(5051,'be','83811843'),(5052,'rather','83811843'),(5053,'in','83811843'),(5054,'poor','83811843'),(5055,'taste','83811843'),(5056,'by','83811843'),(5057,'the','83811843'),(5058,'aristocratic','83811843'),(5059,'Hussites','83811843'),(5060,'Over','83811843'),(5061,'time','83811843'),(5062,'the','83811843'),(5063,'movement','83811843'),(5064,'splintered','83811843'),(5065,'even','83811843'),(5066,'more','83811843'),(5067,'','83811843'),(5068,'even','83811843'),(5069,'spawning','83811843'),(5070,'an','83811843'),(5071,'early','83811843'),(5072,'nudist','83811843'),(5073,'sect','83811843'),(5074,'the','83811843'),(5075,'Adamites','83811843'),(5076,'The','83811843'),(5077,'history','83811843'),(5078,'books','83811843'),(5079,'usually','83811843'),(5080,'divide','83811843'),(5081,'the','83811843'),(5082,'Hussites','83811843'),(5083,'into','83811843'),(5084,'radical','83811843'),(5085,'Taborites','83811843'),(5086,'','83811843'),(5087,'named','83811843'),(5088,'for','83811843'),(5089,'the','83811843'),(5090,'town','83811843'),(5091,'of','83811843'),(5092,'Tabor','83811843'),(5093,'a','83811843'),(5094,'city','83811843'),(5095,'the','83811843'),(5096,'Hussites','83811843'),(5097,'founded','83811843'),(5098,'for','83811843'),(5099,'the','83811843'),(5100,'occasion','83811843'),(5101,'of','83811843'),(5102,'the','83811843'),(5103,'Second','83811843'),(5104,'Coming','83811843'),(5105,'which','83811843'),(5106,'many','83811843'),(5107,'considered','83811843'),(5108,'imminent','83811843'),(5109,'','83811843'),(5110,'and','83811843'),(5111,'the','83811843'),(5112,'moderate','83811843'),(5113,'Utraquists','83811843'),(5114,'','83811843'),(5115,'derived','83811843'),(5116,'from','83811843'),(5117,'the','83811843'),(5118,'Latin','83811843'),(5119,'sub','83811843'),(5120,'utraque','83811843'),(5121,'specie','83811843'),(5122,'for','83811843'),(5123,'their','83811843'),(5124,'belief','83811843'),(5125,'that','83811843'),(5126,'communion','83811843'),(5127,'should','83811843'),(5128,'be','83811843'),(5129,'given','83811843'),(5130,'in','83811843'),(5131,'both','83811843'),(5132,'kinds','83811843'),(5133,'','83811843'),(5134,'made','83811843'),(5135,'up','83811843'),(5136,'mostly','83811843'),(5137,'of','83811843'),(5138,'the','83811843'),(5139,'nobility','83811843'),(5140,'In','83811843'),(5141,'reality','83811843'),(5142,'though','83811843'),(5143,'the','83811843'),(5144,'situation','83811843'),(5145,'on','83811843'),(5146,'the','83811843'),(5147,'ground','83811843'),(5148,'just','83811843'),(5149,'was','83811843'),(5150,'not','83811843'),(5151,'that','83811843'),(5152,'simple','83811843'),(5153,'\r\n\r\nThis','83811843'),(5154,'infighting','83811843'),(5155,'came','83811843'),(5156,'to','83811843'),(5157,'a','83811843'),(5158,'head','83811843'),(5159,'at','83811843'),(5160,'the','83811843'),(5161,'Battle','83811843'),(5162,'of','83811843'),(5163,'Lipany','83811843'),(5164,'on','83811843'),(5165,'May','83811843'),(5166,'30','83811843'),(5167,'1434','83811843'),(5168,'at','83811843'),(5169,'which','83811843'),(5170,'the','83811843'),(5171,'Czech','83811843'),(5172,'Hussite','83811843'),(5173,'factions','83811843'),(5174,'fought','83811843'),(5175,'among','83811843'),(5176,'themselves','83811843'),(5177,'This','83811843'),(5178,'battle','83811843'),(5179,'is','83811843'),(5180,'considered','83811843'),(5181,'by','83811843'),(5182,'some','83811843'),(5183,'to','83811843'),(5184,'be','83811843'),(5185,'the','83811843'),(5186,'single','83811843'),(5187,'most','83811843'),(5188,'tragic','83811843'),(5189,'event','83811843'),(5190,'in','83811843'),(5191,'all','83811843'),(5192,'of','83811843'),(5193,'Czech','83811843'),(5194,'history','83811843'),(5195,'\r\n\r\nWell','83811843'),(5196,'the','83811843'),(5197,'victory','83811843'),(5198,'at','83811843'),(5199,'the','83811843'),(5200,'Battle','83811843'),(5201,'of','83811843'),(5202,'Lipany','83811843'),(5203,'went','83811843'),(5204,'to','83811843'),(5205,'the','83811843'),(5206,'moderates','83811843'),(5207,'and','83811843'),(5208,'this','83811843'),(5209,'paved','83811843'),(5210,'the','83811843'),(5211,'way','83811843'),(5212,'for','83811843'),(5213,'an','83811843'),(5214,'agreement','83811843'),(5215,'to','83811843'),(5216,'be','83811843'),(5217,'reached','83811843'),(5218,'between','83811843'),(5219,'the','83811843'),(5220,'Utraquist','83811843'),(5221,'Hussites','83811843'),(5222,'of','83811843'),(5223,'Bohemia','83811843'),(5224,'and','83811843'),(5225,'the','83811843'),(5226,'Roman','83811843'),(5227,'Catholic','83811843'),(5228,'Church','83811843'),(5229,'\r\n\r\nThe','83811843'),(5230,'Basel','83811843'),(5231,'Compact','83811843'),(5232,'ceremoniously','83811843'),(5233,'announced','83811843'),(5234,'in','83811843'),(5235,'1436','83811843'),(5236,'permitted','83811843'),(5237,'the','83811843'),(5238,'Utraquist','83811843'),(5239,'Hussites','83811843'),(5240,'to','83811843'),(5241,'take','83811843'),(5242,'Communion','83811843'),(5243,'in','83811843'),(5244,'both','83811843'),(5245,'kinds','83811843'),(5246,'to','83811843'),(5247,'have','83811843'),(5248,'their','83811843'),(5249,'church','83811843'),(5250,'services','83811843'),(5251,'conducted','83811843'),(5252,'in','83811843'),(5253,'the','83811843'),(5254,'Czech','83811843'),(5255,'language','83811843'),(5256,'and','83811843'),(5257,'absolved','83811843'),(5258,'them','83811843'),(5259,'of','83811843'),(5260,'having','83811843'),(5261,'to','83811843'),(5262,'pay','83811843'),(5263,'dues','83811843'),(5264,'to','83811843'),(5265,'Rome','83811843'),(5266,'The','83811843'),(5267,'Pope','83811843'),(5268,'later','83811843'),(5269,'refused','83811843'),(5270,'to','83811843'),(5271,'recognize','83811843'),(5272,'the','83811843'),(5273,'agreement','83811843'),(5274,'but','83811843'),(5275,'not','83811843'),(5276,'before','83811843'),(5277,'it','83811843'),(5278,'had','83811843'),(5279,'served','83811843'),(5280,'to','83811843'),(5281,'bring','83811843'),(5282,'an','83811843'),(5283,'end','83811843'),(5284,'to','83811843'),(5285,'the','83811843'),(5286,'costly','83811843'),(5287,'Hussite','83811843'),(5288,'wars','83811843'),(5289,'\r\n\r\nThe','83811843'),(5290,'extremist','83811843'),(5291,'Taborite','83811843'),(5292,'Hussites','83811843'),(5293,'were','83811843'),(5294,'not','83811843'),(5295,'a','83811843'),(5296,'party','83811843'),(5297,'to','83811843'),(5298,'this','83811843'),(5299,'agreement','83811843'),(5300,'and','83811843'),(5301,'refused','83811843'),(5302,'to','83811843'),(5303,'accept','83811843'),(5304,'it','83811843'),(5305,'While','83811843'),(5306,'the','83811843'),(5307,'moderates','83811843'),(5308,'stayed','83811843'),(5309,'in','83811843'),(5310,'the','83811843'),(5311,'Catholic','83811843'),(5312,'Church','83811843'),(5313,'the','83811843'),(5314,'extremists','83811843'),(5315,'went','83811843'),(5316,'underground','83811843'),(5317,'forming','83811843'),(5318,'their','83811843'),(5319,'own','83811843'),(5320,'church','83811843'),(5321,'ordaining','83811843'),(5322,'their','83811843'),(5323,'own','83811843'),(5324,'bishops','83811843'),(5325,'pioneering','83811843'),(5326,'public','83811843'),(5327,'education','83811843'),(5328,'sending','83811843'),(5329,'out','83811843'),(5330,'missionaries','83811843'),(5331,'even','83811843'),(5332,'to','83811843'),(5333,'the','83811843'),(5334,'13','83811843'),(5335,'original','83811843'),(5336,'American','83811843'),(5337,'colonies','83811843'),(5338,'and','83811843'),(5339,'secretly','83811843'),(5340,'printing','83811843'),(5341,'Czechlanguage','83811843'),(5342,'copies','83811843'),(5343,'of','83811843'),(5344,'the','83811843'),(5345,'Kralice','83811843'),(5346,'Bible','83811843'),(5347,'','83811843'),(5348,'named','83811843'),(5349,'for','83811843'),(5350,'the','83811843'),(5351,'town','83811843'),(5352,'of','83811843'),(5353,'Kralice','83811843'),(5354,'in','83811843'),(5355,'which','83811843'),(5356,'it','83811843'),(5357,'was','83811843'),(5358,'printed','83811843'),(5359,'This','83811843'),(5360,'translation','83811843'),(5361,'is','83811843'),(5362,'still','83811843'),(5363,'in','83811843'),(5364,'use','83811843'),(5365,'in','83811843'),(5366,'the','83811843'),(5367,'Czech','83811843'),(5368,'lands','83811843'),(5369,'today','83811843'),(5370,'despite','83811843'),(5371,'that','83811843'),(5372,'it','83811843'),(5373,'is','83811843'),(5374,'often','83811843'),(5375,'hard','83811843'),(5376,'for','83811843'),(5377,'modern','83811843'),(5378,'speakers','83811843'),(5379,'of','83811843'),(5380,'the','83811843'),(5381,'language','83811843'),(5382,'to','83811843'),(5383,'understand','83811843'),(5384,'\r\n\r\nSlovakia','83811843'),(5385,'all','83811843'),(5386,'this','83811843'),(5387,'while','83811843'),(5388,'was','83811843'),(5389,'known','83811843'),(5390,'simply','83811843'),(5391,'as','83811843'),(5392,'Upper','83811843'),(5393,'Hungary','83811843'),(5394,'Though','83811843'),(5395,'the','83811843'),(5396,'Czechs','83811843'),(5397,'and','83811843'),(5398,'the','83811843'),(5399,'Slovaks','83811843'),(5400,'had','83811843'),(5401,'been','83811843'),(5402,'nextdoor','83811843'),(5403,'neighbors','83811843'),(5404,'since','83811843'),(5405,'the','83811843'),(5406,'time','83811843'),(5407,'that','83811843'),(5408,'Ancestor','83811843'),(5409,'Cech','83811843'),(5410,'and','83811843'),(5411,'his','83811843'),(5412,'brothers','83811843'),(5413,'had','83811843'),(5414,'come','83811843'),(5415,'to','83811843'),(5416,'the','83811843'),(5417,'area','83811843'),(5418,'they','83811843'),(5419,'have','83811843'),(5420,'historically','83811843'),(5421,'had','83811843'),(5422,'very','83811843'),(5423,'little','83811843'),(5424,'in','83811843'),(5425,'common','83811843'),(5426,'until','83811843'),(5427,'1918','83811843'),(5428,'Similarly','83811843'),(5429,'neither','83811843'),(5430,'country','83811843'),(5431,'has','83811843'),(5432,'historically','83811843'),(5433,'ever','83811843'),(5434,'had','83811843'),(5435,'much','83811843'),(5436,'to','83811843'),(5437,'do','83811843'),(5438,'with','83811843'),(5439,'Poland','83811843'),(5440,'which','83811843'),(5441,'borders','83811843'),(5442,'both','83811843'),(5443,'to','83811843'),(5444,'the','83811843'),(5445,'north','83811843'),(5446,'It','83811843'),(5447,'is','83811843'),(5448,'at','83811843'),(5449,'this','83811843'),(5450,'point','83811843'),(5451,'in','83811843'),(5452,'history','83811843'),(5453,'','83811843'),(5454,'beginning','83811843'),(5455,'in','83811843'),(5456,'the','83811843'),(5457,'14th','83811843'),(5458,'century','83811843'),(5459,'however','83811843'),(5460,'closer','83811843'),(5461,'cultural','83811843'),(5462,'contacts','83811843'),(5463,'between','83811843'),(5464,'Slovakia','83811843'),(5465,'and','83811843'),(5466,'Bohemia','83811843'),(5467,'were','83811843'),(5468,'formed','83811843'),(5469,'Especially','83811843'),(5470,'during','83811843'),(5471,'the','83811843'),(5472,'turbulent','83811843'),(5473,'Hussite','83811843'),(5474,'period','83811843'),(5475,'of','83811843'),(5476,'the','83811843'),(5477,'15th','83811843'),(5478,'century','83811843'),(5479,'many','83811843'),(5480,'Hussite','83811843'),(5481,'followers','83811843'),(5482,'found','83811843'),(5483,'refuge','83811843'),(5484,'and','83811843'),(5485,'support','83811843'),(5486,'in','83811843'),(5487,'the','83811843'),(5488,'Slovak','83811843'),(5489,'lands','83811843'),(5490,'and','83811843'),(5491,'some','83811843'),(5492,'of','83811843'),(5493,'the','83811843'),(5494,'Slovak','83811843'),(5495,'nobility','83811843'),(5496,'fought','83811843'),(5497,'on','83811843'),(5498,'the','83811843'),(5500,'of','83811843'),(5501,'the','83811843'),(5502,'Hussites','83811843'),(5503,'\r\n','83811843'),(5504,'\r\n\r\nAfter','83811843'),(5505,'the','83811843'),(5506,'Compact','83811843'),(5507,'of','83811843'),(5508,'Basel','83811843'),(5509,'forced','83811843'),(5510,'King','83811843'),(5511,'Sigismund','83811843'),(5512,'of','83811843'),(5513,'Luxembourg','83811843'),(5514,'to','83811843'),(5515,'concede','83811843'),(5516,'to','83811843'),(5517,'the','83811843'),(5518,'Hussites','83811843'),(5519,'demands','83811843'),(5520,'the','83811843'),(5521,'position','83811843'),(5522,'of','83811843'),(5523,'the','83811843'),(5524,'regional','83811843'),(5525,'nobility','83811843'),(5526,'and','83811843'),(5527,'of','83811843'),(5528,'the','83811843'),(5529,'towns','83811843'),(5530,'a','83811843'),(5531,'grouping','83811843'),(5532,'known','83811843'),(5533,'as','83811843'),(5534,'the','83811843'),(5535,'Estates','83811843'),(5536,'was','83811843'),(5537,'strengthened','83811843'),(5538,'to','83811843'),(5539,'the','83811843'),(5540,'detriment','83811843'),(5541,'of','83811843'),(5542,'the','83811843'),(5543,'centralized','83811843'),(5544,'royal','83811843'),(5545,'authority','83811843'),(5546,'For','83811843'),(5547,'some','83811843'),(5548,'time','83811843'),(5549,'after','83811843'),(5550,'Sigismunds','83811843'),(5551,'death','83811843'),(5552,'in','83811843'),(5553,'1437','83811843'),(5554,'anarchy','83811843'),(5555,'reigned','83811843'),(5556,'in','83811843'),(5557,'Bohemia','83811843'),(5558,'\r\n\r\nThen','83811843'),(5559,'after','83811843'),(5560,'the','83811843'),(5561,'very','83811843'),(5562,'brief','83811843'),(5563,'rule','83811843'),(5564,'of','83811843'),(5565,'Ladislav','83811843'),(5566,'the','83811843'),(5567,'Posthumous','83811843'),(5568,'14537','83811843'),(5569,'','83811843'),(5570,'so','83811843'),(5571,'named','83811843'),(5572,'because','83811843'),(5573,'he','83811843'),(5574,'was','83811843'),(5575,'born','83811843'),(5576,'after','83811843'),(5577,'his','83811843'),(5578,'father','83811843'),(5579,'had','83811843'),(5580,'died','83811843'),(5581,'','83811843'),(5582,'','83811843'),(5583,'the','83811843'),(5584,'Bohemian','83811843'),(5585,'throne','83811843'),(5586,'was','83811843'),(5587,'occupied','83811843'),(5588,'by','83811843'),(5589,'the','83811843'),(5590,'heretic','83811843'),(5591,'King','83811843'),(5592,'George','83811843'),(5593,'of','83811843'),(5594,'Podebrady','83811843'),(5595,'145871','83811843'),(5596,'George','83811843'),(5597,'also','83811843'),(5598,'known','83811843'),(5599,'as','83811843'),(5600,'the','83811843'),(5601,'Hussite','83811843'),(5602,'King','83811843'),(5603,'was','83811843'),(5604,'the','83811843'),(5605,'first','83811843'),(5606,'freelyelected','83811843'),(5607,'Czech','83811843'),(5608,'ruler','83811843'),(5609,'He','83811843'),(5610,'was','83811843'),(5611,'chosen','83811843'),(5612,'as','83811843'),(5613,'Czech','83811843'),(5614,'King','83811843'),(5615,'from','83811843'),(5616,'among','83811843'),(5617,'the','83811843'),(5618,'countrys','83811843'),(5619,'nobility','83811843'),(5620,'without','83811843'),(5621,'regard','83811843'),(5622,'to','83811843'),(5623,'any','83811843'),(5624,'previous','83811843'),(5625,'agreements','83811843'),(5626,'hereditary','83811843'),(5627,'claim','83811843'),(5628,'to','83811843'),(5629,'the','83811843'),(5630,'throne','83811843'),(5631,'family','83811843'),(5632,'connections','83811843'),(5633,'or','83811843'),(5634,'dynastic','83811843'),(5635,'origin','83811843'),(5636,'George','83811843'),(5637,'of','83811843'),(5638,'Podebrady','83811843'),(5639,'won','83811843'),(5640,'recognition','83811843'),(5641,'throughout','83811843'),(5642,'the','83811843'),(5643,'Lands','83811843'),(5644,'of','83811843'),(5645,'the','83811843'),(5646,'Czech','83811843'),(5647,'Crown','83811843'),(5648,'through','83811843'),(5649,'his','83811843'),(5650,'skillful','83811843'),(5651,'diplomacy','83811843'),(5652,'and','83811843'),(5653,'gained','83811843'),(5654,'the','83811843'),(5655,'respect','83811843'),(5656,'of','83811843'),(5657,'all','83811843'),(5658,'of','83811843'),(5659,'Central','83811843'),(5660,'Europe','83811843'),(5661,'He','83811843'),(5662,'also','83811843'),(5663,'in','83811843'),(5664,'the','83811843'),(5665,'15th','83811843'),(5666,'century','83811843'),(5667,'authored','83811843'),(5668,'an','83811843'),(5669,'ambitious','83811843'),(5670,'Peace','83811843'),(5671,'Plan','83811843'),(5672,'for','83811843'),(5673,'all','83811843'),(5674,'of','83811843'),(5675,'Europe','83811843'),(5676,'sort','83811843'),(5677,'of','83811843'),(5678,'a','83811843'),(5679,'medeival','83811843'),(5680,'equivalent','83811843'),(5681,'to','83811843'),(5682,'a','83811843'),(5683,'NATOlike','83811843'),(5684,'organization','83811843'),(5685,'\r\n\r\nBut','83811843'),(5686,'few','83811843'),(5687,'people','83811843'),(5688,'then','83811843'),(5689,'as','83811843'),(5690,'now','83811843'),(5691,'were','83811843'),(5692,'interested','83811843'),(5693,'in','83811843'),(5694,'peace','83811843'),(5695,'and','83811843'),(5696,'nobody','83811843'),(5697,'subscribed','83811843'),(5698,'to','83811843'),(5699,'his','83811843'),(5700,'plan','83811843'),(5701,'On','83811843'),(5702,'the','83811843'),(5703,'contrary','83811843'),(5704,'','83811843'),(5705,'the','83811843'),(5706,'Hungarian','83811843'),(5707,'monarch','83811843'),(5708,'at','83811843'),(5709,'this','83811843'),(5710,'time','83811843'),(5711,'Matthias','83811843'),(5712,'Corvinus','83811843'),(5713,'','83811843'),(5714,'with','83811843'),(5715,'the','83811843'),(5716,'support','83811843'),(5717,'of','83811843'),(5718,'the','83811843'),(5719,'disgruntled','83811843'),(5720,'Czech','83811843'),(5721,'Catholic','83811843'),(5722,'opposition','83811843'),(5723,'who','83811843'),(5724,'didnt','83811843'),(5725,'like','83811843'),(5726,'the','83811843'),(5727,'idea','83811843'),(5728,'of','83811843'),(5729,'a','83811843'),(5730,'Protestant','83811843'),(5731,'on','83811843'),(5732,'the','83811843'),(5733,'throne','83811843'),(5734,'','83811843'),(5735,'declared','83811843'),(5736,'war','83811843'),(5737,'against','83811843'),(5738,'George','83811843'),(5739,'of','83811843'),(5740,'Podebrady','83811843'),(5741,'who','83811843'),(5742,'happened','83811843'),(5743,'to','83811843'),(5744,'be','83811843'),(5745,'Matthias','83811843'),(5746,'fatherinlaw','83811843'),(5747,'The','83811843'),(5748,'Hungarian','83811843'),(5749,'campaigns','83811843'),(5750,'against','83811843'),(5751,'Bohemia','83811843'),(5752,'ceased','83811843'),(5753,'only','83811843'),(5754,'after','83811843'),(5755,'the','83811843'),(5756,'death','83811843'),(5757,'of','83811843'),(5758,'the','83811843'),(5759,'beloved','83811843'),(5760,'Hussite','83811843'),(5761,'King','83811843'),(5762,'George','83811843'),(5763,'of','83811843'),(5764,'Podebrady','83811843'),(5765,'and','83811843'),(5766,'the','83811843'),(5767,'ascent','83811843'),(5768,'of','83811843'),(5769,'Vladislav','83811843'),(5770,'Jagellon','83811843'),(5771,'to','83811843'),(5772,'the','83811843'),(5773,'throne','83811843'),(5774,'\r\n\r\nCzechSlovak','83811843'),(5775,'relations','83811843'),(5776,'were','83811843'),(5777,'strengthened','83811843'),(5778,'at','83811843'),(5779,'this','83811843'),(5780,'time','83811843'),(5781,'with','83811843'),(5782,'the','83811843'),(5783,'forming','83811843'),(5784,'of','83811843'),(5785,'the','83811843'),(5786,'CzechHungarian','83811843'),(5787,'union','83811843'),(5788,'under','83811843'),(5789,'the','83811843'),(5790,'Jagellons','83811843'),(5791,'after','83811843'),(5792,'the','83811843'),(5793,'death','83811843'),(5794,'of','83811843'),(5795,'Matthias','83811843'),(5796,'Corvinus','83811843'),(5797,'in','83811843'),(5798,'1490;','83811843'),(5799,'and','83811843'),(5800,'after','83811843'),(5801,'the','83811843'),(5802,'Kralice','83811843'),(5803,'Bible','83811843'),(5804,'began','83811843'),(5805,'to','83811843'),(5806,'be','83811843'),(5807,'used','83811843'),(5808,'by','83811843'),(5809,'the','83811843'),(5810,'Slovak','83811843'),(5811,'Evangelical','83811843'),(5812,'Church','83811843'),(5813,'\r\n\r\nIn','83811843'),(5814,'spite','83811843'),(5815,'of','83811843'),(5816,'conflicts','83811843'),(5817,'both','83811843'),(5818,'foreign','83811843'),(5819,'and','83811843'),(5820,'domestic','83811843'),(5821,'and','83811843'),(5822,'even','83811843'),(5823,'under','83811843'),(5824,'the','83811843'),(5825,'rule','83811843'),(5826,'of','83811843'),(5827,'the','83811843'),(5828,'Jagellon','83811843'),(5829,'dynastys','83811843'),(5830,'two','83811843'),(5831,'Catholic','83811843'),(5832,'kings','83811843'),(5833,'Vladislav','83811843'),(5834,'and','83811843'),(5835,'Ludwig','83811843'),(5836,'religious','83811843'),(5837,'pluralism','83811843'),(5838,'and','83811843'),(5839,'freedom','83811843'),(5840,'of','83811843'),(5841,'religion','83811843'),(5842,'were','83811843'),(5843,'maintained','83811843'),(5844,'in','83811843'),(5845,'the','83811843'),(5846,'Czech','83811843'),(5847,'lands','83811843'),(5848,'with','83811843'),(5849,'Protestants','83811843'),(5850,'and','83811843'),(5851,'Catholics','83811843'),(5852,'living','83811843'),(5853,'together','83811843'),(5854,'in','83811843'),(5855,'harmony','83811843'),(5856,'All','83811843'),(5857,'during','83811843'),(5858,'this','83811843'),(5859,'time','83811843'),(5860,'of','83811843'),(5861,'weak','83811843'),(5862,'royal','83811843'),(5863,'leadership','83811843'),(5864,'the','83811843'),(5865,'power','83811843'),(5866,'of','83811843'),(5867,'the','83811843'),(5868,'nobility','83811843'),(5869,'and','83811843'),(5870,'towns','83811843'),(5871,'the','83811843'),(5872,'Estates','83811843'),(5873,'continued','83811843'),(5874,'to','83811843'),(5875,'increase','83811843'),(5876,'','83811843'),(5877,'even','83811843'),(5878,'as','83811843'),(5879,'central','83811843'),(5880,'authority','83811843'),(5881,'diminished','83811843'),(5882,'\r\n\r\nWith','83811843'),(5883,'the','83811843'),(5884,'death','83811843'),(5885,'of','83811843'),(5886,'Ludwig','83811843'),(5887,'Jagellon','83811843'),(5888,'he','83811843'),(5889,'drowned','83811843'),(5890,'in','83811843'),(5891,'a','83811843'),(5892,'swamp','83811843'),(5893,'running','83811843'),(5894,'away','83811843'),(5895,'from','83811843'),(5896,'the','83811843'),(5897,'Turks','83811843'),(5898,'at','83811843'),(5899,'the','83811843'),(5900,'Battle','83811843'),(5901,'of','83811843'),(5902,'Mohacs','83811843'),(5903,'in','83811843'),(5904,'1526','83811843'),(5905,'the','83811843'),(5906,'shortlived','83811843'),(5907,'CzechHungarian','83811843'),(5908,'Union','83811843'),(5909,'fell','83811843'),(5910,'to','83811843'),(5911,'pieces','83811843'),(5912,'leaving','83811843'),(5913,'both','83811843'),(5914,'the','83811843'),(5915,'Bohemian','83811843'),(5916,'and','83811843'),(5917,'the','83811843'),(5918,'Hungarian','83811843'),(5919,'thrones','83811843'),(5920,'unoccupied','83811843'),(5921,'\r\n\r\nWhat','83811843'),(5922,'a','83811843'),(5923,'window','83811843'),(5924,'of','83811843'),(5925,'opportunity','83811843'),(5926,'for','83811843'),(5927,'the','83811843'),(5928,'Austrian','83811843'),(5929,'Habsburgs!','83811843'),(5930,'That','83811843'),(5931,'Ferdinand','83811843'),(5932,'I','83811843'),(5933,'of','83811843'),(5934,'Habsburg','83811843'),(5935,'also','83811843'),(5936,'happened','83811843'),(5937,'to','83811843'),(5938,'be','83811843'),(5939,'the','83811843'),(5940,'late','83811843'),(5941,'Ludwig','83811843'),(5942,'Jagellons','83811843'),(5943,'brotherinlaw','83811843'),(5944,'helped','83811843'),(5945,'his','83811843'),(5946,'claim','83811843'),(5947,'to','83811843'),(5948,'the','83811843'),(5949,'Bohemain','83811843'),(5950,'and','83811843'),(5951,'Hungarian','83811843'),(5952,'thrones','83811843'),(5953,'In','83811843'),(5954,'Bohemia','83811843'),(5955,'the','83811843'),(5956,'weakened','83811843'),(5957,'central','83811843'),(5958,'authority','83811843'),(5959,'did','83811843'),(5960,'too','83811843'),(5961,'At','83811843'),(5962,'first','83811843'),(5963,'Ferdinand','83811843'),(5964,'made','83811843'),(5965,'concessions','83811843'),(5966,'to','83811843'),(5967,'the','83811843'),(5968,'everpowerful','83811843'),(5969,'Estates','83811843'),(5970,'Soon','83811843'),(5971,'however','83811843'),(5972,'he','83811843'),(5973,'began','83811843'),(5974,'systematically','83811843'),(5975,'to','83811843'),(5976,'weaken','83811843'),(5977,'the','83811843'),(5978,'authority','83811843'),(5979,'of','83811843'),(5980,'the','83811843'),(5981,'regional','83811843'),(5982,'nobility','83811843'),(5983,'and','83811843'),(5984,'towns','83811843'),(5985,'His','83811843'),(5986,'attempts','83811843'),(5987,'to','83811843'),(5988,'increase','83811843'),(5989,'the','83811843'),(5990,'central','83811843'),(5991,'power','83811843'),(5992,'of','83811843'),(5993,'the','83811843'),(5994,'Crown','83811843'),(5995,'naturally','83811843'),(5996,'met','83811843'),(5997,'with','83811843'),(5998,'the','83811843'),(5999,'opposition','83811843'),(6000,'of','83811843'),(6001,'the','83811843'),(6002,'Estates','83811843'),(6003,'and','83811843'),(6004,'the','83811843'),(6005,'whole','83811843'),(6006,'situation','83811843'),(6007,'culminated','83811843'),(6008,'in','83811843'),(6009,'an','83811843'),(6010,'unsuccesful','83811843'),(6011,'rebellion','83811843'),(6012,'of','83811843'),(6013,'the','83811843'),(6014,'Estates','83811843'),(6015,'in','83811843'),(6016,'1547','83811843'),(6017,'\r\n\r\nThe','83811843'),(6018,'Estates','83811843'),(6019,'failure','83811843'),(6020,'was','83811843'),(6021,'Ferdinands','83811843'),(6022,'gain','83811843'),(6023,'He','83811843'),(6024,'used','83811843'),(6025,'this','83811843'),(6026,'victory','83811843'),(6027,'to','83811843'),(6028,'increase','83811843'),(6029,'royal','83811843'),(6030,'authority','83811843'),(6031,'and','83811843'),(6032,'to','83811843'),(6033,'weaken','83811843'),(6034,'the','83811843'),(6035,'position','83811843'),(6036,'of','83811843'),(6037,'the','83811843'),(6038,'Estates','83811843'),(6039,'and','83811843'),(6040,'the','83811843'),(6041,'towns','83811843'),(6042,'even','83811843'),(6043,'more','83811843'),(6044,'He','83811843'),(6045,'also','83811843'),(6046,'invited','83811843'),(6047,'the','83811843'),(6048,'Jesuits','83811843'),(6049,'to','83811843'),(6050,'come','83811843'),(6051,'to','83811843'),(6052,'the','83811843'),(6053,'Czech','83811843'),(6054,'lands','83811843'),(6055,'though','83811843'),(6056,'they','83811843'),(6057,'never','83811843'),(6058,'held','83811843'),(6059,'any','83811843'),(6060,'inquisitions','83811843'),(6061,'here','83811843'),(6062,'and','83811843'),(6063,'generally','83811843'),(6064,'did','83811843'),(6065,'not','83811843'),(6066,'meddle','83811843'),(6067,'in','83811843'),(6068,'public','83811843'),(6069,'affairs','83811843'),(6070,'Ostensibly','83811843'),(6071,'fighting','83811843'),(6072,'to','83811843'),(6073,'maintain','83811843'),(6074,'freedom','83811843'),(6075,'of','83811843'),(6076,'religion','83811843'),(6077,'in','83811843'),(6078,'the','83811843'),(6079,'Czech','83811843'),(6080,'lands','83811843'),(6081,'against','83811843'),(6082,'the','83811843'),(6083,'resolutely','83811843'),(6084,'Catholic','83811843'),(6085,'policies','83811843'),(6086,'of','83811843'),(6087,'Ferdinand','83811843'),(6088,'the','83811843'),(6089,'Estates','83811843'),(6090,'struggled','83811843'),(6091,'to','83811843'),(6092,'regain','83811843'),(6093,'their','83811843'),(6094,'former','83811843'),(6095,'power','83811843'),(6096,'and','83811843'),(6097,'influence','83811843'),(6098,'\r\n\r\nThese','83811843'),(6099,'conflicts','83811843'),(6100,'simmered','83811843'),(6101,'under','83811843'),(6102,'the','83811843'),(6103,'surface','83811843'),(6104,'of','83811843'),(6105,'things','83811843'),(6106,'as','83811843'),(6107,'the','83811843'),(6108,'Renaissance','83811843'),(6109,'swept','83811843'),(6110,'through','83811843'),(6111,'the','83811843'),(6112,'Czech','83811843'),(6113,'lands','83811843'),(6114,'\r\n\r\n','83811843'),(6115,'Ferdinand','83811843'),(6116,'was','83811843'),(6117,'succeeded','83811843'),(6118,'by','83811843'),(6119,'Maxmilian','83811843'),(6120,'II','83811843'),(6121,'who','83811843'),(6122,'was','83811843'),(6123,'succeeded','83811843'),(6124,'by','83811843'),(6125,'Rudolf','83811843'),(6126,'II','83811843'),(6127,'After','83811843'),(6128,'assuming','83811843'),(6129,'the','83811843'),(6130,'Austrian','83811843'),(6131,'throne','83811843'),(6132,'the','83811843'),(6133,'Habsburg','83811843'),(6134,'ruler','83811843'),(6135,'and','83811843'),(6136,'patron','83811843'),(6137,'of','83811843'),(6138,'the','83811843'),(6139,'arts','83811843'),(6140,'and','83811843'),(6141,'sciences','83811843'),(6142,'Rudolf','83811843'),(6143,'II','83811843'),(6144,'15761611','83811843'),(6145,'','83811843'),(6146,'moved','83811843'),(6147,'his','83811843'),(6148,'court','83811843'),(6149,'from','83811843'),(6150,'Vienna','83811843'),(6151,'to','83811843'),(6152,'Prague','83811843'),(6153,'','83811843'),(6154,'making','83811843'),(6155,'him','83811843'),(6156,'the','83811843'),(6157,'last','83811843'),(6158,'crowned','83811843'),(6159,'King','83811843'),(6160,'of','83811843'),(6161,'Bohemia','83811843'),(6162,'to','83811843'),(6163,'live','83811843'),(6164,'at','83811843'),(6165,'Prague','83811843'),(6166,'Castle','83811843'),(6167,'Rudolf','83811843'),(6168,'II','83811843'),(6169,'was','83811843'),(6170,'a','83811843'),(6171,'real','83811843'),(6172,'character','83811843'),(6173,'He','83811843'),(6174,'had','83811843'),(6175,'a','83811843'),(6176,'pet','83811843'),(6177,'lion','83811843'),(6178,'he','83811843'),(6179,'collected','83811843'),(6180,'great','83811843'),(6181,'art','83811843'),(6182,'','83811843'),(6183,'including','83811843'),(6184,'works','83811843'),(6185,'by','83811843'),(6186,'Da','83811843'),(6187,'Vinci','83811843'),(6188,'Michaelangelo','83811843'),(6189,'and','83811843'),(6190,'Rafael','83811843'),(6191,'','83811843'),(6192,'he','83811843'),(6193,'supported','83811843'),(6194,'scientists','83811843'),(6195,'such','83811843'),(6196,'as','83811843'),(6197,'Tycho','83811843'),(6198,'de','83811843'),(6199,'Brahe','83811843'),(6200,'Johannes','83811843'),(6201,'Kepler','83811843'),(6202,'','83811843'),(6203,'as','83811843'),(6204,'well','83811843'),(6205,'as','83811843'),(6206,'artists','83811843'),(6207,'like','83811843'),(6208,'Spranger','83811843'),(6209,'and','83811843'),(6210,'Von','83811843'),(6211,'Aachen','83811843'),(6212,'and','83811843'),(6213,'he','83811843'),(6214,'was','83811843'),(6215,'a','83811843'),(6216,'personal','83811843'),(6217,'friend','83811843'),(6218,'of','83811843'),(6219,'the','83811843'),(6220,'legendary','83811843'),(6221,'Prague','83811843'),(6222,'Jewish','83811843'),(6223,'leader','83811843'),(6224,'Rabbi','83811843'),(6225,'Loew','83811843'),(6226,'It','83811843'),(6227,'is','83811843'),(6228,'said','83811843'),(6229,'that','83811843'),(6230,'he','83811843'),(6231,'also','83811843'),(6232,'financed','83811843'),(6233,'the','83811843'),(6234,'work','83811843'),(6235,'of','83811843'),(6236,'any','83811843'),(6237,'number','83811843'),(6238,'of','83811843'),(6239,'quack','83811843'),(6240,'alchemists','83811843'),(6241,'on','83811843'),(6242,'his','83811843'),(6243,'invitation','83811843'),(6244,'John','83811843'),(6245,'Dee','83811843'),(6246,'and','83811843'),(6247,'Edward','83811843'),(6248,'Kelley','83811843'),(6249,'spent','83811843'),(6250,'time','83811843'),(6251,'in','83811843'),(6252,'Prague','83811843'),(6253,'and','83811843'),(6254,'that','83811843'),(6255,'he','83811843'),(6256,'was','83811843'),(6257,'a','83811843'),(6258,'little','83811843'),(6259,'soft','83811843'),(6260,'in','83811843'),(6261,'the','83811843'),(6262,'head','83811843'),(6263,'Its','83811843'),(6264,'possible','83811843'),(6265,'that','83811843'),(6266,'the','83811843'),(6267,'Legend','83811843'),(6268,'of','83811843'),(6269,'Faust','83811843'),(6270,'who','83811843'),(6271,'lived','83811843'),(6272,'in','83811843'),(6273,'Prague','83811843'),(6274,'originated','83811843'),(6275,'at','83811843'),(6276,'this','83811843'),(6277,'time','83811843'),(6278,'of','83811843'),(6279,'scientific','83811843'),(6280,'exploration','83811843'),(6281,'\r\n\r\n','83811843'),(6282,'The','83811843'),(6283,'architectural','83811843'),(6284,'style','83811843'),(6285,'of','83811843'),(6286,'the','83811843'),(6287,'time','83811843'),(6288,'was','83811843'),(6289,'Baroque','83811843'),(6290,'which','83811843'),(6291,'','83811843'),(6292,'like','83811843'),(6293,'Rudolf','83811843'),(6294,'II','83811843'),(6295,'himself','83811843'),(6296,'','83811843'),(6297,'was','83811843'),(6298,'round','83811843'),(6299,'and','83811843'),(6300,'robust','83811843'),(6301,'flamboyant','83811843'),(6302,'and','83811843'),(6303,'a','83811843'),(6304,'little','83811843'),(6305,'gaudy','83811843'),(6306,'Baroque','83811843'),(6307,'buildings','83811843'),(6308,'like','83811843'),(6309,'the','83811843'),(6310,'Loreto','83811843'),(6311,'and','83811843'),(6312,'St','83811843'),(6313,'Nicholas','83811843'),(6314,'Church','83811843'),(6315,'in','83811843'),(6316,'Lesser','83811843'),(6317,'Town','83811843'),(6318,'Square','83811843'),(6319,'are','83811843'),(6320,'massive','83811843'),(6321,'and','83811843'),(6322,'grand','83811843'),(6323,'The','83811843'),(6324,'statues','83811843'),(6325,'that','83811843'),(6326,'top','83811843'),(6327,'them','83811843'),(6328,'appear','83811843'),(6329,'so','83811843'),(6330,'heavy','83811843'),(6331,'that','83811843'),(6332,'they','83811843'),(6333,'seem','83811843'),(6334,'likely','83811843'),(6335,'to','83811843'),(6336,'fall','83811843'),(6337,'and','83811843'),(6338,'crush','83811843'),(6339,'innocent','83811843'),(6340,'passersby','83811843'),(6341,'\r\n\r\n','83811843'),(6342,'Rudolf','83811843'),(6343,'II','83811843'),(6344,'who','83811843'),(6345,'suffered','83811843'),(6346,'periods','83811843'),(6347,'of','83811843'),(6348,'dementia','83811843'),(6349,'because','83811843'),(6350,'of','83811843'),(6351,'his','83811843'),(6352,'acute','83811843'),(6353,'case','83811843'),(6354,'of','83811843'),(6355,'syphilis','83811843'),(6356,'was','83811843'),(6357,'forced','83811843'),(6358,'by','83811843'),(6359,'his','83811843'),(6360,'family','83811843'),(6361,'to','83811843'),(6362,'resign','83811843'),(6363,'in','83811843'),(6364,'1611','83811843'),(6365,'He','83811843'),(6366,'had','83811843'),(6367,'been','83811843'),(6368,'forced','83811843'),(6369,'during','83811843'),(6370,'his','83811843'),(6371,'reign','83811843'),(6372,'to','83811843'),(6373,'concede','83811843'),(6374,'religious','83811843'),(6375,'freedom','83811843'),(6376,'to','83811843'),(6377,'the','83811843'),(6378,'Czech','83811843'),(6379,'Protestants','83811843'),(6380,'and','83811843'),(6381,'when','83811843'),(6382,'his','83811843'),(6383,'brother','83811843'),(6384,'and','83811843'),(6385,'successor','83811843'),(6386,'Matthias','83811843'),(6387,'tried','83811843'),(6388,'to','83811843'),(6389,'rescind','83811843'),(6390,'them','83811843'),(6391,'mounting','83811843'),(6392,'political','83811843'),(6393,'tensions','83811843'),(6394,'led','83811843'),(6395,'the','83811843'),(6396,'Czech','83811843'),(6397,'Estates','83811843'),(6398,'to','83811843'),(6399,'rebel','83811843'),(6400,'against','83811843'),(6401,'the','83811843'),(6402,'Habsburgs','83811843'),(6403,'once','83811843'),(6404,'again','83811843'),(6405,'\r\n\r\nThey','83811843'),(6406,'began','83811843'),(6407,'their','83811843'),(6408,'rebellion','83811843'),(6409,'in','83811843'),(6410,'grand','83811843'),(6411,'Czech','83811843'),(6412,'style','83811843'),(6413,'with','83811843'),(6414,'the','83811843'),(6415,'Second','83811843'),(6416,'Defenestration','83811843'),(6417,'of','83811843'),(6418,'Prague','83811843'),(6419,'in','83811843'),(6420,'1618','83811843'),(6421,'In','83811843'),(6422,'this','83811843'),(6423,'second','83811843'),(6424,'defenestration','83811843'),(6425,'two','83811843'),(6426,'vice','83811843'),(6427,'regents','83811843'),(6428,'of','83811843'),(6429,'the','83811843'),(6430,'Austrian','83811843'),(6431,'monarch','83811843'),(6432,'and','83811843'),(6433,'some','83811843'),(6434,'governors','83811843'),(6435,'of','83811843'),(6436,'the','83811843'),(6437,'Czech','83811843'),(6438,'lands','83811843'),(6439,'were','83811843'),(6440,'thrown','83811843'),(6441,'out','83811843'),(6442,'of','83811843'),(6443,'a','83811843'),(6444,'tower','83811843'),(6445,'window','83811843'),(6446,'at','83811843'),(6447,'Prague','83811843'),(6448,'Castle','83811843'),(6449,'They','83811843'),(6450,'were','83811843'),(6451,'not','83811843'),(6452,'killed','83811843'),(6453,'however','83811843'),(6454,'as','83811843'),(6455,'they','83811843'),(6456,'fell','83811843'),(6457,'onto','83811843'),(6458,'a','83811843'),(6459,'pile','83811843'),(6460,'of','83811843'),(6461,'garbage','83811843'),(6462,'mostly','83811843'),(6463,'straw','83811843'),(6464,'which','83811843'),(6465,'had','83811843'),(6466,'accumulated','83811843'),(6467,'in','83811843'),(6468,'the','83811843'),(6469,'castle','83811843'),(6470,'moat','83811843'),(6471,'So','83811843'),(6472,'it','83811843'),(6473,'can','83811843'),(6474,'be','83811843'),(6475,'said','83811843'),(6476,'that','83811843'),(6477,'they','83811843'),(6478,'at','83811843'),(6479,'least','83811843'),(6480,'the','83811843'),(6481,'nonAustrian','83811843'),(6482,'of','83811843'),(6483,'the','83811843'),(6484,'throwees','83811843'),(6485,'were','83811843'),(6486,'the','83811843'),(6487,'worlds','83811843'),(6488,'first','83811843'),(6489,'bouncing','83811843'),(6490,'Czechs','83811843'),(6491,'To','83811843'),(6492,'add','83811843'),(6493,'insult','83811843'),(6494,'to','83811843'),(6495,'injury','83811843'),(6496,'or','83811843'),(6497,'perhaps','83811843'),(6498,'insult','83811843'),(6499,'to','83811843'),(6500,'insult?','83811843'),(6501,'the','83811843'),(6502,'Bohemian','83811843'),(6503,'diet','83811843'),(6504,'of','83811843'),(6505,'the','83811843'),(6506,'Estates','83811843'),(6507,'then','83811843'),(6508,'elected','83811843'),(6509,'Frederick','83811843'),(6510,'V','83811843'),(6511,'of','83811843'),(6512,'the','83811843'),(6513,'Palatinate','83811843'),(6514,'also','83811843'),(6515,'known','83811843'),(6516,'as','83811843'),(6517,'Frederick','83811843'),(6518,'Faltz','83811843'),(6519,'or','83811843'),(6520,'as','83811843'),(6521,'the','83811843'),(6522,'Winter','83811843'),(6523,'King','83811843'),(6524,'as','83811843'),(6525,'their','83811843'),(6526,'ruler','83811843'),(6527,'thinking','83811843'),(6528,'that','83811843'),(6529,'his','83811843'),(6530,'fatherinlaw','83811843'),(6531,'','83811843'),(6532,'the','83811843'),(6533,'English','83811843'),(6534,'King','83811843'),(6535,'James','83811843'),(6536,'I','83811843'),(6537,'','83811843'),(6538,'would','83811843'),(6539,'come','83811843'),(6540,'to','83811843'),(6541,'their','83811843'),(6542,'aid','83811843'),(6543,'They','83811843'),(6544,'could','83811843'),(6545,'not','83811843'),(6546,'have','83811843'),(6547,'been','83811843'),(6548,'more','83811843'),(6549,'wrong','83811843'),(6550,'\r\n\r\n','83811843'),(6551,'This','83811843'),(6552,'rebellion','83811843'),(6553,'of','83811843'),(6554,'the','83811843'),(6555,'Czech','83811843'),(6556,'Estates','83811843'),(6557,'was','83811843'),(6558,'particularly','83811843'),(6559,'unsuccessful','83811843'),(6560,'It','83811843'),(6561,'culminated','83811843'),(6562,'in','83811843'),(6563,'the','83811843'),(6564,'Battle','83811843'),(6565,'of','83811843'),(6566,'the','83811843'),(6567,'White','83811843'),(6568,'Mountain','83811843'),(6569,'in','83811843'),(6570,'1620','83811843'),(6571,'in','83811843'),(6572,'which','83811843'),(6573,'the','83811843'),(6574,'Estates','83811843'),(6575,'were','83811843'),(6576,'incontrovertibly','83811843'),(6577,'defeated','83811843'),(6578,'by','83811843'),(6579,'the','83811843'),(6580,'Habsburgs','83811843'),(6581,'They','83811843'),(6582,'had','83811843'),(6583,'been','83811843'),(6584,'successful','83811843'),(6585,'only','83811843'),(6586,'in','83811843'),(6587,'sparking','83811843'),(6588,'the','83811843'),(6589,'Thirty','83811843'),(6590,'Years','83811843'),(6591,'War','83811843'),(6592,'which','83811843'),(6593,'was','83811843'),(6594,'to','83811843'),(6595,'devastate','83811843'),(6596,'much','83811843'),(6597,'of','83811843'),(6598,'Europe','83811843'),(6599,'Incidentally','83811843'),(6600,'the','83811843'),(6601,'thenmercenary','83811843'),(6602,'laterphilosopher','83811843'),(6603,'Rene','83811843'),(6604,'Descartes','83811843'),(6605,'fought','83811843'),(6606,'at','83811843'),(6607,'the','83811843'),(6608,'Battle','83811843'),(6609,'of','83811843'),(6610,'the','83811843'),(6611,'White','83811843'),(6612,'Mountain','83811843'),(6613,'on','83811843'),(6614,'the','83811843'),(6615,'side','83811843'),(6616,'of','83811843'),(6617,'the','83811843'),(6618,'Habsburgs','83811843'),(6619,'\r\n\r\nWell','83811843'),(6620,'the','83811843'),(6621,'Habsburgs','83811843'),(6622,'quite','83811843'),(6623,'understandably','83811843'),(6624,'did','83811843'),(6625,'not','83811843'),(6626,'appreciate','83811843'),(6627,'these','83811843'),(6628,'disturbances','83811843'),(6629,'which','83811843'),(6630,'were','83811843'),(6631,'emanating','83811843'),(6632,'from','83811843'),(6633,'the','83811843'),(6634,'northern','83811843'),(6635,'reaches','83811843'),(6636,'of','83811843'),(6637,'their','83811843'),(6638,'empire','83811843'),(6639,'But','83811843'),(6640,'the','83811843'),(6641,'methods','83811843'),(6642,'that','83811843'),(6643,'they','83811843'),(6644,'used','83811843'),(6645,'to','83811843'),(6646,'subdue','83811843'),(6647,'the','83811843'),(6648,'protestant','83811843'),(6649,'Estates','83811843'),(6650,'after','83811843'),(6651,'the','83811843'),(6652,'Battle','83811843'),(6653,'of','83811843'),(6654,'the','83811843'),(6655,'White','83811843'),(6656,'Mountain','83811843'),(6657,'were','83811843'),(6658,'extraordinarily','83811843'),(6659,'harsh','83811843'),(6660,'\r\n\r\nFirst','83811843'),(6661,'they','83811843'),(6662,'executed','83811843'),(6663,'27','83811843'),(6664,'nobles','83811843'),(6665,'','83811843'),(6666,'leaders','83811843'),(6667,'of','83811843'),(6668,'the','83811843'),(6669,'Estates','83811843'),(6670,'who','83811843'),(6671,'had','83811843'),(6672,'fought','83811843'),(6673,'on','83811843'),(6674,'the','83811843'),(6675,'losing','83811843'),(6676,'side','83811843'),(6677,'against','83811843'),(6678,'the','83811843'),(6679,'Habsburgs','83811843'),(6680,'at','83811843'),(6681,'the','83811843'),(6682,'Battle','83811843'),(6683,'of','83811843'),(6684,'the','83811843'),(6685,'White','83811843'),(6686,'Mountain','83811843'),(6687,'','83811843'),(6688,'in','83811843'),(6689,'Pragues','83811843'),(6690,'Old','83811843'),(6691,'Town','83811843'),(6692,'Square','83811843'),(6693,'in','83811843'),(6694,'May','83811843'),(6695,'1621','83811843'),(6696,'Some','83811843'),(6697,'of','83811843'),(6698,'the','83811843'),(6699,'heads','83811843'),(6700,'of','83811843'),(6701,'the','83811843'),(6702,'decapitated','83811843'),(6703,'leaders','83811843'),(6704,'of','83811843'),(6705,'the','83811843'),(6706,'rebellion','83811843'),(6707,'were','83811843'),(6708,'then','83811843'),(6709,'hung','83811843'),(6710,'strategically','83811843'),(6711,'around','83811843'),(6712,'Prague','83811843'),(6713,'','83811843'),(6714,'for','83811843'),(6715,'instance','83811843'),(6716,'on','83811843'),(6717,'the','83811843'),(6718,'Old','83811843'),(6719,'Town','83811843'),(6720,'bridge','83811843'),(6721,'tower','83811843'),(6722,'of','83811843'),(6723,'the','83811843'),(6724,'Charles','83811843'),(6725,'Bridge','83811843'),(6726,'','83811843'),(6727,'to','83811843'),(6728,'serve','83811843'),(6729,'as','83811843'),(6730,'an','83811843'),(6731,'ominous','83811843'),(6732,'reminder','83811843'),(6733,'to','83811843'),(6734,'the','83811843'),(6735,'people','83811843'),(6736,'of','83811843'),(6737,'Who','83811843'),(6738,'was','83811843'),(6739,'Boss','83811843'),(6740,'It','83811843'),(6741,'is','83811843'),(6742,'said','83811843'),(6743,'that','83811843'),(6744,'every','83811843'),(6745,'year','83811843'),(6746,'at','83811843'),(6747,'the','83811843'),(6748,'exact','83811843'),(6749,'hour','83811843'),(6750,'and','83811843'),(6751,'on','83811843'),(6752,'the','83811843'),(6753,'exact','83811843'),(6754,'day','83811843'),(6755,'that','83811843'),(6756,'they','83811843'),(6757,'were','83811843'),(6758,'killed','83811843'),(6759,'the','83811843'),(6760,'ghosts','83811843'),(6761,'of','83811843'),(6762,'the','83811843'),(6763,'27','83811843'),(6764,'wronglyexecuted','83811843'),(6765,'nobles','83811843'),(6766,'can','83811843'),(6767,'be','83811843'),(6768,'seen','83811843'),(6769,'haunting','83811843'),(6770,'the','83811843'),(6771,'spot','83811843'),(6772,'where','83811843'),(6773,'they','83811843'),(6774,'lost','83811843'),(6775,'their','83811843'),(6776,'heads','83811843'),(6777,'The','83811843'),(6778,'place','83811843'),(6779,'today','83811843'),(6780,'is','83811843'),(6781,'marked','83811843'),(6782,'by','83811843'),(6783,'27','83811843'),(6784,'crosses','83811843'),(6785,'in','83811843'),(6786,'the','83811843'),(6787,'cobblestones','83811843'),(6788,'of','83811843'),(6789,'Old','83811843'),(6790,'Town','83811843'),(6791,'Square','83811843'),(6792,'next','83811843'),(6793,'to','83811843'),(6794,'the','83811843'),(6795,'Astronomical','83811843'),(6796,'Clock','83811843'),(6797,'The','83811843'),(6798,'heads','83811843'),(6799,'hung','83811843'),(6800,'there','83811843'),(6801,'for','83811843'),(6802,'11','83811843'),(6803,'long','83811843'),(6804,'and','83811843'),(6805,'lonely','83811843'),(6806,'years','83811843'),(6807,'before','83811843'),(6808,'finally','83811843'),(6809,'being','83811843'),(6810,'taken','83811843'),(6811,'down','83811843'),(6812,'and','83811843'),(6813,'given','83811843'),(6814,'a','83811843'),(6815,'proper','83811843'),(6816,'burial','83811843'),(6817,'by','83811843'),(6818,'the','83811843'),(6819,'Saxons','83811843'),(6820,'who','83811843'),(6821,'occupied','83811843'),(6822,'Prague','83811843'),(6823,'in','83811843'),(6824,'1632','83811843'),(6825,'in','83811843'),(6826,'the','83811843'),(6827,'course','83811843'),(6828,'of','83811843'),(6829,'the','83811843'),(6830,'Thirty','83811843'),(6831,'Years','83811843'),(6832,'War','83811843'),(6833,'\r\n\r\nThe','83811843'),(6834,'Thirty','83811843'),(6835,'Years','83811843'),(6836,'War','83811843'),(6837,'which','83811843'),(6838,'had','83811843'),(6839,'begun','83811843'),(6840,'in','83811843'),(6841,'Prague','83811843'),(6842,'ended','83811843'),(6843,'there','83811843'),(6844,'too','83811843'),(6845,'In','83811843'),(6846,'1648','83811843'),(6847,'the','83811843'),(6848,'Swedes','83811843'),(6849,'had','83811843'),(6850,'succeeded','83811843'),(6851,'in','83811843'),(6852,'capturing','83811843'),(6853,'the','83811843'),(6854,'Lesser','83811843'),(6855,'Quarter','83811843'),(6856,'and','83811843'),(6857,'plundering','83811843'),(6858,'it','83811843'),(6859,'and','83811843'),(6860,'Prague','83811843'),(6861,'Castle','83811843'),(6862,'carrying','83811843'),(6863,'off','83811843'),(6864,'many','83811843'),(6865,'valuable','83811843'),(6866,'artworks','83811843'),(6867,'which','83811843'),(6868,'decorate','83811843'),(6869,'Swedish','83811843'),(6870,'castles','83811843'),(6871,'and','83811843'),(6872,'palaces','83811843'),(6873,'to','83811843'),(6874,'this','83811843'),(6875,'day','83811843'),(6876,'They','83811843'),(6877,'were','83811843'),(6878,'defeated','83811843'),(6879,'by','83811843'),(6880,'a','83811843'),(6881,'ragtag','83811843'),(6882,'force','83811843'),(6883,'of','83811843'),(6884,'Czech','83811843'),(6885,'university','83811843'),(6886,'students','83811843'),(6887,'and','83811843'),(6888,'residents','83811843'),(6889,'of','83811843'),(6890,'Pragues','83811843'),(6891,'Jewish','83811843'),(6892,'town','83811843'),(6893,'on','83811843'),(6894,'the','83811843'),(6895,'Charles','83811843'),(6896,'Bridge','83811843'),(6897,'in','83811843'),(6898,'the','83811843'),(6899,'last','83811843'),(6900,'battle','83811843'),(6901,'of','83811843'),(6902,'the','83811843'),(6903,'Thirty','83811843'),(6904,'Years','83811843'),(6905,'War','83811843'),(6906,'It','83811843'),(6907,'is','83811843'),(6908,'said','83811843'),(6909,'that','83811843'),(6910,'the','83811843'),(6911,'Swedes','83811843'),(6912,'were','83811843'),(6913,'beseeched','83811843'),(6914,'to','83811843'),(6915,'come','83811843'),(6916,'by','83811843'),(6917,'the','83811843'),(6918,'exiled','83811843'),(6919,'Protestant','83811843'),(6920,'leader','83811843'),(6921,'Comenius','83811843'),(6922,'Jan','83811843'),(6923,'Amos','83811843'),(6924,'Komensky','83811843'),(6925,'','83811843'),(6926,'he','83811843'),(6927,'had','83811843'),(6928,'wanted','83811843'),(6929,'them','83811843'),(6930,'to','83811843'),(6931,'come','83811843'),(6932,'to','83811843'),(6933,'the','83811843'),(6934,'aid','83811843'),(6935,'of','83811843'),(6936,'the','83811843'),(6937,'bynow','83811843'),(6938,'utterly','83811843'),(6939,'defeated','83811843'),(6940,'Protestant','83811843'),(6941,'forces','83811843'),(6942,'but','83811843'),(6943,'by','83811843'),(6944,'the','83811843'),(6945,'end','83811843'),(6946,'of','83811843'),(6947,'the','83811843'),(6948,'war','83811843'),(6949,'it','83811843'),(6950,'was','83811843'),(6951,'already','83811843'),(6952,'too','83811843'),(6953,'late','83811843'),(6954,'\r\n\r\nAs','83811843'),(6955,'a','83811843'),(6956,'result','83811843'),(6957,'of','83811843'),(6958,'all','83811843'),(6959,'this','83811843'),(6960,'tumult','83811843'),(6961,'the','83811843'),(6962,'Czech','83811843'),(6963,'lands','83811843'),(6964,'lost','83811843'),(6965,'the','83811843'),(6966,'power','83811843'),(6967,'to','83811843'),(6968,'elect','83811843'),(6969,'their','83811843'),(6970,'own','83811843'),(6971,'rulers','83811843'),(6972,'and','83811843'),(6973,'the','83811843'),(6974,'Czech','83811843'),(6975,'crown','83811843'),(6976,'was','83811843'),(6977,'made','83811843'),(6978,'hereditary','83811843'),(6979,'for','83811843'),(6980,'Habsburg','83811843'),(6981,'rulers','83811843'),(6982,'The','83811843'),(6983,'Habsburgs','83811843'),(6984,'banned','83811843'),(6985,'all','83811843'),(6986,'religions','83811843'),(6987,'other','83811843'),(6988,'than','83811843'),(6989,'Catholicism','83811843'),(6990,'The','83811843'),(6991,'property','83811843'),(6992,'of','83811843'),(6993,'Protestant','83811843'),(6994,'members','83811843'),(6995,'of','83811843'),(6996,'the','83811843'),(6997,'nobility','83811843'),(6998,'was','83811843'),(6999,'confiscated','83811843'),(7000,'and','83811843'),(7001,'handed','83811843'),(7002,'out','83811843'),(7003,'to','83811843'),(7004,'loyal','83811843'),(7005,'Catholics','83811843'),(7006,'\r\n\r\nThose','83811843'),(7007,'Czech','83811843'),(7008,'Protestants','83811843'),(7009,'who','83811843'),(7010,'werent','83811843'),(7011,'already','83811843'),(7012,'in','83811843'),(7013,'exile','83811843'),(7014,'were','83811843'),(7015,'forced','83811843'),(7016,'to','83811843'),(7017,'convert','83811843'),(7018,'to','83811843'),(7019,'Catholocism','83811843'),(7020,'Only','83811843'),(7021,'a','83811843'),(7022,'very','83811843'),(7023,'few','83811843'),(7024,'had','83811843'),(7025,'the','83811843'),(7026,'courage','83811843'),(7027,'to','83811843'),(7028,'continue','83811843'),(7029,'to','83811843'),(7030,'practice','83811843'),(7031,'their','83811843'),(7032,'religion','83811843'),(7033,'in','83811843'),(7034,'secret','83811843'),(7035,'\r\n\r\n\r\n\r\nThe','83811843'),(7036,'population','83811843'),(7037,'of','83811843'),(7038,'the','83811843'),(7039,'country','83811843'),(7040,'had','83811843'),(7041,'been','83811843'),(7042,'halved','83811843'),(7043,'by','83811843'),(7044,'the','83811843'),(7045,'sundry','83811843'),(7046,'aftermath','83811843'),(7047,'of','83811843'),(7048,'the','83811843'),(7049,'Battle','83811843'),(7050,'of','83811843'),(7051,'the','83811843'),(7052,'White','83811843'),(7053,'Mountain','83811843'),(7054,'and','83811843'),(7055,'as','83811843'),(7056,'fewer','83811843'),(7057,'people','83811843'),(7058,'also','83811843'),(7059,'means','83811843'),(7060,'fewer','83811843'),(7061,'people','83811843'),(7062,'paying','83811843'),(7063,'tax','83811843'),(7064,'taxes','83811843'),(7065,'were','83811843'),(7066,'raised','83811843'),(7067,'\r\n\r\n','83811843'),(7068,'Things','83811843'),(7069,'were','83811843'),(7070,'pretty','83811843'),(7071,'bad','83811843'),(7072,'all','83811843'),(7073,'around','83811843'),(7074,'The','83811843'),(7075,'rich','83811843'),(7076,'got','83811843'),(7077,'richer','83811843'),(7078,'the','83811843'),(7079,'poor','83811843'),(7080,'got','83811843'),(7081,'poorer','83811843'),(7082,'and','83811843'),(7083,'the','83811843'),(7084,'economy','83811843'),(7085,'went','83811843'),(7086,'into','83811843'),(7087,'a','83811843'),(7088,'deep','83811843'),(7089,'recession','83811843'),(7090,'Luckily','83811843'),(7091,'it','83811843'),(7092,'was','83811843'),(7093,'high','83811843'),(7094,'time','83811843'),(7095,'for','83811843'),(7096,'the','83811843'),(7097,'Enlightenment','83811843'),(7098,'to','83811843'),(7099,'make','83811843'),(7100,'an','83811843'),(7101,'entrance','83811843'),(7102,'The','83811843'),(7103,'administrative','83811843'),(7104,'reforms','83811843'),(7105,'of','83811843'),(7106,'Maria','83811843'),(7107,'Theresa','83811843'),(7108,'and','83811843'),(7109,'her','83811843'),(7110,'son','83811843'),(7111,'Joseph','83811843'),(7112,'II','83811843'),(7113,'did','83811843'),(7114,'much','83811843'),(7115,'to','83811843'),(7116,'alleviate','83811843'),(7117,'the','83811843'),(7118,'situation','83811843'),(7119,'\r\n\r\nThese','83811843'),(7120,'two','83811843'),(7121,'rulers','83811843'),(7122,'reduced','83811843'),(7123,'the','83811843'),(7124,'privileges','83811843'),(7125,'of','83811843'),(7126,'the','83811843'),(7127,'now','83811843'),(7128,'allCatholic','83811843'),(7129,'nobility','83811843'),(7130,'who','83811843'),(7131,'are','83811843'),(7132,'also','83811843'),(7133,'','83811843'),(7134,'perhaps','83811843'),(7135,'to','83811843'),(7136,'confuse','83811843'),(7137,'us','83811843'),(7138,'all','83811843'),(7139,'','83811843'),(7140,'known','83811843'),(7141,'as','83811843'),(7142,'the','83811843'),(7143,'Estates','83811843'),(7144,'as','83811843'),(7145,'the','83811843'),(7146,'formerly','83811843'),(7147,'Protestant','83811843'),(7148,'nobility','83811843'),(7149,'had','83811843'),(7150,'also','83811843'),(7151,'been','83811843'),(7152,'called','83811843'),(7153,'They','83811843'),(7154,'expelled','83811843'),(7155,'the','83811843'),(7156,'Jesuits','83811843'),(7157,'in','83811843'),(7158,'1773','83811843'),(7159,'and','83811843'),(7160,'they','83811843'),(7161,'attempted','83811843'),(7162,'to','83811843'),(7163,'end','83811843'),(7164,'social','83811843'),(7166,'by','83811843'),(7167,'abolishing','83811843'),(7168,'serfdom','83811843'),(7169,'in','83811843'),(7170,'1781','83811843'),(7171,'In','83811843'),(7172,'the','83811843'),(7173,'same','83811843'),(7174,'year','83811843'),(7175,'they','83811843'),(7176,'issued','83811843'),(7177,'the','83811843'),(7178,'Edict','83811843'),(7179,'of','83811843'),(7180,'Tolerance','83811843'),(7181,'which','83811843'),(7182,'permitted','83811843'),(7183,'the','83811843'),(7184,'free','83811843'),(7185,'exercise','83811843'),(7186,'of','83811843'),(7187,'religion','83811843'),(7188,'and','83811843'),(7189,'the','83811843'),(7190,'secularization','83811843'),(7191,'of','83811843'),(7192,'education','83811843'),(7193,'science','83811843'),(7194,'and','83811843'),(7195,'art','83811843'),(7196,'Pragues','83811843'),(7197,'Jewish','83811843'),(7198,'town','83811843'),(7199,'is','83811843'),(7200,'called','83811843'),(7201,'Josefov','83811843'),(7202,'to','83811843'),(7203,'this','83811843'),(7204,'day','83811843'),(7205,'in','83811843'),(7206,'honor','83811843'),(7207,'of','83811843'),(7208,'Josef','83811843'),(7209,'II','83811843'),(7210,'\r\n\r\nThe','83811843'),(7211,'Industrial','83811843'),(7212,'Revolution','83811843'),(7213,'as','83811843'),(7214,'most','83811843'),(7215,'revolutions','83811843'),(7216,'do','83811843'),(7217,'started','83811843'),(7218,'off','83811843'),(7219,'small','83811843'),(7220,'at','83811843'),(7221,'the','83811843'),(7222,'end','83811843'),(7223,'of','83811843'),(7224,'the','83811843'),(7225,'18th','83811843'),(7226,'century','83811843'),(7227,'and','83811843'),(7228,'then','83811843'),(7229,'really','83811843'),(7230,'picked','83811843'),(7231,'up','83811843'),(7232,'steam','83811843'),(7233,'','83811843'),(7234,'so','83811843'),(7235,'to','83811843'),(7236,'speak','83811843'),(7237,'','83811843'),(7238,'in','83811843'),(7239,'the','83811843'),(7240,'19th','83811843'),(7241,'century','83811843'),(7242,'It','83811843'),(7243,'was','83811843'),(7244,'to','83811843'),(7245,'have','83811843'),(7246,'a','83811843'),(7247,'monumental','83811843'),(7248,'impact','83811843'),(7249,'on','83811843'),(7250,'the','83811843'),(7251,'Czech','83811843'),(7252,'lands','83811843'),(7253,'\r\n\r\nThe','83811843'),(7254,'first','83811843'),(7255,'factories','83811843'),(7256,'in','83811843'),(7257,'the','83811843'),(7258,'Austrian','83811843'),(7259,'Empire','83811843'),(7260,'were','83811843'),(7261,'built','83811843'),(7262,'in','83811843'),(7263,'the','83811843'),(7264,'mountainous','83811843'),(7265,'border','83811843'),(7266,'regions','83811843'),(7267,'of','83811843'),(7268,'the','83811843'),(7269,'Czech','83811843'),(7270,'lands','83811843'),(7271,'where','83811843'),(7272,'there','83811843'),(7273,'was','83811843'),(7274,'no','83811843'),(7275,'shortage','83811843'),(7276,'of','83811843'),(7277,'water','83811843'),(7278,'power','83811843'),(7279,'from','83811843'),(7280,'rushing','83811843'),(7281,'streams','83811843'),(7282,'and','83811843'),(7283,'rivers','83811843'),(7284,'to','83811843'),(7285,'run','83811843'),(7286,'them','83811843'),(7287,'While','83811843'),(7288,'it','83811843'),(7289,'did','83811843'),(7290,'not','83811843'),(7291,'take','83811843'),(7292,'long','83811843'),(7293,'for','83811843'),(7294,'steam','83811843'),(7295,'power','83811843'),(7296,'to','83811843'),(7297,'be','83811843'),(7298,'harnessed','83811843'),(7299,'the','83811843'),(7300,'industrial','83811843'),(7301,'boundaries','83811843'),(7302,'had','83811843'),(7303,'been','83811843'),(7304,'drawn','83811843'),(7305,'and','83811843'),(7306,'these','83811843'),(7307,'regions','83811843'),(7308,'remain','83811843'),(7309,'predominantly','83811843'),(7310,'industrial','83811843'),(7311,'to','83811843'),(7312,'this','83811843'),(7313,'day','83811843'),(7314,'\r\n\r\nRailway','83811843'),(7315,'lines','83811843'),(7316,'were','83811843'),(7317,'laid','83811843'),(7318,'in','83811843'),(7319,'the','83811843'),(7320,'Czech','83811843'),(7321,'lands','83811843'),(7322,'by','83811843'),(7323,'Jan','83811843'),(7324,'Perner','83811843'),(7325,'','83811843'),(7326,'who','83811843'),(7327,'met','83811843'),(7328,'his','83811843'),(7329,'death','83811843'),(7330,'when','83811843'),(7331,'he','83811843'),(7332,'hit','83811843'),(7333,'his','83811843'),(7334,'head','83811843'),(7335,'against','83811843'),(7336,'a','83811843'),(7337,'pole','83811843'),(7338,'while','83811843'),(7339,'leaning','83811843'),(7340,'out','83811843'),(7341,'of','83811843'),(7342,'the','83811843'),(7343,'window','83811843'),(7344,'of','83811843'),(7345,'a','83811843'),(7346,'moving','83811843'),(7347,'train','83811843'),(7348,'','83811843'),(7349,'an','83811843'),(7350,'activity','83811843'),(7351,'which','83811843'),(7352,'has','83811843'),(7353,'been','83811843'),(7354,'forbidden','83811843'),(7355,'in','83811843'),(7356,'this','83811843'),(7357,'country','83811843'),(7358,'since','83811843'),(7359,'the','83811843'),(7360,'Czech','83811843'),(7361,'railway','83811843'),(7362,'pioneers','83811843'),(7363,'tragic','83811843'),(7364,'accident','83811843'),(7365,'','83811843'),(7366,'Trams','83811843'),(7367,'mostly','83811843'),(7368,'constructed','83811843'),(7369,'by','83811843'),(7370,'the','83811843'),(7371,'Czech','83811843'),(7372,'Thomas','83811843'),(7373,'Edison','83811843'),(7374,'Frantisek','83811843'),(7375,'Krizik','83811843'),(7376,'began','83811843'),(7377,'to','83811843'),(7378,'carry','83811843'),(7379,'people','83811843'),(7380,'around','83811843'),(7381,'on','83811843'),(7382,'their','83811843'),(7383,'errands','83811843'),(7384,'in','83811843'),(7385,'and','83811843'),(7386,'between','83811843'),(7387,'major','83811843'),(7388,'towns','83811843'),(7389,'in','83811843'),(7390,'those','83811843'),(7391,'days','83811843'),(7392,'tram','83811843'),(7393,'lines','83811843'),(7394,'connected','83811843'),(7395,'the','83811843'),(7396,'cities','83811843'),(7397,'of','83811843'),(7398,'Bratislava','83811843'),(7399,'Budapest','83811843'),(7400,'and','83811843'),(7401,'Vienna','83811843'),(7402,'to','83811843'),(7403,'each','83811843'),(7404,'other','83811843'),(7405,'','83811843'),(7406,'about','83811843'),(7407,'a','83811843'),(7408,'onehour','83811843'),(7409,'ride','83811843'),(7410,'It','83811843'),(7411,'was','83811843'),(7412,'at','83811843'),(7413,'this','83811843'),(7414,'time','83811843'),(7415,'too','83811843'),(7416,'that','83811843'),(7417,'Gregor','83811843'),(7418,'Mendel','83811843'),(7419,'','83811843'),(7420,'was','83811843'),(7421,'conducting','83811843'),(7422,'his','83811843'),(7423,'famous','83811843'),(7424,'experiments','83811843'),(7425,'on','83811843'),(7426,'hereditary','83811843'),(7427,'with','83811843'),(7428,'peas','83811843'),(7429,'in','83811843'),(7430,'a','83811843'),(7431,'monastery','83811843'),(7432,'in','83811843'),(7433,'Moravia','83811843'),(7434,'and','83811843'),(7435,'that','83811843'),(7436,'Jan','83811843'),(7437,'Evangelista','83811843'),(7438,'Purkyne','83811843'),(7439,'peered','83811843'),(7440,'into','83811843'),(7441,'his','83811843'),(7442,'microscope','83811843'),(7443,'one','83811843'),(7444,'day','83811843'),(7445,'to','83811843'),(7446,'discover','83811843'),(7447,'a','83811843'),(7448,'cell','83811843'),(7449,'looking','83811843'),(7450,'back','83811843'),(7451,'at','83811843'),(7452,'him','83811843'),(7453,'he','83811843'),(7454,'was','83811843'),(7455,'the','83811843'),(7456,'first','83811843'),(7457,'person','83811843'),(7458,'to','83811843'),(7459,'recognize','83811843'),(7460,'it','83811843'),(7461,'as','83811843'),(7462,'such','83811843'),(7463,'\r\n\r\n','83811843'),(7464,'The','83811843'),(7465,'major','83811843'),(7466,'architectural','83811843'),(7467,'styles','83811843'),(7468,'of','83811843'),(7469,'the','83811843'),(7470,'time','83811843'),(7471,'were','83811843'),(7472,'Classicist','83811843'),(7473,'and','83811843'),(7474,'Empire','83811843'),(7475,'both','83811843'),(7476,'of','83811843'),(7477,'which','83811843'),(7478,'used','83811843'),(7479,'classical','83811843'),(7480,'Greek','83811843'),(7481,'and','83811843'),(7482,'Roman','83811843'),(7483,'motifs','83811843'),(7484,'in','83811843'),(7485,'a','83811843'),(7486,'balanced','83811843'),(7487,'and','83811843'),(7488,'simple','83811843'),(7489,'design','83811843'),(7490,'Two','83811843'),(7491,'buildings','83811843'),(7492,'which','83811843'),(7493,'are','83811843'),(7494,'closely','83811843'),(7495,'associated','83811843'),(7496,'with','83811843'),(7497,'Mozarts','83811843'),(7498,'stay','83811843'),(7499,'in','83811843'),(7500,'Prague','83811843'),(7501,'in','83811843'),(7502,'the','83811843'),(7503,'late','83811843'),(7504,'18th','83811843'),(7505,'century','83811843'),(7506,'are','83811843'),(7507,'excellent','83811843'),(7508,'examples','83811843'),(7509,'of','83811843'),(7510,'these','83811843'),(7511,'styles:','83811843'),(7512,'the','83811843'),(7513,'Estates','83811843'),(7514,'Theatre','83811843'),(7515,'in','83811843'),(7516,'which','83811843'),(7517,'Mozart','83811843'),(7518,'conducted','83811843'),(7519,'the','83811843'),(7520,'premier','83811843'),(7521,'of','83811843'),(7522,'Don','83811843'),(7523,'Giovanni','83811843'),(7524,'is','83811843'),(7525,'Classicist','83811843'),(7526,'and','83811843'),(7527,'the','83811843'),(7528,'Bertramka','83811843'),(7529,'villa','83811843'),(7530,'where','83811843'),(7531,'he','83811843'),(7532,'stayed','83811843'),(7533,'with','83811843'),(7534,'the','83811843'),(7535,'Dusek','83811843'),(7536,'family','83811843'),(7537,'is','83811843'),(7538,'one','83811843'),(7539,'of','83811843'),(7540,'the','83811843'),(7541,'purest','83811843'),(7542,'examples','83811843'),(7543,'of','83811843'),(7544,'Empire','83811843'),(7545,'that','83811843'),(7546,'exists','83811843'),(7547,'in','83811843'),(7548,'the','83811843'),(7549,'Czech','83811843'),(7550,'Republic','83811843'),(7551,'But','83811843'),(7552,'we','83811843'),(7553,'digress','83811843'),(7554,'\r\n\r\n','83811843'),(7555,'Industrialization','83811843'),(7556,'was','83811843'),(7557,'not','83811843'),(7558,'the','83811843'),(7559,'only','83811843'),(7560,'big','83811843'),(7561,'change','83811843'),(7562,'taking','83811843'),(7563,'place','83811843'),(7564,'in','83811843'),(7565,'the','83811843'),(7566,'Austrian','83811843'),(7567,'Empire','83811843'),(7568,'at','83811843'),(7569,'this','83811843'),(7570,'time','83811843'),(7571,'The','83811843'),(7572,'Czech','83811843'),(7573,'nation','83811843'),(7574,'like','83811843'),(7575,'most','83811843'),(7576,'of','83811843'),(7577,'the','83811843'),(7578,'others','83811843'),(7579,'under','83811843'),(7580,'Austrian','83811843'),(7581,'rule','83811843'),(7582,'was','83811843'),(7583,'also','83811843'),(7584,'going','83811843'),(7585,'through','83811843'),(7586,'political','83811843'),(7587,'and','83811843'),(7588,'cultural','83811843'),(7589,'changes','83811843'),(7590,'leading','83811843'),(7591,'to','83811843'),(7592,'demands','83811843'),(7593,'for','83811843'),(7594,'greater','83811843'),(7595,'autonomy','83811843'),(7596,'and','83811843'),(7597,'self','83811843'),(7598,'determination','83811843'),(7599,'for','83811843'),(7600,'the','83811843'),(7601,'different','83811843'),(7602,'nations','83811843'),(7603,'under','83811843'),(7604,'Austrian','83811843'),(7605,'rule','83811843'),(7606,'\r\n\r\nIn','83811843'),(7607,'this','83811843'),(7608,'country','83811843'),(7609,'the','83811843'),(7610,'push','83811843'),(7611,'for','83811843'),(7612,'autonomy','83811843'),(7613,'was','83811843'),(7614,'known','83811843'),(7615,'as','83811843'),(7616,'the','83811843'),(7617,'Czech','83811843'),(7618,'National','83811843'),(7619,'Revival','83811843'),(7620,'movement','83811843'),(7621,'Narodni','83811843'),(7622,'obrozeni','83811843'),(7623,'The','83811843'),(7624,'dominant','83811843'),(7625,'political','83811843'),(7626,'leaders','83811843'),(7627,'of','83811843'),(7628,'the','83811843'),(7629,'movement','83811843'),(7630,'','83811843'),(7631,'Frantisek','83811843'),(7632,'Palacky','83811843'),(7633,'Frantisek','83811843'),(7634,'Ladislav','83811843'),(7635,'Rieger','83811843'),(7636,'and','83811843'),(7637,'Karel','83811843'),(7638,'Havlicek','83811843'),(7639,'Borovsky','83811843'),(7640,'','83811843'),(7641,'were','83811843'),(7642,'liberals','83811843'),(7643,'This','83811843'),(7644,'meant','83811843'),(7645,'that','83811843'),(7646,'they','83811843'),(7647,'wanted','83811843'),(7648,'reforms','83811843'),(7649,'within','83811843'),(7650,'the','83811843'),(7651,'Austrian','83811843'),(7652,'monarchy','83811843'),(7653,'but','83811843'),(7654,'did','83811843'),(7655,'not','83811843'),(7656,'want','83811843'),(7657,'independence','83811843'),(7658,'for','83811843'),(7659,'the','83811843'),(7660,'Czech','83811843'),(7661,'lands','83811843'),(7662,'This','83811843'),(7663,'brought','83811843'),(7664,'them','83811843'),(7665,'into','83811843'),(7666,'conflict','83811843'),(7667,'with','83811843'),(7668,'the','83811843'),(7669,'democrats','83811843'),(7670,'who','83811843'),(7671,'were','83811843'),(7672,'republican','83811843'),(7673,'and','83811843'),(7674,'fiercely','83811843'),(7675,'antiMonarchy','83811843'),(7676,'\r\n\r\nBut','83811843'),(7677,'the','83811843'),(7678,'Czech','83811843'),(7679,'National','83811843'),(7680,'Revival','83811843'),(7681,'movement','83811843'),(7682,'almost','83811843'),(7683,'had','83811843'),(7684,'more','83811843'),(7685,'to','83811843'),(7686,'do','83811843'),(7687,'with','83811843'),(7688,'culture','83811843'),(7689,'than','83811843'),(7690,'with','83811843'),(7691,'politics','83811843'),(7692,'Frantisek','83811843'),(7693,'Palacky','83811843'),(7694,'and','83811843'),(7695,'Karel','83811843'),(7696,'Havlicek','83811843'),(7697,'Borovsky','83811843'),(7698,'who','83811843'),(7699,'are','83811843'),(7700,'mentioned','83811843'),(7701,'above','83811843'),(7702,'for','83811843'),(7703,'their','83811843'),(7704,'political','83811843'),(7705,'efforts','83811843'),(7706,'were','83811843'),(7707,'both','83811843'),(7708,'writers','83811843'),(7709,'Czech','83811843'),(7710,'Literature','83811843'),(7711,'enjoyed','83811843'),(7712,'a','83811843'),(7713,'Golden','83811843'),(7714,'Age','83811843'),(7715,'during','83811843'),(7716,'the','83811843'),(7717,'Czech','83811843'),(7718,'National','83811843'),(7719,'Revival','83811843'),(7720,'as','83811843'),(7721,'the','83811843'),(7722,'Czech','83811843'),(7723,'language','83811843'),(7724,'','83811843'),(7725,'which','83811843'),(7726,'had','83811843'),(7727,'all','83811843'),(7728,'but','83811843'),(7729,'died','83811843'),(7730,'out','83811843'),(7731,'under','83811843'),(7732,'Habsburg','83811843'),(7733,'rule','83811843'),(7734,'','83811843'),(7735,'was','83811843'),(7736,'rediscovered','83811843'),(7737,'Other','83811843'),(7738,'notable','83811843'),(7739,'writers','83811843'),(7740,'of','83811843'),(7741,'the','83811843'),(7742,'time','83811843'),(7743,'include','83811843'),(7744,'Bozena','83811843'),(7745,'Nemcova','83811843'),(7746,'Karel','83811843'),(7747,'Hynek','83811843'),(7748,'Macha','83811843'),(7749,'who','83811843'),(7750,'published','83811843'),(7751,'the','83811843'),(7752,'epic','83811843'),(7753,'lyrical','83811843'),(7754,'poem','83811843'),(7755,'Maj','83811843'),(7756,'then','83811843'),(7757,'died','83811843'),(7758,'of','83811843'),(7759,'pneumonia','83811843'),(7760,'he','83811843'),(7761,'caught','83811843'),(7762,'while','83811843'),(7763,'fighting','83811843'),(7764,'a','83811843'),(7765,'fire','83811843'),(7766,'one','83811843'),(7767,'month','83811843'),(7768,'before','83811843'),(7769,'he','83811843'),(7770,'was','83811843'),(7771,'to','83811843'),(7772,'be','83811843'),(7773,'married','83811843'),(7774,'and','83811843'),(7775,'Josef','83811843'),(7776,'Jungmann','83811843'),(7777,'','83811843'),(7778,'who','83811843'),(7779,'put','83811843'),(7780,'together','83811843'),(7781,'the','83811843'),(7782,'first','83811843'),(7783,'modern','83811843'),(7784,'Czech','83811843'),(7785,'dictionary','83811843'),(7786,'\r\n\r\nMany','83811843'),(7787,'popular','83811843'),(7788,'books','83811843'),(7789,'retelling','83811843'),(7790,'the','83811843'),(7791,'old','83811843'),(7792,'Czech','83811843'),(7793,'legends','83811843'),(7794,'of','83811843'),(7795,'Libuse','83811843'),(7796,'and','83811843'),(7797,'Sarka','83811843'),(7798,'and','83811843'),(7799,'Bivoj','83811843'),(7800,'and','83811843'),(7801,'Bruncvik','83811843'),(7802,'were','83811843'),(7803,'published','83811843'),(7804,'at','83811843'),(7805,'this','83811843'),(7806,'time','83811843'),(7807,'and','83811843'),(7808,'some','83811843'),(7809,'of','83811843'),(7810,'the','83811843'),(7811,'leaders','83811843'),(7812,'of','83811843'),(7813,'the','83811843'),(7814,'Czech','83811843'),(7815,'National','83811843'),(7816,'Revival','83811843'),(7817,'even','83811843'),(7818,'falsified','83811843'),(7819,'ancient','83811843'),(7820,'13th','83811843'),(7821,'century','83811843'),(7822,'texts','83811843'),(7823,'of','83811843'),(7824,'these','83811843'),(7825,'legends','83811843'),(7826,'which','83811843'),(7827,'they','83811843'),(7828,'claimed','83811843'),(7829,'to','83811843'),(7830,'have','83811843'),(7831,'found','83811843'),(7832,'in','83811843'),(7833,'a','83811843'),(7834,'cave','83811843'),(7835,'somewhere','83811843'),(7836,'Perhaps','83811843'),(7837,'the','83811843'),(7838,'only','83811843'),(7839,'authority','83811843'),(7840,'in','83811843'),(7841,'the','83811843'),(7842,'movement','83811843'),(7843,'who','83811843'),(7844,'publicly','83811843'),(7845,'denied','83811843'),(7846,'the','83811843'),(7847,'authenticity','83811843'),(7848,'of','83811843'),(7849,'the','83811843'),(7850,'texts','83811843'),(7851,'was','83811843'),(7852,'a','83811843'),(7853,'young','83811843'),(7854,'university','83811843'),(7855,'professor','83811843'),(7856,'by','83811843'),(7857,'name','83811843'),(7858,'of','83811843'),(7859,'Tomas','83811843'),(7860,'Garrigue','83811843'),(7861,'Masaryk','83811843'),(7862,'and','83811843'),(7863,'he','83811843'),(7864,'was','83811843'),(7865,'passionately','83811843'),(7866,'detested','83811843'),(7867,'by','83811843'),(7868,'the','83811843'),(7869,'other','83811843'),(7870,'leaders','83811843'),(7871,'for','83811843'),(7872,'doing','83811843'),(7873,'so','83811843'),(7874,'','83811843'),(7875,'\r\n\r\nBut','83811843'),(7876,'we','83811843'),(7877,'digress','83811843'),(7878,'yet','83811843'),(7879,'again','83811843'),(7880,'France','83811843'),(7881,'had','83811843'),(7882,'its','83811843'),(7883,'infamous','83811843'),(7884,'revolution','83811843'),(7885,'in','83811843'),(7886,'1848','83811843'),(7887,'In','83811843'),(7888,'the','83811843'),(7889,'same','83811843'),(7890,'year','83811843'),(7891,'in','83811843'),(7892,'the','83811843'),(7893,'Czech','83811843'),(7894,'lands','83811843'),(7895,'the','83811843'),(7896,'feudal','83811843'),(7897,'system','83811843'),(7898,'was','83811843'),(7899,'abolished','83811843'),(7900,'leading','83811843'),(7901,'to','83811843'),(7902,'waves','83811843'),(7903,'of','83811843'),(7904,'emigration','83811843'),(7905,'much','83811843'),(7906,'of','83811843'),(7907,'it','83811843'),(7908,'to','83811843'),(7909,'the','83811843'),(7910,'New','83811843'),(7911,'World','83811843'),(7912,'','83811843'),(7913,'particularly','83811843'),(7914,'to','83811843'),(7915,'the','83811843'),(7916,'United','83811843'),(7917,'States','83811843'),(7918,'In','83811843'),(7919,'June','83811843'),(7920,'1848','83811843'),(7921,'a','83811843'),(7922,'PanSlavic','83811843'),(7923,'Congress','83811843'),(7924,'convened','83811843'),(7925,'in','83811843'),(7926,'Prague','83811843'),(7927,'to','83811843'),(7928,'consider','83811843'),(7929,'possible','83811843'),(7930,'ways','83811843'),(7931,'of','83811843'),(7932,'convincing','83811843'),(7933,'the','83811843'),(7934,'Habsburgs','83811843'),(7935,'to','83811843'),(7936,'transform','83811843'),(7937,'their','83811843'),(7938,'empire','83811843'),(7939,'into','83811843'),(7940,'a','83811843'),(7941,'federative','83811843'),(7942,'state','83811843'),(7943,'of','83811843'),(7944,'equal','83811843'),(7945,'nations','83811843'),(7946,'something','83811843'),(7947,'like','83811843'),(7948,'a','83811843'),(7949,'United','83811843'),(7950,'States','83811843'),(7951,'of','83811843'),(7952,'Austria','83811843'),(7953,'Suddenly','83811843'),(7954,'the','83811843'),(7955,'discussions','83811843'),(7956,'were','83811843'),(7957,'interrupted','83811843'),(7958,'by','83811843'),(7959,'an','83811843'),(7960,'aimless','83811843'),(7961,'rebellion','83811843'),(7962,'inspired','83811843'),(7963,'by','83811843'),(7964,'the','83811843'),(7965,'French','83811843'),(7966,'Revolution','83811843'),(7967,'and','83811843'),(7968,'including','83811843'),(7969,'dramatic','83811843'),(7970,'baracades','83811843'),(7971,'in','83811843'),(7972,'the','83811843'),(7973,'streets','83811843'),(7974,'which','83811843'),(7975,'was','83811843'),(7976,'led','83811843'),(7977,'by','83811843'),(7978,'bored','83811843'),(7979,'students','83811843'),(7980,'and','83811843'),(7981,'the','83811843'),(7982,'most','83811843'),(7983,'radical','83811843'),(7984,'of','83811843'),(7985,'the','83811843'),(7986,'radical','83811843'),(7987,'democrats','83811843'),(7988,'\r\n\r\nThe','83811843'),(7989,'rebellion','83811843'),(7990,'was','83811843'),(7991,'effortlessly','83811843'),(7992,'put','83811843'),(7993,'down','83811843'),(7994,'by','83811843'),(7995,'the','83811843'),(7996,'local','83811843'),(7997,'Austrian','83811843'),(7998,'leader','83811843'),(7999,'Prince','83811843'),(8000,'Windischgratz','83811843'),(8001,'','83811843'),(8002,'who','83811843'),(8003,'declared','83811843'),(8004,'martial','83811843'),(8005,'law','83811843'),(8006,'and','83811843'),(8007,'on','83811843'),(8008,'June','83811843'),(8009,'16','83811843'),(8010,'1848','83811843'),(8011,'even','83811843'),(8012,'bombarded','83811843'),(8013,'Prague','83811843'),(8014,'from','83811843'),(8015,'Petrin','83811843'),(8016,'Hill','83811843'),(8017,'In','83811843'),(8018,'this','83811843'),(8019,'way','83811843'),(8020,'both','83811843'),(8021,'the','83811843'),(8022,'revolt','83811843'),(8023,'and','83811843'),(8024,'the','83811843'),(8025,'PanSlavic','83811843'),(8026,'congress','83811843'),(8027,'both','83811843'),(8028,'came','83811843'),(8029,'to','83811843'),(8030,'a','83811843'),(8031,'premature','83811843'),(8032,'end','83811843'),(8033,'leaving','83811843'),(8034,'the','83811843'),(8035,'question','83811843'),(8036,'of','83811843'),(8037,'the','83811843'),(8038,'future','83811843'),(8039,'shape','83811843'),(8040,'of','83811843'),(8041,'the','83811843'),(8042,'Austrian','83811843'),(8043,'Empire','83811843'),(8044,'utterly','83811843'),(8045,'unresolved','83811843'),(8046,'In','83811843'),(8047,'a','83811843'),(8048,'strange','83811843'),(8049,'aside','83811843'),(8050,'to','83811843'),(8051,'this','83811843'),(8052,'episode','83811843'),(8053,'Prince','83811843'),(8054,'Windischgratzs','83811843'),(8055,'wife','83811843'),(8056,'lost','83811843'),(8057,'her','83811843'),(8058,'life','83811843'),(8059,'in','83811843'),(8060,'all','83811843'),(8061,'this','83811843'),(8062,'commotion','83811843'),(8063,'','83811843'),(8064,'shot','83811843'),(8065,'through','83811843'),(8066,'a','83811843'),(8067,'window','83811843'),(8068,'while','83811843'),(8069,'she','83811843'),(8070,'was','83811843'),(8071,'in','83811843'),(8072,'her','83811843'),(8073,'apartment','83811843'),(8074,'To','83811843'),(8075,'this','83811843'),(8076,'day','83811843'),(8077,'nobody','83811843'),(8078,'knows','83811843'),(8079,'who','83811843'),(8080,'did','83811843'),(8081,'the','83811843'),(8082,'shooting','83811843'),(8083,'or','83811843'),(8084,'why','83811843'),(8085,'\r\n\r\nScared','83811843'),(8086,'by','83811843'),(8087,'both','83811843'),(8088,'the','83811843'),(8089,'French','83811843'),(8090,'Revolution','83811843'),(8091,'and','83811843'),(8092,'the','83811843'),(8093,'summer','83811843'),(8094,'rebellion','83811843'),(8095,'in','83811843'),(8096,'Prague','83811843'),(8097,'Austria','83811843'),(8098,'introduced','83811843'),(8099,'something','83811843'),(8100,'akin','83811843'),(8101,'to','83811843'),(8102,'martial','83811843'),(8103,'law','83811843'),(8104,'in','83811843'),(8105,'the','83811843'),(8106,'whole','83811843'),(8107,'of','83811843'),(8108,'the','83811843'),(8109,'Empire','83811843'),(8110,'to','83811843'),(8111,'discourage','83811843'),(8112,'republican','83811843'),(8113,'efforts','83811843'),(8114,'at','83811843'),(8115,'independence','83811843'),(8116,'Autonomy','83811843'),(8117,'movements','83811843'),(8118,'throughout','83811843'),(8119,'the','83811843'),(8120,'Austrian','83811843'),(8121,'Empire','83811843'),(8122,'were','83811843'),(8123,'suppressed','83811843'),(8124,'But','83811843'),(8125,'as','83811843'),(8126,'revolutionary','83811843'),(8127,'movements','83811843'),(8128,'have','83811843'),(8129,'a','83811843'),(8130,'tendency','83811843'),(8131,'of','83811843'),(8132,'doing','83811843'),(8133,'this','83811843'),(8134,'one','83811843'),(8135,'did','83811843'),(8136,'not','83811843'),(8137,'die','83811843'),(8138,'down;','83811843'),(8139,'it','83811843'),(8140,'just','83811843'),(8141,'sat','83811843'),(8142,'around','83811843'),(8143,'simmering','83811843'),(8144,'below','83811843'),(8145,'the','83811843'),(8146,'ostensibly','83811843'),(8147,'calm','83811843'),(8148,'surface','83811843'),(8149,'of','83811843'),(8150,'things','83811843'),(8151,'Tensions','83811843'),(8152,'did','83811843'),(8153,'not','83811843'),(8154,'decrease','83811843'),(8155,'On','83811843'),(8156,'the','83811843'),(8157,'contrary','83811843'),(8158,'\r\n\r\nThe','83811843'),(8159,'Austrian','83811843'),(8160,'Empire','83811843'),(8161,'of','83811843'),(8162,'the','83811843'),(8163,'time','83811843'),(8164,'was','83811843'),(8165,'massive','83811843'),(8166,'and','83811843'),(8167,'contained','83811843'),(8168,'the','83811843'),(8169,'territories','83811843'),(8170,'of','83811843'),(8171,'many','83811843'),(8172,'modernday','83811843'),(8173,'countries','83811843'),(8174,'Most','83811843'),(8175,'of','83811843'),(8176,'these','83811843'),(8177,'nationalities','83811843'),(8178,'were','83811843'),(8179,'clamoring','83811843'),(8180,'for','83811843'),(8181,'autonomy','83811843'),(8182,'\r\n\r\nIn','83811843'),(8183,'the','83811843'),(8184,'1860s','83811843'),(8185,'this','83811843'),(8186,'pressure','83811843'),(8187,'led','83811843'),(8188,'the','83811843'),(8189,'Habsburgs','83811843'),(8190,'to','83811843'),(8191,'transform','83811843'),(8192,'the','83811843'),(8193,'Austrian','83811843'),(8194,'Empire','83811843'),(8195,'into','83811843'),(8196,'the','83811843'),(8197,'dualist','83811843'),(8198,'AustroHungarian','83811843'),(8199,'constitutional','83811843'),(8200,'monarchy','83811843'),(8201,'This','83811843'),(8202,'was','83811843'),(8203,'just','83811843'),(8204,'hunkeydorey','83811843'),(8205,'by','83811843'),(8206,'the','83811843'),(8207,'Hungarians','83811843'),(8208,'but','83811843'),(8209,'was','83811843'),(8210,'not','83811843'),(8211,'exactly','83811843'),(8212,'appreciated','83811843'),(8213,'by','83811843'),(8214,'most','83811843'),(8215,'of','83811843'),(8216,'the','83811843'),(8217,'other','83811843'),(8218,'ethnic','83811843'),(8219,'nations','83811843'),(8220,'within','83811843'),(8221,'what','83811843'),(8222,'was','83811843'),(8223,'now','83811843'),(8224,'the','83811843'),(8225,'AustroHungarian','83811843'),(8226,'Empire','83811843'),(8227,'\r\n\r\nThe','83811843'),(8228,'Czechs','83811843'),(8229,'were','83811843'),(8230,'united','83811843'),(8231,'in','83811843'),(8232,'their','83811843'),(8233,'opposition','83811843'),(8234,'to','83811843'),(8235,'the','83811843'),(8236,'new','83811843'),(8237,'dual','83811843'),(8238,'system','83811843'),(8239,'but','83811843'),(8240,'they','83811843'),(8241,'were','83811843'),(8242,'divided','83811843'),(8243,'among','83811843'),(8244,'themselves','83811843'),(8245,'as','83811843'),(8246,'to','83811843'),(8247,'what','83811843'),(8248,'they','83811843'),(8249,'wanted','83811843'),(8250,'to','83811843'),(8251,'do','83811843'),(8252,'about','83811843'),(8253,'it','83811843'),(8254,'These','83811843'),(8255,'divisions','83811843'),(8256,'grew','83811843'),(8257,'deeper','83811843'),(8258,'as','83811843'),(8259,'the','83811843'),(8260,'19th','83811843'),(8261,'century','83811843'),(8262,'progressed','83811843'),(8263,'\r\n\r\nThere','83811843'),(8264,'were','83811843'),(8265,'a','83811843'),(8266,'number','83811843'),(8267,'of','83811843'),(8268,'rival','83811843'),(8269,'political','83811843'),(8270,'factions:','83811843'),(8271,'the','83811843'),(8272,'Czech','83811843'),(8273,'National','83811843'),(8274,'Party','83811843'),(8275,'split','83811843'),(8276,'into','83811843'),(8277,'two','83811843'),(8278,'camps:','83811843'),(8279,'the','83811843'),(8280,'conservative','83811843'),(8281,'Old','83811843'),(8282,'Czechs','83811843'),(8283,'and','83811843'),(8284,'the','83811843'),(8285,'liberal','83811843'),(8286,'Young','83811843'),(8287,'Czechs;','83811843'),(8288,'the','83811843'),(8289,'Czech','83811843'),(8290,'Social','83811843'),(8291,'Democratic','83811843'),(8292,'Party','83811843'),(8293,'founded','83811843'),(8294,'in','83811843'),(8295,'1878;','83811843'),(8296,'the','83811843'),(8297,'progressives','83811843'),(8298,'who','83811843'),(8299,'favored','83811843'),(8300,'the','83811843'),(8301,'policies','83811843'),(8302,'of','83811843'),(8303,'Tomas','83811843'),(8304,'Masaryk;','83811843'),(8305,'the','83811843'),(8306,'Agrarian','83811843'),(8307,'party;','83811843'),(8308,'the','83811843'),(8309,'Christian','83811843'),(8310,'Socialists;','83811843'),(8311,'the','83811843'),(8312,'National','83811843'),(8313,'Socialists;','83811843'),(8314,'and','83811843'),(8315,'the','83811843'),(8316,'Radical','83811843'),(8317,'Progressives','83811843'),(8318,'\r\n\r\nThe','83811843'),(8319,'majority','83811843'),(8320,'of','83811843'),(8321,'the','83811843'),(8322,'Czech','83811843'),(8323,'political','83811843'),(8324,'parties','83811843'),(8325,'supported','83811843'),(8326,'a','83811843'),(8327,'program','83811843'),(8328,'calling','83811843'),(8329,'for','83811843'),(8330,'the','83811843'),(8331,'restoration','83811843'),(8332,'of','83811843'),(8333,'the','83811843'),(8334,'Czech','83811843'),(8335,'state','83811843'),(8336,'in','83811843'),(8337,'its','83811843'),(8338,'historical','83811843'),(8339,'borders','83811843'),(8340,'','83811843'),(8341,'but','83811843'),(8342,'within','83811843'),(8343,'the','83811843'),(8344,'framework','83811843'),(8345,'of','83811843'),(8346,'the','83811843'),(8347,'Austrian','83811843'),(8348,'Empire','83811843'),(8349,'Again','83811843'),(8350,'each','83811843'),(8351,'party','83811843'),(8352,'had','83811843'),(8353,'a','83811843'),(8354,'different','83811843'),(8355,'idea','83811843'),(8356,'of','83811843'),(8357,'exactly','83811843'),(8358,'how','83811843'),(8359,'this','83811843'),(8360,'goal','83811843'),(8361,'should','83811843'),(8362,'be','83811843'),(8363,'accomplished','83811843'),(8364,'\r\n\r\nThe','83811843'),(8365,'turn','83811843'),(8366,'of','83811843'),(8367,'the','83811843'),(8368,'19th','83811843'),(8369,'and','83811843'),(8370,'20th','83811843'),(8371,'centuries','83811843'),(8372,'was','83811843'),(8373,'characterized','83811843'),(8374,'by','83811843'),(8375,'growing','83811843'),(8376,'economic','83811843'),(8377,'and','83811843'),(8378,'political','83811843'),(8379,'freedom','83811843'),(8380,'for','83811843'),(8381,'the','83811843'),(8382,'Czechs','83811843'),(8383,'and','83811843'),(8384,'by','83811843'),(8385,'outstanding','83811843'),(8386,'acheivements','83811843'),(8387,'on','83811843'),(8388,'the','83811843'),(8389,'part','83811843'),(8390,'of','83811843'),(8391,'Czechs','83811843'),(8392,'in','83811843'),(8393,'culture','83811843'),(8394,'medicine','83811843'),(8395,'and','83811843'),(8396,'science','83811843'),(8397,'Architectural','83811843'),(8398,'trends','83811843'),(8399,'at','83811843'),(8400,'the','83811843'),(8401,'end','83811843'),(8402,'of','83811843'),(8403,'the','83811843'),(8404,'century','83811843'),(8405,'were','83811843'),(8406,'romantic','83811843'),(8407,'copies','83811843'),(8408,'of','83811843'),(8409,'past','83811843'),(8410,'styles','83811843'),(8411,'like','83811843'),(8412,'NeoGothic','83811843'),(8413,'These','83811843'),(8414,'romantic','83811843'),(8415,'enthusiasts','83811843'),(8416,'sometimes','83811843'),(8417,'did','83811843'),(8418,'more','83811843'),(8419,'harm','83811843'),(8420,'than','83811843'),(8421,'good','83811843'),(8422,'as','83811843'),(8423,'in','83811843'),(8424,'the','83811843'),(8425,'case','83811843'),(8426,'of','83811843'),(8427,'the','83811843'),(8428,'reconstruction','83811843'),(8429,'of','83811843'),(8430,'Karlstejn','83811843'),(8431,'Castle','83811843'),(8432,'It','83811843'),(8433,'is','83811843'),(8434,'because','83811843'),(8435,'of','83811843'),(8436,'this','83811843'),(8437,'illfated','83811843'),(8438,'reconstruction','83811843'),(8439,'that','83811843'),(8440,'Karlstejn','83811843'),(8441,'does','83811843'),(8442,'not','83811843'),(8443,'qualify','83811843'),(8444,'for','83811843'),(8445,'the','83811843'),(8446,'UNESCO','83811843'),(8447,'World','83811843'),(8448,'Heritage','83811843'),(8449,'list','83811843'),(8450,'today','83811843'),(8451,'In','83811843'),(8452,'other','83811843'),(8453,'cases','83811843'),(8454,'they','83811843'),(8455,'just','83811843'),(8456,'did','83811843'),(8457,'silly','83811843'),(8458,'things','83811843'),(8459,'like','83811843'),(8460,'build','83811843'),(8461,'fake','83811843'),(8462,'ancient','83811843'),(8463,'ruins','83811843'),(8464,'in','83811843'),(8465,'Prague','83811843'),(8466,'parks','83811843'),(8467,'perhaps','83811843'),(8468,'to','83811843'),(8469,'go','83811843'),(8470,'along','83811843'),(8471,'with','83811843'),(8472,'their','83811843'),(8473,'ancient','83811843'),(8474,'legend','83811843'),(8475,'texts','83811843'),(8476,'The','83811843'),(8477,'Czech','83811843'),(8478,'writers','83811843'),(8479,'and','83811843'),(8480,'artists','83811843'),(8481,'Jan','83811843'),(8482,'Neruda','83811843'),(8483,'Alois','83811843'),(8484,'Jirasek','83811843'),(8485,'Mikulas','83811843'),(8486,'Ales','83811843'),(8487,'Bedrich','83811843'),(8488,'Smetana','83811843'),(8489,'Antonin','83811843'),(8490,'Dvorak','83811843'),(8491,'','83811843'),(8492,'Alfons','83811843'),(8493,'Mucha','83811843'),(8494,'and','83811843'),(8495,'Frantisek','83811843'),(8496,'Bilek','83811843'),(8497,'all','83811843'),(8498,'lived','83811843'),(8499,'and','83811843'),(8500,'worked','83811843'),(8501,'at','83811843'),(8502,'this','83811843'),(8503,'time','83811843'),(8504,'The','83811843'),(8505,'National','83811843'),(8506,'Theater','83811843'),(8507,'National','83811843'),(8508,'Museum','83811843'),(8509,'and','83811843'),(8510,'Rudolfinum','83811843'),(8511,'were','83811843'),(8512,'built','83811843'),(8513,'at','83811843'),(8514,'the','83811843'),(8515,'turn','83811843'),(8516,'of','83811843'),(8517,'the','83811843'),(8518,'century','83811843'),(8519,'and','83811843'),(8520,'the','83811843'),(8521,'first','83811843'),(8522,'films','83811843'),(8523,'in','83811843'),(8524,'the','83811843'),(8525,'Czech','83811843'),(8526,'Republic','83811843'),(8527,'were','83811843'),(8528,'made','83811843'),(8529,'in','83811843'),(8530,'1898','83811843'),(8531,'\r\n\r\nThe','83811843'),(8532,'battle','83811843'),(8533,'for','83811843'),(8534,'universal','83811843'),(8535,'suffrage','83811843'),(8536,'within','83811843'),(8537,'the','83811843'),(8538,'AustroHungarian','83811843'),(8539,'state','83811843'),(8540,'was','83811843'),(8541,'won','83811843'),(8542,'in','83811843'),(8543,'1907','83811843'),(8544,'All','83811843'),(8545,'men','83811843'),(8546,'in','83811843'),(8547,'the','83811843'),(8548,'Czech','83811843'),(8549,'lands','83811843'),(8550,'regardless','83811843'),(8551,'of','83811843'),(8552,'economic','83811843'),(8553,'status','83811843'),(8554,'could','83811843'),(8555,'vote','83811843'),(8556,'','83811843'),(8557,'women','83811843'),(8558,'in','83811843'),(8559,'the','83811843'),(8560,'Czech','83811843'),(8561,'lands','83811843'),(8562,'did','83811843'),(8563,'not','83811843'),(8564,'get','83811843'),(8565,'the','83811843'),(8566,'vote','83811843'),(8567,'until','83811843'),(8568,'1919','83811843'),(8569,'But','83811843'),(8570,'most','83811843'),(8571,'of','83811843'),(8572,'the','83811843'),(8573,'rest','83811843'),(8574,'of','83811843'),(8575,'the','83811843'),(8576,'political','83811843'),(8577,'advances','83811843'),(8578,'made','83811843'),(8579,'by','83811843'),(8580,'the','83811843'),(8581,'Czechs','83811843'),(8582,'came','83811843'),(8583,'into','83811843'),(8584,'being','83811843'),(8585,'in','83811843'),(8586,'a','83811843'),(8587,'sort','83811843'),(8588,'of','83811843'),(8589,'fuzzy','83811843'),(8590,'grey','83811843'),(8591,'area','83811843'),(8592,'The','83811843'),(8593,'constitutional','83811843'),(8594,'status','83811843'),(8595,'of','83811843'),(8596,'the','83811843'),(8597,'Czech','83811843'),(8598,'lands','83811843'),(8599,'within','83811843'),(8600,'the','83811843'),(8601,'framework','83811843'),(8602,'of','83811843'),(8603,'the','83811843'),(8604,'Monarchy','83811843'),(8605,'remained','83811843'),(8606,'an','83811843'),(8607,'open','83811843'),(8608,'and','83811843'),(8609,'','83811843'),(8610,'in','83811843'),(8611,'Prague','83811843'),(8612,'at','83811843'),(8613,'least','83811843'),(8614,'','83811843'),(8615,'a','83811843'),(8616,'muchdebated','83811843'),(8617,'question','83811843'),(8618,'\r\n\r\nWell','83811843'),(8619,'while','83811843'),(8620,'Czech','83811843'),(8621,'nationalists','83811843'),(8622,'were','83811843'),(8623,'busy','83811843'),(8624,'sitting','83811843'),(8625,'in','83811843'),(8626,'pubs','83811843'),(8627,'drinking','83811843'),(8628,'beer','83811843'),(8629,'and','83811843'),(8630,'debating','83811843'),(8631,'how','83811843'),(8632,'best','83811843'),(8633,'to','83811843'),(8634,'effect','83811843'),(8635,'the','83811843'),(8636,'changes','83811843'),(8637,'they','83811843'),(8638,'wanted','83811843'),(8639,'to','83811843'),(8640,'see','83811843'),(8641,'implemented','83811843'),(8642,'in','83811843'),(8643,'the','83811843'),(8644,'AustroHungarian','83811843'),(8645,'government','83811843'),(8646,'members','83811843'),(8647,'of','83811843'),(8648,'other','83811843'),(8649,'nations','83811843'),(8650,'within','83811843'),(8651,'the','83811843'),(8652,'Empire','83811843'),(8653,'were','83811843'),(8654,'also','83811843'),(8655,'pressing','83811843'),(8656,'for','83811843'),(8657,'reforms','83811843'),(8658,'and','83811843'),(8659,'for','83811843'),(8660,'independence','83811843'),(8661,'It','83811843'),(8662,'was','83811843'),(8663,'these','83811843'),(8664,'pressures','83811843'),(8665,'that','83811843'),(8666,'led','83811843'),(8667,'Serbian','83811843'),(8668,'nationalist','83811843'),(8669,'Gavrillo','83811843'),(8670,'Princip','83811843'),(8671,'to','83811843'),(8672,'assassinate','83811843'),(8673,'the','83811843'),(8674,'Archduke','83811843'),(8675,'Francis','83811843'),(8676,'Ferdinand','83811843'),(8677,'the','83811843'),(8678,'heir','83811843'),(8679,'to','83811843'),(8680,'the','83811843'),(8681,'Austrian','83811843'),(8682,'throne','83811843'),(8683,'on','83811843'),(8684,'June','83811843'),(8685,'28','83811843'),(8686,'1914','83811843'),(8687,'precipitating','83811843'),(8688,'World','83811843'),(8689,'War','83811843'),(8690,'I','83811843'),(8691,'Princip','83811843'),(8692,'was','83811843'),(8693,'locked','83811843'),(8694,'up','83811843'),(8695,'for','83811843'),(8696,'this','83811843'),(8697,'deed','83811843'),(8698,'and','83811843'),(8699,'spent','83811843'),(8700,'the','83811843'),(8701,'rest','83811843'),(8702,'of','83811843'),(8703,'his','83811843'),(8704,'days','83811843'),(8705,'at','83811843'),(8706,'the','83811843'),(8707,'prison','83811843'),(8708,'in','83811843'),(8709,'Terezin','83811843'),(8710,'Fortress','83811843'),(8711,'in','83811843'),(8712,'the','83811843'),(8713,'Czech','83811843'),(8714,'lands','83811843'),(8715,'\r\n\r\nDuring','83811843'),(8716,'the','83811843'),(8717,'course','83811843'),(8718,'of','83811843'),(8719,'World','83811843'),(8720,'War','83811843'),(8721,'I','83811843'),(8722,'the','83811843'),(8723,'Czechs','83811843'),(8724,'became','83811843'),(8725,'unified','83811843'),(8726,'in','83811843'),(8727,'their','83811843'),(8728,'opposition','83811843'),(8729,'to','83811843'),(8730,'Austrian','83811843'),(8731,'rule','83811843'),(8732,'\r\n\r\nMost','83811843'),(8733,'especially','83811843'),(8734,'AustriaHungarys','83811843'),(8735,'alignment','83811843'),(8736,'with','83811843'),(8737,'Germany','83811843'),(8738,'and','83811843'),(8739,'the','83811843'),(8740,'restriction','83811843'),(8741,'of','83811843'),(8742,'democratic','83811843'),(8743,'rights','83811843'),(8744,'in','83811843'),(8745,'the','83811843'),(8746,'Czech','83811843'),(8747,'lands','83811843'),(8748,'led','83811843'),(8749,'to','83811843'),(8750,'growing','83811843'),(8751,'opposition','83811843'),(8752,'to','83811843'),(8753,'the','83811843'),(8754,'monarchy','83811843'),(8755,'here','83811843'),(8756,'An','83811843'),(8757,'organized','83811843'),(8758,'resistance','83811843'),(8759,'began','83811843'),(8760,'to','83811843'),(8761,'develop','83811843'),(8762,'both','83811843'),(8763,'at','83811843'),(8764,'home','83811843'),(8765,'and','83811843'),(8766,'abroad','83811843'),(8767,'\r\n\r\n','83811843'),(8768,'The','83811843'),(8769,'Czech','83811843'),(8770,'university','83811843'),(8771,'professor','83811843'),(8772,'philosopher','83811843'),(8773,'and','83811843'),(8774,'politician','83811843'),(8775,'Tomas','83811843'),(8776,'Garrigue','83811843'),(8777,'Masaryk','83811843'),(8778,'the','83811843'),(8779,'same','83811843'),(8780,'one','83811843'),(8781,'who','83811843'),(8782,'doubted','83811843'),(8783,'the','83811843'),(8784,'authenticity','83811843'),(8785,'of','83811843'),(8786,'the','83811843'),(8787,'faked','83811843'),(8788,'manuscripts','83811843'),(8789,'and','83811843'),(8790,'the','83811843'),(8791,'one','83811843'),(8792,'who','83811843'),(8793,'was','83811843'),(8794,'later','83811843'),(8795,'to','83811843'),(8796,'become','83811843'),(8797,'Czechoslovakias','83811843'),(8798,'first','83811843'),(8799,'president','83811843'),(8800,'had','83811843'),(8801,'been','83811843'),(8802,'an','83811843'),(8803,'advocate','83811843'),(8804,'of','83811843'),(8805,'more','83811843'),(8806,'independence','83811843'),(8807,'for','83811843'),(8808,'the','83811843'),(8809,'Czech','83811843'),(8810,'lands','83811843'),(8811,'long','83811843'),(8812,'before','83811843'),(8813,'the','83811843'),(8814,'war','83811843'),(8815,'had','83811843'),(8816,'even','83811843'),(8817,'started','83811843'),(8818,'In','83811843'),(8819,'December','83811843'),(8820,'of','83811843'),(8821,'1914','83811843'),(8822,'he','83811843'),(8823,'went','83811843'),(8824,'abroad','83811843'),(8825,'where','83811843'),(8826,'he','83811843'),(8827,'continued','83811843'),(8828,'to','83811843'),(8829,'fight','83811843'),(8830,'for','83811843'),(8831,'Czechoslovak','83811843'),(8832,'independence','83811843'),(8833,'throughout','83811843'),(8834,'the','83811843'),(8835,'war','83811843'),(8836,'He','83811843'),(8837,'worked','83811843'),(8838,'closely','83811843'),(8839,'with','83811843'),(8840,'Czech','83811843'),(8841,'lawyer','83811843'),(8842,'Edvard','83811843'),(8843,'Benes','83811843'),(8844,'and','83811843'),(8845,'Slovak','83811843'),(8846,'astronomer','83811843'),(8847,'Milan','83811843'),(8848,'Rastislav','83811843'),(8849,'Stefanik','83811843'),(8850,'who','83811843'),(8851,'were','83811843'),(8852,'also','83811843'),(8853,'in','83811843'),(8854,'exile','83811843'),(8855,'in','83811843'),(8856,'the','83811843'),(8857,'United','83811843'),(8858,'States','83811843'),(8859,'throughout','83811843'),(8860,'the','83811843'),(8861,'conflict','83811843'),(8862,'It','83811843'),(8863,'was','83811843'),(8864,'in','83811843'),(8865,'the','83811843'),(8866,'United','83811843'),(8867,'States','83811843'),(8868,'at','83811843'),(8869,'this','83811843'),(8870,'time','83811843'),(8871,'that','83811843'),(8872,'Masaryk','83811843'),(8873,'met','83811843'),(8874,'his','83811843'),(8875,'wife','83811843'),(8876,'American','83811843'),(8877,'Charlotte','83811843'),(8878,'Garrigue','83811843'),(8879,'\r\n\r\nIt','83811843'),(8880,'was','83811843'),(8881,'there','83811843'),(8882,'too','83811843'),(8883,'that','83811843'),(8884,'Masaryk','83811843'),(8885,'Benes','83811843'),(8886,'and','83811843'),(8887,'Stefanik','83811843'),(8888,'founded','83811843'),(8889,'the','83811843'),(8890,'Czech','83811843'),(8891,'National','83811843'),(8892,'Council','83811843'),(8893,'in','83811843'),(8894,'1916','83811843'),(8895,'Over','83811843'),(8896,'time','83811843'),(8897,'this','83811843'),(8898,'organization','83811843'),(8899,'was','83811843'),(8900,'renamed','83811843'),(8901,'the','83811843'),(8902,'Czechoslovak','83811843'),(8903,'National','83811843'),(8904,'Council','83811843'),(8905,'and','83811843'),(8906,'was','83811843'),(8907,'recognized','83811843'),(8908,'as','83811843'),(8909,'the','83811843'),(8910,'valid','83811843'),(8911,'voice','83811843'),(8912,'of','83811843'),(8913,'Czechoslovakia','83811843'),(8914,'by','83811843'),(8915,'Allied','83811843'),(8916,'leaders','83811843adsd'),(8917,'Their','83811843'),(8918,'position','83811843'),(8919,'as','83811843'),(8920,'the','83811843'),(8921,'leaders','83811843'),(8922,'of','83811843'),(8923,'free','83811843'),(8924,'Czechoslovakia','83811843'),(8925,'was','83811843'),(8926,'further','83811843'),(8927,'strengthened','83811843'),(8928,'with','83811843'),(8929,'the','83811843'),(8930,'formation','83811843'),(8931,'of','83811843'),(8932,'Czechoslovak','83811843'),(8933,'military','83811843'),(8934,'units','83811843'),(8935,'known','known'),(8936,'as','83811843'),(8937,'the','83811843d'),(8938,'Czechoslovak','83811843'),(9319,'Central','83811843d'),(9320,'Powers','83811843dd'),(9321,'were','83811843dd'),(9322,'defeated','83811843dd'),(10063,'2','23'),(10065,'','4'),(10068,'',''),(10066,'',''),(10067,'',''),(10069,'',''),(10071,'',''),(10072,'','asdf'); -/*!40000 ALTER TABLE `grid50000` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `packages_plain` --- - -DROP TABLE IF EXISTS `packages_plain`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `packages_plain` ( - `Id` int(11) NOT NULL AUTO_INCREMENT, - `Package` varchar(250) COLLATE utf8_bin NOT NULL, - `Priority` varchar(250) COLLATE utf8_bin NOT NULL, - `Section` varchar(250) COLLATE utf8_bin NOT NULL, - `Installed-Size` varchar(250) COLLATE utf8_bin NOT NULL, - `Maintainer` varchar(250) COLLATE utf8_bin NOT NULL, - `Architecture` varchar(250) COLLATE utf8_bin NOT NULL, - `Source` varchar(250) COLLATE utf8_bin NOT NULL, - `Version` varchar(250) COLLATE utf8_bin NOT NULL, - `Filename` varchar(250) COLLATE utf8_bin NOT NULL, - `Size` varchar(250) COLLATE utf8_bin NOT NULL, - `Description` varchar(250) COLLATE utf8_bin NOT NULL, - `Homepage` varchar(250) COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=MyISAM AUTO_INCREMENT=26595 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `packages_plain` --- - -LOCK TABLES `packages_plain` WRITE; -/*!40000 ALTER TABLE `packages_plain` DISABLE KEYS */; -INSERT INTO `packages_plain` VALUES (1,'acx100-source','extra','contrib/kernel','296','Stefano Canepa ','all','acx100','20080210-1.1','pool/contrib/a/acx100/acx100-source_20080210-1.1_all.deb','229468','ACX100/ACX111 wireless network drivers source','http://acx100.sourceforge.net/'),(2,'alien-arena-browser','extra','contrib/games','160','Debian Games Team ','all','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-browser_7.0-1_all.deb','37128','stand alone server browser for Alien Arena','http://red.planetarena.org'),(3,'alien-arena-server','extra','contrib/games','260','Debian Games Team ','i386','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-server_7.0-1_i386.deb','130272','Dedicated server for Alien Arena','http://red.planetarena.org'),(4,'alien-arena','extra','contrib/games','1204','Debian Games Team ','i386','','7.0-1','pool/contrib/a/alien-arena/alien-arena_7.0-1_i386.deb','579978','Standalone 3D first person online deathmatch shooter','http://red.planetarena.org'),(5,'alsa-firmware-loaders','extra','contrib/sound','228','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/contrib/a/alsa-tools/alsa-firmware-loaders_1.0.21-1_i386.deb','32758','ALSA software loaders for specific hardware','http://www.alsa-project.org/'),(6,'amoeba','optional','contrib/x11','276','Steinar H. Gunderson ','i386','','1.1-20','pool/contrib/a/amoeba/amoeba_1.1-20_i386.deb','94052','fast-paced, polished OpenGL demonstration by Excess',''),(7,'atari800','optional','contrib/otherosfs','1848','Antonin Kral ','i386','','2.1.0-1','pool/contrib/a/atari800/atari800_2.1.0-1_i386.deb','763238','Atari emulator for X/curses/SDL',''),(8,'avifile-divx-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-divx-plugin_0.7.48~20090503.ds-1_i386.deb','950','Divx4Linux video de/encoding plugin for libavifile','http://avifile.sf.net'),(9,'avifile-win32-plugin','optional','contrib/video','268','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-win32-plugin_0.7.48~20090503.ds-1_i386.deb','97404','Win32 audio/video plugin for libavifile','http://avifile.sf.net'),(10,'avifile-xvid-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-xvid-plugin_0.7.48~20090503.ds-1_i386.deb','928','XviD video encoding plugin for libavifile','http://avifile.sf.net'),(11,'b43-fwcutter','optional','contrib/utils','108','Rene Engelhard ','i386','','1:012-1','pool/contrib/b/b43-fwcutter/b43-fwcutter_012-1_i386.deb','17094','Utility for extracting Broadcom 43xx firmware','http://wireless.kernel.org/en/users/Drivers/b43'),(12,'bgoffice-dict-downloader','extra','contrib/text','68','Debian Add-ons Bulgaria Project ','all','','0.03','pool/contrib/b/bgoffice-dict-downloader/bgoffice-dict-downloader_0.03_all.deb','6374','download dictionaries for gbgoffice',''),(13,'cbedic','optional','contrib/text','92','Anton Zinoviev ','i386','cbedic (4.0-2)','4.0-2+b3','pool/contrib/c/cbedic/cbedic_4.0-2+b3_i386.deb','24864','Text-mode Bulgarian/English Dictionary',''),(14,'chocolate-doom','optional','contrib/games','668','Debian Games Team ','i386','','1.2.1-1','pool/contrib/c/chocolate-doom/chocolate-doom_1.2.1-1_i386.deb','304982','Doom engine closely-compatible with vanilla doom','http://chocolate-doom.org/'),(15,'cl-sql-oracle','extra','contrib/lisp','140','Kevin M. Rosenberg ','all','cl-sql','4.1.1-1','pool/contrib/c/cl-sql/cl-sql-oracle_4.1.1-1_all.deb','34340','CLSQL database backend, Oracle','http://clsql.b9.com/'),(16,'cl-umlisp-orf','optional','contrib/lisp','20','Kevin M. Rosenberg ','all','','3.3.2-2','pool/contrib/c/cl-umlisp-orf/cl-umlisp-orf_3.3.2-2_all.deb','4024','Common Lisp Unified Medical Language System Interface, ORF','http://files.b9.com/umlisp-orf/'),(17,'cl-umlisp','optional','contrib/lisp','220','Kevin M. Rosenberg ','all','','1:2007ac.2-5','pool/contrib/c/cl-umlisp/cl-umlisp_2007ac.2-5_all.deb','37870','Common Lisp interface for the Unified Medical Language System','http://files.b9.com/umlisp/'),(18,'cltl','optional','contrib/doc','92','Debian Common Lisp Team ','all','','1.0.26','pool/contrib/c/cltl/cltl_1.0.26_all.deb','8874','Common Lisp the Language, second edition, book (Pre-ANSI)',''),(19,'crafty-books-medium','optional','contrib/games','25600','Oliver Korff ','all','','1.0.debian1-1','pool/contrib/c/crafty-books-medium/crafty-books-medium_1.0.debian1-1_all.deb','12890724','Medium size opening books for the crafty chess engine',''),(20,'crafty-books-medtosmall','optional','contrib/games','3732','Oliver Korff ','all','','1.0.debian1-1','pool/contrib/c/crafty-books-medtosmall/crafty-books-medtosmall_1.0.debian1-1_all.deb','1899430','Medium-to-small size opening books for crafty chess engine',''),(21,'crafty-books-small','optional','contrib/games','1232','Oliver Korff ','all','','1.0.debian1-1','pool/contrib/c/crafty-books-small/crafty-books-small_1.0.debian1-1_all.deb','528438','Small-size opening books for crafty chess engine',''),(22,'dosemu','optional','contrib/otherosfs','5768','Bart Martens ','i386','','1.4.0+svn.1828-3','pool/contrib/d/dosemu/dosemu_1.4.0+svn.1828-3_i386.deb','2422360','The Linux DOS Emulator','http://www.dosemu.org/'),(23,'dynagen','optional','contrib/net','1688','Erik Wenzel ','all','','0.11.0-4','pool/contrib/d/dynagen/dynagen_0.11.0-4_all.deb','821012','Cisco 7200 Router Emulator Command Line Interface','http://dynagen.org/'),(24,'dynare-matlab','optional','contrib/math','588','Debian Octave Group ','all','dynare','4.0.4-3','pool/contrib/d/dynare/dynare-matlab_4.0.4-3_all.deb','78422','MEX files for MATLAB users of Dynare','http://www.dynare.org/'),(25,'e-uae-dbg','extra','contrib/debug','8924','Stephan Sürken ','i386','e-uae','0.8.29-WIP4-7','pool/contrib/e/e-uae/e-uae-dbg_0.8.29-WIP4-7_i386.deb','3179146','The Egalitarian Ubiquitous Amiga Emulator (debugging)','http://www.rcdrummond.net/uae'),(26,'e-uae','extra','contrib/otherosfs','3412','Stephan Sürken ','i386','','0.8.29-WIP4-7','pool/contrib/e/e-uae/e-uae_0.8.29-WIP4-7_i386.deb','946138','The Egalitarian Ubiquitous Amiga Emulator','http://www.rcdrummond.net/uae'),(27,'easyspice','optional','contrib/electronics','292','Gudjon I. Gudjonsson ','i386','','0.6.8-2','pool/contrib/e/easyspice/easyspice_0.6.8-2_i386.deb','67692','A graphical frontend to the Spice simulator','http://easy-spice.sourceforge.net'),(28,'esix','optional','contrib/otherosfs','137','Vince Mulhollon ','all','','1-2','pool/contrib/e/esix/esix_1-2_all.deb','47044','PDP-8 Engineering and Scientific Interpreter eXtended',''),(29,'exult-studio','extra','contrib/games','1868','JordàPolo ','i386','exult','1.2-13','pool/contrib/e/exult/exult-studio_1.2-13_i386.deb','577280','tools for editing and viewing exult games','http://exult.sourceforge.net/'),(30,'exult','extra','contrib/games','2180','JordàPolo ','i386','','1.2-13','pool/contrib/e/exult/exult_1.2-13_i386.deb','978562','engine for Ultima VII (BG, FOV, SI, SS)','http://exult.sourceforge.net/'),(31,'festvox-don','extra','contrib/sound','836','Matthias Urlichs ','all','','1.4.0-4','pool/contrib/f/festvox-don/festvox-don_1.4.0-4_all.deb','646986','minimal British English male speaker for festival',''),(32,'festvox-rablpc16k','extra','contrib/sound','7488','Matthias Urlichs ','all','','1.4.0-2','pool/contrib/f/festvox-rablpc16k/festvox-rablpc16k_1.4.0-2_all.deb','5359618','British English male speaker for festival, 16khz sample rate',''),(33,'festvox-rablpc8k','extra','contrib/sound','4380','Matthias Urlichs ','all','','1.4.0-2','pool/contrib/f/festvox-rablpc8k/festvox-rablpc8k_1.4.0-2_all.deb','3115688','British English male speaker for festival, 8khz sample rate',''),(34,'flashplugin-nonfree-extrasound','optional','contrib/sound','60','Petter Reinholdtsen ','i386','','0.0.svn2431-3','pool/contrib/f/flashplugin-nonfree-extrasound/flashplugin-nonfree-extrasound_0.0.svn2431-3_i386.deb','7952','Adobe Flash Player platform support library for Esound and OSS',''),(35,'flashplugin-nonfree','optional','contrib/web','132','Bart Martens ','i386','','1:2.8','pool/contrib/f/flashplugin-nonfree/flashplugin-nonfree_2.8_i386.deb','17848','Adobe Flash Player - browser plugin','http://wiki.debian.org/FlashPlayer'),(36,'freemind','optional','contrib/text','604','Eric Lavarde ','all','','0.7.1-6','pool/contrib/f/freemind/freemind_0.7.1-6_all.deb','402962','A Java Program for creating and viewing Mindmaps',''),(37,'funguloids','extra','contrib/games','20544','Debian Games Team ','i386','funguloids (1.06-8)','1.06-8+b1','pool/contrib/f/funguloids/funguloids_1.06-8+b1_i386.deb','14779856','space-flying-mushroom-picking-simulator game','http://funguloids.sourceforge.net'),(38,'game-data-packager','optional','contrib/games','168','Debian Games Team ','all','','22','pool/contrib/g/game-data-packager/game-data-packager_22_all.deb','48516','Installer for game data files',''),(39,'cpp-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/cpp-doc_2_i386.deb','2740','documentation for the GNU C preprocessor (cpp)',''),(40,'gcc-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gcc-doc_2_i386.deb','2840','documentation for the GNU compilers (gcc, gobjc, g++)',''),(41,'gcj-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gcj-doc_2_i386.deb','2862','documentation for the GNU Java tools (gcj, gij)',''),(42,'gfortran-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gfortran-doc_2_i386.deb','2724','documentation for the GNU Fortran Compiler (gfortran)',''),(43,'gnat-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gnat-doc_2_i386.deb','2686','documentation for the GNU Ada Compiler (gnat)',''),(44,'glest','optional','contrib/games','1156','Debian Games Team ','i386','','3.2.2-1','pool/contrib/g/glest/glest_3.2.2-1_i386.deb','439766','a free 3D real-time customizable strategy game','http://www.glest.org/'),(45,'gnome-speech-dectalk','optional','contrib/libs','136','Mario Lang ','i386','gnome-speech','1:0.4.25-1','pool/contrib/g/gnome-speech/gnome-speech-dectalk_0.4.25-1_i386.deb','39810','GNOME text-to-speech library (Fonix DECtalk engine support)',''),(46,'gnome-speech-ibmtts','optional','contrib/libs','144','Mario Lang ','i386','gnome-speech','1:0.4.25-1','pool/contrib/g/gnome-speech/gnome-speech-ibmtts_0.4.25-1_i386.deb','39588','GNOME text-to-speech library (IBMTTS engine support)',''),(47,'gnome-speech-swift','optional','contrib/libs','136','Mario Lang ','i386','gnome-speech','1:0.4.25-1','pool/contrib/g/gnome-speech/gnome-speech-swift_0.4.25-1_i386.deb','38410','GNOME text-to-speech library (Cepstral swift engine support)',''),(48,'gnuboy-sdl','optional','contrib/games','216','Davide Puricelli (evo) ','i386','gnuboy','1.0.3-5','pool/contrib/g/gnuboy/gnuboy-sdl_1.0.3-5_i386.deb','77692','SDL binaries for gnuboy - Game Boy Emulator',''),(49,'gnuboy-svga','optional','contrib/games','212','Davide Puricelli (evo) ','i386','gnuboy','1.0.3-5','pool/contrib/g/gnuboy/gnuboy-svga_1.0.3-5_i386.deb','77268','SVGALIB binaries for gnuboy - Game Boy Emulator',''),(50,'gnuboy-x','optional','contrib/games','216','Davide Puricelli (evo) ','i386','gnuboy','1.0.3-5','pool/contrib/g/gnuboy/gnuboy-x_1.0.3-5_i386.deb','79218','X binaries for gnuboy - Game Boy Emulator',''),(51,'gnuvd-gnome','optional','contrib/text','36','Guus Sliepen ','all','gnuvd','1.0.10-1','pool/contrib/g/gnuvd/gnuvd-gnome_1.0.10-1_all.deb','5678','Query the online Dutch Van Dale dictionary - GNOME frontend','http://www.djcbsoftware.nl/code/gnuvd/'),(52,'gnuvd','optional','contrib/text','32','Guus Sliepen ','i386','','1.0.10-1','pool/contrib/g/gnuvd/gnuvd_1.0.10-1_i386.deb','10926','Query the online Dutch Van Dale dictionary','http://www.djcbsoftware.nl/code/gnuvd/'),(53,'googleearth-package','optional','contrib/misc','68','Wesley J. Landaker ','all','','0.5.6','pool/contrib/g/googleearth-package/googleearth-package_0.5.6_all.deb','10346','utility to automatically build a Debian package of Google Earth',''),(54,'grinvin','optional','contrib/math','152','Debian Java Maintainers ','i386','','1.2-1','pool/contrib/g/grinvin/grinvin_1.2-1_i386.deb','28944','interactive software for studying graphs and their invariants','http://www.grinvin.org/'),(55,'gstreamer0.10-pitfdll','optional','contrib/libs','256','Sebastian Dröge ','i386','','0.9.1.1+cvs20080215-1','pool/contrib/g/gstreamer0.10-pitfdll/gstreamer0.10-pitfdll_0.9.1.1+cvs20080215-1_i386.deb','80416','GStreamer plugin for using MS Windows binary codecs','http://sourceforge.net/projects/pitfdll/'),(56,'gtktrain','optional','contrib/x11','156','Masayuki Hatta (mhatta) ','i386','','0.9b-13','pool/contrib/g/gtktrain/gtktrain_0.9b-13_i386.deb','38922','The train-routing calculator with GTK+ interface',''),(57,'gwp','optional','contrib/games','4572','Lucas Di Pentima ','i386','','0.4.0-1.2','pool/contrib/g/gwp/gwp_0.4.0-1.2_i386.deb','1855978','a VGA Planets strategy game client for GNOME',''),(58,'hannah-foo2zjs','optional','contrib/text','100','Michael Koch ','i386','','1:1','pool/contrib/h/hannah-foo2zjs/hannah-foo2zjs_1_i386.deb','17768','Graphical firmware downloader for the foo2zjs package',''),(59,'horae','optional','contrib/science','8748','Carlo Segre ','all','','070-1','pool/contrib/h/horae/horae_070-1_all.deb','5179726','interactive graphical processing and analysis of EXAFS data','http://cars9.uchicago.edu/~ravel/software/Welcome.html'),(60,'hyperspec','optional','contrib/doc','100','Debian Common Lisp Team ','all','','1.28','pool/contrib/h/hyperspec/hyperspec_1.28_all.deb','9760','The Common Lisp ANSI-standard Hyperspec',''),(61,'ifeffit-doc','optional','contrib/doc','5016','Carlo Segre ','all','ifeffit','2:1.2.10a-5','pool/contrib/i/ifeffit/ifeffit-doc_1.2.10a-5_all.deb','2271980','IFEFFIT examples and documentation','http://cars9.uchicago.edu/ifeffit/'),(62,'ifeffit','optional','contrib/science','4672','Carlo Segre ','i386','','2:1.2.10a-5','pool/contrib/i/ifeffit/ifeffit_1.2.10a-5_i386.deb','2005186','An interactive program for XAFS analysis','http://cars9.uchicago.edu/ifeffit/'),(63,'perl-ifeffit','optional','contrib/perl','668','Carlo Segre ','i386','ifeffit','2:1.2.10a-5','pool/contrib/i/ifeffit/perl-ifeffit_1.2.10a-5_i386.deb','277810','Perl extensions for IFEFFIT','http://cars9.uchicago.edu/ifeffit/'),(64,'python-ifeffit','optional','contrib/python','1396','Carlo Segre ','i386','ifeffit','2:1.2.10a-5','pool/contrib/i/ifeffit/python-ifeffit_1.2.10a-5_i386.deb','522928','Python GUI interface and extensions for IFEFFIT','http://cars9.uchicago.edu/ifeffit/'),(65,'imgtex','optional','contrib/utils','68','Atsuhito KOHDA ','all','','0.20050123-8','pool/contrib/i/imgtex/imgtex_0.20050123-8_all.deb','6140','provides yet another math-on-the-web solution',''),(66,'ion3-scripts','extra','contrib/x11','724','Debian QA Group ','all','','20070515.debian-1','pool/contrib/i/ion3-scripts/ion3-scripts_20070515.debian-1_all.deb','133230','user-contributed add-ons to the Ion 3 window manager','http://modeemi.fi/~tuomov/repos/ion-scripts-3/'),(67,'isight-firmware-tools','extra','contrib/graphics','216','Nobuhiro Iwamatsu ','i386','','1.4.2-3','pool/contrib/i/isight-firmware-tools/isight-firmware-tools_1.4.2-3_i386.deb','34210','tools for dealing with Apple iSight firmware',''),(68,'ivtv-utils','extra','contrib/x11','396','Debian MythTV Team ','i386','','1.4.0-1','pool/contrib/i/ivtv-utils/ivtv-utils_1.4.0-1_i386.deb','132072','utilities for use with the ivtv kernel driver','http://ivtvdriver.org'),(69,'jabref','optional','contrib/tex','2836','gregor herrmann ','all','','2.5-1','pool/contrib/j/jabref/jabref_2.5-1_all.deb','2582694','graphical frontend to manage BibTeX databases','http://jabref.sourceforge.net/'),(70,'java-package','optional','contrib/java','424','Debian Java Maintainers ','all','','0.42','pool/contrib/j/java-package/java-package_0.42_all.deb','26576','utility for building Java(TM) 2 related Debian packages',''),(71,'jde','optional','contrib/devel','3804','Michael W. Olson (GNU address) ','all','','2.3.5.1-5','pool/contrib/j/jde/jde_2.3.5.1-5_all.deb','1577706','JDEE, Java Development Environment for Emacs(en)',''),(72,'jspwiki','optional','contrib/web','5964','Kalle Kivimaa ','all','','2.8.0-3.1','pool/contrib/j/jspwiki/jspwiki_2.8.0-3.1_all.deb','4414836','WikiWikiWeb clone written in Java','http://www.jspwiki.org'),(73,'kbedic','optional','contrib/text','268','Anton Zinoviev ','i386','','4.0-11','pool/contrib/k/kbedic/kbedic_4.0-11_i386.deb','72912','K Bulgarian/English Dictionary',''),(74,'lgc-pg','optional','contrib/utils','448','Debian QA Group ','i386','','0.32-3','pool/contrib/l/lgc-pg/lgc-pg_0.32-3_i386.deb','173734','LGeneral Converter for Panzer General',''),(75,'lgeneral','optional','contrib/games','1764','Debian QA Group ','i386','','1.1.1-5','pool/contrib/l/lgeneral/lgeneral_1.1.1-5_i386.deb','483824','A \"Panzer General\" - like game','http://lgames.sourceforge.net'),(76,'linux-wlan-ng-firmware','extra','contrib/kernel','224','Victor Seva ','all','linux-wlan-ng','0.2.9+dfsg-2','pool/contrib/l/linux-wlan-ng/linux-wlan-ng-firmware_0.2.9+dfsg-2_all.deb','52980','firmware files used by the linux-wlan-ng driver',''),(77,'liveice','optional','contrib/sound','148','Jochen Friedrich ','i386','','1.0-3','pool/contrib/l/liveice/liveice_1.0-3_i386.deb','56726','Live audio streaming application',''),(78,'libdbd-informix-perl','extra','contrib/perl','588','Roderick Schertler ','i386','','2008.0513-1','pool/contrib/libd/libdbd-informix-perl/libdbd-informix-perl_2008.0513-1_i386.deb','238074','Perl DBI driver for Informix',''),(79,'libdbd-oracle-perl','extra','contrib/perl','972','Peter Eisentraut ','i386','','1.21-2','pool/contrib/libd/libdbd-oracle-perl/libdbd-oracle-perl_1.21-2_i386.deb','391780','Perl DBI driver for Oracle','http://search.cpan.org/dist/DBD-Oracle/'),(80,'libgooglecharts-ruby1.8','optional','contrib/ruby','72','Ryan Niebur ','all','libgooglecharts-ruby','1.3.6-1','pool/contrib/libg/libgooglecharts-ruby/libgooglecharts-ruby1.8_1.3.6-1_all.deb','6910','Ruby library to create sexy charts using the Google API','http://googlecharts.rubyforge.org/'),(81,'libgooglecharts-ruby','optional','contrib/ruby','32','Ryan Niebur ','all','','1.3.6-1','pool/contrib/libg/libgooglecharts-ruby/libgooglecharts-ruby_1.3.6-1_all.deb','2330','Ruby library to create sexy charts using the Google API (dummy package)','http://googlecharts.rubyforge.org/'),(82,'libgrinvin-core-java-doc','optional','contrib/doc','8920','Debian Java Maintainers ','all','libgrinvin-core-java','1.2-1','pool/contrib/libg/libgrinvin-core-java/libgrinvin-core-java-doc_1.2-1_all.deb','504898','interactive software package for studying graphs (API docs)','http://www.grinvin.org/'),(83,'libgrinvin-core-java','optional','contrib/java','840','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-core-java/libgrinvin-core-java_1.2-1_all.deb','710634','interactive software package for studying graphs (core libraries)','http://www.grinvin.org/'),(84,'libgrinvin-factories-java','optional','contrib/java','144','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-factories-java/libgrinvin-factories-java_1.2-1_all.deb','92436','interactive software package for studying graphs (graph factories)','http://www.grinvin.org/'),(85,'libgrinvin-generators-java','optional','contrib/java','72','Debian Java Maintainers ','all','','1.0.1-1','pool/contrib/libg/libgrinvin-generators-java/libgrinvin-generators-java_1.0.1-1_all.deb','29028','interactive software package for studying graphs (graph generators)','http://www.grinvin.org/'),(86,'libgrinvin-graphs-java','optional','contrib/java','276','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-graphs-java/libgrinvin-graphs-java_1.2-1_all.deb','169064','interactive software package for studying graphs (standard graphs)','http://www.grinvin.org/'),(87,'libgrinvin-help-java','optional','contrib/java','188','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-help-java/libgrinvin-help-java_1.2-1_all.deb','107826','interactive software package for studying graphs (help files)','http://www.grinvin.org/'),(88,'libgrinvin-invariants-java','optional','contrib/java','232','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-invariants-java/libgrinvin-invariants-java_1.2-1_all.deb','163526','interactive software package for studying graphs (graph invariants)','http://www.grinvin.org/'),(89,'libpdfbox-java-doc','extra','contrib/doc','13044','gregor herrmann ','all','libpdfbox-java','0.7.3.dfsg-3','pool/contrib/libp/libpdfbox-java/libpdfbox-java-doc_0.7.3.dfsg-3_all.deb','804148','PDF library for Java (documentation)','http://www.pdfbox.org/'),(90,'libpdfbox-java','extra','contrib/java','4568','gregor herrmann ','all','','0.7.3.dfsg-3','pool/contrib/libp/libpdfbox-java/libpdfbox-java_0.7.3.dfsg-3_all.deb','4499600','PDF library for Java','http://www.pdfbox.org/'),(91,'libpgplot-perl','optional','contrib/perl','256','Debian Perl Group ','i386','','1:2.20-1','pool/contrib/libp/libpgplot-perl/libpgplot-perl_2.20-1_i386.deb','69092','perl interface to the pgplot plotting library','http://search.cpan.org/~kgb/PGPLOT/'),(92,'libtrain-bin','optional','contrib/misc','48','Masayuki Hatta (mhatta) ','i386','libtrain','0.9b-11','pool/contrib/libt/libtrain/libtrain-bin_0.9b-11_i386.deb','6524','Command line interface for libtrain',''),(93,'libtrain-dev','optional','contrib/libdevel','136','Masayuki Hatta (mhatta) ','i386','libtrain','0.9b-11','pool/contrib/libt/libtrain/libtrain-dev_0.9b-11_i386.deb','34800','The train-routing calculator library - development',''),(94,'libtrain1','optional','contrib/libs','184','Masayuki Hatta (mhatta) ','i386','libtrain','0.9b-11','pool/contrib/libt/libtrain/libtrain1_0.9b-11_i386.deb','53966','The train-routing calculator library - runtime',''),(95,'libydpdict2-dev','optional','contrib/libdevel','72','Marcin Owsiany ','i386','libydpdict','1.0.2-1','pool/contrib/liby/libydpdict/libydpdict2-dev_1.0.2-1_i386.deb','9632','a library for reading Collins dictionaries - development files','http://toxygen.net/ydpdict/'),(96,'libydpdict2','optional','contrib/libs','60','Marcin Owsiany ','i386','libydpdict','1.0.2-1','pool/contrib/liby/libydpdict/libydpdict2_1.0.2-1_i386.deb','10352','a library for reading Collins dictionaries','http://toxygen.net/ydpdict/'),(97,'mathematica-fonts','extra','contrib/fonts','160','Atsuhito KOHDA ','all','','10','pool/contrib/m/mathematica-fonts/mathematica-fonts_10_all.deb','26302','Installer of Mathematica fonts',''),(98,'ttf-mathematica4.1','extra','contrib/fonts','32','Atsuhito KOHDA ','all','mathematica-fonts','10','pool/contrib/m/mathematica-fonts/ttf-mathematica4.1_10_all.deb','2648','transitional dummy package',''),(99,'microcode.ctl','optional','contrib/utils','128','Giacomo Catenazzi ','i386','','1.17-13','pool/contrib/m/microcode.ctl/microcode.ctl_1.17-13_i386.deb','23230','Intel IA32/IA64 CPU Microcode Utility','http://www.urbanmyth.org/microcode/'),(100,'ttf-mscorefonts-installer','optional','contrib/fonts','196','Thijs Kinkhorst ','all','msttcorefonts','3.0','pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.0_all.deb','35886','Installer for Microsoft TrueType core fonts',''),(101,'nestra','optional','contrib/otherosfs','3788','Debian QA Group ','i386','','0.66-10','pool/contrib/n/nestra/nestra_0.66-10_i386.deb','58562','Nintendo Entertainment System emulator',''),(102,'netbeans-ide','optional','contrib/devel','340996','Debian QA Group ','all','','6.0.1+dfsg-3','pool/contrib/n/netbeans-ide/netbeans-ide_6.0.1+dfsg-3_all.deb','143850124','IDE for Java Development and More, version 6 (IDE)','http://www.netbeans.org/'),(103,'netbeans-platform','optional','contrib/devel','17052','Debian QA Group ','all','netbeans-ide','6.0.1+dfsg-3','pool/contrib/n/netbeans-ide/netbeans-platform_6.0.1+dfsg-3_all.deb','6046748','IDE for Java Development and More, version 6 (platform foundation)','http://www.netbeans.org/'),(104,'netdisco-mibs-installer','extra','contrib/net','92','Oliver Gorwits ','all','','1.3','pool/contrib/n/netdisco-mibs-installer/netdisco-mibs-installer_1.3_all.deb','12124','Netdisco MIB bundle installer package',''),(105,'nvidia-cg-toolkit','extra','contrib/libs','168','Federico Di Gregorio ','i386','','2.1.0017.deb1','pool/contrib/n/nvidia-cg-toolkit/nvidia-cg-toolkit_2.1.0017.deb1_i386.deb','36420','NVIDIA Cg Toolkit Installer','http://developer.nvidia.com/object/cg_toolkit.html'),(106,'nvidia-kernel-common','optional','contrib/kernel','40','Debian NVIDIA Maintainers ','all','','20080825+1','pool/contrib/n/nvidia-kernel-common/nvidia-kernel-common_20080825+1_all.deb','4088','NVIDIA binary kernel module common files',''),(107,'nvidia-settings','optional','contrib/x11','1900','Debian NVIDIA Maintainers ','i386','','185.18.31-1','pool/contrib/n/nvidia-settings/nvidia-settings_185.18.31-1_i386.deb','779172','Tool for configuring the NVIDIA graphics driver',''),(108,'ogre-plugins-cgprogrammanager-dbg','extra','contrib/debug','656','Debian Games Team ','i386','ogre-contrib','1.6.4-1','pool/contrib/o/ogre-contrib/ogre-plugins-cgprogrammanager-dbg_1.6.4-1_i386.deb','205496','Ogre plugin: CgProgramManager debugging symbols','http://ogre3d.org/'),(109,'ogre-plugins-cgprogrammanager','optional','contrib/libs','148','Debian Games Team ','i386','ogre-contrib','1.6.4-1','pool/contrib/o/ogre-contrib/ogre-plugins-cgprogrammanager_1.6.4-1_i386.deb','37446','Ogre plugin: CgProgramManager','http://ogre3d.org/'),(110,'open-vm-source','extra','contrib/admin','948','Debian VMware Maintainers ','all','open-vm-tools','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-source_2009.10.15-201664-1_all.deb','911094','Source for VMware guest systems driver','http://open-vm-tools.sourceforge.net/'),(111,'open-vm-toolbox','extra','contrib/admin','1260','Debian VMware Maintainers ','i386','open-vm-tools','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-toolbox_2009.10.15-201664-1_i386.deb','507116','tools and components for VMware guest systems (GUI tools)','http://open-vm-tools.sourceforge.net/'),(112,'open-vm-tools-dbg','extra','contrib/debug','5628','Debian VMware Maintainers ','i386','open-vm-tools','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-tools-dbg_2009.10.15-201664-1_i386.deb','2231002','tools and components for VMware guest systems (debug)','http://open-vm-tools.sourceforge.net/'),(113,'open-vm-tools','extra','contrib/admin','1924','Debian VMware Maintainers ','i386','','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-tools_2009.10.15-201664-1_i386.deb','648448','tools and components for VMware guest systems (CLI tools)','http://open-vm-tools.sourceforge.net/'),(114,'opendict-plugins-lingvosoft','optional','contrib/text','580','KÄ™stutis BiliÅ«nas ','all','opendict-lingvosoft','0.8-2','pool/contrib/o/opendict-lingvosoft/opendict-plugins-lingvosoft_0.8-2_all.deb','11060','plugins for OpenDict - LingvoSoft Online Dictionaries',''),(115,'openjump','optional','contrib/science','3024','Debian GIS Project ','all','','1.0-4','pool/contrib/o/openjump/openjump_1.0-4_all.deb','2681706','Open Java Unified Mapping Platform JUMP','http://jump-pilot.sourceforge.net/'),(116,'openttd','optional','contrib/games','8916','Matthijs Kooijman ','i386','','0.7.3-1','pool/contrib/o/openttd/openttd_0.7.3-1_i386.deb','3394394','reimplementation of Transport Tycoon Deluxe with enhancements','http://www.openttd.org/'),(117,'ora2pg','extra','contrib/misc','172','Julián Moreno Patiño ','all','','5.4-1','pool/contrib/o/ora2pg/ora2pg_5.4-1_all.deb','63722','Oracle to PostgreSQL database schema converter','http://ora2pg.projects.postgresql.org/'),(118,'playonlinux','optional','contrib/otherosfs','1964','Debian Games Team ','all','','3.7.1-1','pool/contrib/p/playonlinux/playonlinux_3.7.1-1_all.deb','760738','front-end for Wine','http://www.playonlinux.com/'),(119,'pose-skins','extra','contrib/otherosfs','7524','Lucas Wall ','all','','1.9-4','pool/contrib/p/pose-skins/pose-skins_1.9-4_all.deb','6743366','skins for the PalmOS Emulator',''),(120,'pose-doc','extra','contrib/doc','1344','Lucas Wall ','all','pose','3.5-9.1','pool/contrib/p/pose/pose-doc_3.5-9.1_all.deb','1232532','emulates the hardware for most Palm Computing Platform devices',''),(121,'pose-profile','extra','contrib/otherosfs','3624','Lucas Wall ','i386','pose','3.5-9.1','pool/contrib/p/pose/pose-profile_3.5-9.1_i386.deb','1106892','emulates the hardware for most Palm Computing Platform devices',''),(122,'pose','extra','contrib/otherosfs','3552','Lucas Wall ','i386','','3.5-9.1','pool/contrib/p/pose/pose_3.5-9.1_i386.deb','1094312','emulates the hardware for most Palm Computing Platform devices',''),(123,'premail','optional','contrib/mail','344','Steve Kostecke ','all','','0.46-9','pool/contrib/p/premail/premail_0.46-9_all.deb','108676','An e-mail privacy package.',''),(124,'python-psyco-doc','optional','contrib/doc','688','Alexandre Fayolle ','all','psyco-doc','1.6-1','pool/contrib/p/psyco-doc/python-psyco-doc_1.6-1_all.deb','283942','Python specializing compiler documentation','http://psyco.sourceforge.net'),(125,'pvpgn','optional','contrib/net','2268','Radu Spineanu ','i386','pvpgn (1.8.1-2)','1.8.1-2+b1','pool/contrib/p/pvpgn/pvpgn_1.8.1-2+b1_i386.deb','770554','Gaming server that emulates Battle.net(R)',''),(126,'python-cg','optional','contrib/python','440','Debian Python Modules Team ','i386','pycg','0.14.1-2','pool/contrib/p/pycg/python-cg_0.14.1-2_i386.deb','92318','nVidia Cg driver binding for Python','http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/'),(127,'python-pygpu','optional','contrib/python','176','Debian Python Modules Team ','all','pygpu','0.2.0a-629-2','pool/contrib/p/pygpu/python-pygpu_0.2.0a-629-2_all.deb','20624','embedded language for programming GPU using Python','http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/'),(128,'python-doc','optional','contrib/doc','52','Matthias Klose ','all','python-doc-defaults','2.5.2-1','pool/contrib/p/python-doc-defaults/python-doc_2.5.2-1_all.deb','7364','Documentation for the high-level object-oriented language Python',''),(129,'python-ldap-doc','optional','contrib/doc','508','Matej Vela ','all','','2.3-2','pool/contrib/p/python-ldap-doc/python-ldap-doc_2.3-2_all.deb','44280','Documentation for the Python LDAP interface module','http://python-ldap.sourceforge.net/'),(130,'python2.4-doc','optional','contrib/doc','18328','Matthias Klose ','all','','2.4.6-1','pool/contrib/p/python2.4-doc/python2.4-doc_2.4.6-1_all.deb','3470806','Documentation for the high-level object-oriented language Python (v2.4)','http://python.org/'),(131,'python2.5-doc','optional','contrib/doc','20272','Matthias Klose ','all','','2.5.4-1','pool/contrib/p/python2.5-doc/python2.5-doc_2.5.4-1_all.deb','3841314','Documentation for the high-level object-oriented language Python (v2.5)','http://python.org/'),(132,'qmail-qfilter','extra','contrib/mail','104','Adam D. McKenna ','i386','','1.5-3','pool/contrib/q/qmail-qfilter/qmail-qfilter_1.5-3_i386.deb','14058','qmail-queue filter front end',''),(133,'qmailanalog-installer','optional','contrib/mail','96','Klaus Reimer ','all','','0.70.3','pool/contrib/q/qmailanalog-installer/qmailanalog-installer_0.70.3_all.deb','8272','Installer package for building qmailanalog binary package',''),(134,'qmhandle','optional','contrib/mail','88','Marcela Tiznado ','all','','1.3.2-1','pool/contrib/q/qmhandle/qmhandle_1.3.2-1_all.deb','19454','tool to manage the qmail message queue',''),(135,'r-cran-surveillance','optional','contrib/gnu-r','4212','Debian Med Packaging Team ','i386','','1.1.2-1','pool/contrib/r/r-cran-surveillance/r-cran-surveillance_1.1.2-1_i386.deb','1390222','development and the evaluation of epidemiological outbreak detection algorithms','http://surveillance.r-forge.r-project.org'),(136,'rocksndiamonds','extra','contrib/games','1496','Dmitry E. Oboukhov ','i386','','3.2.6.1+dfsg1-5','pool/contrib/r/rocksndiamonds/rocksndiamonds_3.2.6.1+dfsg1-5_i386.deb','469152','arcade-style game','http://artsoft.org'),(137,'rott-dbg','extra','contrib/debug','1176','Debian Games Team ','i386','rott','1.1.1-2','pool/contrib/r/rott/rott-dbg_1.1.1-2_i386.deb','492636','Rise of the Triad -- The HUNT Begins (debug)','http://icculus.org/rott/'),(138,'rott','optional','contrib/games','740','Debian Games Team ','i386','','1.1.1-2','pool/contrib/r/rott/rott_1.1.1-2_i386.deb','301750','Rise of the Triad -- The HUNT Begins','http://icculus.org/rott/'),(139,'sabnzbdplus-theme-iphone','extra','contrib/net','324','JCF Ploemen (jcfp) ','all','sabnzbdplus','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus-theme-iphone_0.4.12-1_all.deb','52506','iphone interface templates for the SABnzbd+ binary newsgrabber','http://sabnzbd.org'),(140,'sabnzbdplus-theme-plush','extra','contrib/net','968','JCF Ploemen (jcfp) ','all','sabnzbdplus','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus-theme-plush_0.4.12-1_all.deb','208952','plush interface templates for the SABnzbd+ binary newsgrabber','http://sabnzbd.org'),(141,'sabnzbdplus-theme-smpl','extra','contrib/net','448','JCF Ploemen (jcfp) ','all','sabnzbdplus','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus-theme-smpl_0.4.12-1_all.deb','104524','smpl interface templates for the SABnzbd+ binary newsgrabber','http://sabnzbd.org'),(142,'sabnzbdplus','extra','contrib/net','1004','JCF Ploemen (jcfp) ','all','','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus_0.4.12-1_all.deb','205208','web-based binary newsgrabber with nzb support','http://sabnzbd.org'),(143,'sapgui-package','extra','contrib/misc','72','Guido Günther ','all','','0.0.5','pool/contrib/s/sapgui-package/sapgui-package_0.0.5_all.deb','5698','utility to build SAP GUI related Debian packages','https://honk.sigxcpu.org/piki/projects/sapgui-package/'),(144,'sauerbraten-wake6','optional','contrib/games','404','Gürkan Sengün ','all','','1.0-1','pool/contrib/s/sauerbraten-wake6/sauerbraten-wake6_1.0-1_all.deb','268560','Small but dodgy deathmatch/instagib map for the Sauerbraten game','http://wakeup.rundumbonn.de/wscm/mapping/wake6.html'),(145,'sauerbraten-dbg','extra','contrib/debug','5380','Debian Games Team ','i386','sauerbraten','0.0.20090504.dfsg-1','pool/contrib/s/sauerbraten/sauerbraten-dbg_0.0.20090504.dfsg-1_i386.deb','2172266','Debug symbols for the Sauerbraten game engine','http://sauerbraten.org/'),(146,'sauerbraten-server','extra','contrib/games','324','Debian Games Team ','i386','sauerbraten','0.0.20090504.dfsg-1','pool/contrib/s/sauerbraten/sauerbraten-server_0.0.20090504.dfsg-1_i386.deb','122296','Standalone server for the Sauerbraten game','http://sauerbraten.org/'),(147,'sauerbraten','extra','contrib/games','2180','Debian Games Team ','i386','','0.0.20090504.dfsg-1','pool/contrib/s/sauerbraten/sauerbraten_0.0.20090504.dfsg-1_i386.deb','932792','3D first-person game engine','http://sauerbraten.org/'),(148,'sdic-edict','optional','contrib/text','68','Taku YASUI ','all','sdic','2.1.3-18','pool/contrib/s/sdic/sdic-edict_2.1.3-18_all.deb','13780','installer for EDICT dictionaries for sdic',''),(149,'sdic-eijiro','optional','contrib/text','60','Taku YASUI ','all','sdic','2.1.3-18','pool/contrib/s/sdic/sdic-eijiro_2.1.3-18_all.deb','11692','installer for EIJIRO dictionaries for sdic',''),(150,'sdic-gene95','optional','contrib/text','80','Taku YASUI ','all','sdic','2.1.3-18','pool/contrib/s/sdic/sdic-gene95_2.1.3-18_all.deb','17550','installer for GENE95 dictionaries for sdic',''),(151,'sdic','optional','contrib/text','192','Taku YASUI ','all','','2.1.3-18','pool/contrib/s/sdic/sdic_2.1.3-18_all.deb','49102','Emacs interface for Japanese dictionaries',''),(152,'sivp','optional','contrib/math','2728','Shiqi Yu ','i386','','0.4.3-3','pool/contrib/s/sivp/sivp_0.4.3-3_i386.deb','2170376','Scilab Image and Video Processing toolbox','http://sivp.sourceforge.net'),(153,'sixpack','optional','contrib/science','784','Carlo Segre ','all','','1:0.66-3','pool/contrib/s/sixpack/sixpack_0.66-3_all.deb','162232','full-featured package for XAS analysis','http://www-ssrl.slac.stanford.edu/~swebb/sixpack.htm'),(154,'python-skype','extra','contrib/python','668','Debian Python Modules Team ','all','skype4py','1.0.31.0-1','pool/contrib/s/skype4py/python-skype_1.0.31.0-1_all.deb','102566','Skype API wrapper for Python','https://developer.skype.com/wiki/Skype4Py'),(155,'skysentials','extra','contrib/net','96','Rafael Laboissiere ','all','','1.0.1-4','pool/contrib/s/skysentials/skysentials_1.0.1-4_all.deb','12544','extra functionalities for Linux Skype client','http://www.kolmann.at/philipp/linux/skysentials/'),(156,'spectemu-common','optional','contrib/otherosfs','232','Colin Watson ','i386','spectemu','0.94a-9','pool/contrib/s/spectemu/spectemu-common_0.94a-9_i386.deb','64022','Fast 48k ZX Spectrum Emulator (common files)',''),(157,'spectemu-svga','optional','contrib/otherosfs','204','Colin Watson ','i386','spectemu','0.94a-9','pool/contrib/s/spectemu/spectemu-svga_0.94a-9_i386.deb','53952','Fast 48k ZX Spectrum Emulator for SVGAlib',''),(158,'spectemu-x11','optional','contrib/otherosfs','272','Colin Watson ','i386','spectemu','0.94a-9','pool/contrib/s/spectemu/spectemu-x11_0.94a-9_i386.deb','85856','Fast 48k ZX Spectrum Emulator for X11',''),(159,'sqldeveloper-package','optional','contrib/misc','88','Lazarus Long ','all','','0.2.3','pool/contrib/s/sqldeveloper-package/sqldeveloper-package_0.2.3_all.deb','17212','Oracle SQL Developer Debian package builder',''),(160,'stella','optional','contrib/otherosfs','3148','Mario Iseli ','i386','','2.2-1.1','pool/contrib/s/stella/stella_2.2-1.1_i386.deb','1145596','Atari 2600 Emulator for SDL & X windows',''),(161,'susv2','extra','contrib/doc','48','Jeff Bailey ','all','','1.1','pool/contrib/s/susv2/susv2_1.1_all.deb','2278','Fetch and install SUSv2 documentation',''),(162,'susv3','extra','contrib/doc','48','Jeff Bailey ','all','','6.1','pool/contrib/s/susv3/susv3_6.1_all.deb','2282','Fetch and install SUSv3 documentation',''),(163,'svtools','optional','contrib/misc','160','Klaus Reimer ','all','','0.5-4','pool/contrib/s/svtools/svtools_0.5-4_all.deb','14572','Utilities for daemontools and multilog',''),(164,'tightvnc-java','optional','contrib/java','204','Ola Lundqvist ','all','','1.2.7-8','pool/contrib/t/tightvnc-java/tightvnc-java_1.2.7-8_all.deb','104042','TightVNC java applet and command line program',''),(165,'tremulous-doc','optional','contrib/doc','720','Damien Laniel ','all','tremulous','1.1.0-4.1','pool/contrib/t/tremulous/tremulous-doc_1.1.0-4.1_all.deb','640890','Tremulous documentation',''),(166,'tremulous-server','optional','contrib/games','776','Damien Laniel ','i386','tremulous (1.1.0-4.1)','1.1.0-4.1+b1','pool/contrib/t/tremulous/tremulous-server_1.1.0-4.1+b1_i386.deb','353082','Tremulous server',''),(167,'tremulous','optional','contrib/games','1472','Damien Laniel ','i386','tremulous (1.1.0-4.1)','1.1.0-4.1+b1','pool/contrib/t/tremulous/tremulous_1.1.0-4.1+b1_i386.deb','672916','Aliens vs Humans, team based FPS game with elements of an RTS',''),(168,'uae-dbg','extra','contrib/debug','344','Stephan Sürken ','i386','uae','0.8.29-4','pool/contrib/u/uae/uae-dbg_0.8.29-4_i386.deb','153526','The Ubiquitous Amiga Emulator (debugging)','http://uae.coresystems.de/'),(169,'uae','optional','contrib/otherosfs','2184','Stephan Sürken ','i386','','0.8.29-4','pool/contrib/u/uae/uae_0.8.29-4_i386.deb','696094','The Ubiquitous Amiga Emulator','http://uae.coresystems.de/'),(170,'uqm-russian','extra','contrib/games','1496','Dmitry E. Oboukhov ','all','','1.0.2-5','pool/contrib/u/uqm-russian/uqm-russian_1.0.2-5_all.deb','1046348','Russian addon for \'The Ur-Quan Masters\' game','http://uqm-rus.uvw.ru'),(171,'uqm','optional','contrib/games','1420','Dmitry E. Oboukhov ','i386','','0.6.2.dfsg-9','pool/contrib/u/uqm/uqm_0.6.2.dfsg-9_i386.deb','590578','The Ur-Quan Masters - An inter-galatic adventure game','http://sc2.sourceforge.net/'),(172,'vice','optional','contrib/otherosfs','11988','Laszlo Boszormenyi (GCS) ','i386','','2.1.dfsg-3','pool/contrib/v/vice/vice_2.1.dfsg-3_i386.deb','3971358','The Versatile Commodore Emulator','http://www.viceteam.org/'),(173,'videolink','extra','contrib/video','312','Ben Hutchings ','i386','','1.2.8-1','pool/contrib/v/videolink/videolink_1.2.8-1_i386.deb','97616','assembles a DVD video filesystem from HTML pages and video files','http://womble.decadent.org.uk/software/videolink/'),(174,'vmware-view-open-client','optional','contrib/x11','1224','Debian VMware Maintainers ','i386','','4.0.0-207079+dfsg-1','pool/contrib/v/vmware-view-open-client/vmware-view-open-client_4.0.0-207079+dfsg-1_i386.deb','422592','VMware View Open Client','http://code.google.com/p/vmware-view-open-client'),(175,'vnc-java','optional','contrib/java','160','Ola Lundqvist ','all','','3.3.3r2-8','pool/contrib/v/vnc-java/vnc-java_3.3.3r2-8_all.deb','65800','VNC java applet and command line program',''),(176,'warsow-server','optional','contrib/games','636','Debian Games Team ','i386','warsow','0.42.dfsg1-1.1','pool/contrib/w/warsow/warsow-server_0.42.dfsg1-1.1_i386.deb','290596','Server and TV server for the Warsow 3D first person shooter','http://www.warsow.net/'),(177,'warsow','optional','contrib/games','3576','Debian Games Team ','i386','','0.42.dfsg1-1.1','pool/contrib/w/warsow/warsow_0.42.dfsg1-1.1_i386.deb','2127516','fast paced 3D first person shooter','http://www.warsow.net/'),(178,'wdq2wav','extra','contrib/utils','80','Kevin M. Rosenberg ','i386','','0.8.3-1','pool/contrib/w/wdq2wav/wdq2wav_0.8.3-1_i386.deb','16842','Converts a WinDAQ channel to sound .wav file','http://files.b9.com/wdq2wav/'),(179,'wnn7egg','extra','contrib/utils','680','ISHIKAWA Mutsumi ','all','','1.02-7','pool/contrib/w/wnn7egg/wnn7egg_1.02-7_all.deb','129806','Wnn-nana-tamago -- EGG Input Method with Wnn7 for Emacsen',''),(180,'x-pgp-sig-el','optional','contrib/lisp','236','Takuo KITAME ','all','','1.3.5.1-4.1','pool/contrib/x/x-pgp-sig-el/x-pgp-sig-el_1.3.5.1-4.1_all.deb','57472','X-PGP-Sig mail and news header utility for Emacs',''),(181,'xserver-xorg-video-ivtv-dbg','extra','contrib/debug','204','Debian X Strike Force ','i386','xserver-xorg-video-ivtvdev','1.1.0-1','pool/contrib/x/xserver-xorg-video-ivtvdev/xserver-xorg-video-ivtv-dbg_1.1.0-1_i386.deb','67740','X.Org X server -- IVTV display driver (debug symbols)',''),(182,'xserver-xorg-video-ivtv','extra','contrib/x11','92','Debian X Strike Force ','i386','xserver-xorg-video-ivtvdev','1.1.0-1','pool/contrib/x/xserver-xorg-video-ivtvdev/xserver-xorg-video-ivtv_1.1.0-1_i386.deb','23328','X.Org X server -- IVTV display driver',''),(183,'xtrs','extra','contrib/otherosfs','972','Branden Robinson ','i386','','4.9c-3','pool/contrib/x/xtrs/xtrs_4.9c-3_i386.deb','331780','emulator for TRS-80 Model I/III/4/4P computers',''),(184,'ydpdict','optional','contrib/text','148','Marcin Owsiany ','i386','','1.0.0-1','pool/contrib/y/ydpdict/ydpdict_1.0.0-1_i386.deb','25878','interface for Collins and Langenscheidt dictionaries','http://toxygen.net/ydpdict/'),(185,'2vcard','optional','utils','108','Martin Albisetti ','all','','0.5-3','pool/main/2/2vcard/2vcard_0.5-3_all.deb','14300','perl script to convert an addressbook to VCARD file format',''),(186,'3dchess','optional','games','144','Debian Games Team ','i386','','0.8.1-16','pool/main/3/3dchess/3dchess_0.8.1-16_i386.deb','34932','3D chess for X11',''),(187,'4g8','optional','net','72','LaMont Jones ','i386','','1.0-3','pool/main/4/4g8/4g8_1.0-3_i386.deb','12164','Packet Capture and Interception for Switched Networks',''),(188,'6tunnel','optional','net','68','Thomas Seyrat ','i386','','0.11rc2-2','pool/main/6/6tunnel/6tunnel_0.11rc2-2_i386.deb','12810','TCP proxy for non-IPv6 applications',''),(189,'9base','optional','utils','3428','Debian Suckless Maintainers ','i386','','1:4-1','pool/main/9/9base/9base_4-1_i386.deb','1148990','Plan 9 userland tools','http://tools.suckless.org/9base/'),(190,'9menu','optional','x11','76','Debian QA Group ','i386','','1.8-2','pool/main/9/9menu/9menu_1.8-2_i386.deb','14514','Creates X menus from the shell',''),(191,'9mount-dbg','extra','debug','76','Debian QA Group ','i386','9mount','1.3-7','pool/main/9/9mount/9mount-dbg_1.3-7_i386.deb','6954','plan9 filesystem (v9fs) user mount utilities (debug)','http://sqweek.dnsdojo.org/code/9mount/'),(192,'9mount','optional','admin','88','Debian QA Group ','i386','','1.3-7','pool/main/9/9mount/9mount_1.3-7_i386.deb','11604','plan9 filesystem (v9fs) user mount utilities','http://sqweek.dnsdojo.org/code/9mount/'),(193,'9wm','optional','x11','68','Decklin Foster ','i386','','1.2-9','pool/main/9/9wm/9wm_1.2-9_i386.deb','24932','emulation of the Plan 9 window manager 8-1/2',''),(194,'a2ps-perl-ja','optional','perl','76','Debian QA Group ','all','','1.45-5','pool/main/a/a2ps-perl-ja/a2ps-perl-ja_1.45-5_all.deb','14006','perl version of Miguel Santana\'s a2ps (supports KANJI)',''),(195,'a2ps','optional','text','4244','Masayuki Hatta (mhatta) ','i386','','1:4.14-1','pool/main/a/a2ps/a2ps_4.14-1_i386.deb','926602','GNU a2ps - \'Anything to PostScript\' converter and pretty-printer',''),(196,'liba52-0.7.4-dev','optional','libdevel','188','Debian multimedia packages maintainers ','i386','a52dec','0.7.4-12','pool/main/a/a52dec/liba52-0.7.4-dev_0.7.4-12_i386.deb','46194','library for decoding ATSC A/52 streams (development)','http://liba52.sourceforge.net/'),(197,'liba52-0.7.4','optional','libs','112','Debian multimedia packages maintainers ','i386','a52dec','0.7.4-12','pool/main/a/a52dec/liba52-0.7.4_0.7.4-12_i386.deb','28048','library for decoding ATSC A/52 streams','http://liba52.sourceforge.net/'),(198,'a56','extra','devel','160','Robert Millan ','i386','','1.3-5','pool/main/a/a56/a56_1.3-5_i386.deb','35270','Motorola DSP56001 assembler','http://www.zdomain.com/a56.html'),(199,'a7xpg-data','extra','games','3648','Debian Games Team ','all','a7xpg','0.11.dfsg1-4','pool/main/a/a7xpg/a7xpg-data_0.11.dfsg1-4_all.deb','3527724','chase action game - game data','http://www.asahi-net.or.jp/~cs8k-cyu/windows/a7xpg_e.html'),(200,'a7xpg','extra','games','1468','Debian Games Team ','i386','','0.11.dfsg1-4','pool/main/a/a7xpg/a7xpg_0.11.dfsg1-4_i386.deb','154902','chase action game','http://www.asahi-net.or.jp/~cs8k-cyu/windows/a7xpg_e.html'),(201,'aa3d','optional','graphics','76','Uwe Hermann ','i386','','1.0-8','pool/main/a/aa3d/aa3d_1.0-8_i386.deb','8832','ASCII art stereogram generator','http://aa-project.sourceforge.net/aa3d/'),(202,'python-aafigure','optional','python','236','Jakub Wilk ','all','aafigure','0.4-2','pool/main/a/aafigure/python-aafigure_0.4-2_all.deb','38134','ASCII art to image converter','https://launchpad.net/aafigure'),(203,'libaa-bin','optional','text','88','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa-bin_1.4p5-38_i386.deb','10070','sample programs using aalib','http://aa-project.sourceforge.net/aalib/'),(204,'libaa1-dbg','extra','debug','276','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa1-dbg_1.4p5-38_i386.deb','69292','ascii art library, debugging symbols','http://aa-project.sourceforge.net/aalib/'),(205,'libaa1-dev','optional','libdevel','556','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa1-dev_1.4p5-38_i386.deb','139610','ascii art library, development kit','http://aa-project.sourceforge.net/aalib/'),(206,'libaa1','optional','libs','180','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa1_1.4p5-38_i386.deb','58432','ascii art library','http://aa-project.sourceforge.net/aalib/'),(207,'aap-doc','optional','doc','1844','Debian QA Group ','all','aap','1.091-1','pool/main/a/aap/aap-doc_1.091-1_all.deb','676290','make-like \"expert system\" for building software (documentation)','http://www.a-a-p.org/'),(208,'aap','optional','devel','1068','Debian QA Group ','all','','1.091-1','pool/main/a/aap/aap_1.091-1_all.deb','217620','make-like \"expert system\" for building software','http://www.a-a-p.org/'),(209,'aatv','optional','video','112','Uwe Hermann ','i386','','0.3-5','pool/main/a/aatv/aatv_0.3-5_i386.deb','15892','A program to watch TV in a text-based console','http://aatv.sourceforge.net/'),(210,'abakus','optional','kde','728','Steffen Joeris ','i386','','0.91-1','pool/main/a/abakus/abakus_0.91-1_i386.deb','364282','calculator for KDE',''),(211,'abby','optional','video','316','Alejandro Garrido Mota ','i386','','0.4.4-1','pool/main/a/abby/abby_0.4.4-1_i386.deb','106806','front-end for cclive and clive','http://code.google.com/p/abby/'),(212,'abcde','optional','sound','268','Jesus Climent ','all','','2.4.0-1','pool/main/a/abcde/abcde_2.4.0-1_all.deb','115330','A Better CD Encoder','http://code.google.com/p/abcde/'),(213,'abcm2ps','optional','text','416','Anselm Lingnau ','i386','','5.9.5-1','pool/main/a/abcm2ps/abcm2ps_5.9.5-1_i386.deb','179858','Translates ABC music description files to PostScript',''),(214,'abcmidi-yaps','extra','sound','204','Anselm Lingnau ','i386','abcmidi','20070318-2','pool/main/a/abcmidi/abcmidi-yaps_20070318-2_i386.deb','74816','yet another ABC to PostScript converter',''),(215,'abcmidi','optional','sound','380','Anselm Lingnau ','i386','','20070318-2','pool/main/a/abcmidi/abcmidi_20070318-2_i386.deb','178934','converter from ABC to MIDI format and back',''),(216,'abe-data','optional','games','4136','Bart Martens ','all','abe','1.1-3','pool/main/a/abe/abe-data_1.1-3_all.deb','2950864','Side-scrolling game named \"Abe\'s Amazing Adventure\"','http://abe.sourceforge.net/'),(217,'abe','optional','games','120','Bart Martens ','i386','','1.1-3','pool/main/a/abe/abe_1.1-3_i386.deb','41766','Side-scrolling game named \"Abe\'s Amazing Adventure\"','http://abe.sourceforge.net/'),(218,'abi-compliance-checker','optional','devel','324','Ryan Niebur ','all','','1.6-1','pool/main/a/abi-compliance-checker/abi-compliance-checker_1.6-1_all.deb','41414','tool to compare ABI compatibility of shared C/C++ library versions','http://ispras.linux-foundation.org/index.php/ABI_compliance_checker'),(219,'abicheck','optional','devel','148','Angel Ramos ','all','','1.2-5','pool/main/a/abicheck/abicheck_1.2-5_all.deb','34316','binary compatibility checking tool',''),(220,'r-cran-abind','optional','gnu-r','136','Dirk Eddelbuettel ','all','abind','1.1.0-4','pool/main/a/abind/r-cran-abind_1.1.0-4_all.deb','19444','GNU R abind multi-dimensional array combination function',''),(221,'abinit-doc','extra','doc','25396','Debian Scientific Computing Team ','all','abinit','5.3.4.dfsg-3','pool/main/a/abinit/abinit-doc_5.3.4.dfsg-3_all.deb','17017858','A package for electronic structure calculations','http://www.abinit.org/'),(222,'abinit','extra','science','11996','Debian Scientific Computing Team ','i386','','5.3.4.dfsg-3','pool/main/a/abinit/abinit_5.3.4.dfsg-3_i386.deb','4697326','A package for electronic structure calculations','http://www.abinit.org/'),(223,'abiword-common','optional','editors','8628','Masayuki Hatta (mhatta) ','all','abiword','2.6.8-5','pool/main/a/abiword/abiword-common_2.6.8-5_all.deb','2005496','efficient, featureful word processor with collaboration -- common files','http://www.abisource.com/'),(224,'abiword-help','optional','doc','3136','Masayuki Hatta (mhatta) ','all','abiword','2.6.8-5','pool/main/a/abiword/abiword-help_2.6.8-5_all.deb','1256628','online help for AbiWord','http://www.abisource.com/'),(225,'abiword-plugin-goffice','optional','editors','168','Masayuki Hatta (mhatta) ','i386','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugin-goffice_2.6.8-5_i386.deb','68874','GOffice interaction plugin for AbiWord','http://www.abisource.com/'),(226,'abiword-plugin-grammar','optional','editors','104','Masayuki Hatta (mhatta) ','i386','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugin-grammar_2.6.8-5_i386.deb','45470','grammar checking plugin for AbiWord','http://www.abisource.com/'),(227,'abiword-plugin-mathview','optional','editors','344','Masayuki Hatta (mhatta) ','i386','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugin-mathview_2.6.8-5_i386.deb','129904','equation editor plugin for AbiWord','http://www.abisource.com/'),(228,'abiword-plugins','optional','editors','68','Masayuki Hatta (mhatta) ','all','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugins_2.6.8-5_all.deb','34998','transitional plugins package for AbiWord','http://www.abisource.com/'),(229,'abiword','optional','editors','7720','Masayuki Hatta (mhatta) ','i386','','2.6.8-5','pool/main/a/abiword/abiword_2.6.8-5_i386.deb','2982130','efficient, featureful word processor with collaboration','http://www.abisource.com/'),(230,'abntex','optional','tex','816','Otavio Salvador ','all','','0.9~beta2-2.1','pool/main/a/abntex/abntex_0.9~beta2-2.1_all.deb','325628','LaTeX class for writing documents in ABNT standard',''),(231,'abook','optional','mail','316','Gerfried Fuchs ','i386','','0.5.6-7','pool/main/a/abook/abook_0.5.6-7_i386.deb','80858','text-based ncurses address book application','http://abook.sourceforge.net/'),(232,'aboot-base','optional','admin','288','Steve Langasek ','all','aboot','1.0~pre20040408-3','pool/main/a/aboot/aboot-base_1.0~pre20040408-3_all.deb','76442','base files required for bootable media on Linux/Alpha',''),(233,'aboot-cross','optional','admin','64','Steve Langasek ','i386','aboot','1.0~pre20040408-3','pool/main/a/aboot/aboot-cross_1.0~pre20040408-3_i386.deb','28514','utility to create bootable ISO-Images for Linux/Alpha',''),(234,'abr2gbr','extra','graphics','60','Alice Ferrazzi ','i386','','1.0.2-1','pool/main/a/abr2gbr/abr2gbr_1.0.2-1_i386.deb','6514','Converts PhotoShop brushes to GIMP','http://www.sunnyspot.org/gimp/tools.html'),(235,'abuse-frabs','optional','games','13988','Debian Games Team ','all','','2.11-1','pool/main/a/abuse-frabs/abuse-frabs_2.11-1_all.deb','3312144','levels and graphics for Abuse',''),(236,'abuse-lib','extra','games','3844','Debian Games Team ','all','','2.00-18','pool/main/a/abuse-lib/abuse-lib_2.00-18_all.deb','834782','original levels for Abuse',''),(237,'abuse','optional','games','712','Debian Games Team ','i386','abuse-sdl','1:0.7.1-1','pool/main/a/abuse-sdl/abuse_0.7.1-1_i386.deb','316218','SDL port of the Abuse action game',''),(238,'accerciser','extra','gnome','4188','Debian Accessibility Team ','all','','1.8.0-1','pool/main/a/accerciser/accerciser_1.8.0-1_all.deb','1426622','an interactive Python accessibility explorer for the GNOME desktop',''),(239,'acct','optional','admin','356','Debian QA Group ','i386','','6.4~pre1-9','pool/main/a/acct/acct_6.4~pre1-9_i386.deb','107870','The GNU Accounting utilities for process and login accounting','http://www.gnu.org/software/acct/'),(240,'ace-of-penguins','optional','games','628','Jari Aalto ','i386','','1.2-9','pool/main/a/ace-of-penguins/ace-of-penguins_1.2-9_i386.deb','241956','graphical solitaire-games with penguin-look','http://freshmeat.net/projects/theaceofpenguins'),(241,'gperf-ace','optional','devel','224','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/gperf-ace_5.6.3-5_i386.deb','98372','ACE perfect hash function generator','http://www.cs.wustl.edu/~schmidt/ACE.html'),(242,'libace-5.6.3','optional','libs','1696','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-5.6.3_5.6.3-5_i386.deb','689618','C++ network programming framework','http://www.cs.wustl.edu/~schmidt/ACE.html'),(243,'libace-dev','optional','libdevel','8504','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-dev_5.6.3-5_i386.deb','1325252','C++ network programming framework development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(244,'libace-doc','optional','doc','46272','Debian ACE+TAO maintainers ','all','ace','5.6.3-5','pool/main/a/ace/libace-doc_5.6.3-5_all.deb','4743994','C++ network programming framework documentation','http://www.cs.wustl.edu/~schmidt/ACE.html'),(245,'libace-flreactor-5.6.3','optional','libs','204','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-flreactor-5.6.3_5.6.3-5_i386.deb','96200','ACE-GUI reactor integration for Fl','http://www.cs.wustl.edu/~schmidt/ACE.html'),(246,'libace-flreactor-dev','optional','libdevel','160','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-flreactor-dev_5.6.3-5_i386.deb','74276','ACE-GUI reactor integration for Fl development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(247,'libace-foxreactor-5.6.3','optional','libs','208','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-foxreactor-5.6.3_5.6.3-5_i386.deb','97248','ACE-GUI reactor integration for FOX','http://www.cs.wustl.edu/~schmidt/ACE.html'),(248,'libace-foxreactor-dev','optional','libdevel','160','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-foxreactor-dev_5.6.3-5_i386.deb','74230','ACE-GUI reactor integration for FOX development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(249,'libace-htbp-5.6.3','optional','libs','240','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-htbp-5.6.3_5.6.3-5_i386.deb','107744','ACE protocol over HTTP tunneling library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(250,'libace-htbp-dev','optional','libdevel','248','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-htbp-dev_5.6.3-5_i386.deb','87910','ACE protocol over HTTP tunneling library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(251,'libace-qtreactor-5.6.3','optional','libs','220','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-qtreactor-5.6.3_5.6.3-5_i386.deb','101716','ACE-GUI reactor integration for Qt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(252,'libace-qtreactor-dev','optional','libdevel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-qtreactor-dev_5.6.3-5_i386.deb','75672','ACE-GUI reactor integration for Qt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(253,'libace-rmcast-5.6.3','optional','libs','272','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-rmcast-5.6.3_5.6.3-5_i386.deb','126266','ACE reliable multicast library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(254,'libace-rmcast-dev','optional','libdevel','228','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-rmcast-dev_5.6.3-5_i386.deb','82472','ACE reliable multicast library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(255,'libace-ssl-5.6.3','optional','libs','228','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-ssl-5.6.3_5.6.3-5_i386.deb','101120','ACE secure socket layer library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(256,'libace-ssl-dev','optional','libdevel','260','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-ssl-dev_5.6.3-5_i386.deb','88334','ACE secure socket layer library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(257,'libace-tkreactor-5.6.3','optional','libs','204','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tkreactor-5.6.3_5.6.3-5_i386.deb','96608','ACE-GUI reactor integration for Tk','http://www.cs.wustl.edu/~schmidt/ACE.html'),(258,'libace-tkreactor-dev','optional','libdevel','160','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tkreactor-dev_5.6.3-5_i386.deb','74300','ACE-GUI reactor integration for Tk development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(259,'libace-tmcast-5.6.3','optional','libs','180','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tmcast-5.6.3_5.6.3-5_i386.deb','88258','ACE transactional multicast library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(260,'libace-tmcast-dev','optional','libdevel','200','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tmcast-dev_5.6.3-5_i386.deb','81234','ACE transactional multicast library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(261,'libace-xtreactor-5.6.3','optional','libs','208','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-xtreactor-5.6.3_5.6.3-5_i386.deb','96794','ACE-GUI reactor integration for Xt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(262,'libace-xtreactor-dev','optional','libdevel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-xtreactor-dev_5.6.3-5_i386.deb','74376','ACE-GUI reactor integration for Xt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(263,'libacexml-5.6.3','optional','libs','376','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libacexml-5.6.3_5.6.3-5_i386.deb','157640','ACE SAX based XML parsing library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(264,'libacexml-dev','optional','libdevel','560','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libacexml-dev_5.6.3-5_i386.deb','127808','ACE SAX based XML parsing library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(265,'libkokyu-5.6.3','optional','libs','196','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libkokyu-5.6.3_5.6.3-5_i386.deb','91536','ACE scheduling and dispatching library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(266,'libkokyu-dev','optional','libdevel','652','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libkokyu-dev_5.6.3-5_i386.deb','305204','ACE scheduling and dispatching library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(267,'libtao-1.6.3','optional','libs','8316','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-1.6.3_5.6.3-5_i386.deb','2661244','ACE based CORBA ORB core libraries','http://www.cs.wustl.edu/~schmidt/ACE.html'),(268,'libtao-dev','optional','libdevel','9748','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-dev_5.6.3-5_i386.deb','943018','ACE based CORBA ORB core libraries development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(269,'libtao-doc','optional','doc','107388','Debian ACE+TAO maintainers ','all','ace','5.6.3-5','pool/main/a/ace/libtao-doc_5.6.3-5_all.deb','10201852','ACE based CORBA ORB core libraries documentation','http://www.cs.wustl.edu/~schmidt/ACE.html'),(270,'libtao-flresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-flresource-1.6.3_5.6.3-5_i386.deb','75528','TAO-GUI reactor integration for Fl','http://www.cs.wustl.edu/~schmidt/ACE.html'),(271,'libtao-flresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-flresource-dev_5.6.3-5_i386.deb','73800','TAO-GUI reactor integration for Fl development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(272,'libtao-foxresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-foxresource-1.6.3_5.6.3-5_i386.deb','75204','TAO-GUI reactor integration for FOX','http://www.cs.wustl.edu/~schmidt/ACE.html'),(273,'libtao-foxresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-foxresource-dev_5.6.3-5_i386.deb','73826','TAO-GUI reactor integration for FOX development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(274,'libtao-orbsvcs-1.6.3','optional','libs','21556','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-orbsvcs-1.6.3_5.6.3-5_i386.deb','6254302','TAO CORBA services libraries','http://www.cs.wustl.edu/~schmidt/ACE.html'),(275,'libtao-orbsvcs-dev','optional','libdevel','11792','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-orbsvcs-dev_5.6.3-5_i386.deb','1043016','TAO CORBA services development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(276,'libtao-qtresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-qtresource-1.6.3_5.6.3-5_i386.deb','75754','TAO-GUI reactor integration for Qt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(277,'libtao-qtresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-qtresource-dev_5.6.3-5_i386.deb','73860','TAO-GUI reactor integration for Qt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(278,'libtao-tkresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-tkresource-1.6.3_5.6.3-5_i386.deb','75550','TAO-GUI reactor integration for Tk development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(279,'libtao-tkresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-tkresource-dev_5.6.3-5_i386.deb','73822','TAO-GUI reactor integration for Tk development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(280,'libtao-xtresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-xtresource-1.6.3_5.6.3-5_i386.deb','75830','TAO-GUI reactor integration for Xt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(281,'libtao-xtresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-xtresource-dev_5.6.3-5_i386.deb','73842','TAO-GUI reactor integration for Xt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(282,'mpc-ace','optional','devel','2168','Debian ACE+TAO maintainers ','all','ace','5.6.3-5','pool/main/a/ace/mpc-ace_5.6.3-5_all.deb','320292','makefile, project and workspace creator','http://www.cs.wustl.edu/~schmidt/ACE.html'),(283,'tao-concurrency','optional','devel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-concurrency_5.6.3-5_i386.deb','81642','TAO concurrency service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(284,'tao-event','optional','devel','144','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-event_5.6.3-5_i386.deb','76556','TAO event service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(285,'tao-ft','optional','devel','356','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-ft_5.6.3-5_i386.deb','155760','TAO fault tolerant services','http://www.cs.wustl.edu/~schmidt/ACE.html'),(286,'tao-ftrtevent','optional','devel','204','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-ftrtevent_5.6.3-5_i386.deb','99664','TAO fault-tolerant real-time event service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(287,'tao-idl','optional','devel','2556','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-idl_5.6.3-5_i386.deb','841982','TAO IDL to C++ compiler','http://www.cs.wustl.edu/~schmidt/ACE.html'),(288,'tao-ifr','optional','devel','868','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-ifr_5.6.3-5_i386.deb','338566','TAO interface repository','http://www.cs.wustl.edu/~schmidt/ACE.html'),(289,'tao-imr','optional','devel','560','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-imr_5.6.3-5_i386.deb','245860','TAO implementation repository','http://www.cs.wustl.edu/~schmidt/ACE.html'),(290,'tao-lifecycle','optional','devel','176','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-lifecycle_5.6.3-5_i386.deb','89392','TAO lifecycle service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(291,'tao-load','optional','devel','192','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-load_5.6.3-5_i386.deb','95090','TAO load balancing service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(292,'tao-log','optional','devel','256','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-log_5.6.3-5_i386.deb','101034','TAO telecom log services','http://www.cs.wustl.edu/~schmidt/ACE.html'),(293,'tao-naming','optional','devel','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-naming_5.6.3-5_i386.deb','82560','TAO naming service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(294,'tao-notify','optional','devel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-notify_5.6.3-5_i386.deb','87412','TAO notification service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(295,'tao-rtevent','optional','devel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-rtevent_5.6.3-5_i386.deb','84964','TAO real-time event service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(296,'tao-scheduling','optional','devel','236','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-scheduling_5.6.3-5_i386.deb','114600','TAO scheduling service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(297,'tao-time','optional','devel','184','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-time_5.6.3-5_i386.deb','91090','TAO time service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(298,'tao-trading','optional','devel','148','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-trading_5.6.3-5_i386.deb','77286','TAO trading service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(299,'tao-utils','optional','devel','248','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-utils_5.6.3-5_i386.deb','113794','TAO naming service and IOR utilities','http://www.cs.wustl.edu/~schmidt/ACE.html'),(300,'r-cran-acepack','optional','gnu-r','128','Dirk Eddelbuettel ','i386','acepack (1.3.2.2-2)','1.3.2.2-2+b1','pool/main/a/acepack/r-cran-acepack_1.3.2.2-2+b1_i386.deb','29504','GNU R package for regression transformations',''),(301,'acerhk-source','optional','kernel','80','Adam Cécile (Le_Vert) ','all','acerhk','0.5.35-8','pool/main/a/acerhk/acerhk-source_0.5.35-8_all.deb','39444','Source for the acerhk driver','http://www.cakey.de/acerhk/'),(302,'acfax','extra','hamradio','136','Debian Hamradio Maintainers ','i386','','981011-14.1','pool/main/a/acfax/acfax_981011-14.1_i386.deb','35800','Receive faxes using your radio and sound card',''),(303,'acheck-rules-fr','optional','text','80','Nicolas Bertolissio ','all','','0.6','pool/main/a/acheck-rules-fr/acheck-rules-fr_0.6_all.deb','7314','French rules for acheck',''),(304,'acheck-rules','optional','text','104','Nicolas Bertolissio ','all','','0.3.1','pool/main/a/acheck-rules/acheck-rules_0.3.1_all.deb','13618','Basic rules for acheck',''),(305,'acheck','optional','text','192','Nicolas Bertolissio ','all','','0.5.1','pool/main/a/acheck/acheck_0.5.1_all.deb','35790','Check common localisation mistakes',''),(306,'achilles','optional','science','160','Manfred Lichtenstern ','i386','','2-8','pool/main/a/achilles/achilles_2-8_i386.deb','38252','An artificial life and evolution simulator',''),(307,'ack-grep','optional','utils','216','Ryan Niebur ','all','','1.90-2','pool/main/a/ack-grep/ack-grep_1.90-2_all.deb','66982','grep-like program specifically for large source trees','http://search.cpan.org/dist/ack/'),(308,'ack','extra','text','92','Masayuki Hatta (mhatta) ','i386','','1.39-12','pool/main/a/ack/ack_1.39-12_i386.deb','17770','Kanji code converter',''),(309,'acl','optional','utils','268','Nathan Scott ','i386','','2.2.48-1','pool/main/a/acl/acl_2.2.48-1_i386.deb','60548','Access control list utilities','http://savannah.nongnu.org/projects/acl/'),(310,'libacl1-dev','extra','libdevel','296','Nathan Scott ','i386','acl','2.2.48-1','pool/main/a/acl/libacl1-dev_2.2.48-1_i386.deb','78788','Access control list static libraries and headers','http://savannah.nongnu.org/projects/acl/'),(311,'libacl1','required','libs','76','Nathan Scott ','i386','acl','2.2.48-1','pool/main/a/acl/libacl1_2.2.48-1_i386.deb','17724','Access control list shared library','http://savannah.nongnu.org/projects/acl/'),(312,'acl2-books-certs','optional','math','27724','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-books-certs_3.4-2_all.deb','1295318','A Computational Logic for Applicative Common Lisp: library certificates',''),(313,'acl2-books-source','optional','math','20560','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-books-source_3.4-2_all.deb','2973976','A Computational Logic for Applicative Common Lisp: library sources',''),(314,'acl2-books','optional','math','66960','Camm Maguire ','i386','acl2','3.4-2','pool/main/a/acl2/acl2-books_3.4-2_i386.deb','21475906','A Computational Logic for Applicative Common Lisp: compiled libraries',''),(315,'acl2-doc','optional','doc','9020','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-doc_3.4-2_all.deb','2400658','A Computational Logic for Applicative Common Lisp: documentation',''),(316,'acl2-emacs','optional','math','304','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-emacs_3.4-2_all.deb','56260','A Computational Logic for Applicative Common Lisp: emacs interface',''),(317,'acl2-infix-source','optional','math','376','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-infix-source_3.4-2_all.deb','88730','A Computational Logic for Applicative Common Lisp: infix source',''),(318,'acl2-infix','optional','math','1180','Camm Maguire ','i386','acl2','3.4-2','pool/main/a/acl2/acl2-infix_3.4-2_i386.deb','399634','A Computational Logic for Applicative Common Lisp: infix interface',''),(319,'acl2-source','optional','math','10160','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-source_3.4-2_all.deb','2610826','A Computational Logic for Applicative Common Lisp: source files',''),(320,'acl2','optional','math','64332','Camm Maguire ','i386','','3.4-2','pool/main/a/acl2/acl2_3.4-2_i386.deb','19379656','A Computational Logic for Applicative Common Lisp: main binary',''),(321,'aclock.app','optional','gnustep','224','Gürkan Sengün ','i386','aclock.app (0.2.3-3)','0.2.3-3+b2','pool/main/a/aclock.app/aclock.app_0.2.3-3+b2_i386.deb','28316','Analog dockapp clock for GNUstep',''),(322,'acm','optional','games','1368','Phil Brooke ','i386','','5.0-25','pool/main/a/acm/acm_5.0-25_i386.deb','752596','A multi-player aerial combat simulation',''),(323,'acm4','optional','games','3736','Phil Brooke ','i386','','4.7-19','pool/main/a/acm4/acm4_4.7-19_i386.deb','896084','multi-player aerial combat simulation',''),(324,'aconnectgui','optional','sound','88','Paul Brossier ','i386','','0.9.0rc2-1-9','pool/main/a/aconnectgui/aconnectgui_0.9.0rc2-1-9_i386.deb','26154','graphical ALSA sequencer connection manager',''),(325,'acorn-fdisk','optional','admin','108','Philip Blundell ','i386','','3.0.6-6.2','pool/main/a/acorn-fdisk/acorn-fdisk_3.0.6-6.2_i386.deb','28450','Partition editor for Acorn/RISC OS machines',''),(326,'acovea-results','optional','doc','272','Al Stone ','all','','20040329-1','pool/main/a/acovea-results/acovea-results_20040329-1_all.deb','203792','results captured by using acovea',''),(327,'acovea','optional','devel','264','Al Stone ','i386','','5.1.1-2','pool/main/a/acovea/acovea_5.1.1-2_i386.deb','104138','analysis of compiler options via evolutionary algorithms',''),(328,'libacovea-5.1-5','optional','libs','532','Al Stone ','i386','acovea','5.1.1-2','pool/main/a/acovea/libacovea-5.1-5_5.1.1-2_i386.deb','104286','library for analyzing compiler options via evolutionary algorithms',''),(329,'libacovea-dev','optional','devel','312','Al Stone ','i386','acovea','5.1.1-2','pool/main/a/acovea/libacovea-dev_5.1.1-2_i386.deb','78742','library for analyzing compiler options via evolutionary algorithms',''),(330,'acpi-support-base','optional','admin','80','Debian Acpi Team ','all','acpi-support','0.123-1','pool/main/a/acpi-support/acpi-support-base_0.123-1_all.deb','14752','scripts for handling base ACPI events such as the power button',''),(331,'acpi-support','optional','admin','836','Debian Acpi Team ','i386','','0.123-1','pool/main/a/acpi-support/acpi-support_0.123-1_i386.deb','49236','scripts for handling many ACPI events',''),(332,'acpi','optional','utils','88','Debian Acpi Team ','i386','','1.4-2','pool/main/a/acpi/acpi_1.4-2_i386.deb','15406','displays information on ACPI devices',''),(333,'iasl','optional','devel','676','Mattia Dongili ','i386','acpica-unix','20061109-0.1','pool/main/a/acpica-unix/iasl_20061109-0.1_i386.deb','367092','Intel ASL compiler/decompiler',''),(334,'acpid','optional','admin','196','Debian Acpi Team ','i386','','1.0.10-3','pool/main/a/acpid/acpid_1.0.10-3_i386.deb','45234','Advanced Configuration and Power Interface event daemon','http://acpid.sourceforge.net/'),(335,'acpidump','optional','admin','40','Mattia Dongili ','i386','','20071116-1','pool/main/a/acpidump/acpidump_20071116-1_i386.deb','14408','utilities to dump system\'s ACPI tables to an ASCII file',''),(336,'acpitail','optional','utils','64','Debian Acpi Team ','i386','','0.1-2','pool/main/a/acpitail/acpitail_0.1-2_i386.deb','7518','Show ACPI information in a tail-like style','http://www.vanheusden.com/acpitail/'),(337,'acpitool-dbg','extra','debug','408','Debian Acpi Team ','i386','acpitool','0.5-7','pool/main/a/acpitool/acpitool-dbg_0.5-7_i386.deb','141834','command line ACPI client (debug)','http://freeunix.dyndns.org:8088/site2/acpitool.shtml'),(338,'acpitool','optional','utils','168','Debian Acpi Team ','i386','','0.5-7','pool/main/a/acpitool/acpitool_0.5-7_i386.deb','47740','command line ACPI client','http://freeunix.dyndns.org:8088/site2/acpitool.shtml'),(339,'libacr38u','extra','libs','108','Laurent Bigonville ','i386','acr38','1.7.10-1','pool/main/a/acr38/libacr38u_1.7.10-1_i386.deb','18040','PC/SC driver for the ACR38U smart card reader','http://www.acs.com.hk/'),(340,'libacr38ucontrol-dev','extra','libdevel','72','Laurent Bigonville ','i386','acr38','1.7.10-1','pool/main/a/acr38/libacr38ucontrol-dev_1.7.10-1_i386.deb','6398','Library for operational mode for ACR38U smartcard reader dev files','http://www.acs.com.hk/'),(341,'libacr38ucontrol0','extra','libs','68','Laurent Bigonville ','i386','acr38','1.7.10-1','pool/main/a/acr38/libacr38ucontrol0_1.7.10-1_i386.deb','6288','Library for operational mode for ACR38U smartcard reader','http://www.acs.com.hk/'),(342,'libactiveldap-ruby-doc','optional','doc','42996','Marc Dequènes (Duck) ','all','activeldap','1.0.9-1','pool/main/a/activeldap/libactiveldap-ruby-doc_1.0.9-1_all.deb','34531542','an object-oriented interface to LDAP for Ruby','http://rubyforge.org/projects/ruby-activeldap'),(343,'libactiveldap-ruby1.8','optional','ruby','496','Marc Dequènes (Duck) ','all','activeldap','1.0.9-1','pool/main/a/activeldap/libactiveldap-ruby1.8_1.0.9-1_all.deb','84506','an object-oriented interface to LDAP for Ruby','http://rubyforge.org/projects/ruby-activeldap'),(344,'libactiveldap-ruby','optional','ruby','52','Marc Dequènes (Duck) ','all','activeldap','1.0.9-1','pool/main/a/activeldap/libactiveldap-ruby_1.0.9-1_all.deb','15822','an object-oriented interface to LDAP for Ruby','http://rubyforge.org/projects/ruby-activeldap'),(345,'ada-mode','optional','editors','604','Debian QA Group ','all','','3.6-3','pool/main/a/ada-mode/ada-mode_3.6-3_all.deb','128818','Ada mode for GNU Emacs and XEmacs','http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html'),(346,'ada-reference-manual','optional','doc','16248','Florian Weimer ','all','','20021112web-3','pool/main/a/ada-reference-manual/ada-reference-manual_20021112web-3_all.deb','2735014','The standard describing the Ada 95 language',''),(347,'adacgi','optional','web','376','Phil Brooke ','i386','','1.6-11','pool/main/a/adacgi/adacgi_1.6-11_i386.deb','94806','Ada CGI interface',''),(348,'adacontrol','optional','devel','4660','Ludovic Brenta ','i386','','1.9r4-3','pool/main/a/adacontrol/adacontrol_1.9r4-3_i386.deb','1979216','An Ada rules controller',''),(349,'adanaxisgpl-data','optional','games','27448','Debian Games Team ','all','adanaxisgpl','1.2.5.dfsg.1-2','pool/main/a/adanaxisgpl/adanaxisgpl-data_1.2.5.dfsg.1-2_all.deb','18353778','Action game in four spatial dimensions','http://www.mushware.com/'),(350,'adanaxisgpl','optional','games','3408','Debian Games Team ','i386','','1.2.5.dfsg.1-2','pool/main/a/adanaxisgpl/adanaxisgpl_1.2.5.dfsg.1-2_i386.deb','1383178','Action game in four spatial dimensions','http://www.mushware.com/'),(351,'r-cran-adapt','optional','gnu-r','164','Dirk Eddelbuettel ','i386','adapt','1.0-4-3','pool/main/a/adapt/r-cran-adapt_1.0-4-3_i386.deb','18992','GNU R package providing multidimentional integration',''),(352,'libadasockets-dev','extra','libdevel','784','Phil Brooke ','i386','adasockets','1.8.6-2','pool/main/a/adasockets/libadasockets-dev_1.8.6-2_i386.deb','389928','bindings for socket services in Ada',''),(353,'libadasockets1','extra','libs','164','Phil Brooke ','i386','adasockets','1.8.6-2','pool/main/a/adasockets/libadasockets1_1.8.6-2_i386.deb','47224','bindings for socket services in Ada',''),(354,'adblock-plus','optional','web','60','Dmitry E. Oboukhov ','all','','1.1.1-2','pool/main/a/adblock-plus/adblock-plus_1.1.1-2_all.deb','13402','transitional dummy package','http://adblockplus.org/'),(355,'xul-ext-adblock-plus','optional','web','1420','Dmitry E. Oboukhov ','all','adblock-plus','1.1.1-2','pool/main/a/adblock-plus/xul-ext-adblock-plus_1.1.1-2_all.deb','310478','Advertisement blocking extension for web browsers','http://adblockplus.org/'),(356,'addresses-goodies-for-gnustep','optional','mail','160','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/addresses-goodies-for-gnustep_0.4.7-1+b2_i386.deb','32980','Personal Address Manager for GNUstep (Goodies)',''),(357,'addresses.framework','optional','gnustep','12','Eric Heintzmann ','all','addresses-for-gnustep','0.4.7-1','pool/main/a/addresses-for-gnustep/addresses.framework_0.4.7-1_all.deb','8378','Database API backend framework for GNUstep',''),(358,'addressmanager.app','optional','gnustep','564','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/addressmanager.app_0.4.7-1+b2_i386.deb','101602','Personal Address Manager for GNUstep',''),(359,'addressview.framework','optional','gnustep','12','Eric Heintzmann ','all','addresses-for-gnustep','0.4.7-1','pool/main/a/addresses-for-gnustep/addressview.framework_0.4.7-1_all.deb','8368','Address display/edit framework for GNUstep',''),(360,'libaddresses-dev','optional','libdevel','188','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddresses-dev_0.4.7-1+b2_i386.deb','16730','Database API backend framework for GNUstep (development files)',''),(361,'libaddresses0','optional','libs','372','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddresses0_0.4.7-1+b2_i386.deb','70108','Database API backend framework for GNUstep (library files)',''),(362,'libaddressview-dev','optional','libdevel','132','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddressview-dev_0.4.7-1+b2_i386.deb','12686','Address display/edit framework for GNUstep (development files)',''),(363,'libaddressview0','optional','libs','424','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddressview0_0.4.7-1+b2_i386.deb','72816','Address display/edit framework for GNUstep (library files)',''),(364,'adduser','important','admin','880','Debian Adduser Developers ','all','','3.111','pool/main/a/adduser/adduser_3.111_all.deb','156872','add and remove users and groups','http://alioth.debian.org/projects/adduser/'),(365,'adept','optional','kde','1308','Petr Rockai ','i386','','3.0~beta7.2','pool/main/a/adept/adept_3.0~beta7.2_i386.deb','371506','package management suite for KDE',''),(366,'adesklets','optional','x11','620','Debian QA Group ','i386','','0.6.1-5','pool/main/a/adesklets/adesklets_0.6.1-5_i386.deb','221896','interactive Imlib2 console for the X Window System','http://adesklets.sourceforge.net'),(367,'adjtimex','optional','admin','168','James R. Van Zandt ','i386','','1.28-1','pool/main/a/adjtimex/adjtimex_1.28-1_i386.deb','55818','kernel time variables configuration utility',''),(368,'admesh','optional','math','112','VÃÂctor Pérez Pereira ','i386','','0.95-7','pool/main/a/admesh/admesh_0.95-7_i386.deb','32534','a tool for processing triangulated solid meshes',''),(369,'adns-tools','optional','net','124','Robert S. Edmonds ','i386','adns','1.4-2','pool/main/a/adns/adns-tools_1.4-2_i386.deb','41252','Asynchronous-capable DNS client library and utilities','http://www.chiark.greenend.org.uk/~ian/adns/'),(370,'libadns1-dev','optional','libdevel','204','Robert S. Edmonds ','i386','adns','1.4-2','pool/main/a/adns/libadns1-dev_1.4-2_i386.deb','73584','Asynchronous-capable DNS client library and utilities','http://www.chiark.greenend.org.uk/~ian/adns/'),(371,'libadns1','optional','libs','156','Robert S. Edmonds ','i386','adns','1.4-2','pool/main/a/adns/libadns1_1.4-2_i386.deb','58400','Asynchronous-capable DNS client library and utilities','http://www.chiark.greenend.org.uk/~ian/adns/'),(372,'libadolc-dev','optional','libdevel','1536','Barak A. Pearlmutter ','i386','adolc','1.10.2-1','pool/main/a/adolc/libadolc-dev_1.10.2-1_i386.deb','826088','ADOLC development libs and headers',''),(373,'libadolc-examples','optional','doc','980','Barak A. Pearlmutter ','i386','adolc','1.10.2-1','pool/main/a/adolc/libadolc-examples_1.10.2-1_i386.deb','280866','ADOLC example program binaries',''),(374,'libadolc0','optional','libs','532','Barak A. Pearlmutter ','i386','adolc','1.10.2-1','pool/main/a/adolc/libadolc0_1.10.2-1_i386.deb','203546','ADOLC automatic differentiation system, runtime libs',''),(375,'adonthell-data','optional','games','11760','Debian Games Team ','all','','0.3.4.cvs.20080529-1','pool/main/a/adonthell-data/adonthell-data_0.3.4.cvs.20080529-1_all.deb','9989464','Data files needed by Adonthell','http://adonthell.linuxgames.com/'),(376,'adonthell','optional','games','1000','Debian Games Team ','i386','','0.3.5-2','pool/main/a/adonthell/adonthell_0.3.5-2_i386.deb','268974','A 2D graphical roleplaying game','http://adonthell.linuxgames.com/'),(377,'adplay','optional','sound','68','Gürkan Sengün ','i386','adplay (1.6-1)','1.6-1+b1','pool/main/a/adplay/adplay_1.6-1+b1_i386.deb','23782','console-based OPL2 audio player',''),(378,'adplug-utils','optional','utils','76','Debian QA Group ','i386','adplug','2.0.1.dfsg-1','pool/main/a/adplug/adplug-utils_2.0.1.dfsg-1_i386.deb','26078','free AdLib sound library (utils)','http://adplug.sourceforge.net/'),(379,'libadplug-dev','optional','libdevel','948','Debian QA Group ','i386','adplug','2.0.1.dfsg-1','pool/main/a/adplug/libadplug-dev_2.0.1.dfsg-1_i386.deb','233696','free AdLib sound library (development)','http://adplug.sourceforge.net/'),(380,'libadplug0c2a','optional','libs','448','Debian QA Group ','i386','adplug','2.0.1.dfsg-1','pool/main/a/adplug/libadplug0c2a_2.0.1.dfsg-1_i386.deb','181160','free AdLib sound library','http://adplug.sourceforge.net/'),(381,'adtool','optional','admin','96','Jonathan Wiltshire ','i386','','1.3.3-1','pool/main/a/adtool/adtool_1.3.3-1_i386.deb','15518','command line utility for Active Directory administration','http://www.gp2x.org/adtool/'),(382,'adun.app','optional','gnustep','6412','Debian-Med Packaging Team ','i386','adun.app (0.8.2-1)','0.8.2-1+b2','pool/main/a/adun.app/adun.app_0.8.2-1+b2_i386.deb','1262660','Molecular Simulator for GNUstep','http://diana.imim.es/Adun'),(383,'advancecomp','optional','utils','708','Piotr Ozarowski ','i386','','1.15-1','pool/main/a/advancecomp/advancecomp_1.15-1_i386.deb','325756','collection of recompression utilities',''),(384,'python-advas','optional','python','1504','Patrick Winnertz ','all','advas','0.2.3-2','pool/main/a/advas/python-advas_0.2.3-2_all.deb','104530','algorithms for high-level search and information retrieval',''),(385,'advi-examples','optional','tex','16780','Debian OCaml Maintainers ','all','advi','1.6.0-15','pool/main/a/advi/advi-examples_1.6.0-15_all.deb','3824516','example presentations for Active-DVI (advi)','http://pauillac.inria.fr/advi/'),(386,'advi','optional','tex','2536','Debian OCaml Maintainers ','i386','','1.6.0-15','pool/main/a/advi/advi_1.6.0-15_i386.deb','951102','an active DVI previewer and presenter','http://pauillac.inria.fr/advi/'),(387,'adzapper','optional','web','357','Ludovic Drolez ','all','','20090301-1','pool/main/a/adzapper/adzapper_20090301-1_all.deb','66140','proxy advertisement zapper add-on',''),(388,'aee','optional','editors','468','Mario Iseli ','i386','','2.2.15b-3.2','pool/main/a/aee/aee_2.2.15b-3.2_i386.deb','156204','An easy to use screen-based editor',''),(389,'aegir-provision','optional','admin','428','Antoine Beaupré ','all','','0.3-2','pool/main/a/aegir-provision/aegir-provision_0.3-2_all.deb','45658','backend of the Aegir hosting system','http://drupal.org/project/provision'),(390,'aegis-doc','optional','doc','2020','Christian Meder ','all','aegis','4.24-5.2','pool/main/a/aegis/aegis-doc_4.24-5.2_all.deb','1964284','documentation for aegis','http://aegis.sourceforge.net'),(391,'aegis-tk','optional','devel','444','Christian Meder ','all','aegis','4.24-5.2','pool/main/a/aegis/aegis-tk_4.24-5.2_all.deb','162936','aegis Tk user interface','http://aegis.sourceforge.net'),(392,'aegis-web','optional','devel','2568','Christian Meder ','i386','aegis','4.24-5.2','pool/main/a/aegis/aegis-web_4.24-5.2_i386.deb','983062','aegis web based user interface','http://aegis.sourceforge.net'),(393,'aegis','optional','vcs','46600','Christian Meder ','i386','','4.24-5.2','pool/main/a/aegis/aegis_4.24-5.2_i386.deb','16007050','transaction-based software configuration management','http://aegis.sourceforge.net'),(394,'aeolus','extra','sound','304','Debian Multimedia Team ','i386','','0.8.1-1','pool/main/a/aeolus/aeolus_0.8.1-1_i386.deb','112534','Synthesised pipe organ emulator',''),(395,'aes2501-wy','optional','graphics','32','FingerForce Team ','i386','','0.1-5','pool/main/a/aes2501-wy/aes2501-wy_0.1-5_i386.deb','12100','userspace software for usb aes2501 fingerprint scanner','http://gkall.hobby.nl/authentec.html'),(396,'aesfix','optional','utils','68','Debian Forensics ','i386','aesfix (1.0.1-1)','1.0.1-1+b1','pool/main/a/aesfix/aesfix_1.0.1-1+b1_i386.deb','11402','tool for correcting bit errors in an AES key schedule','http://citp.princeton.edu/memory/code/'),(397,'aeskeyfind','optional','utils','48','Debian Forensics ','i386','aeskeyfind (1.0.0-1)','1.0.0-1+b1','pool/main/a/aeskeyfind/aeskeyfind_1.0.0-1+b1_i386.deb','7928','tool for finding and repairing AES keys','http://citp.princeton.edu/memory/code/'),(398,'aeskulap','optional','science','1784','Debian-Med Packaging Team ','i386','','0.2.2b1-4','pool/main/a/aeskulap/aeskulap_0.2.2b1-4_i386.deb','499444','medical image viewer and DICOM network client','http://aeskulap.nongnu.org'),(399,'aespipe','optional','utils','128','Debian Loop-AES Team ','i386','','2.3e-2','pool/main/a/aespipe/aespipe_2.3e-2_i386.deb','41394','AES-encryption tool with loop-AES support',''),(400,'aewan','extra','text','272','Robert Lemmen ','i386','','1.0.01-3','pool/main/a/aewan/aewan_1.0.01-3_i386.deb','96736','ASCII-art Editor Without A Name',''),(401,'aewm++-goodies','optional','x11','344','Chris Boyle ','i386','','1.0-9','pool/main/a/aewm++-goodies/aewm++-goodies_1.0-9_i386.deb','69962','utilities to complement a minimal window manager',''),(402,'aewm++','optional','x11','152','Chris Boyle ','i386','','1.1.2-5','pool/main/a/aewm++/aewm++_1.1.2-5_i386.deb','38770','minimal window manager written in C++','http://code.google.com/p/aewmpp/'),(403,'aewm','optional','x11','148','Decklin Foster ','i386','','1.3.12-2','pool/main/a/aewm/aewm_1.3.12-2_i386.deb','52228','a minimalist window manager for X11',''),(404,'afbackup-client','optional','utils','1224','Debian QA Group ','i386','afbackup','3.5.3-2','pool/main/a/afbackup/afbackup-client_3.5.3-2_i386.deb','521386','Client-Server Backup System (Client side)','http://sourceforge.net/projects/afbackup/'),(405,'afbackup-common','optional','utils','800','Debian QA Group ','all','afbackup','3.5.3-2','pool/main/a/afbackup/afbackup-common_3.5.3-2_all.deb','319750','Client-Server Backup System (common files)','http://sourceforge.net/projects/afbackup/'),(406,'afbackup','optional','utils','1020','Debian QA Group ','i386','','3.5.3-2','pool/main/a/afbackup/afbackup_3.5.3-2_i386.deb','429214','Client-Server Backup System (Server side)','http://sourceforge.net/projects/afbackup/'),(407,'affiche.app','optional','gnustep','384','Hubert Chathi ','i386','affiche (0.6.0-7)','0.6.0-7+b2','pool/main/a/affiche/affiche.app_0.6.0-7+b2_i386.deb','55370','An application to \"stick\" little notes on the desktop',''),(408,'afio','optional','utils','240','Erik Schanze ','i386','','2.5-5','pool/main/a/afio/afio_2.5-5_i386.deb','80192','archive file manipulation program',''),(409,'afnix-doc','optional','doc','284','Paul Cager ','all','afnix','1.5.2-3.3','pool/main/a/afnix/afnix-doc_1.5.2-3.3_all.deb','192320','Compiler and run-time for the AFNIX programming language (documentation)','http://www.afnix.org/'),(410,'afnix','optional','interpreters','8776','Paul Cager ','i386','','1.5.2-3.3','pool/main/a/afnix/afnix_1.5.2-3.3_i386.deb','1878610','Compiler and run-time for the AFNIX programming language','http://www.afnix.org/'),(411,'aft','optional','text','340','Robert Lemmen ','all','','2:5.097-1','pool/main/a/aft/aft_5.097-1_all.deb','81832','\"free form\" document preparation system',''),(412,'afterstep','optional','x11','9496','Robert Luberda ','i386','','2.2.9-4','pool/main/a/afterstep/afterstep_2.2.9-4_i386.deb','3624130','window manager with the NEXTSTEP look and feel','http://www.afterstep.org/'),(413,'libafterimage-dev','optional','libdevel','2156','Robert Luberda ','i386','afterstep','2.2.9-4','pool/main/a/afterstep/libafterimage-dev_2.2.9-4_i386.deb','808748','imaging library designed for AfterStep - development files','http://www.afterstep.org/'),(414,'libafterimage0','optional','libs','632','Robert Luberda ','i386','afterstep','2.2.9-4','pool/main/a/afterstep/libafterimage0_2.2.9-4_i386.deb','311292','imaging library designed for AfterStep - runtime files','http://www.afterstep.org/'),(415,'libafterstep1','optional','libs','860','Robert Luberda ','i386','afterstep','2.2.9-4','pool/main/a/afterstep/libafterstep1_2.2.9-4_i386.deb','407118','shared libraries for the AfterStep window manager','http://www.afterstep.org/'),(416,'afuse','optional','utils','84','Varun Hiremath ','i386','','0.2-3','pool/main/a/afuse/afuse_0.2-3_i386.deb','16514','automounting file system implemented in user-space using FUSE','http://sourceforge.net/projects/afuse/'),(417,'agave','optional','gnome','1216','Varun Hiremath ','i386','','0.4.7-1','pool/main/a/agave/agave_0.4.7-1_i386.deb','423634','colorscheme designer for the GNOME desktop','http://home.gna.org/colorscheme/'),(418,'agda-bin','optional','haskell','8800','Iain Lane ','i386','','2.2.4-1','pool/main/a/agda-bin/agda-bin_2.2.4-1_i386.deb','2395958','Commandline interface to Agda','http://wiki.portal.chalmers.se/agda/'),(419,'agedu','optional','utils','80','Alexander Prinsier ','i386','','8642-1','pool/main/a/agedu/agedu_8642-1_i386.deb','41350','a Unix utility for tracking down wasted disk space','http://www.chiark.greenend.org.uk/~sgtatham/agedu/'),(420,'agenda.app','optional','gnustep','576','Debian GNUstep maintainers ','i386','agenda.app (0.36-1)','0.36-1+b1','pool/main/a/agenda.app/agenda.app_0.36-1+b1_i386.deb','135752','Calendar manager for GNUstep',''),(421,'libagg-dev','optional','libdevel','2932','Andrea Veri ','i386','agg','2.5+dfsg1-2','pool/main/a/agg/libagg-dev_2.5+dfsg1-2_i386.deb','516246','The AntiGrain Geometry graphical toolkit (development files)',''),(422,'aggregate','optional','net','64','Erik Wenzel ','i386','','1.6-5','pool/main/a/aggregate/aggregate_1.6-5_i386.deb','11344','ipv4 cidr prefix aggregator',''),(423,'agsync-dev','optional','libdevel','372','Debian QA Group ','i386','agsync','0.2-pre-11','pool/main/a/agsync/agsync-dev_0.2-pre-11_i386.deb','77144','Development files for AvantGo and Pocket PC synchronization',''),(424,'agsync','optional','libs','212','Debian QA Group ','i386','','0.2-pre-11','pool/main/a/agsync/agsync_0.2-pre-11_i386.deb','69190','Synchronization mediator for AvantGo and Pocket PC',''),(425,'agtl','extra','python','612','Heiko Stuebner ','all','','0.4.2-1','pool/main/a/agtl/agtl_0.4.2-1_all.deb','74446','Tool for paperless geocaching','http://wiki.openmoko.org/wiki/Advanced_Geocaching_Tool_for_Linux'),(426,'aiccu','optional','net','208','Debian QA Group ','i386','','20070115-10','pool/main/a/aiccu/aiccu_20070115-10_i386.deb','50180','SixXS Automatic IPv6 Connectivity Client Utility','http://www.sixxs.net/tools/aiccu/'),(427,'aide-common','optional','admin','724','Aide Maintainers ','all','aide','0.13.1-11','pool/main/a/aide/aide-common_0.13.1-11_all.deb','87724','Advanced Intrusion Detection Environment - Common files','http://sourceforge.net/projects/aide'),(428,'aide-dynamic','optional','admin','244','Aide Maintainers ','i386','aide','0.13.1-11','pool/main/a/aide/aide-dynamic_0.13.1-11_i386.deb','100318','Advanced Intrusion Detection Environment - dynamic binary','http://sourceforge.net/projects/aide'),(429,'aide-xen','optional','admin','1184','Aide Maintainers ','i386','aide','0.13.1-11','pool/main/a/aide/aide-xen_0.13.1-11_i386.deb','566450','Advanced Intrusion Detection Environment - static binary for XEN','http://sourceforge.net/projects/aide'),(430,'aide','optional','admin','1116','Aide Maintainers ','i386','','0.13.1-11','pool/main/a/aide/aide_0.13.1-11_i386.deb','534072','Advanced Intrusion Detection Environment - static binary','http://sourceforge.net/projects/aide'),(431,'aiksaurus','optional','text','72','Masayuki Hatta (mhatta) ','i386','','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/aiksaurus_1.2.1+dev-0.12-6_i386.deb','11818','an English-language thesaurus (utility)',''),(432,'gaiksaurus','optional','text','72','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/gaiksaurus_1.2.1+dev-0.12-6_i386.deb','9286','graphical interface to the Aiksaurus toolkit (GTK+ frontend)',''),(433,'libaiksaurus-1.2-0c2a','optional','libs','88','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurus-1.2-0c2a_1.2.1+dev-0.12-6_i386.deb','23488','an English-language thesaurus (development)',''),(434,'libaiksaurus-1.2-data','optional','libs','560','Masayuki Hatta (mhatta) ','all','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurus-1.2-data_1.2.1+dev-0.12-6_all.deb','317310','an English-language thesaurus (data)',''),(435,'libaiksaurus-1.2-dev','optional','libdevel','132','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurus-1.2-dev_1.2.1+dev-0.12-6_i386.deb','25060','an English-language thesaurus (development)',''),(436,'libaiksaurusgtk-1.2-0c2a','optional','libs','124','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurusgtk-1.2-0c2a_1.2.1+dev-0.12-6_i386.deb','33428','graphical interface to the Aiksaurus toolkit (library)',''),(437,'libaiksaurusgtk-1.2-dev','optional','libdevel','168','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurusgtk-1.2-dev_1.2.1+dev-0.12-6_i386.deb','32196','graphical interface to the Aiksaurus toolkit (development)',''),(438,'aircrack-ng','optional','net','2608','Adam Cécile (Le_Vert) ','i386','','1:1.0~rc3-2','pool/main/a/aircrack-ng/aircrack-ng_1.0~rc3-2_i386.deb','1541508','wireless WEP/WPA cracking utilities','http://www.aircrack-ng.org/'),(439,'airport-utils','optional','net','576','Julien BLACHE ','all','','1-8','pool/main/a/airport-utils/airport-utils_1-8_all.deb','396618','configuration and management utilities for Apple AirPort base stations',''),(440,'airstrike-common','optional','games','2412','Debian Games Team ','all','airstrike','0.99+1.0pre6a-4','pool/main/a/airstrike/airstrike-common_0.99+1.0pre6a-4_all.deb','1877222','2d dogfight game in the tradition of \'Biplanes\' and \'BIP\'','http://icculus.org/airstrike/'),(441,'airstrike','optional','games','192','Debian Games Team ','i386','','0.99+1.0pre6a-4','pool/main/a/airstrike/airstrike_0.99+1.0pre6a-4_i386.deb','45908','2d dogfight game in the tradition of \'Biplanes\' and \'BIP\'','http://icculus.org/airstrike/'),(442,'aish','optional','utils','116','Atsushi KAMOSHIDA ','i386','','1.13-5','pool/main/a/aish/aish_1.13-5_i386.deb','35848','ish/base64/uuencoded_file converter',''),(443,'ajaxterm','optional','web','248','Julien Valroff ','all','','0.10-4','pool/main/a/ajaxterm/ajaxterm_0.10-4_all.deb','40296','Web based terminal written in Python','http://antony.lesuisse.org/qweb/trac/wiki/AjaxTerm'),(444,'akonadi-kde-resource-googledata','extra','net','472','Debian Qt/KDE Maintainers ','i386','akonadi-googledata','1.0.1-1','pool/main/a/akonadi-googledata/akonadi-kde-resource-googledata_1.0.1-1_i386.deb','97322','Google calendar and contacts resource for Akonadi','http://code.google.com/p/libgcal/'),(445,'akonadi-dbg','extra','debug','16756','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/akonadi-dbg_1.2.1-1_i386.deb','6679912','debugging symbols for the Akonadi PIM storage service','http://pim.kde.org/akonadi'),(446,'akonadi-server','extra','net','472','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/akonadi-server_1.2.1-1_i386.deb','175984','Akonadi PIM storage service','http://pim.kde.org/akonadi'),(447,'libakonadi-dev','extra','libdevel','220','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/libakonadi-dev_1.2.1-1_i386.deb','46146','development files for the Akonadi PIM storage service','http://pim.kde.org/akonadi'),(448,'libakonadiprivate1','extra','libs','1512','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/libakonadiprivate1_1.2.1-1_i386.deb','576204','libraries for the Akonadi PIM storage service','http://pim.kde.org/akonadi'),(449,'alacarte','optional','utils','554','Debian GNOME Maintainers ','all','','0.12.4-1','pool/main/a/alacarte/alacarte_0.12.4-1_all.deb','102970','easy GNOME menu editing tool',''),(450,'alarm-clock-applet','optional','gnome','396','Chow Loong Jin ','i386','','0.2.6-1','pool/main/a/alarm-clock-applet/alarm-clock-applet_0.2.6-1_i386.deb','94038','Alarm Clock applet for the GNOME panel','http://alarm-clock.pseudoberries.com/'),(451,'alarm-clock','optional','utils','1800','Ryan Niebur ','i386','','1.2.4-1','pool/main/a/alarm-clock/alarm-clock_1.2.4-1_i386.deb','615318','Alarm Clock for GTK Environments','http://www.alarm-clock.pl/'),(452,'python-albatross-common','optional','web','160','Fabian Fagerholm ','all','albatross','1.36-5','pool/main/a/albatross/python-albatross-common_1.36-5_all.deb','52596','Toolkit for Stateful Web Applications (common files)','http://www.object-craft.com.au/projects/albatross/'),(453,'python-albatross-doc','optional','doc','604','Fabian Fagerholm ','all','albatross','1.36-5','pool/main/a/albatross/python-albatross-doc_1.36-5_all.deb','582732','documentation for the Albatross Web Toolkit','http://www.object-craft.com.au/projects/albatross/'),(454,'python-albatross','optional','web','320','Fabian Fagerholm ','all','albatross','1.36-5','pool/main/a/albatross/python-albatross_1.36-5_all.deb','85784','Toolkit for Stateful Web Applications','http://www.object-craft.com.au/projects/albatross/'),(455,'albumshaper','optional','graphics','7356','Jano Kupec ','i386','','2.1-5','pool/main/a/albumshaper/albumshaper_2.1-5_i386.deb','4400704','Photo album creator and photo manipulator','http://albumshaper.sourceforge.net/'),(456,'alcovebook-sgml-doc','optional','doc','6468','Yann Dirson ','all','alcovebook-sgml','0.1.2dfsg-8','pool/main/a/alcovebook-sgml/alcovebook-sgml-doc_0.1.2dfsg-8_all.deb','274786','Documentation for the AlcoveBook DTD',''),(457,'alcovebook-sgml','optional','text','328','Yann Dirson ','all','','0.1.2dfsg-8','pool/main/a/alcovebook-sgml/alcovebook-sgml_0.1.2dfsg-8_all.deb','34348','Alcove customisation of the DocBook DTD and stylesheets',''),(458,'aldo','optional','hamradio','220','Giuseppe Martino (denever) ','i386','','0.7.5-1','pool/main/a/aldo/aldo_0.7.5-1_i386.deb','71522','Morse code training program',''),(459,'ale','optional','graphics','760','Ruben Molina ','i386','','0.9.0.3-1','pool/main/a/ale/ale_0.9.0.3-1_i386.deb','323372','synthetic capture engine and renderer','http://auricle.dyndns.org/ALE/'),(460,'alevt','extra','x11','204','Andreas Rottmann ','i386','','1:1.6.1-10.2','pool/main/a/alevt/alevt_1.6.1-10.2_i386.deb','82662','X11 Teletext/Videotext browser',''),(461,'alex','optional','haskell','956','Ian Lynagh (wibble) ','i386','','2.2-0.2','pool/main/a/alex/alex_2.2-0.2_i386.deb','257292','lexical analyser generator for Haskell','http://www.haskell.org/alex/'),(462,'alex4-data','optional','games','632','Debian Games Team ','all','alex4','1.1-3','pool/main/a/alex4/alex4-data_1.1-3_all.deb','580564','Alex the Allegator 4 - game data','http://allegator.sourceforge.net/'),(463,'alex4','optional','games','192','Debian Games Team ','i386','','1.1-3','pool/main/a/alex4/alex4_1.1-3_i386.deb','55696','Alex the Allegator 4 - a retro platform game','http://allegator.sourceforge.net/'),(464,'alexandria','extra','gnome','2032','Dafydd Harries ','all','','0.6.1-1','pool/main/a/alexandria/alexandria_0.6.1-1_all.deb','911034','a GNOME application for managing book collections',''),(465,'alien-hunter','optional','science','164','Debian Med Packaging Team ','all','','1.7-1','pool/main/a/alien-hunter/alien-hunter_1.7-1_all.deb','30470','Interpolated Variable Order Motifs to identify horizontally acquired DNA','http://www.sanger.ac.uk/Software/analysis/alien_hunter/'),(466,'alien','optional','admin','276','Joey Hess ','all','','8.78','pool/main/a/alien/alien_8.78_all.deb','107256','convert and install rpm and other packages','http://kitenet.net/~joey/code/alien/'),(467,'alienblaster-data','extra','games','11720','Debian Games Team ','all','alienblaster','1.1.0-4','pool/main/a/alienblaster/alienblaster-data_1.1.0-4_all.deb','6469626','Game data for Alien Blaster','http://www.schwardtnet.de/alienblaster/'),(468,'alienblaster','extra','games','848','Debian Games Team ','i386','','1.1.0-4','pool/main/a/alienblaster/alienblaster_1.1.0-4_i386.deb','251398','Classic 2D shoot \'em up','http://www.schwardtnet.de/alienblaster/'),(469,'all-in-one-sidebar','optional','web','1996','Debian Mozilla Extension Maintainers ','all','','0.7.10-2','pool/main/a/all-in-one-sidebar/all-in-one-sidebar_0.7.10-2_all.deb','294448','A sidebar extension for Mozilla Firefox','http://firefox.exxile.net/aios/'),(470,'allegro-demo-data','optional','devel','432','Debian allegro packages maintainers ','all','','3.9.36-7','pool/main/a/allegro-demo-data/allegro-demo-data_3.9.36-7_all.deb','369166','graphics and audio data for allegro-demo',''),(471,'allegro-demo','optional','games','272','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/allegro-demo_4.2.2-2.1_i386.deb','123848','cool game, demonstrating power of the Allegro library',''),(472,'allegro-examples','optional','utils','928','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/allegro-examples_4.2.2-2.1_i386.deb','353342','example programs and demo tools for the Allegro library',''),(473,'liballegro-doc','optional','doc','6732','Debian allegro packages maintainers ','all','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro-doc_4.2.2-2.1_all.deb','1590930','documentation for the Allegro library',''),(474,'liballegro4.2-dev','optional','libdevel','2840','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-dev_4.2.2-2.1_i386.deb','949706','development files for the Allegro library',''),(475,'liballegro4.2-plugin-arts','optional','libs','40','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-arts_4.2.2-2.1_i386.deb','4508','aRts audio plugin for the Allegro library',''),(476,'liballegro4.2-plugin-esd','optional','libs','40','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-esd_4.2.2-2.1_i386.deb','4822','esd audio plugin for the Allegro library',''),(477,'liballegro4.2-plugin-jack','optional','libs','44','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-jack_4.2.2-2.1_i386.deb','5278','JACK audio plugin for the Allegro library',''),(478,'liballegro4.2-plugin-svgalib','optional','libs','44','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-svgalib_4.2.2-2.1_i386.deb','6592','SVGAlib video plugin for the Allegro library',''),(479,'liballegro4.2','optional','libs','1260','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2_4.2.2-2.1_i386.deb','539994','portable library for cross-platform game and multimedia development',''),(480,'alleyoop','optional','devel','980','Debian GNOME Maintainers ','i386','','0.9.5-1','pool/main/a/alleyoop/alleyoop_0.9.5-1_i386.deb','158396','Front-end to the Valgrind memory checker','http://alleyoop.sourceforge.net'),(481,'alltray','optional','x11','224','Carlos C Soto ','i386','','0.69-1','pool/main/a/alltray/alltray_0.69-1_i386.deb','59552','Dock any program into the system tray',''),(482,'almanah','extra','gnome','528','Angel Abad (Ikusnet SLL) ','i386','','0.6.1-2','pool/main/a/almanah/almanah_0.6.1-2_i386.deb','101278','application to ease management of a personal diary','http://tecnocode.co.uk/projects/almanah/'),(483,'libalogg-dev','optional','libdevel','184','Debian allegro packages maintainers ','i386','alogg','1.3.7-1.1','pool/main/a/alogg/libalogg-dev_1.3.7-1.1_i386.deb','41966','Ogg/Vorbis library for Allegro - development files',''),(484,'libalogg1','optional','libs','84','Debian allegro packages maintainers ','i386','alogg','1.3.7-1.1','pool/main/a/alogg/libalogg1_1.3.7-1.1_i386.deb','16850','Ogg/Vorbis library for Allegro - shared libraries',''),(485,'alqalam','optional','tex','1580','Debian TeX maintainers ','all','','0.2-3','pool/main/a/alqalam/alqalam_0.2-3_all.deb','876684','Qur\'an typesetting macros for TeX/LaTeX','http://tech.groups.yahoo.com/group/QuranTypesetting/'),(486,'alsa-base','optional','sound','480','Debian ALSA Maintainers ','all','alsa-driver','1.0.21+dfsg-2','pool/main/a/alsa-driver/alsa-base_1.0.21+dfsg-2_all.deb','283924','ALSA driver configuration files','http://www.alsa-project.org/'),(487,'alsa-source','optional','kernel','3572','Debian ALSA Maintainers ','all','alsa-driver','1.0.21+dfsg-2','pool/main/a/alsa-driver/alsa-source_1.0.21+dfsg-2_all.deb','3519460','ALSA driver sources','http://www.alsa-project.org/'),(488,'linux-sound-base','optional','sound','136','Debian ALSA Maintainers ','all','alsa-driver','1.0.21+dfsg-2','pool/main/a/alsa-driver/linux-sound-base_1.0.21+dfsg-2_all.deb','28272','base package for ALSA and OSS sound systems','http://www.alsa-project.org/'),(489,'lib64asound2-dev','optional','libdevel','1852','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/lib64asound2-dev_1.0.21a-1_i386.deb','493034','shared library for ALSA applications -- development files (64 bit)','http://www.alsa-project.org/'),(490,'lib64asound2','optional','libs','968','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/lib64asound2_1.0.21a-1_i386.deb','364802','shared library for ALSA applications (64 bit)','http://www.alsa-project.org/'),(491,'libasound2-dev','optional','libdevel','1816','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/libasound2-dev_1.0.21a-1_i386.deb','508152','shared library for ALSA applications -- development files','http://www.alsa-project.org/'),(492,'libasound2-doc','optional','doc','13608','Debian ALSA Maintainers ','all','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/libasound2-doc_1.0.21a-1_all.deb','1438240','developer documentation for user-space ALSA application programming','http://www.alsa-project.org/'),(493,'libasound2','optional','libs','1236','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/libasound2_1.0.21a-1_i386.deb','373474','shared library for ALSA applications','http://www.alsa-project.org/'),(494,'alsa-oss','optional','sound','144','Debian ALSA Maintainers ','i386','','1.0.17-3','pool/main/a/alsa-oss/alsa-oss_1.0.17-3_i386.deb','30998','ALSA wrapper for OSS applications','http://www.alsa-project.org/'),(495,'lib64asound2-plugins','optional','libs','156','Debian ALSA Maintainers ','i386','alsa-plugins','1.0.21-3','pool/main/a/alsa-plugins/lib64asound2-plugins_1.0.21-3_i386.deb','46612','ALSA library additional plugins (64 bit)','http://www.alsa-project.org/'),(496,'libasound2-plugins','optional','libs','288','Debian ALSA Maintainers ','i386','alsa-plugins','1.0.21-3','pool/main/a/alsa-plugins/libasound2-plugins_1.0.21-3_i386.deb','73350','ALSA library additional plugins','http://www.alsa-project.org/'),(497,'alsa-tools-gui','extra','sound','836','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/alsa-tools-gui_1.0.21-1_i386.deb','261172','GUI based ALSA utilities for specific hardware','http://www.alsa-project.org/'),(498,'alsa-tools','extra','sound','304','Debian ALSA Maintainers ','i386','','1.0.21-1','pool/main/a/alsa-tools/alsa-tools_1.0.21-1_i386.deb','81936','Console based ALSA utilities for specific hardware','http://www.alsa-project.org/'),(499,'ld10k1','extra','sound','488','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/ld10k1_1.0.21-1_i386.deb','106626','ALSA emu10k1/2 patch loader','http://www.alsa-project.org/'),(500,'liblo10k1-0','extra','libs','108','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/liblo10k1-0_1.0.21-1_i386.deb','31252','ALSA emu10k1/2 patch-loader library','http://www.alsa-project.org/'),(501,'liblo10k1-dev','extra','devel','184','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/liblo10k1-dev_1.0.21-1_i386.deb','37196','ALSA emu10k1/2 patch-loader library development files','http://www.alsa-project.org/'),(502,'qlo10k1','extra','sound','456','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/qlo10k1_1.0.21-1_i386.deb','141602','ALSA ld10k1 utility','http://www.alsa-project.org/'),(503,'alsa-utils','optional','sound','1984','Debian ALSA Maintainers ','i386','','1.0.21-1','pool/main/a/alsa-utils/alsa-utils_1.0.21-1_i386.deb','1096902','ALSA utilities','http://www.alsa-project.org/'),(504,'alsamixergui','optional','sound','96','Paul Brossier ','i386','','0.9.0rc2-1-9','pool/main/a/alsamixergui/alsamixergui_0.9.0rc2-1-9_i386.deb','30530','graphical soundcard mixer for ALSA soundcard driver',''),(505,'alsaplayer-alsa','optional','sound','80','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-alsa_0.99.80-4_i386.deb','32660','PCM player designed for ALSA (ALSA output module)','http://www.alsaplayer.org/'),(506,'alsaplayer-common','optional','sound','424','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-common_0.99.80-4_i386.deb','166898','PCM player designed for ALSA (common files)','http://www.alsaplayer.org/'),(507,'alsaplayer-daemon','optional','sound','108','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-daemon_0.99.80-4_i386.deb','32968','PCM player designed for ALSA (non-interactive version)','http://www.alsaplayer.org/'),(508,'alsaplayer-esd','optional','sound','76','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-esd_0.99.80-4_i386.deb','30882','PCM player designed for ALSA (EsounD output module)','http://www.alsaplayer.org/'),(509,'alsaplayer-gtk','optional','sound','548','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-gtk_0.99.80-4_i386.deb','191464','PCM player designed for ALSA (GTK+ version)','http://www.alsaplayer.org/'),(510,'alsaplayer-jack','optional','sound','84','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-jack_0.99.80-4_i386.deb','34748','PCM player designed for ALSA (JACK output module)','http://www.alsaplayer.org/'),(511,'alsaplayer-nas','optional','sound','80','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-nas_0.99.80-4_i386.deb','32808','PCM player designed for ALSA (NAS output module)','http://www.alsaplayer.org/'),(512,'alsaplayer-oss','optional','sound','76','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-oss_0.99.80-4_i386.deb','31022','PCM player designed for ALSA (OSS output module)','http://www.alsaplayer.org/'),(513,'alsaplayer-text','optional','sound','100','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-text_0.99.80-4_i386.deb','33750','PCM player designed for ALSA (text version)','http://www.alsaplayer.org/'),(514,'alsaplayer-xosd','optional','sound','108','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-xosd_0.99.80-4_i386.deb','33688','PCM player designed for ALSA (osd version)','http://www.alsaplayer.org/'),(515,'libalsaplayer-dev','optional','libdevel','536','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/libalsaplayer-dev_0.99.80-4_i386.deb','89270','PCM player designed for ALSA (interface library, development files)','http://www.alsaplayer.org/'),(516,'libalsaplayer0','optional','libs','92','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/libalsaplayer0_0.99.80-4_i386.deb','37068','PCM player designed for ALSA (interface library)','http://www.alsaplayer.org/'),(517,'alt-ergo','optional','math','1148','Debian OCaml Maintainers ','i386','alt-ergo (0.9-1)','0.9-1+b1','pool/main/a/alt-ergo/alt-ergo_0.9-1+b1_i386.deb','427948','Automatic theorem prover dedicated to program verification','http://alt-ergo.lri.fr'),(518,'altermime','optional','mail','192','Julien Valroff ','i386','','0.3.10-2','pool/main/a/altermime/altermime_0.3.10-2_i386.deb','55086','utility used to alter mime-encoded mailpacks','http://www.pldaniels.com/altermime/'),(519,'altree-examples','optional','science','1108','Debian-Med Packaging Team ','all','altree','1.0.1-3','pool/main/a/altree/altree-examples_1.0.1-3_all.deb','400662','example files for ALTree','http://claire.bardel.free.fr/'),(520,'altree','optional','science','584','Debian-Med Packaging Team ','i386','','1.0.1-3','pool/main/a/altree/altree_1.0.1-3_i386.deb','254424','program to perform phylogeny based analyses','http://claire.bardel.free.fr/'),(521,'alure-doc','optional','doc','232','Debian Games Team ','all','alure','1.0-2','pool/main/a/alure/alure-doc_1.0-2_all.deb','18744','AL Utilities REtooled (documentation)','http://kcat.strangesoft.net/alure.html'),(522,'libalure-dev','optional','libdevel','152','Debian Games Team ','i386','alure','1.0-2','pool/main/a/alure/libalure-dev_1.0-2_i386.deb','28398','AL Utilities REtooled (development files)','http://kcat.strangesoft.net/alure.html'),(523,'libalure1-dbg','extra','debug','228','Debian Games Team ','i386','alure','1.0-2','pool/main/a/alure/libalure1-dbg_1.0-2_i386.deb','72788','AL Utilities REtooled (debugging symbols)','http://kcat.strangesoft.net/alure.html'),(524,'libalure1','optional','libs','92','Debian Games Team ','i386','alure','1.0-2','pool/main/a/alure/libalure1_1.0-2_i386.deb','22000','AL Utilities REtooled (shared library)','http://kcat.strangesoft.net/alure.html'),(525,'am-utils-doc','extra','doc','1636','Tim Cutts ','all','am-utils','6.1.5-15','pool/main/a/am-utils/am-utils-doc_6.1.5-15_all.deb','700088','automounter utilities documentation','http://www.am-utils.org/'),(526,'am-utils','extra','net','740','Tim Cutts ','i386','','6.1.5-15','pool/main/a/am-utils/am-utils_6.1.5-15_i386.deb','396686','automounter utilities from 4.4BSD (includes amd)','http://www.am-utils.org/'),(527,'libamu-dev','extra','libdevel','176','Tim Cutts ','i386','am-utils','6.1.5-15','pool/main/a/am-utils/libamu-dev_6.1.5-15_i386.deb','45272','Support library for amd the 4.4BSD automounter (development)','http://www.am-utils.org/'),(528,'libamu4','extra','libs','204','Tim Cutts ','i386','am-utils','6.1.5-15','pool/main/a/am-utils/libamu4_6.1.5-15_i386.deb','164778','Support library for amd the 4.4BSD automounter (runtime)','http://www.am-utils.org/'),(529,'amanda-client','optional','utils','572','Bdale Garbee ','i386','amanda','1:2.6.1p1-2','pool/main/a/amanda/amanda-client_2.6.1p1-2_i386.deb','191836','Advanced Maryland Automatic Network Disk Archiver (Client)',''),(530,'amanda-common','optional','utils','4316','Bdale Garbee ','i386','amanda','1:2.6.1p1-2','pool/main/a/amanda/amanda-common_2.6.1p1-2_i386.deb','1505410','Advanced Maryland Automatic Network Disk Archiver (Libs)',''),(531,'amanda-server','optional','utils','1296','Bdale Garbee ','i386','amanda','1:2.6.1p1-2','pool/main/a/amanda/amanda-server_2.6.1p1-2_i386.deb','436580','Advanced Maryland Automatic Network Disk Archiver (Server)',''),(532,'amap-align','optional','science','256','Debian-Med Packaging Team ','i386','','2.2-1','pool/main/a/amap-align/amap-align_2.2-1_i386.deb','127424','Protein multiple alignment by sequence annealing','http://bio.math.berkeley.edu/amap/'),(533,'python-amara','extra','python','284','David Villa Alises ','all','amara','1.2a2-1','pool/main/a/amara/python-amara_1.2a2-1_all.deb','53270','Amara is a pythonic XML toolkit',''),(534,'amarok-common','optional','sound','9124','Modestas Vainius ','all','amarok','2.2.0-1','pool/main/a/amarok/amarok-common_2.2.0-1_all.deb','3305624','architecture independent files for Amarok','http://amarok.kde.org'),(535,'amarok-dbg','extra','debug','112816','Modestas Vainius ','i386','amarok','2.2.0-1','pool/main/a/amarok/amarok-dbg_2.2.0-1_i386.deb','43865924','debugging symbols for Amarok','http://amarok.kde.org'),(536,'amarok-utils','optional','utils','496','Modestas Vainius ','i386','amarok','2.2.0-1','pool/main/a/amarok/amarok-utils_2.2.0-1_i386.deb','247498','utilities for Amarok media player','http://amarok.kde.org'),(537,'amarok','optional','sound','18900','Modestas Vainius ','i386','','2.2.0-1','pool/main/a/amarok/amarok_2.2.0-1_i386.deb','7154388','easy to use media player based on the KDE 4 technology platform','http://amarok.kde.org'),(538,'amavisd-new-milter','extra','mail','128','Brian May ','i386','amavisd-new','1:2.6.4-1','pool/main/a/amavisd-new/amavisd-new-milter_2.6.4-1_i386.deb','34884','Interface between sendmail-milter and amavisd-new',''),(539,'amavisd-new','extra','mail','2364','Brian May ','all','','1:2.6.4-1','pool/main/a/amavisd-new/amavisd-new_2.6.4-1_all.deb','888192','Interface between MTA and virus scanner/content filters',''),(540,'amb-plugins','extra','sound','64','Debian Multimedia Team ','i386','','0.3.0-1','pool/main/a/amb-plugins/amb-plugins_0.3.0-1_i386.deb','17692','ambisonics LADPSA plugins',''),(541,'amd64-libs-dev','optional','libdevel','144','Daniel Jacobowitz ','i386','amd64-libs','1.4+nmu1','pool/main/a/amd64-libs/amd64-libs-dev_1.4+nmu1_i386.deb','31328','Amd64 development libraries and headers for use on i386/x86_64 systems',''),(542,'amd64-libs','optional','libs','140','Daniel Jacobowitz ','i386','','1.4+nmu1','pool/main/a/amd64-libs/amd64-libs_1.4+nmu1_i386.deb','33800','Amd64 shared libraries for use on i386/x86_64 systems',''),(543,'amide','optional','graphics','3884','Dominique Belhachemi ','i386','','0.9.1-5','pool/main/a/amide/amide_0.9.1-5_i386.deb','976242','software for Medical Imaging','http://amide.sourceforge.net/'),(544,'amideco','optional','utils','68','Uwe Hermann ','i386','','0.31e-3','pool/main/a/amideco/amideco_0.31e-3_i386.deb','11472','Decompress flashfiles equipped with an AMI BIOS','http://www.kaos.ru/biosgfx/'),(545,'amiga-fdisk-cross','extra','admin','84','Christian T. Steigies ','i386','amiga-fdisk','0.04-14','pool/main/a/amiga-fdisk/amiga-fdisk-cross_0.04-14_i386.deb','18590','Partition editor for Amiga partitions (cross version)','https://alioth.debian.org/projects/amiga-fdisk/'),(546,'amora-server','extra','x11','104','Axel Beckert ','i386','amora-server (1.1-1)','1.1-1+b1','pool/main/a/amora-server/amora-server_1.1-1+b1_i386.deb','15686','use a bluetooth enabled mobile phone as desktop remote control','http://amora.googlecode.com/'),(547,'ampache-themes','extra','web','7684','Charlie Smotherman ','all','','3.4.3-1','pool/main/a/ampache-themes/ampache-themes_3.4.3-1_all.deb','2965628','Themes for Ampache','http://www.ampache.org'),(548,'ampache','optional','web','8788','Charlie Smotherman ','all','','3.5.1-2','pool/main/a/ampache/ampache_3.5.1-2_all.deb','1781492','web-based audio file management system','http://www.ampache.org'),(549,'amphetamine-data','optional','games','1956','Debian Games Team ','all','','0.8.7-12','pool/main/a/amphetamine-data/amphetamine-data_0.8.7-12_all.deb','944964','data files for the game \"Amphetamine\"',''),(550,'amphetamine','optional','games','316','Debian Games Team ','i386','','0.8.10-14','pool/main/a/amphetamine/amphetamine_0.8.10-14_i386.deb','100562','jump\'n run game with unique visual effects','http://homepage.hispeed.ch/loehrer/amph/amph.html'),(551,'ample','optional','sound','184','Rene Mayorga ','i386','','0.5.7-6','pool/main/a/ample/ample_0.5.7-6_i386.deb','38890','A simple MP3 server easy to use','http://ample.sourceforge.net'),(552,'libamrita-ruby1.8','optional','ruby','1532','TANIGUCHI Takaki ','all','amrita','1.0.2-8','pool/main/a/amrita/libamrita-ruby1.8_1.0.2-8_all.deb','143748','HTML/XML template library for Ruby 1.8','http://amrita.sourceforge.jp/'),(553,'ams','optional','sound','1528','Debian Multimedia Team ','i386','','1.8.8~rc2-3.1','pool/main/a/ams/ams_1.8.8~rc2-3.1_i386.deb','384768','Realtime modular synthesizer for ALSA',''),(554,'amsn-data','optional','x11','10492','Muammar El Khatib ','all','amsn','0.97.2~debian-3','pool/main/a/amsn/amsn-data_0.97.2~debian-3_all.deb','3254124','Data files for aMSN','http://amsn.sourceforge.net/'),(555,'amsn','optional','x11','860','Muammar El Khatib ','i386','','0.97.2~debian-3','pool/main/a/amsn/amsn_0.97.2~debian-3_i386.deb','269736','An MSN messenger written in Tcl','http://amsn.sourceforge.net/'),(556,'amsynth','optional','sound','716','Debian Multimedia Team ','i386','','1.2.0-4','pool/main/a/amsynth/amsynth_1.2.0-4_i386.deb','266808','two oscillator software synthesizer',''),(557,'amtterm','extra','net','92','Reinhard Tartler ','i386','','1.1-1','pool/main/a/amtterm/amtterm_1.1-1_i386.deb','18134','Serial-over-lan (sol) client for Intel AMT, console version',''),(558,'gamt','extra','net','92','Reinhard Tartler ','i386','amtterm','1.1-1','pool/main/a/amtterm/gamt_1.1-1_i386.deb','20152','Serial-over-lan (sol) client for Intel AMT, gtk version',''),(559,'amule-emc','optional','utils','80','Sandro Tosi ','i386','','0.5.2-2','pool/main/a/amule-emc/amule-emc_0.5.2-2_i386.deb','16046','lists ed2k links inside emulecollection files','http://code.google.com/p/amule-emc/'),(560,'amule-common','optional','net','6456','Adeodato Simó ','all','amule','2.2.5-1.1','pool/main/a/amule/amule-common_2.2.5-1.1_all.deb','2425196','common files for the rest of aMule packages','http://www.amule.org'),(561,'amule-daemon','optional','net','2900','Adeodato Simó ','i386','amule','2.2.5-1.1','pool/main/a/amule/amule-daemon_2.2.5-1.1_i386.deb','1172070','non-graphic version of aMule, a client for the eD2k and Kad networks','http://www.amule.org'),(562,'amule-utils-gui','optional','net','3348','Adeodato Simó ','i386','amule','2.2.5-1.1','pool/main/a/amule/amule-utils-gui_2.2.5-1.1_i386.deb','1279660','graphic utilities for aMule','http://www.amule.org'),(563,'amule-utils','optional','net','880','Adeodato Simó ','i386','amule','2.2.5-1.1','pool/main/a/amule/amule-utils_2.2.5-1.1_i386.deb','453092','utilities for aMule (command-line version)','http://www.amule.org'),(564,'amule','optional','net','4460','Adeodato Simó ','i386','','2.2.5-1.1','pool/main/a/amule/amule_2.2.5-1.1_i386.deb','1837034','client for the eD2k and Kad networks, like eMule','http://www.amule.org'),(565,'an','optional','games','84','Paul Martin ','i386','','0.95-3.1','pool/main/a/an/an_0.95-3.1_i386.deb','13830','very fast anagram generator',''),(566,'anacron','optional','admin','212','Peter Eisentraut ','i386','','2.3-14','pool/main/a/anacron/anacron_2.3-14_i386.deb','30144','cron-like program that doesn\'t go by time',''),(567,'analog','optional','web','4572','Bradley Smith ','i386','','2:6.0-19','pool/main/a/analog/analog_6.0-19_i386.deb','1367292','web server log analyzer','http://www.analog.cx/'),(568,'anarchism','optional','doc','13524','Ed Boraas ','all','','11.7-1','pool/main/a/anarchism/anarchism_11.7-1_all.deb','6623686','An exhaustive exploration of Anarchist theory and practice',''),(569,'and','extra','misc','132','Jerome Warnier ','i386','','1.2.2-2.1','pool/main/a/and/and_1.2.2-2.1_i386.deb','25978','Auto Nice Daemon',''),(570,'angband-doc','optional','doc','3668','Manoj Srivastava ','all','','3.0.3.5','pool/main/a/angband-doc/angband-doc_3.0.3.5_all.deb','943562','Documentation for the roguelike game Angband.','ftp://clockwork.dementia.org/angband'),(571,'angband','optional','games','4224','Chris Carr ','i386','','1:3.1.1.1626-1','pool/main/a/angband/angband_3.1.1.1626-1_i386.deb','1756782','A single-player, text-based, dungeon simulation game.',''),(572,'angrydd','optional','games','5712','Daniel Watkins ','all','','1.0.1-8','pool/main/a/angrydd/angrydd_1.0.1-8_all.deb','4694208','Angry Drunken Dwarves - falling blocks puzzle game','http://www.sacredchao.net/~piman/angrydd/'),(573,'animals','optional','games','96','Jim Lynch ','i386','','20031130-2.4','pool/main/a/animals/animals_20031130-2.4_i386.deb','18526','Traditional AI animal guessing engine using a binary tree DB',''),(574,'anjuta-common','optional','devel','19340','Rob Bradford ','all','anjuta','2:2.26.2.2-2','pool/main/a/anjuta/anjuta-common_2.26.2.2-2_all.deb','6148318','A GNOME development IDE, for C/C++ - data files','http://www.anjuta.org'),(575,'anjuta-dbg','extra','debug','10920','Rob Bradford ','i386','anjuta','2:2.26.2.2-2','pool/main/a/anjuta/anjuta-dbg_2.26.2.2-2_i386.deb','4580682','A GNOME development IDE, for C/C++ - debug files','http://www.anjuta.org'),(576,'anjuta-dev','optional','devel','1032','Rob Bradford ','i386','anjuta','2:2.26.2.2-2','pool/main/a/anjuta/anjuta-dev_2.26.2.2-2_i386.deb','424110','A GNOME development IDE, for C/C++ - development files','http://www.anjuta.org'),(577,'anjuta','optional','gnome','5564','Rob Bradford ','i386','','2:2.26.2.2-2','pool/main/a/anjuta/anjuta_2.26.2.2-2_i386.deb','2465868','A GNOME development IDE, for C/C++','http://www.anjuta.org'),(578,'anki','optional','misc','3028','Andreas Bombe ','all','','0.9.9.7.8-1','pool/main/a/anki/anki_0.9.9.7.8-1_all.deb','956882','flashcard learning program with special support for Japanese','http://ichi2.net/anki'),(579,'ann-tools','optional','math','92','Debian Scientific Computing Team ','i386','ann','1.1.1+doc-2.1','pool/main/a/ann/ann-tools_1.1.1+doc-2.1_i386.deb','13898','Approximate Nearest Neighbor Searching library (tools)','http://www.cs.umd.edu/~mount/ANN/'),(580,'libann-dev','optional','libdevel','572','Debian Scientific Computing Team ','i386','ann','1.1.1+doc-2.1','pool/main/a/ann/libann-dev_1.1.1+doc-2.1_i386.deb','372234','Approximate Nearest Neighbor Searching library (development files)','http://www.cs.umd.edu/~mount/ANN/'),(581,'libann0','optional','libs','116','Debian Scientific Computing Team ','i386','ann','1.1.1+doc-2.1','pool/main/a/ann/libann0_1.1.1+doc-2.1_i386.deb','29252','Approximate Nearest Neighbor Searching library','http://www.cs.umd.edu/~mount/ANN/'),(582,'anon-proxy','optional','web','384','David Spreen ','i386','','00.05.38+20081230-1.1','pool/main/a/anon-proxy/anon-proxy_00.05.38+20081230-1.1_i386.deb','133376','Proxy to surf the web anonymously','http://anon.inf.tu-dresden.de/'),(583,'ant-contrib','extra','java','608','Debian Java Maintainers ','all','','1.0~b3+svn177-1','pool/main/a/ant-contrib/ant-contrib_1.0~b3+svn177-1_all.deb','265184','collection of tasks, types and other tools for Apache Ant','http://ant-contrib.sourceforge.net'),(584,'ant-phone','extra','net','512','Roland Stigge ','i386','','0.2.1-1','pool/main/a/ant-phone/ant-phone_0.2.1-1_i386.deb','115954','An interactive ISDN telephone application','http://www.antcom.de/'),(585,'ant-doc','optional','doc','35780','Debian Java Maintainers ','all','ant','1.7.1-4','pool/main/a/ant/ant-doc_1.7.1-4_all.deb','3269036','Java based build tool like make - API documentation and manual','http://ant.apache.org/'),(586,'ant-gcj','optional','java','3916','Debian Java Maintainers ','i386','ant','1.7.1-4','pool/main/a/ant/ant-gcj_1.7.1-4_i386.deb','1208244','Java based build tool like make','http://ant.apache.org/'),(587,'ant-optional-gcj','optional','java','2232','Debian Java Maintainers ','i386','ant','1.7.1-4','pool/main/a/ant/ant-optional-gcj_1.7.1-4_i386.deb','656772','Java based build tool like make - API documentation and manual','http://ant.apache.org/'),(588,'ant-optional','optional','java','1180','Debian Java Maintainers ','all','ant','1.7.1-4','pool/main/a/ant/ant-optional_1.7.1-4_all.deb','657230','Java based build tool like make - optional libraries','http://ant.apache.org/'),(589,'ant','optional','java','1548','Debian Java Maintainers ','all','','1.7.1-4','pool/main/a/ant/ant_1.7.1-4_all.deb','1297496','Java based build tool like make','http://ant.apache.org/'),(590,'anteater','optional','mail','304','Andrea Capriotti ','i386','','0.4.5-8','pool/main/a/anteater/anteater_0.4.5-8_i386.deb','113950','MTA log analyser written 100% in C++',''),(591,'antennavis','optional','hamradio','268','Debian QA Group ','i386','','0.3-6','pool/main/a/antennavis/antennavis_0.3-6_i386.deb','54346','antenna visualization software',''),(592,'anthy-el','optional','lisp','140','NOKUBI Takatsugu ','all','anthy','9100e-3.2','pool/main/a/anthy/anthy-el_9100e-3.2_all.deb','36204','input method for Japanese - elisp frontend',''),(593,'anthy','optional','utils','12876','NOKUBI Takatsugu ','i386','','9100e-3.2','pool/main/a/anthy/anthy_9100e-3.2_i386.deb','3372644','input method for Japanese - backend, dictionary and utility',''),(594,'libanthy-dev','optional','libdevel','548','NOKUBI Takatsugu ','i386','anthy','9100e-3.2','pool/main/a/anthy/libanthy-dev_9100e-3.2_i386.deb','197582','input method for Japanese - development files',''),(595,'libanthy0','optional','libs','392','NOKUBI Takatsugu ','i386','anthy','9100e-3.2','pool/main/a/anthy/libanthy0_9100e-3.2_i386.deb','166426','input method for Japanese - runtime library',''),(596,'antigravitaattori','optional','games','1896','Debian Games Team ','i386','antigrav (0.0.3-2)','0.0.3-2+b1','pool/main/a/antigrav/antigravitaattori_0.0.3-2+b1_i386.deb','1492934','Multiplayer flying saucer racing game','http://www.luolamies.org/software/antigrav/'),(597,'antiword','optional','text','772','Erik Schanze ','i386','','0.37-6','pool/main/a/antiword/antiword_0.37-6_i386.deb','150904','Converts MS Word files to text, PS and PDF','http://www.winfield.demon.nl/'),(598,'antlr-doc','optional','doc','3520','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/antlr-doc_2.7.7-14_all.deb','891774','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(599,'antlr','optional','devel','68','Debian Java Maintainers ','all','','2.7.7-14','pool/main/a/antlr/antlr_2.7.7-14_all.deb','10932','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(600,'cantlr','optional','devel','60','Debian Java Maintainers ','i386','antlr','2.7.7-14','pool/main/a/antlr/cantlr_2.7.7-14_i386.deb','10412','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(601,'libantlr-dev','optional','libdevel','1388','Debian Java Maintainers ','i386','antlr','2.7.7-14','pool/main/a/antlr/libantlr-dev_2.7.7-14_i386.deb','316212','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(602,'libantlr-java-gcj','optional','devel','1996','Debian Java Maintainers ','i386','antlr','2.7.7-14','pool/main/a/antlr/libantlr-java-gcj_2.7.7-14_i386.deb','571250','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(603,'libantlr-java','optional','java','508','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/libantlr-java_2.7.7-14_all.deb','430744','language tool for constructing recognizers, compilers etc (java library)','http://www.antlr2.org/'),(604,'libantlr2.7-cil','optional','cli-mono','188','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/libantlr2.7-cil_2.7.7-14_all.deb','47948','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(605,'python-antlr','optional','python','144','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/python-antlr_2.7.7-14_all.deb','23396','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(606,'antlr3-gcj','optional','devel','1696','Debian Java Maintainers ','i386','antlr3','3.0.1+dfsg-4','pool/main/a/antlr3/antlr3-gcj_3.0.1+dfsg-4_i386.deb','494584','language tool for constructing recognizers, compilers etc (native code)',''),(607,'antlr3','optional','devel','592','Debian Java Maintainers ','all','','3.0.1+dfsg-4','pool/main/a/antlr3/antlr3_3.0.1+dfsg-4_all.deb','532970','language tool for constructing recognizers, compilers etc',''),(608,'anubis','optional','net','916','Krzysztof Burghardt ','i386','','4.1.1+dfsg1-3','pool/main/a/anubis/anubis_4.1.1+dfsg1-3_i386.deb','244644','an SMTP message submission daemon','http://www.gnu.org/software/anubis/'),(609,'anypaper','extra','utils','148','Alejandro Garrido Mota ','i386','','1.4-1','pool/main/a/anypaper/anypaper_1.4-1_i386.deb','47172','front-end for wallpapersetter','http://anypaper.sourceforge.net'),(610,'anyremote-doc','extra','doc','2196','Juan Angulo Moreno ','all','anyremote','4.18.1-1','pool/main/a/anyremote/anyremote-doc_4.18.1-1_all.deb','1232546','Documentation for anyremote','http://anyremote.sourceforge.net'),(611,'anyremote','extra','utils','1172','Juan Angulo Moreno ','i386','anyremote (4.18.1-1)','4.18.1-1+b1','pool/main/a/anyremote/anyremote_4.18.1-1+b1_i386.deb','282294','Remote control daemon for applications using Bluetooth, IrDA or WiFi','http://anyremote.sourceforge.net'),(612,'anyremote2html','extra','web','748','Philipp Huebner ','all','','1.0-1','pool/main/a/anyremote2html/anyremote2html_1.0-1_all.deb','259536','web interface for anyRemote acting as HTTP server','http://anyremote.sourceforge.net/'),(613,'aoetools','optional','admin','196','David MartÃÂnez Moreno ','i386','','30-3','pool/main/a/aoetools/aoetools_30-3_i386.deb','34146','tools to assist in using ATA over Ethernet','http://aoetools.sf.net'),(614,'aoeui','optional','editors','172','Ryan Kavanagh ','i386','','1.4-1','pool/main/a/aoeui/aoeui_1.4-1_i386.deb','67572','lightweight, unobtrusive, Dvorak-optimized text editor','http://code.google.com/p/aoeui/'),(615,'aolserver4-nsimap','optional','httpd','64','Riccardo Setti ','i386','','3.2.3-4','pool/main/a/aolserver4-nsimap/aolserver4-nsimap_3.2.3-4_i386.deb','26380','This is AOLserver 4 module that implements IMAP4 interface','http://www.aolserver.com/'),(616,'aolserver4-nsldap','optional','httpd','48','Riccardo Setti ','i386','','0.8-4','pool/main/a/aolserver4-nsldap/aolserver4-nsldap_0.8-4_i386.deb','17122','AOLServer 4 module for LDAP','http://www.aolserver.com/'),(617,'aolserver4-nsmysql','optional','httpd','100','Francesco Paolo Lovergine ','i386','aolserver4-nsmysql (0.6-9)','0.6-9+b1','pool/main/a/aolserver4-nsmysql/aolserver4-nsmysql_0.6-9+b1_i386.deb','23122','AOLserver 4 module: module for accessing MySQL databases','http://www.aolserver.com/'),(618,'aolserver4-nsopenssl','optional','httpd','213','Francesco Paolo Lovergine ','i386','','3.0beta26-4','pool/main/a/aolserver4-nsopenssl/aolserver4-nsopenssl_3.0beta26-4_i386.deb','74456','AOLserver 4 module: module for SSL mode','http://www.aolserver.com/'),(619,'aolserver4-nspostgres','optional','httpd','60','Francesco Paolo Lovergine ','i386','','4.5-3','pool/main/a/aolserver4-nspostgres/aolserver4-nspostgres_4.5-3_i386.deb','23690','AOLserver 4 module: Postgres connector','http://www.aolserver.com/'),(620,'aolserver4-nssha1','optional','httpd','32','Francesco Paolo Lovergine ','i386','','0.1-3','pool/main/a/aolserver4-nssha1/aolserver4-nssha1_0.1-3_i386.deb','8394','AOLserver4 module: performs SHA1 hashes Provides a Tcl','http://www.aolserver.com/'),(621,'aolserver4-nssqlite3','optional','net','56','Francesco Paolo Lovergine ','i386','','0.9-2','pool/main/a/aolserver4-nssqlite3/aolserver4-nssqlite3_0.9-2_i386.deb','17192','AOLserver 4 module: module for accessing SQLite 3 databases','http://www.aolserver.com/'),(622,'aolserver4-nsxml','optional','httpd','24','Riccardo Setti ','i386','','1.5-2','pool/main/a/aolserver4-nsxml/aolserver4-nsxml_1.5-2_i386.deb','5178','Module for XML support in aolsever4',''),(623,'aolserver4-core-4.5.1','optional','web','676','Francesco Paolo Lovergine ','i386','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-core-4.5.1_4.5.1-8_i386.deb','307160','AOL web server version 4 - core libraries','http://www.aolserver.com/'),(624,'aolserver4-core','optional','httpd','92','Francesco Paolo Lovergine ','all','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-core_4.5.1-8_all.deb','70714','AOL Web Server 4 - transitional package','http://www.aolserver.com/'),(625,'aolserver4-daemon','optional','web','752','Francesco Paolo Lovergine ','i386','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-daemon_4.5.1-8_i386.deb','172266','AOL web server version 4 - program files','http://www.aolserver.com/'),(626,'aolserver4-dev','optional','httpd','1956','Francesco Paolo Lovergine ','i386','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-dev_4.5.1-8_i386.deb','956064','AOL web server version 4 - development files','http://www.aolserver.com/'),(627,'aolserver4-doc','optional','doc','8033','Francesco Paolo Lovergine ','all','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-doc_4.5.1-8_all.deb','3324132','AOL web server version 4 - documentation','http://www.aolserver.com/'),(628,'ap-utils','optional','net','1016','Ben Hutchings ','i386','','1.5-2','pool/main/a/ap-utils/ap-utils_1.5-2_i386.deb','393730','Access Point SNMP Utils for Linux','http://ap-utils.polesye.net/'),(629,'libapache2-redirtoservname','optional','httpd','80','Simon Richter ','i386','apache2-redirtoservname','0.1.2-3','pool/main/a/apache2-redirtoservname/libapache2-redirtoservname_0.1.2-3_i386.deb','5204','Apache 2 module to redirect users to the canonical hostname',''),(630,'apache2-dbg','extra','debug','6808','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-dbg_2.2.14-2_i386.deb','2695358','Apache debugging symbols','http://httpd.apache.org/'),(631,'apache2-doc','optional','doc','12212','Debian Apache Maintainers ','all','apache2','2.2.14-2','pool/main/a/apache2/apache2-doc_2.2.14-2_all.deb','2281508','Apache HTTP Server documentation','http://httpd.apache.org/'),(632,'apache2-mpm-event','optional','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-event_2.2.14-2_i386.deb','2292','Apache HTTP Server - event driven model','http://httpd.apache.org/'),(633,'apache2-mpm-itk','extra','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-itk_2.2.14-2_i386.deb','2318','multiuser MPM for Apache 2.2','http://httpd.apache.org/'),(634,'apache2-mpm-prefork','optional','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-prefork_2.2.14-2_i386.deb','2318','Apache HTTP Server - traditional non-threaded model','http://httpd.apache.org/'),(635,'apache2-mpm-worker','optional','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-worker_2.2.14-2_i386.deb','2262','Apache HTTP Server - high speed threaded model','http://httpd.apache.org/'),(636,'apache2-prefork-dev','extra','httpd','692','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-prefork-dev_2.2.14-2_i386.deb','138034','Apache development headers - non-threaded MPM','http://httpd.apache.org/'),(637,'apache2-suexec-custom','extra','httpd','196','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-suexec-custom_2.2.14-2_i386.deb','93138','Configurable suexec program for Apache 2 mod_suexec','http://httpd.apache.org/'),(638,'apache2-suexec','optional','httpd','176','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-suexec_2.2.14-2_i386.deb','91560','Standard suexec program for Apache 2 mod_suexec','http://httpd.apache.org/'),(639,'apache2-threaded-dev','extra','httpd','700','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-threaded-dev_2.2.14-2_i386.deb','139228','Apache development headers - threaded MPM','http://httpd.apache.org/'),(640,'apache2-utils','optional','httpd','348','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-utils_2.2.14-2_i386.deb','152992','utility programs for webservers','http://httpd.apache.org/'),(641,'apache2.2-bin','optional','httpd','3208','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2.2-bin_2.2.14-2_i386.deb','1291480','Apache HTTP Server common binary files','http://httpd.apache.org/'),(642,'apache2.2-common','optional','httpd','2092','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2.2-common_2.2.14-2_i386.deb','292588','Apache HTTP Server common files','http://httpd.apache.org/'),(643,'apache2','optional','httpd','36','Debian Apache Maintainers ','i386','','2.2.14-2','pool/main/a/apache2/apache2_2.2.14-2_i386.deb','1374','Apache HTTP Server metapackage','http://httpd.apache.org/'),(644,'apachetop','optional','admin','112','Debian QA Group ','i386','','0.12.6-12','pool/main/a/apachetop/apachetop_0.12.6-12_i386.deb','34574','Realtime Apache monitoring tool','http://www.webta.org/projects/apachetop/'),(645,'apbs','optional','science','968','Debichem Team ','i386','','1.1.0-1','pool/main/a/apbs/apbs_1.1.0-1_i386.deb','376404','Adaptive Poisson Boltzmann Solver','http://apbs.sourceforge.net'),(646,'apcalc-common','optional','math','4028','Martin Buck ','all','apcalc','2.12.3.3-1','pool/main/a/apcalc/apcalc-common_2.12.3.3-1_all.deb','936938','Arbitrary precision calculator (common files)','http://www.isthe.com/chongo/tech/comp/calc/'),(647,'apcalc-dev','optional','devel','1496','Martin Buck ','i386','apcalc','2.12.3.3-1','pool/main/a/apcalc/apcalc-dev_2.12.3.3-1_i386.deb','548366','Library for arbitrary precision arithmetic','http://www.isthe.com/chongo/tech/comp/calc/'),(648,'apcalc','optional','math','684','Martin Buck ','i386','','2.12.3.3-1','pool/main/a/apcalc/apcalc_2.12.3.3-1_i386.deb','304768','Arbitrary precision calculator (original name: calc)','http://www.isthe.com/chongo/tech/comp/calc/'),(649,'apcupsd-cgi','extra','web','164','Debian QA Group ','i386','apcupsd','3.14.6-3','pool/main/a/apcupsd/apcupsd-cgi_3.14.6-3_i386.deb','52244','APC UPS Power Management (web interface)','http://www.apcupsd.com/'),(650,'apcupsd-doc','extra','doc','34044','Debian QA Group ','all','apcupsd','3.14.6-3','pool/main/a/apcupsd/apcupsd-doc_3.14.6-3_all.deb','2600226','APC UPS Power Management (documentation/examples)','http://www.apcupsd.com/'),(651,'apcupsd','extra','admin','768','Debian QA Group ','i386','','3.14.6-3','pool/main/a/apcupsd/apcupsd_3.14.6-3_i386.deb','243706','APC UPS Power Management (daemon)','http://www.apcupsd.com/'),(652,'apel','optional','editors','684','Tatsuya Kinoshita ','all','','10.7-3','pool/main/a/apel/apel_10.7-3_all.deb','142722','portable library for emacsen','http://kanji.zinbun.kyoto-u.ac.jp/~tomo/elisp/APEL/'),(653,'apertium-dbus','extra','misc','124','Francis Tyers ','i386','','0.1-1.1','pool/main/a/apertium-dbus/apertium-dbus_0.1-1.1_i386.deb','9430','A D-Bus service for the Apertium machine translation system','http://www.apertium.org'),(654,'apertium-en-ca','extra','misc','7060','Francis Tyers ','i386','','0.8.9-1','pool/main/a/apertium-en-ca/apertium-en-ca_0.8.9-1_i386.deb','2852074','Apertium linguistic data to translate between English and Catalan','http://www.apertium.org'),(655,'apertium-en-es','extra','misc','4740','Francis Tyers ','i386','','0.6.0-1.1','pool/main/a/apertium-en-es/apertium-en-es_0.6.0-1.1_i386.deb','1555766','Apertium linguistic data to translate between English and Spanish','http://www.apertium.org'),(656,'apertium-eo-ca','extra','misc','2816','Francis Tyers ','i386','','0.9.0-1.1','pool/main/a/apertium-eo-ca/apertium-eo-ca_0.9.0-1.1_i386.deb','977266','Apertium linguistic data to translate between Esperanto and Catalan','http://www.apertium.org'),(657,'apertium-eo-es','extra','misc','2940','Francis Tyers ','i386','','0.9.0-1.1','pool/main/a/apertium-eo-es/apertium-eo-es_0.9.0-1.1_i386.deb','925118','Apertium linguistic data to translate between Esperanto and Spanish','http://www.apertium.org'),(658,'apertium-es-ca','extra','misc','12408','Francis Tyers ','i386','','1.1.0-1','pool/main/a/apertium-es-ca/apertium-es-ca_1.1.0-1_i386.deb','4236670','Apertium linguistic data to translate between Spanish and Catalan','http://www.apertium.org'),(659,'apertium-es-gl','extra','misc','1676','Francis Tyers ','i386','','1.0.7-1','pool/main/a/apertium-es-gl/apertium-es-gl_1.0.7-1_i386.deb','674500','Apertium linguistic data to translate between Spanish and Galician','http://www.apertium.org'),(660,'apertium-es-pt','optional','misc','2868','Francis Tyers ','i386','','1.0.3-2.1','pool/main/a/apertium-es-pt/apertium-es-pt_1.0.3-2.1_i386.deb','902996','Apertium linguistic data to translate between Spanish and Portuguese','http://www.apertium.org'),(661,'apertium-es-ro','extra','misc','2844','Francis Tyers ','i386','','0.7.1-2.1','pool/main/a/apertium-es-ro/apertium-es-ro_0.7.1-2.1_i386.deb','1139636','Apertium linguistic data to translate between Spanish and Romanian','http://www.apertium.org'),(662,'apertium-eu-es','extra','misc','5048','Francis Tyers ','i386','','0.3.1-1','pool/main/a/apertium-eu-es/apertium-eu-es_0.3.1-1_i386.deb','1603524','Apertium linguistic data to translate between Basque and Spanish','http://www.apertium.org'),(663,'apertium-fr-ca','optional','misc','2680','Francis Tyers ','i386','','1.0.2-1','pool/main/a/apertium-fr-ca/apertium-fr-ca_1.0.2-1_i386.deb','930554','Apertium linguistic data to translate between French and Catalan','http://www.apertium.org'),(664,'apertium-fr-es','extra','misc','7636','Francis Tyers ','i386','','0.9.0-1','pool/main/a/apertium-fr-es/apertium-fr-es_0.9.0-1_i386.deb','3762662','Apertium linguistic data to translate between French and Spanish','http://www.apertium.org'),(665,'apertium-oc-ca','extra','misc','6776','Francis Tyers ','i386','','1.0.5-1.1','pool/main/a/apertium-oc-ca/apertium-oc-ca_1.0.5-1.1_i386.deb','2657142','Apertium linguistic data to translate between Occitan and Catalan','http://www.apertium.org'),(666,'apertium-oc-es','extra','misc','8764','Francis Tyers ','i386','','1.0.5-1.1','pool/main/a/apertium-oc-es/apertium-oc-es_1.0.5-1.1_i386.deb','2550084','Apertium linguistic data to translate between Occitan and Spanish','http://www.apertium.org'),(667,'apertium-pt-ca','extra','misc','1844','Francis Tyers ','i386','','0.8.1-1','pool/main/a/apertium-pt-ca/apertium-pt-ca_0.8.1-1_i386.deb','559416','Apertium linguistic data to translate between Portuguese and Catalan','http://www.apertium.org'),(668,'apertium-pt-gl','extra','misc','5328','Francis Tyers ','i386','','0.9.1-1','pool/main/a/apertium-pt-gl/apertium-pt-gl_0.9.1-1_i386.deb','951234','Apertium linguistic data to translate between Portuguese and Galician','http://www.apertium.org'),(669,'apertium-tolk','extra','misc','596','Francis Tyers ','i386','','0.2-2.1','pool/main/a/apertium-tolk/apertium-tolk_0.2-2.1_i386.deb','29152','Graphical user interface for Apertium','http://www.apertium.org'),(670,'apertium','optional','misc','1288','Francis Tyers ','i386','','3.1.0-1.1','pool/main/a/apertium/apertium_3.1.0-1.1_i386.deb','349438','Shallow-transfer machine translation engine','http://www.apertium.org'),(671,'libapertium3-3.1-0-dev','optional','libdevel','1568','Francis Tyers ','i386','apertium','3.1.0-1.1','pool/main/a/apertium/libapertium3-3.1-0-dev_3.1.0-1.1_i386.deb','468520','Development library for Apertium','http://www.apertium.org'),(672,'libapertium3-3.1-0','optional','libs','872','Francis Tyers ','i386','apertium','3.1.0-1.1','pool/main/a/apertium/libapertium3-3.1-0_3.1.0-1.1_i386.deb','338538','Shared library for Apertium','http://www.apertium.org'),(673,'apf-firewall','optional','net','436','Giuseppe Iuculano ','all','','9.7+rev1-1','pool/main/a/apf-firewall/apf-firewall_9.7+rev1-1_all.deb','103934','easy iptables based firewall system','http://www.rfxn.com/projects/advanced-policy-firewall/'),(674,'apf-client','optional','net','204','Juan A. Diaz ','i386','apf','0.8.4-1','pool/main/a/apf/apf-client_0.8.4-1_i386.deb','73298','Client for Active Port Forwarding','http://www.gray-world.net/pr_af.shtml'),(675,'apf-server','optional','net','220','Juan A. Diaz ','i386','apf','0.8.4-1','pool/main/a/apf/apf-server_0.8.4-1_i386.deb','75946','Server for Active Port Forwarding','http://www.gray-world.net/pr_af.shtml'),(676,'apg','optional','admin','200','Marc Haber ','i386','','2.2.3.dfsg.1-2','pool/main/a/apg/apg_2.2.3.dfsg.1-2_i386.deb','52816','Automated Password Generator - Standalone version',''),(677,'apgdiff','extra','misc','128','Christoph Berg ','all','','1.3-3','pool/main/a/apgdiff/apgdiff_1.3-3_all.deb','60608','Another PostgreSQL Diff Tool','http://apgdiff.sourceforge.net/'),(678,'libapiextractor-dbg','extra','debug','6956','Didier Raboud ','i386','apiextractor','0.3.1-1','pool/main/a/apiextractor/libapiextractor-dbg_0.3.1-1_i386.deb','2533034','Debugging symbols for the library headers parser','http://www.pyside.org/home-binding/api-extractor/'),(679,'libapiextractor-dev','optional','libdevel','184','Didier Raboud ','i386','apiextractor','0.3.1-1','pool/main/a/apiextractor/libapiextractor-dev_0.3.1-1_i386.deb','26702','Development files for the library headers parser','http://www.pyside.org/home-binding/api-extractor/'),(680,'libapiextractor0','optional','libs','1148','Didier Raboud ','i386','apiextractor','0.3.1-1','pool/main/a/apiextractor/libapiextractor0_0.3.1-1_i386.deb','459612','Library headers parser that creates an API abstract representation','http://www.pyside.org/home-binding/api-extractor/'),(681,'apmd','optional','admin','248','Anibal Monsalve Salazar ','i386','','3.2.2-14','pool/main/a/apmd/apmd_3.2.2-14_i386.deb','54058','Utilities for Advanced Power Management (APM)','http://alumnit.ca/~apenwarr/apmd/'),(682,'libapm-dev','optional','libdevel','76','Anibal Monsalve Salazar ','i386','apmd','3.2.2-14','pool/main/a/apmd/libapm-dev_3.2.2-14_i386.deb','26964','Library for interacting with APM driver in kernel','http://alumnit.ca/~apenwarr/apmd/'),(683,'libapm1','optional','libs','80','Anibal Monsalve Salazar ','i386','apmd','3.2.2-14','pool/main/a/apmd/libapm1_3.2.2-14_i386.deb','26502','Library for interacting with APM driver in kernel','http://alumnit.ca/~apenwarr/apmd/'),(684,'xapm','optional','x11','80','Anibal Monsalve Salazar ','i386','apmd','3.2.2-14','pool/main/a/apmd/xapm_3.2.2-14_i386.deb','28426','X program to monitor APM battery status','http://alumnit.ca/~apenwarr/apmd/'),(685,'apoo','optional','misc','185','Rogerio Reis ','all','','2.2-2','pool/main/a/apoo/apoo_2.2-2_all.deb','136702','An Assembly course aid',''),(686,'app-install-data','optional','x11','20864','Julian Andres Klode ','all','','2009.06.06','pool/main/a/app-install-data/app-install-data_2009.06.06_all.deb','6903896','Application Installer Data Files',''),(687,'apparix','extra','utils','172','Armin Berres ','i386','','07-261-1','pool/main/a/apparix/apparix_07-261-1_i386.deb','93336','console-based bookmark tool for fast file system navigation','http://micans.org/apparix/'),(688,'libappconfig-perl','optional','perl','256','Stefan Hornburg (Racke) ','all','appconfig','1.56-2','pool/main/a/appconfig/libappconfig-perl_1.56-2_all.deb','88586','Perl module for configuration file and command line handling',''),(689,'approx','optional','admin','2728','Eric Cooper ','i386','','4.1-1','pool/main/a/approx/approx_4.1-1_i386.deb','1072074','caching proxy server for Debian archive files','http://git.debian.org/?p=pkg-ocaml-maint/packages/approx.git'),(690,'libapq-postgresql-dbg','extra','debug','108','Adrian-Ken Rueegsegger ','i386','apq-postgresql','3.0~b1-1','pool/main/a/apq-postgresql/libapq-postgresql-dbg_3.0~b1-1_i386.deb','21988','APQ Ada 95 Postgresql Binding Plugin (debug)','http://www.adaworks.net/adaworks/'),(691,'libapq-postgresql-dev','optional','libdevel','416','Adrian-Ken Rueegsegger ','i386','apq-postgresql','3.0~b1-1','pool/main/a/apq-postgresql/libapq-postgresql-dev_3.0~b1-1_i386.deb','95104','APQ Ada 95 Postgresql Binding Plugin (development)','http://www.adaworks.net/adaworks/'),(692,'libapq3-postgresql','optional','libs','196','Adrian-Ken Rueegsegger ','i386','apq-postgresql','3.0~b1-1','pool/main/a/apq-postgresql/libapq3-postgresql_3.0~b1-1_i386.deb','50702','APQ Ada 95 Postgresql Binding Plugin (library)','http://www.adaworks.net/adaworks/'),(693,'libapq-common-dbg','extra','debug','72','Adrian-Ken Rueegsegger ','i386','apq','3.0~b1-3','pool/main/a/apq/libapq-common-dbg_3.0~b1-3_i386.deb','10172','A pluggable Ada 95 Binding to various database systems (debug)','http://www.adaworks.net/adaworks/'),(694,'libapq-common-dev','optional','libdevel','920','Adrian-Ken Rueegsegger ','i386','apq','3.0~b1-3','pool/main/a/apq/libapq-common-dev_3.0~b1-3_i386.deb','595702','A pluggable Ada 95 Binding to various database systems (development)','http://www.adaworks.net/adaworks/'),(695,'libapq3-common','optional','libs','172','Adrian-Ken Rueegsegger ','i386','apq','3.0~b1-3','pool/main/a/apq/libapq3-common_3.0~b1-3_i386.deb','53588','A pluggable Ada 95 Binding to various database systems (library)','http://www.adaworks.net/adaworks/'),(696,'libaprutil1-dbd-freetds','optional','libs','80','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-freetds_1.3.9+dfsg-3_i386.deb','27480','The Apache Portable Runtime Utility Library - FreeTDS Driver','http://apr.apache.org/'),(697,'libaprutil1-dbd-mysql','optional','libs','84','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-mysql_1.3.9+dfsg-3_i386.deb','29418','The Apache Portable Runtime Utility Library - MySQL Driver','http://apr.apache.org/'),(698,'libaprutil1-dbd-odbc','optional','libs','92','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-odbc_1.3.9+dfsg-3_i386.deb','32880','The Apache Portable Runtime Utility Library - ODBC Driver','http://apr.apache.org/'),(699,'libaprutil1-dbd-pgsql','optional','libs','84','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-pgsql_1.3.9+dfsg-3_i386.deb','28954','The Apache Portable Runtime Utility Library - PostgreSQL Driver','http://apr.apache.org/'),(700,'libaprutil1-dbd-sqlite3','optional','libs','80','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-sqlite3_1.3.9+dfsg-3_i386.deb','27078','The Apache Portable Runtime Utility Library - SQLite3 Driver','http://apr.apache.org/'),(701,'libaprutil1-dbg','extra','debug','608','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbg_1.3.9+dfsg-3_i386.deb','229344','The Apache Portable Runtime Utility Library - Debugging Symbols','http://apr.apache.org/'),(702,'libaprutil1-dev','optional','libdevel','4676','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dev_1.3.9+dfsg-3_i386.deb','572396','The Apache Portable Runtime Utility Library - Development Headers','http://apr.apache.org/'),(703,'libaprutil1-ldap','optional','libs','76','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-ldap_1.3.9+dfsg-3_i386.deb','25070','The Apache Portable Runtime Utility Library - LDAP Driver','http://apr.apache.org/'),(704,'libaprutil1','optional','libs','232','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1_1.3.9+dfsg-3_i386.deb','85074','The Apache Portable Runtime Utility Library','http://apr.apache.org/'),(705,'libapr1-dbg','extra','debug','128','Debian Apache Maintainers ','i386','apr','1.3.8-1','pool/main/a/apr/libapr1-dbg_1.3.8-1_i386.deb','57738','The Apache Portable Runtime Library - Debugging Symbols','http://apr.apache.org/'),(706,'libapr1-dev','optional','libdevel','5544','Debian Apache Maintainers ','i386','apr','1.3.8-1','pool/main/a/apr/libapr1-dev_1.3.8-1_i386.deb','871396','The Apache Portable Runtime Library - Development Headers','http://apr.apache.org/'),(707,'libapr1','optional','libs','300','Debian Apache Maintainers ','i386','apr','1.3.8-1','pool/main/a/apr/libapr1_1.3.8-1_i386.deb','117770','The Apache Portable Runtime Library','http://apr.apache.org/'),(708,'aprsd','optional','hamradio','460','Debian Hamradio Maintainers ','i386','','1:2.2.5-13-5.1','pool/main/a/aprsd/aprsd_2.2.5-13-5.1_i386.deb','146856','Internet Gateway for the Automatic Position Reporting System','http://sourceforge.net/projects/aprsd/'),(709,'aprsdigi','optional','hamradio','140','Debian Hamradio Maintainers ','i386','','2.4.4-3.1','pool/main/a/aprsdigi/aprsdigi_2.4.4-3.1_i386.deb','42740','digipeater for APRS','http://aprsdigi.sourceforge.net/'),(710,'apsfilter','extra','text','2484','Pawel Wiecek ','all','','7.2.6-1.3','pool/main/a/apsfilter/apsfilter_7.2.6-1.3_all.deb','438510','Magic print filter with automatic file type recognition',''),(711,'apt-build','optional','devel','128','Julien Danjou ','i386','','0.12.37','pool/main/a/apt-build/apt-build_0.12.37_i386.deb','36316','frontend to apt to build, optimize and install packages',''),(712,'apt-cacher-ng','optional','net','740','Eduard Bloch ','i386','','0.4-1','pool/main/a/apt-cacher-ng/apt-cacher-ng_0.4-1_i386.deb','278574','Caching proxy for distribution of software packages',''),(713,'apt-cacher','optional','net','308','Mark Hindley ','all','','1.6.9','pool/main/a/apt-cacher/apt-cacher_1.6.9_all.deb','78792','Caching proxy for Debian package and source files',''),(714,'apt-cross','extra','utils','116','Neil Williams ','all','','0.13.1','pool/main/a/apt-cross/apt-cross_0.13.1_all.deb','24220','retrieve, build and install libraries for cross-compiling','http://www.emdebian.org/'),(715,'libcache-apt-perl','extra','perl','140','Neil Williams ','all','apt-cross','0.13.1','pool/main/a/apt-cross/libcache-apt-perl_0.13.1_all.deb','32968','object oriented apt cache perl binding','http://www.emdebian.org/'),(716,'apt-dater-dbg','extra','debug','200','Patrick Matthäi ','i386','apt-dater','0.8.0-3','pool/main/a/apt-dater/apt-dater-dbg_0.8.0-3_i386.deb','68014','terminal-based remote package update manager (dbg symbols)','http://www.ibh.de/apt-dater'),(717,'apt-dater-host','optional','admin','72','Patrick Matthäi ','all','apt-dater','0.8.0-3','pool/main/a/apt-dater/apt-dater-host_0.8.0-3_all.deb','8832','host helper application for apt-dater','http://www.ibh.de/apt-dater'),(718,'apt-dater','optional','admin','240','Patrick Matthäi ','i386','','0.8.0-3','pool/main/a/apt-dater/apt-dater_0.8.0-3_i386.deb','58210','terminal-based remote package update manager','http://www.ibh.de/apt-dater'),(719,'apt-dpkg-ref','optional','doc','152','Vanessa Gutiérrez ','all','','5.3+nmu1','pool/main/a/apt-dpkg-ref/apt-dpkg-ref_5.3+nmu1_all.deb','96466','APT, Dpkg Quick Reference sheet',''),(720,'apt-file','optional','admin','184','Stefan Fritsch ','all','','2.3.0','pool/main/a/apt-file/apt-file_2.3.0_all.deb','29228','search for files within Debian packages (command-line interface)',''),(721,'apt-forktracer','optional','admin','180','Marcin Owsiany ','all','','0.2','pool/main/a/apt-forktracer/apt-forktracer_0.2_all.deb','23308','a utility for tracking non-official package versions',''),(722,'apt-listbugs','optional','admin','516','Ryan Niebur ','all','','0.1.1','pool/main/a/apt-listbugs/apt-listbugs_0.1.1_all.deb','99550','tool which lists critical bugs before each apt installation',''),(723,'apt-listchanges','standard','utils','504','Pierre Habouzit ','all','','2.83+nmu1','pool/main/a/apt-listchanges/apt-listchanges_2.83+nmu1_all.deb','80254','package change history notification tool',''),(724,'apt-mirror','optional','net','120','Brandon Holtsclaw ','all','','0.4.5-1','pool/main/a/apt-mirror/apt-mirror_0.4.5-1_all.deb','11866','APT sources mirroring tool','http://apt-mirror.sourceforge.net/'),(725,'apt-move','optional','admin','220','Chuan-kai Lin ','i386','apt-move (4.2.27-1)','4.2.27-1+b7','pool/main/a/apt-move/apt-move_4.2.27-1+b7_i386.deb','51334','Maintain Debian packages in a package pool',''),(726,'apt-offline','optional','admin','316','Ritesh Raj Sarraf ','all','','0.9.5','pool/main/a/apt-offline/apt-offline_0.9.5_all.deb','52758','offline apt package manager','http://apt-offline.alioth.debian.org'),(727,'apt-p2p','optional','net','529','Cameron Dale ','all','','0.1.5','pool/main/a/apt-p2p/apt-p2p_0.1.5_all.deb','108498','apt helper for peer-to-peer downloads of Debian packages','http://www.camrdale.org/apt-p2p.html'),(728,'apt-rdepends','optional','utils','92','Simon Law ','all','','1.3.0-1.1','pool/main/a/apt-rdepends/apt-rdepends_1.3.0-1.1_all.deb','14396','Recursively lists package dependencies',''),(729,'apt-show-source','optional','admin','116','OHURA Makoto ','all','','0.10','pool/main/a/apt-show-source/apt-show-source_0.10_all.deb','17968','Shows source-package information',''),(730,'apt-show-versions','optional','admin','184','Christoph Martin ','all','','0.16','pool/main/a/apt-show-versions/apt-show-versions_0.16_all.deb','33644','lists available package versions with distribution',''),(731,'apt-spy','optional','admin','196','Stefano Canepa ','i386','','3.1-19','pool/main/a/apt-spy/apt-spy_3.1-19_i386.deb','31650','writes a sources.list file based on bandwidth tests',''),(732,'apt-src','optional','admin','76','Laszlo Boszormenyi (GCS) ','all','','0.25.1-0.1','pool/main/a/apt-src/apt-src_0.25.1-0.1_all.deb','36352','manage Debian source packages',''),(733,'apt-transport-debtorrent','optional','admin','120','Cameron Dale ','i386','apt-transport-debtorrent (0.2.1)','0.2.1+b2','pool/main/a/apt-transport-debtorrent/apt-transport-debtorrent_0.2.1+b2_i386.deb','25660','an APT transport for communicating with DebTorrent','http://debtorrent.alioth.debian.org/'),(734,'apt-watch-backend','optional','admin','184','John Lightsey ','i386','apt-watch','0.3.2-14','pool/main/a/apt-watch/apt-watch-backend_0.3.2-14_i386.deb','39282','Applet that monitors apt sources for upgrades (backend slave)',''),(735,'apt-watch-gnome','optional','admin','200','John Lightsey ','i386','apt-watch','0.3.2-14','pool/main/a/apt-watch/apt-watch-gnome_0.3.2-14_i386.deb','36736','Applet that monitors apt sources for upgrades (GNOME applet)',''),(736,'apt-watch','optional','admin','36','John Lightsey ','all','','0.3.2-14','pool/main/a/apt-watch/apt-watch_0.3.2-14_all.deb','3958','Applet that monitors apt sources for upgrades (transitional package)',''),(737,'apt-xapian-index','optional','admin','208','Enrico Zini ','all','','0.22','pool/main/a/apt-xapian-index/apt-xapian-index_0.22_all.deb','35730','maintenance tools for a Xapian index of Debian packages',''),(738,'apt-zip','extra','admin','128','Giacomo Catenazzi ','all','','0.18','pool/main/a/apt-zip/apt-zip_0.18_all.deb','20598','Update a non-networked computer using apt and removable media','http://alioth.debian.org/projects/apt-zip'),(739,'apt-doc','optional','doc','276','APT Development Team ','all','apt','0.7.23.1','pool/main/a/apt/apt-doc_0.7.23.1_all.deb','103962','Documentation for APT',''),(740,'apt-transport-https','optional','admin','124','APT Development Team ','i386','apt','0.7.23.1','pool/main/a/apt/apt-transport-https_0.7.23.1_i386.deb','62846','APT https transport',''),(741,'apt-utils','important','admin','440','APT Development Team ','i386','apt','0.7.23.1','pool/main/a/apt/apt-utils_0.7.23.1_i386.deb','193054','APT utility programs',''),(742,'apt','important','admin','5092','APT Development Team ','i386','','0.7.23.1','pool/main/a/apt/apt_0.7.23.1_i386.deb','1641588','Advanced front-end for dpkg',''),(743,'libapt-pkg-dev','optional','libdevel','444','APT Development Team ','i386','apt','0.7.23.1','pool/main/a/apt/libapt-pkg-dev_0.7.23.1_i386.deb','115234','Development files for APT\'s libapt-pkg and libapt-inst',''),(744,'libapt-pkg-doc','optional','doc','368','APT Development Team ','all','apt','0.7.23.1','pool/main/a/apt/libapt-pkg-doc_0.7.23.1_all.deb','128344','Documentation for APT development',''),(745,'aptfs','extra','utils','40','Chris Lamb ','all','','0.7-1','pool/main/a/aptfs/aptfs_0.7-1_all.deb','8322','FUSE filesystem for APT source repositories','http://chris-lamb.co.uk/projects/aptfs/'),(746,'apticron','extra','admin','112','Tiago Bortoletto Vaz ','all','','1.1.37','pool/main/a/apticron/apticron_1.1.37_all.deb','17046','simple tool to mail about pending package updates',''),(747,'aptitude-dbg','extra','debug','16900','Daniel Burrows ','i386','aptitude (0.4.11.11-1)','0.4.11.11-1+b2','pool/main/a/aptitude/aptitude-dbg_0.4.11.11-1+b2_i386.deb','5912136','Debug symbols for the aptitude package manager',''),(748,'aptitude-doc-cs','optional','doc','1300','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-cs_0.4.11.11-1_all.deb','379426','Czech manual for aptitude, a terminal-based package manager',''),(749,'aptitude-doc-en','optional','doc','1304','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-en_0.4.11.11-1_all.deb','364786','English manual for aptitude, a terminal-based package manager',''),(750,'aptitude-doc-fi','optional','doc','932','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-fi_0.4.11.11-1_all.deb','271986','Finnish manual for aptitude, a terminal-based package manager',''),(751,'aptitude-doc-fr','optional','doc','1224','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-fr_0.4.11.11-1_all.deb','312104','French manual for aptitude, a terminal-based package manager',''),(752,'aptitude-doc-ja','optional','doc','1340','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-ja_0.4.11.11-1_all.deb','374740','Japanese manual for aptitude, a terminal-based package manager',''),(753,'aptitude','important','admin','9652','Daniel Burrows ','i386','aptitude (0.4.11.11-1)','0.4.11.11-1+b2','pool/main/a/aptitude/aptitude_0.4.11.11-1+b2_i386.deb','3034330','terminal-based package manager',''),(754,'aptlinex','optional','utils','124','José L. Redrejo RodrÃÂguez ','all','','0.91-1','pool/main/a/aptlinex/aptlinex_0.91-1_all.deb','17902','Web browser addon to install Debian packages with a click',''),(755,'aptoncd','extra','admin','1960','Fabrice Coutadeur ','all','','0.1.98+bzr112-1','pool/main/a/aptoncd/aptoncd_0.1.98+bzr112-1_all.deb','268724','Installation disc creator for packages downloaded via APT','http://aptoncd.sourceforge.net'),(756,'aptsh','optional','admin','220','Marcin Wrochniak ','i386','aptsh (0.0.7+nmu1)','0.0.7+nmu1+b2','pool/main/a/aptsh/aptsh_0.0.7+nmu1+b2_i386.deb','61702','apt interactive shell',''),(757,'apvlv','extra','text','328','Stefan Ritter ','i386','','0.0.7.2-1','pool/main/a/apvlv/apvlv_0.0.7.2-1_i386.deb','113304','PDF viewer with Vim-like behaviour','http://code.google.com/p/apvlv/'),(758,'apwal','optional','gnome','244','Sam Hocevar (Debian packages) ','i386','','0.4.5-1','pool/main/a/apwal/apwal_0.4.5-1_i386.deb','63526','icon-based floating application launcher with transparency',''),(759,'aqemu','optional','x11','3488','Ignace Mouzannar ','i386','','0.7.3-1','pool/main/a/aqemu/aqemu_0.7.3-1_i386.deb','1327580','Qt4 front-end for QEMU and KVM','http://aqemu.sourceforge.net/'),(760,'aqsis-libs-dev','optional','libdevel','172','David MartÃÂnez Moreno ','i386','aqsis','1.2.0-2.1','pool/main/a/aqsis/aqsis-libs-dev_1.2.0-2.1_i386.deb','30742','suite of applications implementing the RenderMan Interface - development files',''),(761,'aqsis-libsc2a','optional','libs','4560','David MartÃÂnez Moreno ','i386','aqsis','1.2.0-2.1','pool/main/a/aqsis/aqsis-libsc2a_1.2.0-2.1_i386.deb','1535952','suite of applications implementing the RenderMan Interface - libraries',''),(762,'aqsis','optional','graphics','1140','David MartÃÂnez Moreno ','i386','','1.2.0-2.1','pool/main/a/aqsis/aqsis_1.2.0-2.1_i386.deb','335492','suite of applications implementing the RenderMan Interface',''),(763,'aqualung','extra','sound','2192','Adam Cécile (Le_Vert) ','i386','','0.9~beta10-2','pool/main/a/aqualung/aqualung_0.9~beta10-2_i386.deb','861368','Gapless Gtk-based audio player','http://aqualung.sourceforge.net/'),(764,'ara','optional','utils','744','George Danchev ','i386','','1.0.27','pool/main/a/ara/ara_1.0.27_i386.deb','293464','Command line utility for searching the Debian package database','http://ara.alioth.debian.org/'),(765,'xara-gtk','optional','utils','1764','George Danchev ','i386','ara','1.0.27','pool/main/a/ara/xara-gtk_1.0.27_i386.deb','630916','GTK+ utility for searching the Debian package database','http://ara.alioth.debian.org/'),(766,'arandr','optional','x11','200','Christian M. Amsüss ','all','','0.1.2-1','pool/main/a/arandr/arandr_0.1.2-1_all.deb','31038','Simple visual front end for XRandR 1.2','http://christian.amsuess.com/tools/arandr/'),(767,'aranym','extra','otherosfs','5308','Antonin Kral ','i386','','0.9.9-1','pool/main/a/aranym/aranym_0.9.9-1_i386.deb','1712610','Atari Running on Any Machine','http://www.aranym.org'),(768,'arc-brave','optional','gnome','572','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-brave_2.7-1_all.deb','412746','blue variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(769,'arc-colors','optional','gnome','64','GNOME-Colors Packagers ','all','','2.7-1','pool/main/a/arc-colors/arc-colors_2.7-1_all.deb','11472','set of wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(770,'arc-dust','optional','gnome','560','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-dust_2.7-1_all.deb','396076','chocolate variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(771,'arc-human','optional','gnome','556','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-human_2.7-1_all.deb','393178','orange variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(772,'arc-illustrious','optional','gnome','544','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-illustrious_2.7-1_all.deb','383736','pink variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(773,'arc-noble','optional','gnome','564','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-noble_2.7-1_all.deb','406046','purple variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(774,'arc-wine','optional','gnome','516','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-wine_2.7-1_all.deb','353836','red variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(775,'arc-wise','optional','gnome','568','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-wise_2.7-1_all.deb','408718','green variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(776,'arc','optional','utils','136','Klaus Reimer ','i386','','5.21o-2','pool/main/a/arc/arc_5.21o-2_i386.deb','56466','Archive utility based on the MSDOS ARC program',''),(777,'arch-buildpackage','optional','vcs','64','Debian QA Group ','all','','0.1-5','pool/main/a/arch-buildpackage/arch-buildpackage_0.1-5_all.deb','9770','tools for maintaining Debian packages using arch',''),(778,'libarch-perl','optional','perl','492','Debian QA Group ','all','arch-perl','0.5.1+patch-180-3','pool/main/a/arch-perl/libarch-perl_0.5.1+patch-180-3_all.deb','161792','Perl library for GNU Arch',''),(779,'arch2darcs','optional','vcs','836','John Goerzen ','i386','','1.0.13','pool/main/a/arch2darcs/arch2darcs_1.0.13_i386.deb','276492','Convert Arch/tla repositories to Darcs',''),(780,'archfs','optional','utils','100','Jon Dowland ','i386','','0.5.4-1','pool/main/a/archfs/archfs_0.5.4-1_i386.deb','23322','rdiff-backup virtual filesystem','http://code.google.com/p/archfs/'),(781,'archivemail','optional','mail','172','Serafeim Zanikolas ','all','','0.7.2-7','pool/main/a/archivemail/archivemail_0.7.2-7_all.deb','37604','archive and compress or delete your old email','http://archivemail.sourceforge.net/'),(782,'archmage','optional','utils','380','Mikhail Gusarov ','all','','1:0.2.4-1','pool/main/a/archmage/archmage_0.2.4-1_all.deb','28980','CHM(Compiled HTML) Decompressor','http://archmage.sf.net'),(783,'archmbox','optional','mail','128','Debian QA Group ','all','','4.10.0-1','pool/main/a/archmbox/archmbox_4.10.0-1_all.deb','37032','a simple email archiver written in perl','http://adc-archmbox.sourceforge.net/'),(784,'archway','optional','vcs','640','Debian QA Group ','all','','0.2.1+patch-85-1','pool/main/a/archway/archway_0.2.1+patch-85-1_all.deb','302342','GUI for GNU Arch',''),(785,'archzoom','optional','vcs','816','Debian QA Group ','all','','0.5.1-4','pool/main/a/archzoom/archzoom_0.5.1-4_all.deb','116252','web-based Arch repository browser',''),(786,'ardour-i686','optional','sound','12512','Debian Multimedia Team ','i386','ardour','1:2.8-1','pool/main/a/ardour/ardour-i686_2.8-1_i386.deb','4545294','digital audio workstation (graphical gtk2 interface) [i686]','http://www.ardour.org/'),(787,'ardour','optional','sound','12448','Debian Multimedia Team ','i386','','1:2.8-1','pool/main/a/ardour/ardour_2.8-1_i386.deb','4505602','digital audio workstation (graphical gtk2 interface)','http://www.ardour.org/'),(788,'arename','optional','sound','184','Maximilian Gass ','all','','3.0-1','pool/main/a/arename/arename_3.0-1_all.deb','57244','automatic audio file renaming','http://ft.bewatermyfriend.org/comp/arename.html'),(789,'python-argparse-doc','optional','doc','416','Ritesh Raj Sarraf ','all','argparse','1.0.1-1','pool/main/a/argparse/python-argparse-doc_1.0.1-1_all.deb','55208','optparse-inspired command-line parsing library - doc','http://code.google.com/p/argparse/'),(790,'python-argparse','optional','python','304','Ritesh Raj Sarraf ','all','argparse','1.0.1-1','pool/main/a/argparse/python-argparse_1.0.1-1_all.deb','41448','optparse-inspired command-line parsing library','http://code.google.com/p/argparse/'),(791,'libargtable2-0','optional','libs','68','Shachar Shemesh ','i386','argtable2','9-1','pool/main/a/argtable2/libargtable2-0_9-1_i386.deb','13240','A library for parsing GNU style command line arguments',''),(792,'libargtable2-dev','optional','libdevel','120','Shachar Shemesh ','i386','argtable2','9-1','pool/main/a/argtable2/libargtable2-dev_9-1_i386.deb','39330','A library for parsing GNU style command line arguments',''),(793,'libargtable2-docs','optional','doc','3080','Shachar Shemesh ','all','argtable2','9-1','pool/main/a/argtable2/libargtable2-docs_9-1_all.deb','2963174','A library for parsing GNU style command line arguments',''),(794,'argus-client','optional','net','3785','Andrew Pollock ','i386','','2.0.6.fixes.1-3','pool/main/a/argus-client/argus-client_2.0.6.fixes.1-3_i386.deb','1832450','IP network transaction auditing tool',''),(795,'argus-server','optional','net','464','Andrew Pollock ','i386','argus','1:2.0.6.fixes.1-16','pool/main/a/argus/argus-server_2.0.6.fixes.1-16_i386.deb','136840','IP network transaction auditing tool',''),(796,'python-argvalidate','optional','python','268','Debian Python Modules Team ','all','argvalidate','0.9.0-1','pool/main/a/argvalidate/python-argvalidate_0.9.0-1_all.deb','29416','simple argument validator library','http://code.sp-its.at/projects/argvalidate'),(797,'argyll','optional','graphics','8640','Roland Mas ','i386','','1.0.4-1','pool/main/a/argyll/argyll_1.0.4-1_i386.deb','3842422','Color Management System, calibrator and profiler','http://www.argyllcms.com/'),(798,'aria2','optional','net','4248','Patrick Ruckstuhl ','i386','','1.6.2-3','pool/main/a/aria2/aria2_1.6.2-3_i386.deb','1564914','High speed download utility','http://aria2.sourceforge.net/'),(799,'aribas','optional','math','404','Ralf Treinen ','i386','','1.63-3','pool/main/a/aribas/aribas_1.63-3_i386.deb','195626','interpreter for arithmetic','http://www.mathematik.uni-muenchen.de/~forster/sw/aribas.html'),(800,'ario-common','optional','sound','1436','Marc Pavot ','all','ario','1.3-1','pool/main/a/ario/ario-common_1.3-1_all.deb','308240','GTK+ client for the Music Player Daemon (MPD) (Common files)','http://ario-player.sourceforge.net/'),(801,'ario','optional','sound','620','Marc Pavot ','i386','','1.3-1','pool/main/a/ario/ario_1.3-1_i386.deb','196178','GTK+ client for the Music Player Daemon (MPD)','http://ario-player.sourceforge.net/'),(802,'arista','optional','video','1568','Alessio Treglia ','all','','0.9.3-2','pool/main/a/arista/arista_0.9.3-2_all.deb','196594','multimedia transcoder for the GNOME Desktop','http://programmer-art.org/projects/arista-transcoder'),(803,'arj','optional','utils','480','Guillem Jover ','i386','','3.10.22-7','pool/main/a/arj/arj_3.10.22-7_i386.deb','218886','archiver for .arj files','http://sf.net/projects/arj/'),(804,'libarmadillo-dev','optional','libdevel','1224','Debian Science Maintainers ','i386','armadillo','0.6.12-2','pool/main/a/armadillo/libarmadillo-dev_0.6.12-2_i386.deb','115596','streamlined C++ linear algebra library - Headers','http://arma.sourceforge.net/'),(805,'libarmadillo-doc','optional','doc','16200','Debian Science Maintainers ','all','armadillo','0.6.12-2','pool/main/a/armadillo/libarmadillo-doc_0.6.12-2_all.deb','1662932','streamlined C++ linear algebra library - Documentation','http://arma.sourceforge.net/'),(806,'libarmadillo0','optional','libs','56','Debian Science Maintainers ','i386','armadillo','0.6.12-2','pool/main/a/armadillo/libarmadillo0_0.6.12-2_i386.deb','7594','streamlined C++ linear algebra library','http://arma.sourceforge.net/'),(807,'armagetronad-common','optional','games','1676','Christine Spang ','all','armagetronad','0.2.8.3~rc3-1','pool/main/a/armagetronad/armagetronad-common_0.2.8.3~rc3-1_all.deb','552728','Common files for the Armagetron Advanced packages','http://armagetronad.sourceforge.net/'),(808,'armagetronad-dedicated','optional','games','1728','Christine Spang ','i386','armagetronad','0.2.8.3~rc3-1','pool/main/a/armagetronad/armagetronad-dedicated_0.2.8.3~rc3-1_i386.deb','811432','dedicated game server for Armagetron Advanced','http://armagetronad.sourceforge.net/'),(809,'armagetronad','optional','games','2488','Christine Spang ','i386','','0.2.8.3~rc3-1','pool/main/a/armagetronad/armagetronad_0.2.8.3~rc3-1_i386.deb','1358740','3D Tron-like high speed game','http://armagetronad.sourceforge.net/'),(810,'arno-iptables-firewall','optional','net','824','Michael Hanke ','all','','1.9.2.d-1','pool/main/a/arno-iptables-firewall/arno-iptables-firewall_1.9.2.d-1_all.deb','123450','single- and multi-homed firewall script with DSL/ADSL support','http://rocky.eld.leidenuniv.nl/'),(811,'arora','extra','web','3912','Sune Vuorela ','i386','','0.10.1-1','pool/main/a/arora/arora_0.10.1-1_i386.deb','1462620','simple cross platform web browser',''),(812,'arp-scan','extra','admin','472','Tim Brown ','i386','','1.6-2','pool/main/a/arp-scan/arp-scan_1.6-2_i386.deb','181664','arp scanning and fingerprinting tool',''),(813,'libarpack++2-dev','optional','libdevel','2108','Debian Scientific Computing Team ','i386','arpack++','2.3-1','pool/main/a/arpack++/libarpack++2-dev_2.3-1_i386.deb','464752','Object-oriented version of the ARPACK package (development)','http://ljk.imag.fr/membres/Christophe.Prudhomme/software.php'),(814,'libarpack++2c2a','optional','libs','72','Debian Scientific Computing Team ','i386','arpack++','2.3-1','pool/main/a/arpack++/libarpack++2c2a_2.3-1_i386.deb','11234','Object-oriented version of the ARPACK package (runtime)','http://ljk.imag.fr/membres/Christophe.Prudhomme/software.php'),(815,'libarpack2-dbg','extra','debug','100','Debian Scientific Computing Team ','i386','arpack (2.1+parpack96.dfsg-2)','2.1+parpack96.dfsg-2+b1','pool/main/a/arpack/libarpack2-dbg_2.1+parpack96.dfsg-2+b1_i386.deb','21126','Fortran77 subroutines to solve large scale eigenvalue problems (debug)',''),(816,'libarpack2-dev','extra','libdevel','1520','Debian Scientific Computing Team ','i386','arpack (2.1+parpack96.dfsg-2)','2.1+parpack96.dfsg-2+b1','pool/main/a/arpack/libarpack2-dev_2.1+parpack96.dfsg-2+b1_i386.deb','664704','Fortran77 subroutines to solve large scale eigenvalue problems (development)',''),(817,'libarpack2','optional','libs','640','Debian Scientific Computing Team ','i386','arpack (2.1+parpack96.dfsg-2)','2.1+parpack96.dfsg-2+b1','pool/main/a/arpack/libarpack2_2.1+parpack96.dfsg-2+b1_i386.deb','240638','Fortran77 subroutines to solve large scale eigenvalue problems',''),(818,'arpalert','optional','net','1816','Jan Wagner ','i386','','2.0.11-3','pool/main/a/arpalert/arpalert_2.0.11-3_i386.deb','512538','Monitor ARP changes in ethernet networks','http://www.arpalert.org/'),(819,'arping','optional','net','60','Giuseppe Iuculano ','i386','','2.08-1','pool/main/a/arping/arping_2.08-1_i386.deb','23368','sends IP and/or ARP pings (to the MAC address)','http://www.habets.pp.se/synscan/programs.php?prog=arping'),(820,'arpon','optional','net','340','Giuseppe Iuculano ','i386','','1.90-1','pool/main/a/arpon/arpon_1.90-1_i386.deb','255652','versatile anti ARP poisoning daemon','http://arpon.sourceforge.net'),(821,'arptables','optional','net','112','Jochen Friedrich ','i386','','0.0.3.3-3','pool/main/a/arptables/arptables_0.0.3.3-3_i386.deb','32302','ARP table administration','http://ebtables.sourceforge.net'),(822,'arpwatch','optional','admin','624','KELEMEN Péter ','i386','','2.1a15-1','pool/main/a/arpwatch/arpwatch_2.1a15-1_i386.deb','184644','Ethernet/FDDI station activity monitor','http://ee.lbl.gov/'),(823,'array-info','optional','admin','108','Raphael Pinson ','i386','','0.15-1','pool/main/a/array-info/array-info_0.15-1_i386.deb','18040','command line tool reporting RAID status for several RAID types',''),(824,'arrayprobe','extra','admin','40','Matt Taggart ','i386','','2.0-3','pool/main/a/arrayprobe/arrayprobe_2.0-3_i386.deb','9362','command line HP (Compaq) SmartArray status checker',''),(825,'artha','optional','utils','224','Debian Science Team ','i386','','0.9.1-1','pool/main/a/artha/artha_0.9.1-1_i386.deb','62580','A handy off-line thesaurus based on WordNet','http://artha.sourceforge.net/'),(826,'artist','optional','utils','248','Fredrik Hallenberg ','all','','1.2.6-6','pool/main/a/artist/artist_1.2.6-6_all.deb','50518','Emacs Lisp drawing package',''),(827,'arts-dbg','extra','debug','10124','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/arts-dbg_1.5.9-3+b1_i386.deb','3142826','debugging symbols for arts',''),(828,'arts','optional','sound','40','Debian Qt/KDE Maintainers ','all','','1.5.9-3','pool/main/a/arts/arts_1.5.9-3_all.deb','6438','sound system from the official KDE release',''),(829,'libarts1-dev','optional','libdevel','5976','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libarts1-dev_1.5.9-3+b1_i386.deb','1141326','development files for the aRts sound system core components',''),(830,'libarts1c2a','optional','libs','4116','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libarts1c2a_1.5.9-3+b1_i386.deb','1088354','aRts sound system core components',''),(831,'libartsc0-dev','optional','libdevel','120','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libartsc0-dev_1.5.9-3+b1_i386.deb','21766','development files for the aRts sound system C support library',''),(832,'libartsc0','optional','libs','72','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libartsc0_1.5.9-3+b1_i386.deb','15826','aRts sound system C support library',''),(833,'as31','optional','devel','100','Bdale Garbee ','i386','','2.3.1-2','pool/main/a/as31/as31_2.3.1-2_i386.deb','24556','Intel 8031/8051 assembler',''),(834,'asc-music','optional','games','10380','Debian Games Team ','all','','1.3-1','pool/main/a/asc-music/asc-music_1.3-1_all.deb','10396276','music pack for ASC',''),(835,'asc-data','optional','games','14980','Debian Games Team ','all','asc','2.1.0.0-2','pool/main/a/asc/asc-data_2.1.0.0-2_all.deb','14349590','data files for the Advanced Strategic Command game','http://www.asc-hq.org'),(836,'asc','optional','games','8208','Debian Games Team ','i386','asc (2.1.0.0-2)','2.1.0.0-2+b1','pool/main/a/asc/asc_2.1.0.0-2+b1_i386.deb','3371690','turn-based strategy game','http://www.asc-hq.org'),(837,'ascd','optional','sound','461','Fredrik Hallenberg ','i386','','0.13.2-5','pool/main/a/ascd/ascd_0.13.2-5_i386.deb','188170','CD player and mixer',''),(838,'ascdc','optional','sound','56','Fredrik Hallenberg ','i386','','0.3-14','pool/main/a/ascdc/ascdc_0.3-14_i386.deb','20208','AfterStep CD changer',''),(839,'ascii','optional','utils','72','Florian Ernst ','i386','','3.8-4','pool/main/a/ascii/ascii_3.8-4_i386.deb','16064','interactive ASCII name and synonym chart','http://www.catb.org/~esr/ascii/'),(840,'ascii2binary','optional','misc','92','Mohammed Sameer ','i386','','2.13-1','pool/main/a/ascii2binary/ascii2binary_2.13-1_i386.deb','19616','Convert between ASCII, hexadecimal and binary representations',''),(841,'asciidoc','optional','text','4568','Fredrik Steen ','all','','8.5.1-1','pool/main/a/asciidoc/asciidoc_8.5.1-1_all.deb','1610058','Highly configurable text format for writing documentation',''),(842,'asciijump','optional','games','356','Mario Iseli ','i386','','0.0.6-4','pool/main/a/asciijump/asciijump_0.0.6-4_i386.deb','27576','Small and funny ASCII-art game about ski jumping',''),(843,'asclock-themes','optional','x11','2304','Helge Kreutzmann ','all','asclock','2.0.12-14','pool/main/a/asclock/asclock-themes_2.0.12-14_all.deb','248338','Theme files for ASclock, a clock applet',''),(844,'asclock','optional','x11','136','Helge Kreutzmann ','i386','','2.0.12-14','pool/main/a/asclock/asclock_2.0.12-14_i386.deb','29692','A clock designed with the NeXTStep look',''),(845,'libasedrive-serial','optional','libs','108','Ludovic Rousseau ','i386','asedriveiiie','3.5-3','pool/main/a/asedriveiiie/libasedrive-serial_3.5-3_i386.deb','29088','PC/SC driver for the Athena ASEDrive IIIe serial smart card reader','http://www.athena-scs.com/'),(846,'libasedrive-usb','optional','libs','112','Ludovic Rousseau ','i386','asedriveiiie','3.5-3','pool/main/a/asedriveiiie/libasedrive-usb_3.5-3_i386.deb','27594','PC/SC driver for the Athena ASEDrive IIIe USB smart card reader','http://www.athena-scs.com/'),(847,'libasio-dev','optional','libdevel','1984','Simon Richter ','all','asio','1.4.1-3','pool/main/a/asio/libasio-dev_1.4.1-3_all.deb','222968','cross-platform C++ library for network programming',''),(848,'libasio-doc','optional','doc','15476','Simon Richter ','all','asio','1.4.1-3','pool/main/a/asio/libasio-doc_1.4.1-3_all.deb','909876','cross-platform C++ library for network programming',''),(849,'asis-programs','optional','devel','1968','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/asis-programs_2007-5_i386.deb','770774','Ada Semantic Interface Specification (ASIS) example programs',''),(850,'libasis-dev','optional','libdevel','14296','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/libasis-dev_2007-5_i386.deb','3988118','Ada Semantic Interface Specification (ASIS) headers and libraries',''),(851,'libasis2007.1-dbg','extra','debug','2908','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/libasis2007.1-dbg_2007-5_i386.deb','1146748','Ada Semantic Interface Specification (ASIS) runtime library - debugging symbols',''),(852,'libasis2007.1','optional','libs','1752','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/libasis2007.1_2007-5_i386.deb','633676','Ada Semantic Interface Specification (ASIS) runtime library',''),(853,'libasm-java-doc','optional','doc','3660','Debian Java Maintainers ','all','asm','1.5.3-6','pool/main/a/asm/libasm-java-doc_1.5.3-6_all.deb','267530','Documentation for ASM, the Java(TM) bytecode manipulation framework','http://asm.objectweb.org/'),(854,'libasm-java','optional','java','224','Debian Java Maintainers ','all','asm','1.5.3-6','pool/main/a/asm/libasm-java_1.5.3-6_all.deb','159448','Java bytecode manipulation framework','http://asm.objectweb.org/'),(855,'libasm2-java-doc','optional','doc','4360','Debian Java Maintainers ','all','asm2','2.2.3-4','pool/main/a/asm2/libasm2-java-doc_2.2.3-4_all.deb','343426','Documentation for ASM, the Java(TM) bytecode manipulation framework','http://asm.objectweb.org/'),(856,'libasm2-java','optional','java','388','Debian Java Maintainers ','all','asm2','2.2.3-4','pool/main/a/asm2/libasm2-java_2.2.3-4_all.deb','163256','Java bytecode manipulation framework','http://asm.objectweb.org/'),(857,'libasm3-java-doc','optional','doc','6948','Debian Java Maintainers ','all','asm3','3.2-2','pool/main/a/asm3/libasm3-java-doc_3.2-2_all.deb','610038','Documentation for ASM, the Java(TM) bytecode manipulation framework','http://asm.objectweb.org/'),(858,'libasm3-java','optional','java','408','Debian Java Maintainers ','all','asm3','3.2-2','pool/main/a/asm3/libasm3-java_3.2-2_all.deb','195756','Java bytecode manipulation framework','http://asm.objectweb.org/'),(859,'asmail','optional','mail','622','Fredrik Hallenberg ','i386','','2.1-3','pool/main/a/asmail/asmail_2.1-3_i386.deb','219720','AfterStep mail monitor',''),(860,'asmix','optional','x11','88','Varun Hiremath ','i386','','1.5-4','pool/main/a/asmix/asmix_1.5-4_i386.deb','17100','display a volume knob','http://www.tigr.net/afterstep/view.php?applet=asmix/data'),(861,'asmixer','optional','sound','32','Fredrik Hallenberg ','i386','','0.5-14','pool/main/a/asmixer/asmixer_0.5-14_i386.deb','11974','AfterStep audio mixer',''),(862,'asmon','optional','x11','96','Eric Evans ','i386','','0.71-4','pool/main/a/asmon/asmon_0.71-4_i386.deb','16212','system resource monitor dockapp for Afterstep and WindowMaker','http://rio.vg/asmon/'),(863,'asn1-mode','optional','editors','448','W. Martin Borgert ','all','','2.7-6','pool/main/a/asn1-mode/asn1-mode_2.7-6_all.deb','94148','Emacs mode for editing ASN.1 specification files','http://asn1.elibel.tm.fr/en/tools/emacs/'),(864,'asn1c','optional','devel','1372','W. Martin Borgert ','i386','','0.9.21.dfsg-4','pool/main/a/asn1c/asn1c_0.9.21.dfsg-4_i386.deb','471722','ASN.1 compiler for C','http://asn1c.sourceforge.net/'),(865,'asp','extra','net','100','Roland Stigge ','i386','','1.8-6','pool/main/a/asp/asp_1.8-6_i386.deb','18096','Discovers present ip-address of dynamically connected hosts',''),(866,'aspectc++','optional','devel','1940','Reinhard Tartler ','i386','','1.0pre4~svn.20090918-1','pool/main/a/aspectc++/aspectc++_1.0pre4~svn.20090918-1_i386.deb','655562','aspect-oriented programming extension for C++','http://www.aspectc.org'),(867,'libpuma-dev','optional','libdevel','11736','Reinhard Tartler ','i386','aspectc++','1.0pre4~svn.20090918-1','pool/main/a/aspectc++/libpuma-dev_1.0pre4~svn.20090918-1_i386.deb','1423600','C/C++/AspectC++ Scanner and Parsers, development packages','http://www.aspectc.org'),(868,'libpuma-doc','optional','doc','19024','Reinhard Tartler ','all','aspectc++','1.0pre4~svn.20090918-1','pool/main/a/aspectc++/libpuma-doc_1.0pre4~svn.20090918-1_all.deb','2014940','documentation for the PUMA Scanner and Parsers','http://www.aspectc.org'),(869,'aspectj-doc','optional','doc','4324','Debian Java maintainers ','all','aspectj','1.6.6+dfsg-1','pool/main/a/aspectj/aspectj-doc_1.6.6+dfsg-1_all.deb','648950','aspect-oriented extension for Java - documentation','http://www.eclipse.org/aspectj'),(870,'aspectj','optional','java','11324','Debian Java maintainers ','all','','1.6.6+dfsg-1','pool/main/a/aspectj/aspectj_1.6.6+dfsg-1_all.deb','10754940','A seamless aspect-oriented extension for Java','http://www.eclipse.org/aspectj'),(871,'libaspectwerkz2-java','optional','java','752','Debian Java Maintainers ','all','aspectwerkz2','2.0.dfsg.2-1','pool/main/a/aspectwerkz2/libaspectwerkz2-java_2.0.dfsg.2-1_all.deb','645464','AOP framework for Java',''),(872,'aspell-am','optional','text','176','Lior Kaplan ','all','','0.03-1-3','pool/main/a/aspell-am/aspell-am_0.03-1-3_all.deb','46948','Amharic dictionary for aspell','ftp://ftp.gnu.org/gnu/aspell/dict/am/'),(873,'aspell-ar-large','optional','text','2332','Debian Arabic Packaging Team ','all','','1.2-0-1','pool/main/a/aspell-ar-large/aspell-ar-large_1.2-0-1_all.deb','2225022','Large Arabic dictionary for aspell',''),(874,'aspell-ar','optional','text','200','Debian Arabic Packaging Team ','all','','0.0.20060329-3','pool/main/a/aspell-ar/aspell-ar_0.0.20060329-3_all.deb','107196','Arabic dictionary for aspell',''),(875,'aspell-bn','optional','text','272','Debian-IN Team ','all','','0.60.0.01.1.1-8','pool/main/a/aspell-bn/aspell-bn_0.60.0.01.1.1-8_all.deb','149640','Bengali (bn) dictionary for GNU aspell','http://www.bengalinux.org/'),(876,'aspell-br','optional','text','180','Brian Nelson ','all','','0.50-2-6','pool/main/a/aspell-br/aspell-br_0.50-2-6_all.deb','66216','Breton dictionary for GNU Aspell',''),(877,'aspell-cs','optional','text','696','Miroslav Kure ','all','','0.0.20040614.1-2','pool/main/a/aspell-cs/aspell-cs_0.0.20040614.1-2_all.deb','560960','Czech dictionary for GNU Aspell',''),(878,'aspell-cy','optional','text','252','Brian Nelson ','all','','0.50-3-6','pool/main/a/aspell-cy/aspell-cy_0.50-3-6_all.deb','157024','Welsh dictionary for GNU Aspell',''),(879,'aspell-el','optional','text','532','Brian Nelson ','all','','0.50-3-6','pool/main/a/aspell-el/aspell-el_0.50-3-6_all.deb','434228','Greek dictionary for GNU Aspell',''),(880,'aspell-en','optional','text','548','Brian Nelson ','all','','6.0-0-5.1','pool/main/a/aspell-en/aspell-en_6.0-0-5.1_all.deb','249438','English dictionary for GNU Aspell',''),(881,'aspell-fa','optional','text','380','Debian Arabic Packaging Team ','all','','0.11-0-1','pool/main/a/aspell-fa/aspell-fa_0.11-0-1_all.deb','199008','Persian dictionary for GNU Aspell',''),(882,'aspell-fr','optional','text','644','Remi Vanicat ','all','','0.50-3-6','pool/main/a/aspell-fr/aspell-fr_0.50-3-6_all.deb','376504','French dictionary for aspell',''),(883,'aspell-ga','optional','text','428','Brian Nelson ','all','','0.50-4-4','pool/main/a/aspell-ga/aspell-ga_0.50-4-4_all.deb','322040','Irish (Gaeilge) dictionary for GNU Aspell',''),(884,'aspell-gu','optional','text','316','Debian-IN Team ','all','','0.03-0-4','pool/main/a/aspell-gu/aspell-gu_0.03-0-4_all.deb','204932','Gujarati (gu) dictionary for GNU aspell','http://sourceforge.net/projects/aspell-gu'),(885,'aspell-he','optional','text','364','Debian Hebrew Packaging Team ','all','','1.0-0-3','pool/main/a/aspell-he/aspell-he_1.0-0-3_all.deb','189670','Hebrew dictionary for aspell','ftp://ftp.gnu.org/gnu/aspell/dict/he/'),(886,'aspell-hi','optional','text','316','Debian-IN Team ','all','','0.02-2','pool/main/a/aspell-hi/aspell-hi_0.02-2_all.deb','215236','Hindi (hi) dictionary for GNU aspell','http://code.indlinux.net/projects/aspell-hindi/'),(887,'aspell-hr','optional','text','376','Vedran FuraÄ ','all','','0.51-4','pool/main/a/aspell-hr/aspell-hr_0.51-4_all.deb','282274','The Croatian dictionary for GNU Aspell',''),(888,'aspell-hu','optional','text','1144','Balint Kozman ','all','','0.99.4.2-0-3','pool/main/a/aspell-hu/aspell-hu_0.99.4.2-0-3_all.deb','530214','Hungarian dictionary for aspell',''),(889,'aspell-hy','optional','text','288','Alan Baghumian ','all','','0.10.0-0-1','pool/main/a/aspell-hy/aspell-hy_0.10.0-0-1_all.deb','252028','Armenian dictionary for GNU Aspell',''),(890,'aspell-is','optional','text','500','Brian Nelson ','all','','0.51-0-4','pool/main/a/aspell-is/aspell-is_0.51-0-4_all.deb','404330','Icelandic dictionary for GNU Aspell',''),(891,'aspell-it','optional','text','2528','Giuseppe Iuculano ','all','','2.4-20070901-0-2','pool/main/a/aspell-it/aspell-it_2.4-20070901-0-2_all.deb','1053960','The Italian dictionary for GNU Aspell','http://linguistico.sourceforge.net'),(892,'aspell-ku','optional','text','116','Debian Arabic Packaging Team ','all','','0.20-0-4','pool/main/a/aspell-ku/aspell-ku_0.20-0-4_all.deb','18800','Kurdish dictionary for aspell','https://sourceforge.net/projects/myspellkurdish/'),(893,'aspell-ml','optional','text','684','Debian-IN Team ','all','','0.04-1-2','pool/main/a/aspell-ml/aspell-ml_0.04-1-2_all.deb','588132','Malayalam (ml) dictionary for GNU aspell','http://fci.wikia.com/wiki/SMC/Aspell_Malayalam'),(894,'aspell-mr','optional','text','280','Debian-IN Team ','all','','0.10-5','pool/main/a/aspell-mr/aspell-mr_0.10-5_all.deb','188512','Marathi (mr) dictionary for GNU aspell',''),(895,'aspell-or','optional','text','136','Debian-IN Team ','all','','0.03-1-1','pool/main/a/aspell-or/aspell-or_0.03-1-1_all.deb','16000','Oriya (or) dictionary for GNU aspell','http://oriya.sarovar.org/dictionary.html'),(896,'aspell-pa','optional','text','132','Debian-IN Team ','all','','0.01-1-1','pool/main/a/aspell-pa/aspell-pa_0.01-1-1_all.deb','18922','Punjabi (pa) dictionary for GNU aspell','http://sourceforge.net/projects/punlinux/'),(897,'aspell-pl','optional','text','1004','Krzysztof Krzyżaniak (eloy) ','all','','20090804-1','pool/main/a/aspell-pl/aspell-pl_20090804-1_all.deb','703062','Polish dictionary for aspell',''),(898,'aspell-pt','optional','text','36','Agustin Martin Domingo ','all','','1.5','pool/main/a/aspell-pt/aspell-pt_1.5_all.deb','3592','Portuguese dictionaries for GNU Aspell (old package)',''),(899,'aspell-ro','optional','text','592','Eddy PetriÈ™or ','all','','3.1-1','pool/main/a/aspell-ro/aspell-ro_3.1-1_all.deb','508972','The Romanian dictionary for GNU aspell','http://ftp.gnu.org/gnu/aspell/dict/ro/'),(900,'aspell-sk','optional','text','640','Brian Nelson ','all','','0.52-0-4','pool/main/a/aspell-sk/aspell-sk_0.52-0-4_all.deb','525190','Slovak dictionary for GNU Aspell',''),(901,'aspell-sl','optional','text','652','Jure Cuhalev ','all','','0.60-3','pool/main/a/aspell-sl/aspell-sl_0.60-3_all.deb','563426','The Slovenian dictionary for GNU Aspell',''),(902,'aspell-sv','optional','text','220','Magnus Holmgren ','all','','0.51-0-1','pool/main/a/aspell-sv/aspell-sv_0.51-0-1_all.deb','110910','The Swedish dictionary for GNU aspell',''),(903,'aspell-ta','optional','text','160','Debian-IN Team ','all','','0.01-4','pool/main/a/aspell-ta/aspell-ta_0.01-4_all.deb','48824','Tamil (ta) dictionary for GNU aspell','http://developer.thamizha.com/spellchecker'),(904,'aspell-te','optional','text','516','Debian-IN Team ','all','','0.01-2-1','pool/main/a/aspell-te/aspell-te_0.01-2-1_all.deb','407114','Telugu (te) dictionary for GNU aspell','http://www.swecha.org/wiki/Wordlist_and_Dictionaries'),(905,'aspell-tl','optional','text','140','Agustin Martin Domingo ','all','','0.4-0-5','pool/main/a/aspell-tl/aspell-tl_0.4-0-5_all.deb','48494','The Tagalog dictionary for GNU Aspell','http://code.google.com/p/tagalog-wordlist/'),(906,'myspell-tl','optional','text','260','Agustin Martin Domingo ','all','aspell-tl','0.4-0-5','pool/main/a/aspell-tl/myspell-tl_0.4-0-5_all.deb','61134','The Tagalog dictionary for myspell/hunspell','http://code.google.com/p/tagalog-wordlist/'),(907,'aspell-uz','optional','text','248','Mashrab Kuvatov ','all','','0.6.0-1','pool/main/a/aspell-uz/aspell-uz_0.6.0-1_all.deb','119626','The Uzbek dictionary for GNU Aspell',''),(908,'aspell-doc','optional','doc','1096','Brian Nelson ','all','aspell','0.60.6-2','pool/main/a/aspell/aspell-doc_0.60.6-2_all.deb','304546','Documentation for GNU Aspell spell-checker','http://aspell.net/'),(909,'aspell','optional','text','1156','Brian Nelson ','i386','','0.60.6-2','pool/main/a/aspell/aspell_0.60.6-2_i386.deb','289892','GNU Aspell spell-checker','http://aspell.net/'),(910,'libaspell-dev','optional','libdevel','124','Brian Nelson ','i386','aspell','0.60.6-2','pool/main/a/aspell/libaspell-dev_0.60.6-2_i386.deb','50066','Development files for applications with GNU Aspell support','http://aspell.net/'),(911,'libaspell15','optional','libs','2356','Brian Nelson ','i386','aspell','0.60.6-2','pool/main/a/aspell/libaspell15_0.60.6-2_i386.deb','607500','GNU Aspell spell-checker runtime library','http://aspell.net/'),(912,'libpspell-dev','optional','libdevel','128','Brian Nelson ','i386','aspell','0.60.6-2','pool/main/a/aspell/libpspell-dev_0.60.6-2_i386.deb','46544','Development files for applications with pspell support','http://aspell.net/'),(913,'aspell-pt-pt','optional','text','268','Agustin Martin Domingo ','all','aspell6.pt','20090309.0-2','pool/main/a/aspell6.pt/aspell-pt-pt_20090309.0-2_all.deb','118728','European Portuguese dictionary for GNU Aspell','http://natura.di.uminho.pt/wiki/index.cgi?Aspell'),(914,'asql','optional','admin','88','Steve Kemp ','all','','1.4-1','pool/main/a/asql/asql_1.4-1_all.deb','16550','Run SQL queries against apache logs','http://www.steve.org.uk/Software/asql/'),(915,'asr-manpages','optional','doc','120','Pawel Wiecek ','all','','1.3-6','pool/main/a/asr-manpages/asr-manpages_1.3-6_all.deb','21866','alt.sysadmin.recovery manual pages',''),(916,'assogiate','optional','utils','560','Vincent Legout ','i386','','0.2.1-1','pool/main/a/assogiate/assogiate_0.2.1-1_i386.deb','202710','editor of the MIME file types database','http://www.kdau.com/projects/assogiate/'),(917,'asterisk-chan-capi','optional','comm','332','Debian VoIP Team ','i386','','1.1.4-1','pool/main/a/asterisk-chan-capi/asterisk-chan-capi_1.1.4-1_i386.deb','118966','Common ISDN API 2.0 implementation for Asterisk','http://www.chan-capi.org/'),(918,'asterisk-prompt-de','extra','comm','2324','Mario Joussen ','all','','2.0-1','pool/main/a/asterisk-prompt-de/asterisk-prompt-de_2.0-1_all.deb','1448930','German voice prompts for the Asterisk PBX',''),(919,'asterisk-prompt-es-co','extra','comm','1692','Diego Andrés Asenjo González ','all','','0.20070403-1','pool/main/a/asterisk-prompt-es-co/asterisk-prompt-es-co_0.20070403-1_all.deb','1002364','Colombian Spanish voice prompts for Asterisk',''),(920,'asterisk-prompt-fr-armelle','extra','comm','2220','Debian VoIP team ','all','','20070613-2','pool/main/a/asterisk-prompt-fr-armelle/asterisk-prompt-fr-armelle_20070613-2_all.deb','1505024','French voice prompts for Asterisk by Armelle Desjardins',''),(921,'asterisk-prompt-fr-proformatique','extra','comm','14956','Debian VoIP team ','all','','20070706-1.4-2','pool/main/a/asterisk-prompt-fr-proformatique/asterisk-prompt-fr-proformatique_20070706-1.4-2_all.deb','11886550','French voice prompts for Asterisk',''),(922,'asterisk-prompt-it','extra','comm','2968','Debian VoIP Team ','all','','20060510-3','pool/main/a/asterisk-prompt-it/asterisk-prompt-it_20060510-3_all.deb','1889428','Italian voice prompts for the Asterisk PBX',''),(923,'asterisk-prompt-se','extra','comm','7348','Simon Richter ','all','','1.045-1','pool/main/a/asterisk-prompt-se/asterisk-prompt-se_1.045-1_all.deb','4195926','Swedish voice prompts for Asterisk',''),(924,'asterisk-sounds-extra','optional','comm','6408','Debian VoIP Team ','all','','1.4.9-1','pool/main/a/asterisk-sounds-extra/asterisk-sounds-extra_1.4.9-1_all.deb','3419310','Additional sound files for the Asterisk PBX','http://www.asterisk.org/'),(925,'asterisk-config','optional','comm','1400','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-config_1.6.2.0~dfsg~rc1-1_all.deb','601162','Configuration files for Asterisk','http://www.asterisk.org/'),(926,'asterisk-dbg','extra','debug','63884','Debian VoIP Team ','i386','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-dbg_1.6.2.0~dfsg~rc1-1_i386.deb','21247064','Debugging symbols for Asterisk','http://www.asterisk.org/'),(927,'asterisk-dev','extra','devel','1592','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-dev_1.6.2.0~dfsg~rc1-1_all.deb','532718','Development files for Asterisk','http://www.asterisk.org/'),(928,'asterisk-doc','extra','doc','3716','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-doc_1.6.2.0~dfsg~rc1-1_all.deb','1619684','Source code documentation for Asterisk','http://www.asterisk.org/'),(929,'asterisk-h323','optional','comm','748','Debian VoIP Team ','i386','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-h323_1.6.2.0~dfsg~rc1-1_i386.deb','427472','H.323 protocol support for Asterisk','http://www.asterisk.org/'),(930,'asterisk-sounds-main','optional','comm','3216','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-sounds-main_1.6.2.0~dfsg~rc1-1_all.deb','2042140','Core Sound files for Asterisk (English)','http://www.asterisk.org/'),(931,'asterisk','optional','comm','8880','Debian VoIP Team ','i386','','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk_1.6.2.0~dfsg~rc1-1_i386.deb','3364074','Open Source Private Branch Exchange (PBX)','http://www.asterisk.org/'),(932,'astronomical-almanac','optional','science','532','James R. Van Zandt ','i386','','5.6-3','pool/main/a/astronomical-almanac/astronomical-almanac_5.6-3_i386.deb','258578','astronomical almanac - calculate planet and star positions','http://www.moshier.net/'),(933,'astyle','optional','devel','444','Margarita Manterola ','i386','','1.23-1','pool/main/a/astyle/astyle_1.23-1_i386.deb','129620','Source code indenter for C++/C/Java/C# source code','http://astyle.sourceforge.net/'),(934,'asunder','optional','sound','592','Jens Peter Secher ','i386','','1.6.2-5','pool/main/a/asunder/asunder_1.6.2-5_i386.deb','92232','graphical audio CD ripper and encoder','http://www.littlesvr.ca/asunder/'),(935,'asused','optional','utils','352','Jan Wagner ','all','','3.72-7','pool/main/a/asused/asused_3.72-7_all.deb','84176','To run a check on the usage of your registry\'s allocations','http://www.ripe.net/tools/'),(936,'aswiki','optional','web','264','TANIGUCHI Takaki ','all','','1.0.4-10','pool/main/a/aswiki/aswiki_1.0.4-10_all.deb','34028','WikiWikiWeb clone (Wiki Engine) written in Ruby','http://aswiki.sourceforge.net/'),(937,'asylum-data','optional','games','744','Debian Games Team ','all','asylum','0.3.2-1','pool/main/a/asylum/asylum-data_0.3.2-1_all.deb','318852','surreal platform shooting game - data files','http://sdl-asylum.sourceforge.net/'),(938,'asylum','optional','games','212','Debian Games Team ','i386','','0.3.2-1','pool/main/a/asylum/asylum_0.3.2-1_i386.deb','57614','surreal platform shooting game','http://sdl-asylum.sourceforge.net/'),(939,'asymptote-doc','optional','doc','6976','Hubert Chathi ','all','asymptote','1.88-2','pool/main/a/asymptote/asymptote-doc_1.88-2_all.deb','4522868','documentation and examples for asymptote','http://asymptote.sourceforge.net/'),(940,'asymptote','optional','tex','5508','Hubert Chathi ','i386','','1.88-2','pool/main/a/asymptote/asymptote_1.88-2_i386.deb','1808440','script-based vector graphics language inspired by MetaPost','http://asymptote.sourceforge.net/'),(941,'at-spi-doc','optional','doc','958','Debian GNOME Maintainers ','all','at-spi','1.28.1-2','pool/main/a/at-spi/at-spi-doc_1.28.1-2_all.deb','182410','Documentation files of at-spi for GNOME Accessibility',''),(942,'at-spi','optional','gnome','1664','Debian GNOME Maintainers ','i386','','1.28.1-2','pool/main/a/at-spi/at-spi_1.28.1-2_i386.deb','233422','Assistive Technology Service Provider Interface',''),(943,'libatspi-dbg','extra','debug','1416','Debian GNOME Maintainers ','i386','at-spi','1.28.1-2','pool/main/a/at-spi/libatspi-dbg_1.28.1-2_i386.deb','529604','at-spi libraries and debugging symbols',''),(944,'libatspi-dev','optional','libdevel','840','Debian GNOME Maintainers ','i386','at-spi','1.28.1-2','pool/main/a/at-spi/libatspi-dev_1.28.1-2_i386.deb','163060','Development files of at-spi for GNOME Accessibility',''),(945,'libatspi1.0-0','optional','libs','576','Debian GNOME Maintainers ','i386','at-spi','1.28.1-2','pool/main/a/at-spi/libatspi1.0-0_1.28.1-2_i386.deb','223150','C binding libraries of at-spi for GNOME Accessibility',''),(946,'python-pyatspi','optional','python','224','Debian GNOME Maintainers ','all','at-spi','1.28.1-2','pool/main/a/at-spi/python-pyatspi_1.28.1-2_all.deb','123786','Assistive Technology Service Provider Interface - Python bindings',''),(947,'at','standard','admin','208','Ansgar Burchardt ','i386','','3.1.11-1','pool/main/a/at/at_3.1.11-1_i386.deb','44382','Delayed job execution and batch processing',''),(948,'atanks-data','optional','games','1648','Mark Purcell ','all','atanks','3.6-1','pool/main/a/atanks/atanks-data_3.6-1_all.deb','1284390','data files for Atomic tanks','http://atanks.sourceforge.net/'),(949,'atanks','optional','games','416','Mark Purcell ','i386','','3.6-1','pool/main/a/atanks/atanks_3.6-1_i386.deb','169006','tank-battling game','http://atanks.sourceforge.net/'),(950,'aterm-ml','optional','x11','608','Debian QA Group ','i386','aterm','1.0.1-7','pool/main/a/aterm/aterm-ml_1.0.1-7_i386.deb','265372','Afterstep XVT - a VT102 emulator for the X window system','http://aterm.sf.net'),(951,'aterm','optional','x11','228','Debian QA Group ','i386','','1.0.1-7','pool/main/a/aterm/aterm_1.0.1-7_i386.deb','84760','Afterstep XVT - a VT102 emulator for the X window system','http://aterm.sf.net'),(952,'atftp','extra','net','80','Ludovic Drolez ','i386','','0.7.dfsg-8','pool/main/a/atftp/atftp_0.7.dfsg-8_i386.deb','28842','advanced TFTP client',''),(953,'atftpd','extra','net','176','Ludovic Drolez ','i386','atftp','0.7.dfsg-8','pool/main/a/atftp/atftpd_0.7.dfsg-8_i386.deb','59160','advanced TFTP server',''),(954,'athcool','extra','misc','104','Nicolas Boullis ','i386','','0.3.12-3','pool/main/a/athcool/athcool_0.3.12-3_i386.deb','16120','tool to enable powersaving mode for Athlon/Duron processors',''),(955,'atheist','optional','devel','424','Cleto Martin Angelina ','all','','0.20090921-1','pool/main/a/atheist/atheist_0.20090921-1_all.deb','158566','A general purpose command-line testing tool','http://crysol.org/es/node/1218'),(956,'atheme-services','optional','net','2908','Debian IRC Team ','i386','','3.0.4-1','pool/main/a/atheme-services/atheme-services_3.0.4-1_i386.deb','617076','modular IRC services daemon','http://www.atheme.net'),(957,'athena-jot','optional','utils','28','Francesco Paolo Lovergine ','i386','','9.0-5','pool/main/a/athena-jot/athena-jot_9.0-5_i386.deb','9876','print out increasing, decreasing, random, or redundant data, one per line',''),(958,'atitvout','optional','misc','88','Philippe Coval ','i386','','0.4-13','pool/main/a/atitvout/atitvout_0.4-13_i386.deb','20794','ATI TV Out Support Program','http://0pointer.de/lennart/projects/atitvout/'),(959,'libatk1.0-0','optional','libs','208','Debian GNOME Maintainers ','i386','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-0_1.28.0-1_i386.deb','81452','The ATK accessibility toolkit','http://www.gtk.org/'),(960,'libatk1.0-data','optional','misc','1724','Debian GNOME Maintainers ','all','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-data_1.28.0-1_all.deb','208678','Common files for the ATK accessibility toolkit','http://www.gtk.org/'),(961,'libatk1.0-dbg','extra','debug','368','Debian GNOME Maintainers ','i386','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-dbg_1.28.0-1_i386.deb','142430','The ATK libraries and debugging symbols','http://www.gtk.org/'),(962,'libatk1.0-dev','optional','libdevel','480','Debian GNOME Maintainers ','i386','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-dev_1.28.0-1_i386.deb','117526','Development files for the ATK accessibility toolkit','http://www.gtk.org/'),(963,'libatk1.0-doc','optional','doc','1008','Debian GNOME Maintainers ','all','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-doc_1.28.0-1_all.deb','142006','Documentation files for the ATK toolkit','http://www.gtk.org/'),(964,'libatlas-cpp-0.6-1-dbg','extra','debug','3324','Michael Koch ','i386','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-0.6-1-dbg_0.6.1-4_i386.deb','1093064','The protocol library of the World Forge project - debugging libs','http://www.worldforge.org/'),(965,'libatlas-cpp-0.6-1','optional','libs','600','Michael Koch ','i386','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-0.6-1_0.6.1-4_i386.deb','198094','The protocol library of the World Forge project - runtime libs','http://www.worldforge.org/'),(966,'libatlas-cpp-0.6-dev','optional','libdevel','392','Michael Koch ','i386','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-0.6-dev_0.6.1-4_i386.deb','53676','The protocol library of the World Forge project - header files','http://www.worldforge.org/'),(967,'libatlas-cpp-doc','optional','doc','9764','Michael Koch ','all','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-doc_0.6.1-4_all.deb','1363782','The protocol library of the World Forge project - documentation','http://www.worldforge.org/'),(968,'libatlas-3dnow-dev','optional','devel','28164','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-3dnow-dev_3.6.0-24_i386.deb','6224982','Automatically Tuned Linear Algebra Software,3dnow static','http://math-atlas.sourceforge.net/'),(969,'libatlas-base-dev','optional','devel','22200','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-base-dev_3.6.0-24_i386.deb','5754786','Automatically Tuned Linear Algebra Software,generic static','http://math-atlas.sourceforge.net/'),(970,'libatlas-doc','optional','doc','756','Debian Scientific Computing Team ','all','atlas','3.6.0-24','pool/main/a/atlas/libatlas-doc_3.6.0-24_all.deb','683292','Automatically Tuned Linear Algebra Software,documentation','http://math-atlas.sourceforge.net/'),(971,'libatlas-headers','optional','devel','112','Debian Scientific Computing Team ','all','atlas','3.6.0-24','pool/main/a/atlas/libatlas-headers_3.6.0-24_all.deb','21590','Automatically Tuned Linear Algebra Software,C header files','http://math-atlas.sourceforge.net/'),(972,'libatlas-sse-dev','optional','devel','23076','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-sse-dev_3.6.0-24_i386.deb','5849124','Automatically Tuned Linear Algebra Software,SSE1 static','http://math-atlas.sourceforge.net/'),(973,'libatlas-sse2-dev','optional','devel','27628','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-sse2-dev_3.6.0-24_i386.deb','6509440','Automatically Tuned Linear Algebra Software,SSE2 static','http://math-atlas.sourceforge.net/'),(974,'libatlas-test','extra','devel','2048','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-test_3.6.0-24_i386.deb','572188','Automatically Tuned Linear Algebra Software,test programs','http://math-atlas.sourceforge.net/'),(975,'libatlas3gf-3dnow','optional','libs','18804','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-3dnow_3.6.0-24_i386.deb','5487668','Automatically Tuned Linear Algebra Software,3dnow shared','http://math-atlas.sourceforge.net/'),(976,'libatlas3gf-base','optional','libs','14084','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-base_3.6.0-24_i386.deb','5159058','Automatically Tuned Linear Algebra Software,generic shared','http://math-atlas.sourceforge.net/'),(977,'libatlas3gf-sse2','optional','libs','18704','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-sse2_3.6.0-24_i386.deb','5712514','Automatically Tuned Linear Algebra Software,SSE2 shared','http://math-atlas.sourceforge.net/'),(978,'libatlas3gf-sse','optional','libs','14496','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-sse_3.6.0-24_i386.deb','5098246','Automatically Tuned Linear Algebra Software,SSE1 shared','http://math-atlas.sourceforge.net/'),(979,'atlc-examples','optional','electronics','130224','Bdale Garbee ','all','atlc','4.6.0-1','pool/main/a/atlc/atlc-examples_4.6.0-1_all.deb','1059782','Examples for Arbitrary Transmission Line Calculator',''),(980,'atlc','optional','electronics','2548','Bdale Garbee ','i386','','4.6.0-1','pool/main/a/atlc/atlc_4.6.0-1_i386.deb','1253480','Arbitrary Transmission Line Calculator',''),(981,'atom4','optional','games','336','Hwei Sheng Teoh ','i386','','4.1-4','pool/main/a/atom4/atom4_4.1-4_i386.deb','48456','An original two-player color puzzle game',''),(982,'atomicparsley','optional','video','288','Jonas Smedegaard ','i386','','0.9.2~svn110-2','pool/main/a/atomicparsley/atomicparsley_0.9.2~svn110-2_i386.deb','110918','read, parse and set metadata of MPEG-4 and 3gp files','http://atomicparsley.sourceforge.net/'),(983,'atomix-data','optional','games','596','Guilherme de S. Pastore ','all','atomix','2.14.0-1','pool/main/a/atomix/atomix-data_2.14.0-1_all.deb','109554','architecture independent files for atomix',''),(984,'atomix','optional','games','120','Guilherme de S. Pastore ','i386','','2.14.0-1','pool/main/a/atomix/atomix_2.14.0-1_i386.deb','51042','puzzle game for building molecules out of isolated atoms',''),(985,'atool','optional','utils','196','Francois Marier ','all','','0.37.0-2','pool/main/a/atool/atool_0.37.0-2_all.deb','44266','A tool for managing file archives of various types','http://www.nongnu.org/atool/'),(986,'atop','optional','admin','260','Edelhard Becker ','i386','','1.23-1','pool/main/a/atop/atop_1.23-1_i386.deb','78122','Monitor for system resources and process activity','http://www.atconsultancy.nl/atop/home.html'),(987,'kernel-patch-atopacct','optional','kernel','116','Edelhard Becker ','all','atoppatch','1:1.23-1','pool/main/a/atoppatch/kernel-patch-atopacct_1.23-1_all.deb','18206','save additional statistical counters for atop in the record','http://www.atconsultancy.nl/atop/kernpatch.html'),(988,'kernel-patch-atopcnt','optional','kernel','132','Edelhard Becker ','all','atoppatch','1:1.23-1','pool/main/a/atoppatch/kernel-patch-atopcnt_1.23-1_all.deb','22784','additional statistical counters for atop','http://www.atconsultancy.nl/atop/kernpatch.html'),(989,'atp','optional','text','96','Hamish Moffatt ','i386','','1.2-11','pool/main/a/atp/atp_1.2-11_i386.deb','25674','text to PostScript converter with some C syntax highlighting',''),(990,'atris','optional','games','960','Pascal Giard ','i386','','1.0.7.dfsg.1-7.1','pool/main/a/atris/atris_1.0.7.dfsg.1-7.1_i386.deb','319278','tetris-like game with a twist for Unix',''),(991,'atsar','optional','admin','108','Michael Stone ','i386','','1.7-2','pool/main/a/atsar/atsar_1.7-2_i386.deb','40964','system activity reporter',''),(992,'attal-themes-medieval','optional','games','39224','Debian Games Team ','all','attal-themes','1.0~rc2.dfsg1-1','pool/main/a/attal-themes/attal-themes-medieval_1.0~rc2.dfsg1-1_all.deb','34768600','medieval theme for attal','http://www.attal-thegame.org/'),(993,'attal','optional','games','3332','Debian Games Team ','i386','','1.0~rc2-2','pool/main/a/attal/attal_1.0~rc2-2_i386.deb','1113180','turn-based strategy game','http://www.attal-thegame.org/'),(994,'attr','optional','utils','248','Nathan Scott ','i386','','1:2.4.44-1','pool/main/a/attr/attr_2.4.44-1_i386.deb','45072','Utilities for manipulating filesystem extended attributes','http://savannah.nongnu.org/projects/attr/'),(995,'libattr1-dev','extra','libdevel','140','Nathan Scott ','i386','attr','1:2.4.44-1','pool/main/a/attr/libattr1-dev_2.4.44-1_i386.deb','34454','Extended attribute static libraries and headers','http://savannah.nongnu.org/projects/attr/'),(996,'libattr1','required','libs','64','Nathan Scott ','i386','attr','1:2.4.44-1','pool/main/a/attr/libattr1_2.4.44-1_i386.deb','11846','Extended attribute shared library','http://savannah.nongnu.org/projects/attr/'),(997,'aub','optional','news','196','Debian QA Group ','all','','2.2.2','pool/main/a/aub/aub_2.2.2_all.deb','60308','Assembles binary files from USENET',''),(998,'aubio-tools','optional','sound','148','Paul Brossier ','i386','aubio','0.3.2-4','pool/main/a/aubio/aubio-tools_0.3.2-4_i386.deb','30600','a library for audio segmentation -- utilities',''),(999,'libaubio-dev','optional','libdevel','364','Paul Brossier ','i386','aubio','0.3.2-4','pool/main/a/aubio/libaubio-dev_0.3.2-4_i386.deb','68364','a library for audio segmentation',''),(1000,'libaubio-doc','optional','doc','1828','Paul Brossier ','all','aubio','0.3.2-4','pool/main/a/aubio/libaubio-doc_0.3.2-4_all.deb','286504','a library for audio segmentation -- documentation',''); -/*!40000 ALTER TABLE `packages_plain` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `packages_small` --- - -DROP TABLE IF EXISTS `packages_small`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `packages_small` ( - `Id` int(11) NOT NULL AUTO_INCREMENT, - `Package` varchar(250) COLLATE utf8_bin NOT NULL, - `Priority` varchar(250) COLLATE utf8_bin NOT NULL, - `Section` varchar(250) COLLATE utf8_bin NOT NULL, - `Installed-Size` varchar(250) COLLATE utf8_bin NOT NULL, - `Maintainer` varchar(250) COLLATE utf8_bin NOT NULL, - `Architecture` varchar(250) COLLATE utf8_bin NOT NULL, - `Source` varchar(250) COLLATE utf8_bin NOT NULL, - `Version` varchar(250) COLLATE utf8_bin NOT NULL, - `Filename` varchar(250) COLLATE utf8_bin NOT NULL, - `Size` varchar(250) COLLATE utf8_bin NOT NULL, - `Description` varchar(250) COLLATE utf8_bin NOT NULL, - `Homepage` varchar(250) COLLATE utf8_bin NOT NULL, - PRIMARY KEY (`Id`) -) ENGINE=MyISAM AUTO_INCREMENT=26611 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `packages_small` --- - -LOCK TABLES `packages_small` WRITE; -/*!40000 ALTER TABLE `packages_small` DISABLE KEYS */; -INSERT INTO `packages_small` VALUES (1,'acx100-source','extra','contrib/kernel','296','Stefano Canepa ','all','acx100','20080210-1.1','pool/contrib/a/acx100/acx100-source_20080210-1.1_all.deb','229468','ACX100/ACX111 wireless network drivers source','http://acx100.sourceforge.net/'),(2,'alien-arena-browser','extra','contrib/games','160','Debian Games Team ','all','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-browser_7.0-1_all.deb','37128','stand alone server browser for Alien Arena','http://red.planetarena.org'),(3,'alien-arena-server','extra','contrib/games','260','Debian Games Team ','i386','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-server_7.0-1_i386.deb','130272','Dedicated server for Alien Arena','http://red.planetarena.org'),(4,'alien-arena','extra','contrib/games','1204','Debian Games Team ','i386','','7.0-1','pool/contrib/a/alien-arena/alien-arena_7.0-1_i386.deb','579978','Standalone 3D first person online deathmatch shooter','http://red.planetarena.org'),(5,'alsa-firmware-loaders','extra','contrib/sound','228','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/contrib/a/alsa-tools/alsa-firmware-loaders_1.0.21-1_i386.deb','32758','ALSA software loaders for specific hardware','http://www.alsa-project.org/'),(6,'amoeba','optional','contrib/x11','276','Steinar H. Gunderson ','i386','','1.1-20','pool/contrib/a/amoeba/amoeba_1.1-20_i386.deb','94052','fast-paced, polished OpenGL demonstration by Excess',''),(7,'atari800','optional','contrib/otherosfs','1848','Antonin Kral ','i386','','2.1.0-1','pool/contrib/a/atari800/atari800_2.1.0-1_i386.deb','763238','Atari emulator for X/curses/SDL',''),(8,'avifile-divx-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-divx-plugin_0.7.48~20090503.ds-1_i386.deb','950','Divx4Linux video de/encoding plugin for libavifile','http://avifile.sf.net'),(9,'avifile-win32-plugin','optional','contrib/video','268','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-win32-plugin_0.7.48~20090503.ds-1_i386.deb','97404','Win32 audio/video plugin for libavifile','http://avifile.sf.net'),(10,'avifile-xvid-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-xvid-plugin_0.7.48~20090503.ds-1_i386.deb','928','XviD video encoding plugin for libavifile','http://avifile.sf.net'); -/*!40000 ALTER TABLE `packages_small` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `phones` --- - -DROP TABLE IF EXISTS `phones`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `phones` ( - `phone_id` int(11) NOT NULL AUTO_INCREMENT, - `phone` varchar(255) NOT NULL, - `phone_developer` int(11) NOT NULL, - `phone_type` varchar(255) NOT NULL, - PRIMARY KEY (`phone_id`) -) ENGINE=MyISAM AUTO_INCREMENT=47 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `phones` --- - -LOCK TABLES `phones` WRITE; -/*!40000 ALTER TABLE `phones` DISABLE KEYS */; -INSERT INTO `phones` VALUES (1,'123-45-01',1,'working'),(2,'123-45-02',2,'home'),(6,'123-45-06',6,'fax'),(7,'123-45-07',7,'working'),(8,'123-45-08',8,'home'),(9,'123-45-09',9,'fax'),(10,'123-45-10',10,'working'),(11,'123-45-11',11,'home'),(12,'123-45-12',12,'fax'),(13,'123-45-13',13,'working'),(14,'123-45-14',14,'home'),(15,'123-45-15',15,'fax'),(16,'123-45-16',16,'working'),(17,'123-45-17',17,'home'),(18,'123-45-18',18,'fax'),(19,'123-45-19',19,'working'),(20,'123-45-20',20,'home'),(21,'123-45-21',21,'fax'),(22,'123-45-22',22,'working'),(23,'123-45-23',23,'home'),(24,'123-45-24',24,'fax'),(25,'123-45-25',25,'working'),(26,'123-45-26',26,'home'),(27,'123-45-27',27,'fax'),(28,'123-45-28',28,'working'),(29,'123-45-29',29,'home'),(30,'123-45-30',30,'fax'),(31,'123-45-31',1,'working'),(32,'123-45-32',2,'home'),(33,'123-45-33',3,'fax'),(34,'123-45-34',4,'working'),(35,'123-45-35asdf',5,'home'),(36,'123-45-36',6,'fax'),(37,'123-45-37',7,'working'),(38,'123-45-38',8,'home'),(39,'123-45-39',9,'fax'),(40,'123-45-40',10,'working'),(41,'123-45-41',11,'home'),(42,'123-45-42',12,'fax'),(43,'123-45-43',13,'working'),(44,'123-45-44',14,'home'),(45,'123-45-45',15,'fax'),(5,'123-45-05',5,'home'),(3,'123-45-03',3,'fax'),(4,'123-45-04',4,'working'); -/*!40000 ALTER TABLE `phones` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `products` --- - -DROP TABLE IF EXISTS `products`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `products` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `product_name` varchar(255) NOT NULL, - `category` varchar(255) NOT NULL, - `scales` int(11) NOT NULL, - `colour` varchar(255) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `products` --- - -LOCK TABLES `products` WRITE; -/*!40000 ALTER TABLE `products` DISABLE KEYS */; -INSERT INTO `products` VALUES (1,'Nokia 5230','mobile phone',250,'black'),(2,'Samsung GT-S5230','mobile phone',170,'gray'),(3,'LG KP500 Cookie','mobile phone',150,'rose'),(4,'Apple iPhone 3G (8Gb)','mobile phone',700,'black'),(5,'ASUS Eee PC 1005PE-BLK065S','notebook',450,'black'),(6,'HP Compaq 615 (VC289EA)','notebook',600,'gray'),(7,'Toshiba Satellite A505-S6960','notebook',900,'black'),(8,'ASUS Eee PC 1000H (160Gb)','notebook',400,'white'),(9,'Canon PowerShot SX120 IS','photo',250,'gray'),(10,'Sony CyberShot DSC-H20','photo',320,'white'),(11,'Nikon D3000','photo',600,'black'),(12,'Nikon D90','photo',1100,'black'),(13,'Microlab M-880','audio',65,'white'),(14,'Microlab Solo-7C','audio',200,'gray'),(15,'F&D D80','audio',210,'black'),(16,'Microlab Pro 3','audio',180,'black'),(17,'BenQ MP515','projector',630,'white'),(18,'Epson EH-TW450','projector',1400,'rose'),(19,'NEC NP215','projector',870,'black'),(20,'Epson EB- S72','projector',700,'gray'),(21,'D-Link DIR-300','network',55,'gray'),(22,'Zyxel P-660HTW2 EE','network',120,'black'),(23,'Acorp Sprinter@ADSL W422G','network',70,'black'),(24,'D-Link DIR-300/NRU','network',65,'black'); -/*!40000 ALTER TABLE `products` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `project_team` --- - -DROP TABLE IF EXISTS `project_team`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `project_team` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `project_id` int(11) NOT NULL, - `team_id` int(11) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `project_team` --- - -LOCK TABLES `project_team` WRITE; -/*!40000 ALTER TABLE `project_team` DISABLE KEYS */; -INSERT INTO `project_team` VALUES (1,1,1),(2,1,2),(3,2,3),(4,2,4),(5,3,5),(6,3,6),(7,4,7),(8,4,8),(9,1,9),(10,2,9),(11,3,10),(12,4,10); -/*!40000 ALTER TABLE `project_team` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `projects` --- - -DROP TABLE IF EXISTS `projects`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `projects` ( - `project_id` int(11) NOT NULL AUTO_INCREMENT, - `project_name` varchar(255) NOT NULL, - `project_dsc` text NOT NULL, - PRIMARY KEY (`project_id`) -) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `projects` --- - -LOCK TABLES `projects` WRITE; -/*!40000 ALTER TABLE `projects` DISABLE KEYS */; -INSERT INTO `projects` VALUES (1,'Project 1','The first project for testing Treegrid multitable dhtmlxConnector'),(2,'Project 2','The second project for testing Treegrid multitable dhtmlxConnector'),(3,'Project 3','The third project for testing Treegrid multitable dhtmlxConnector'),(4,'Project 4','The fourth project for testing Treegrid multitable dhtmlxConnector'); -/*!40000 ALTER TABLE `projects` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tasks` --- - -DROP TABLE IF EXISTS `tasks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tasks` ( - `taskId` int(11) NOT NULL AUTO_INCREMENT, - `parentId` int(11) DEFAULT '0', - `taskName` varchar(250) DEFAULT NULL, - `duration` float(9,1) DEFAULT '0.0', - `work` float(9,1) DEFAULT '0.0', - `start` date DEFAULT NULL, - `finish` date DEFAULT NULL, - `complete` int(11) DEFAULT '0', - `predecessors` varchar(100) DEFAULT NULL, - `resource` varchar(100) DEFAULT NULL, - PRIMARY KEY (`taskId`) -) ENGINE=InnoDB AUTO_INCREMENT=8412 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tasks` --- - -LOCK TABLES `tasks` WRITE; -/*!40000 ALTER TABLE `tasks` DISABLE KEYS */; -INSERT INTO `tasks` VALUES (1000,0,'dhtmlXGrid',22.0,11.0,'2007-02-14','2007-02-17',50,'','BX'),(1001,1000,'Version 1.1',21.0,1.0,'2007-02-07','2007-02-24',4,'','CW'),(1002,1001,'Task 682400',30.0,1.0,'2007-02-07','2007-02-17',3,'','CW'),(1003,1001,'Task 532497',27.0,13.0,'2007-02-09','2007-02-22',48,'','BX'),(1004,1001,'Task 581814',3.0,1.0,'2007-02-06','2007-02-25',33,'','CW'),(1005,1001,'Task 125488',30.0,12.0,'2007-02-08','2007-02-25',40,'','CW'),(1006,1001,'Task 541992',4.0,2.0,'2007-02-11','2007-02-19',50,'','CW'),(1007,1001,'Task 182020',16.0,8.0,'2007-02-11','2007-02-21',50,'','CW'),(1008,1001,'Task 812934',30.0,16.0,'2007-02-13','2007-02-20',53,'','AZ'),(1009,1001,'Task 729871',6.0,2.0,'2007-02-09','2007-02-19',33,'','CW'),(1010,1001,'Task 311306',3.0,2.0,'2007-02-06','2007-02-18',66,'','BX'),(1011,1001,'Task 463487',4.0,4.0,'2007-02-11','2007-02-18',100,'','BX'),(1101,1000,'Version 1.2',12.0,5.0,'2007-02-10','2007-02-18',41,'','AZ'),(1102,1101,'Task 228651',3.0,3.0,'2007-02-07','2007-02-23',100,'','CW'),(1103,1101,'Task 319851',7.0,1.0,'2007-02-09','2007-02-21',14,'','BX'),(1104,1101,'Task 903672',4.0,4.0,'2007-02-13','2007-02-25',100,'','CW'),(1105,1101,'Task 705810',21.0,11.0,'2007-02-13','2007-02-17',52,'','AZ'),(1106,1101,'Task 646402',19.0,10.0,'2007-02-11','2007-02-22',52,'','CW'),(1107,1101,'Task 506700',25.0,17.0,'2007-02-11','2007-02-23',68,'','AZ'),(1108,1101,'Task 929063',13.0,1.0,'2007-02-06','2007-02-18',7,'','BX'),(1109,1101,'Task 972520',5.0,3.0,'2007-02-11','2007-02-19',60,'','AZ'),(1110,1101,'Task 112765',22.0,3.0,'2007-02-09','2007-02-20',13,'','CW'),(1111,1101,'Task 242160',23.0,18.0,'2007-02-07','2007-02-21',78,'','AZ'),(1201,1000,'Version 1.3',11.0,11.0,'2007-02-05','2007-02-22',100,'','BX'),(1202,1201,'Task 513075',16.0,1.0,'2007-02-10','2007-02-24',6,'','CW'),(1203,1201,'Task 495551',12.0,7.0,'2007-02-13','2007-02-24',58,'','AZ'),(1204,1201,'Task 507107',18.0,5.0,'2007-02-06','2007-02-19',27,'','CW'),(1205,1201,'Task 315104',18.0,3.0,'2007-02-07','2007-02-23',16,'','CW'),(1206,1201,'Task 659125',27.0,21.0,'2007-02-11','2007-02-18',77,'','CW'),(1207,1201,'Task 806532',6.0,3.0,'2007-02-06','2007-02-20',50,'','BX'),(1208,1201,'Task 552463',18.0,12.0,'2007-02-12','2007-02-17',66,'','CW'),(1209,1201,'Task 442057',1.0,0.0,'2007-02-09','2007-02-19',0,'','CW'),(1210,1201,'Task 214897',11.0,4.0,'2007-02-12','2007-02-20',36,'','BX'),(1211,1201,'Task 805012',18.0,11.0,'2007-02-11','2007-02-20',61,'','CW'),(1301,1000,'Version 1.4',9.0,0.0,'2007-02-08','2007-02-21',0,'','AZ'),(1302,1301,'Task 174994',1.0,1.0,'2007-02-13','2007-02-18',100,'','BX'),(1303,1301,'Task 806559',9.0,0.0,'2007-02-14','2007-02-18',0,'','AZ'),(1304,1301,'Task 274495',7.0,6.0,'2007-02-12','2007-02-23',85,'','AZ'),(1305,1301,'Task 776719',21.0,19.0,'2007-02-11','2007-02-19',90,'','CW'),(1306,1301,'Task 261148',7.0,7.0,'2007-02-12','2007-02-24',100,'','BX'),(1307,1301,'Task 647922',7.0,3.0,'2007-02-06','2007-02-22',42,'','BX'),(1308,1301,'Task 940511',4.0,1.0,'2007-02-06','2007-02-19',25,'','CW'),(1309,1301,'Task 114610',22.0,15.0,'2007-02-12','2007-02-21',68,'','AZ'),(1310,1301,'Task 895914',13.0,11.0,'2007-02-12','2007-02-25',84,'','BX'),(1311,1301,'Task 204562',14.0,7.0,'2007-02-12','2007-02-23',50,'','BX'),(1401,1000,'Version 1.5',4.0,4.0,'2007-02-13','2007-02-20',100,'','AZ'),(1402,1401,'Task 567274',28.0,4.0,'2007-02-10','2007-02-18',14,'','CW'),(1403,1401,'Task 671712',17.0,14.0,'2007-02-09','2007-02-20',82,'','CW'),(1404,1401,'Task 718424',14.0,2.0,'2007-02-10','2007-02-19',14,'','BX'),(1405,1401,'Task 280327',17.0,8.0,'2007-02-06','2007-02-17',47,'','BX'),(1406,1401,'Task 569227',13.0,3.0,'2007-02-08','2007-02-22',23,'','CW'),(1407,1401,'Task 213595',21.0,14.0,'2007-02-14','2007-02-17',66,'','CW'),(1408,1401,'Task 814127',5.0,4.0,'2007-02-08','2007-02-19',80,'','AZ'),(1409,1401,'Task 943739',5.0,2.0,'2007-02-12','2007-02-18',40,'','BX'),(1410,1401,'Task 814236',20.0,5.0,'2007-02-11','2007-02-22',25,'','CW'),(1411,1401,'Task 720757',18.0,4.0,'2007-02-13','2007-02-20',22,'','BX'),(2000,0,'dhtmlXTreeGrid',7.0,1.0,'2007-02-11','2007-02-22',14,'','AZ'),(2001,2000,'Version 1.1',9.0,1.0,'2007-02-06','2007-02-18',11,'','AZ'),(2002,2001,'Task 607476',17.0,16.0,'2007-02-11','2007-02-22',94,'','CW'),(2003,2001,'Task 279188',18.0,11.0,'2007-02-07','2007-02-24',61,'','BX'),(2004,2001,'Task 688313',21.0,13.0,'2007-02-14','2007-02-25',61,'','CW'),(2005,2001,'Task 379991',14.0,6.0,'2007-02-14','2007-02-22',42,'','CW'),(2006,2001,'Task 649359',15.0,4.0,'2007-02-06','2007-02-17',26,'','AZ'),(2007,2001,'Task 430446',18.0,3.0,'2007-02-10','2007-02-18',16,'','CW'),(2008,2001,'Task 962836',3.0,0.0,'2007-02-11','2007-02-24',0,'','BX'),(2009,2001,'Task 680555',30.0,15.0,'2007-02-12','2007-02-16',50,'','BX'),(2010,2001,'Task 767632',7.0,3.0,'2007-02-13','2007-02-18',42,'','AZ'),(2011,2001,'Task 935872',30.0,23.0,'2007-02-08','2007-02-24',76,'','CW'),(2101,2000,'Version 1.2',29.0,12.0,'2007-02-10','2007-02-16',41,'','AZ'),(2102,2101,'Task 298041',15.0,8.0,'2007-02-11','2007-02-25',53,'','CW'),(2103,2101,'Task 389675',16.0,16.0,'2007-02-05','2007-02-18',100,'','BX'),(2104,2101,'Task 970458',7.0,7.0,'2007-02-11','2007-02-22',100,'','BX'),(2105,2101,'Task 793863',5.0,2.0,'2007-02-13','2007-02-21',40,'','CW'),(2106,2101,'Task 585584',14.0,4.0,'2007-02-08','2007-02-21',28,'','AZ'),(2107,2101,'Task 599093',5.0,0.0,'2007-02-08','2007-02-20',0,'','CW'),(2108,2101,'Task 837863',8.0,7.0,'2007-02-14','2007-02-20',87,'','AZ'),(2109,2101,'Task 388698',8.0,8.0,'2007-02-07','2007-02-25',100,'','BX'),(2110,2101,'Task 310628',5.0,3.0,'2007-02-09','2007-02-19',60,'','BX'),(2111,2101,'Task 301567',24.0,18.0,'2007-02-09','2007-02-17',75,'','BX'),(2201,2000,'Version 1.3',5.0,4.0,'2007-02-14','2007-02-21',80,'','AZ'),(2202,2201,'Task 923828',20.0,11.0,'2007-02-06','2007-02-19',55,'','BX'),(2203,2201,'Task 398057',28.0,23.0,'2007-02-08','2007-02-20',82,'','BX'),(2204,2201,'Task 411783',16.0,12.0,'2007-02-13','2007-02-25',75,'','AZ'),(2205,2201,'Task 204589',17.0,2.0,'2007-02-11','2007-02-21',11,'','AZ'),(2206,2201,'Task 654947',23.0,4.0,'2007-02-13','2007-02-25',17,'','BX'),(2207,2201,'Task 946885',25.0,17.0,'2007-02-05','2007-02-21',68,'','BX'),(2208,2201,'Task 569986',22.0,4.0,'2007-02-10','2007-02-17',18,'','CW'),(2209,2201,'Task 430501',26.0,11.0,'2007-02-06','2007-02-24',42,'','AZ'),(2210,2201,'Task 406900',10.0,5.0,'2007-02-11','2007-02-25',50,'','BX'),(2211,2201,'Task 460991',9.0,9.0,'2007-02-08','2007-02-25',100,'','CW'),(2301,2000,'Version 1.4',30.0,12.0,'2007-02-13','2007-02-19',40,'','BX'),(2302,2301,'Task 405408',26.0,7.0,'2007-02-05','2007-02-23',26,'','BX'),(2303,2301,'Task 638102',18.0,12.0,'2007-02-13','2007-02-24',66,'','CW'),(2304,2301,'Task 231472',10.0,5.0,'2007-02-09','2007-02-16',50,'','AZ'),(2305,2301,'Task 744547',28.0,19.0,'2007-02-06','2007-02-18',67,'','BX'),(2306,2301,'Task 153021',18.0,3.0,'2007-02-06','2007-02-21',16,'','AZ'),(2307,2301,'Task 182589',1.0,1.0,'2007-02-05','2007-02-17',100,'','AZ'),(2308,2301,'Task 308946',26.0,23.0,'2007-02-14','2007-02-18',88,'','AZ'),(2309,2301,'Task 646674',25.0,24.0,'2007-02-14','2007-02-17',96,'','AZ'),(2310,2301,'Task 393690',29.0,22.0,'2007-02-12','2007-02-19',75,'','CW'),(2311,2301,'Task 720133',27.0,14.0,'2007-02-12','2007-02-17',51,'','CW'),(2401,2000,'Version 1.5',5.0,2.0,'2007-02-10','2007-02-22',40,'','AZ'),(2402,2401,'Task 863009',15.0,4.0,'2007-02-12','2007-02-18',26,'','AZ'),(2403,2401,'Task 490451',8.0,1.0,'2007-02-14','2007-02-17',12,'','AZ'),(2404,2401,'Task 320583',12.0,6.0,'2007-02-12','2007-02-18',50,'','BX'),(2405,2401,'Task 509657',20.0,9.0,'2007-02-06','2007-02-18',45,'','BX'),(2406,2401,'Task 852810',6.0,3.0,'2007-02-14','2007-02-23',50,'','BX'),(2407,2401,'Task 117404',26.0,17.0,'2007-02-07','2007-02-25',65,'','CW'),(2408,2401,'Task 709689',16.0,0.0,'2007-02-09','2007-02-17',0,'','BX'),(2409,2401,'Task 897026',8.0,0.0,'2007-02-12','2007-02-19',0,'','BX'),(2410,2401,'Task 363443',17.0,17.0,'2007-02-06','2007-02-24',100,'','CW'),(2411,2401,'Task 431857',22.0,10.0,'2007-02-11','2007-02-24',45,'','AZ'),(3000,0,'dhtmlXTree',29.0,24.0,'2007-02-05','2007-02-18',82,'','AZ'),(3001,3000,'Version 1.1',21.0,15.0,'2007-02-08','2007-02-22',71,'','AZ'),(3002,3001,'Task 134548',10.0,2.0,'2007-02-08','2007-02-18',20,'','CW'),(3003,3001,'Task 145236',23.0,10.0,'2007-02-06','2007-02-23',43,'','AZ'),(3004,3001,'Task 848198',5.0,4.0,'2007-02-14','2007-02-17',80,'','CW'),(3005,3001,'Task 260796',21.0,12.0,'2007-02-14','2007-02-16',57,'','AZ'),(3006,3001,'Task 705946',8.0,6.0,'2007-02-05','2007-02-19',75,'','BX'),(3007,3001,'Task 145453',21.0,12.0,'2007-02-11','2007-02-21',57,'','AZ'),(3008,3001,'Task 402235',2.0,1.0,'2007-02-05','2007-02-22',50,'','CW'),(3009,3001,'Task 271430',27.0,14.0,'2007-02-06','2007-02-24',51,'','AZ'),(3010,3001,'Task 187065',14.0,8.0,'2007-02-13','2007-02-21',57,'','AZ'),(3011,3001,'Task 666503',29.0,26.0,'2007-02-07','2007-02-20',89,'','AZ'),(3101,3000,'Version 1.2',25.0,14.0,'2007-02-06','2007-02-24',56,'','BX'),(3102,3101,'Task 651719',22.0,0.0,'2007-02-07','2007-02-17',0,'','CW'),(3103,3101,'Task 247260',28.0,3.0,'2007-02-06','2007-02-19',10,'','AZ'),(3104,3101,'Task 745144',16.0,12.0,'2007-02-09','2007-02-22',75,'','CW'),(3105,3101,'Task 259955',2.0,2.0,'2007-02-07','2007-02-16',100,'','BX'),(3106,3101,'Task 434054',9.0,3.0,'2007-02-12','2007-02-24',33,'','BX'),(3107,3101,'Task 437581',18.0,10.0,'2007-02-11','2007-02-24',55,'','BX'),(3108,3101,'Task 746229',8.0,3.0,'2007-02-10','2007-02-18',37,'','AZ'),(3109,3101,'Task 696804',17.0,17.0,'2007-02-10','2007-02-21',100,'','BX'),(3110,3101,'Task 487223',7.0,0.0,'2007-02-07','2007-02-19',0,'','BX'),(3111,3101,'Task 509846',15.0,14.0,'2007-02-13','2007-02-17',93,'','AZ'),(3201,3000,'Version 1.3',15.0,0.0,'2007-02-14','2007-02-23',0,'','BX'),(3202,3201,'Task 877549',20.0,8.0,'2007-02-08','2007-02-25',40,'','CW'),(3203,3201,'Task 833116',20.0,16.0,'2007-02-13','2007-02-22',80,'','BX'),(3204,3201,'Task 144151',2.0,2.0,'2007-02-13','2007-02-18',100,'','BX'),(3205,3201,'Task 411349',20.0,10.0,'2007-02-11','2007-02-21',50,'','CW'),(3206,3201,'Task 207627',23.0,19.0,'2007-02-10','2007-02-21',82,'','BX'),(3207,3201,'Task 633680',12.0,3.0,'2007-02-12','2007-02-18',25,'','CW'),(3208,3201,'Task 206868',14.0,13.0,'2007-02-08','2007-02-16',92,'','CW'),(3209,3201,'Task 416775',7.0,4.0,'2007-02-10','2007-02-19',57,'','BX'),(3210,3201,'Task 614095',9.0,0.0,'2007-02-14','2007-02-20',0,'','BX'),(3211,3201,'Task 899522',3.0,3.0,'2007-02-05','2007-02-21',100,'','AZ'),(3301,3000,'Version 1.4',28.0,27.0,'2007-02-12','2007-02-23',96,'','BX'),(3302,3301,'Task 708306',16.0,6.0,'2007-02-07','2007-02-19',37,'','CW'),(3303,3301,'Task 851155',30.0,16.0,'2007-02-08','2007-02-21',53,'','BX'),(3304,3301,'Task 184543',15.0,0.0,'2007-02-12','2007-02-21',0,'','CW'),(3305,3301,'Task 739718',29.0,21.0,'2007-02-10','2007-02-24',72,'','AZ'),(3306,3301,'Task 742377',16.0,7.0,'2007-02-12','2007-02-17',43,'','BX'),(3307,3301,'Task 168212',17.0,11.0,'2007-02-10','2007-02-20',64,'','AZ'),(3308,3301,'Task 965142',4.0,2.0,'2007-02-06','2007-02-17',50,'','BX'),(3309,3301,'Task 164415',2.0,0.0,'2007-02-09','2007-02-25',0,'','CW'),(3310,3301,'Task 769504',11.0,7.0,'2007-02-06','2007-02-17',63,'','AZ'),(3311,3301,'Task 422770',8.0,8.0,'2007-02-12','2007-02-23',100,'','BX'),(3401,3000,'Version 1.5',22.0,15.0,'2007-02-10','2007-02-17',68,'','AZ'),(3402,3401,'Task 726019',14.0,6.0,'2007-02-12','2007-02-18',42,'','AZ'),(3403,3401,'Task 671603',3.0,0.0,'2007-02-06','2007-02-17',0,'','AZ'),(3404,3401,'Task 941406',1.0,0.0,'2007-02-09','2007-02-16',0,'','CW'),(3405,3401,'Task 719455',29.0,15.0,'2007-02-05','2007-02-17',51,'','CW'),(3406,3401,'Task 384223',25.0,8.0,'2007-02-08','2007-02-21',32,'','BX'),(3407,3401,'Task 841959',2.0,1.0,'2007-02-07','2007-02-18',50,'','AZ'),(3408,3401,'Task 193359',24.0,2.0,'2007-02-08','2007-02-18',8,'','AZ'),(3409,3401,'Task 178005',3.0,3.0,'2007-02-13','2007-02-19',100,'','AZ'),(3410,3401,'Task 174370',9.0,9.0,'2007-02-12','2007-02-24',100,'','CW'),(3411,3401,'Task 977593',6.0,2.0,'2007-02-12','2007-02-18',33,'','AZ'),(4000,0,'dhtmlxMenu',9.0,7.0,'2007-02-12','2007-02-16',77,'','BX'),(4001,4000,'Version 1.1',16.0,0.0,'2007-02-12','2007-02-24',0,'','CW'),(4002,4001,'Task 357367',6.0,3.0,'2007-02-08','2007-02-24',50,'','AZ'),(4003,4001,'Task 474392',15.0,3.0,'2007-02-14','2007-02-20',20,'','CW'),(4004,4001,'Task 432996',21.0,7.0,'2007-02-09','2007-02-17',33,'','CW'),(4005,4001,'Task 611653',21.0,10.0,'2007-02-08','2007-02-24',47,'','AZ'),(4006,4001,'Task 138834',29.0,10.0,'2007-02-08','2007-02-23',34,'','BX'),(4007,4001,'Task 670789',17.0,0.0,'2007-02-07','2007-02-25',0,'','AZ'),(4008,4001,'Task 391547',19.0,3.0,'2007-02-07','2007-02-17',15,'','BX'),(4009,4001,'Task 457356',15.0,3.0,'2007-02-07','2007-02-21',20,'','BX'),(4010,4001,'Task 774468',27.0,21.0,'2007-02-13','2007-02-22',77,'','CW'),(4011,4001,'Task 221354',12.0,9.0,'2007-02-06','2007-02-17',75,'','AZ'),(4101,4000,'Version 1.2',12.0,9.0,'2007-02-09','2007-02-23',75,'','CW'),(4102,4101,'Task 508436',11.0,7.0,'2007-02-12','2007-02-20',63,'','CW'),(4103,4101,'Task 916910',19.0,5.0,'2007-02-11','2007-02-20',26,'','CW'),(4104,4101,'Task 168701',21.0,4.0,'2007-02-09','2007-02-21',19,'','BX'),(4105,4101,'Task 406168',5.0,1.0,'2007-02-07','2007-02-19',20,'','AZ'),(4106,4101,'Task 855007',22.0,9.0,'2007-02-06','2007-02-23',40,'','CW'),(4107,4101,'Task 713134',15.0,5.0,'2007-02-12','2007-02-22',33,'','AZ'),(4108,4101,'Task 261800',2.0,0.0,'2007-02-11','2007-02-17',0,'','CW'),(4109,4101,'Task 198920',28.0,9.0,'2007-02-08','2007-02-18',32,'','CW'),(4110,4101,'Task 972412',21.0,1.0,'2007-02-09','2007-02-16',4,'','BX'),(4111,4101,'Task 335747',8.0,3.0,'2007-02-08','2007-02-18',37,'','CW'),(4201,4000,'Version 1.3',5.0,4.0,'2007-02-07','2007-02-22',80,'','CW'),(4202,4201,'Task 551323',20.0,15.0,'2007-02-13','2007-02-24',75,'','AZ'),(4203,4201,'Task 561143',9.0,4.0,'2007-02-06','2007-02-22',44,'','CW'),(4204,4201,'Task 381293',3.0,0.0,'2007-02-12','2007-02-24',0,'','BX'),(4205,4201,'Task 640245',27.0,6.0,'2007-02-09','2007-02-18',22,'','AZ'),(4206,4201,'Task 494249',22.0,19.0,'2007-02-06','2007-02-22',86,'','BX'),(4207,4201,'Task 516221',6.0,2.0,'2007-02-12','2007-02-18',33,'','CW'),(4208,4201,'Task 251301',14.0,7.0,'2007-02-11','2007-02-19',50,'','AZ'),(4209,4201,'Task 216851',25.0,12.0,'2007-02-09','2007-02-23',48,'','BX'),(4210,4201,'Task 346896',21.0,9.0,'2007-02-07','2007-02-17',42,'','AZ'),(4211,4201,'Task 214355',30.0,18.0,'2007-02-07','2007-02-22',60,'','CW'),(4301,4000,'Version 1.4',10.0,5.0,'2007-02-10','2007-02-17',50,'','BX'),(4302,4301,'Task 830213',2.0,0.0,'2007-02-06','2007-02-24',0,'','AZ'),(4303,4301,'Task 553358',15.0,12.0,'2007-02-06','2007-02-24',80,'','CW'),(4304,4301,'Task 158013',8.0,8.0,'2007-02-11','2007-02-25',100,'','BX'),(4305,4301,'Task 592095',23.0,22.0,'2007-02-09','2007-02-25',95,'','AZ'),(4306,4301,'Task 553520',6.0,4.0,'2007-02-06','2007-02-24',66,'','BX'),(4307,4301,'Task 267984',28.0,5.0,'2007-02-12','2007-02-19',17,'','AZ'),(4308,4301,'Task 822292',19.0,7.0,'2007-02-14','2007-02-24',36,'','AZ'),(4309,4301,'Task 831027',18.0,9.0,'2007-02-14','2007-02-16',50,'','BX'),(4310,4301,'Task 214328',26.0,25.0,'2007-02-08','2007-02-23',96,'','AZ'),(4311,4301,'Task 420111',22.0,5.0,'2007-02-10','2007-02-21',22,'','CW'),(4401,4000,'Version 1.5',20.0,9.0,'2007-02-13','2007-02-23',45,'','CW'),(4402,4401,'Task 972276',4.0,4.0,'2007-02-07','2007-02-23',100,'','BX'),(4403,4401,'Task 836697',6.0,2.0,'2007-02-08','2007-02-20',33,'','BX'),(4404,4401,'Task 785753',28.0,2.0,'2007-02-13','2007-02-23',7,'','AZ'),(4405,4401,'Task 142361',8.0,5.0,'2007-02-07','2007-02-24',62,'','BX'),(4406,4401,'Task 979437',7.0,6.0,'2007-02-07','2007-02-19',85,'','CW'),(4407,4401,'Task 342122',29.0,23.0,'2007-02-07','2007-02-20',79,'','CW'),(4408,4401,'Task 247775',5.0,1.0,'2007-02-13','2007-02-19',20,'','AZ'),(4409,4401,'Task 797091',5.0,3.0,'2007-02-10','2007-02-20',60,'','CW'),(4410,4401,'Task 396321',12.0,10.0,'2007-02-07','2007-02-23',83,'','CW'),(4411,4401,'Task 423936',10.0,5.0,'2007-02-09','2007-02-24',50,'','CW'),(5000,0,'dhtmlXTollbar',2.0,1.0,'2007-02-13','2007-02-20',50,'','BX'),(5001,5000,'Version 1.1',1.0,0.0,'2007-02-11','2007-02-25',0,'','AZ'),(5002,5001,'Task 897460',4.0,1.0,'2007-02-14','2007-02-23',25,'','CW'),(5003,5001,'Task 360405',11.0,3.0,'2007-02-07','2007-02-24',27,'','BX'),(5004,5001,'Task 453124',4.0,1.0,'2007-02-12','2007-02-22',25,'','CW'),(5005,5001,'Task 581868',10.0,6.0,'2007-02-12','2007-02-22',60,'','CW'),(5006,5001,'Task 458441',6.0,5.0,'2007-02-08','2007-02-17',83,'','CW'),(5007,5001,'Task 322428',13.0,0.0,'2007-02-07','2007-02-18',0,'','CW'),(5008,5001,'Task 274522',10.0,5.0,'2007-02-10','2007-02-21',50,'','CW'),(5009,5001,'Task 498752',9.0,1.0,'2007-02-12','2007-02-24',11,'','BX'),(5010,5001,'Task 595811',27.0,17.0,'2007-02-05','2007-02-24',62,'','CW'),(5011,5001,'Task 694173',4.0,4.0,'2007-02-06','2007-02-18',100,'','BX'),(5101,5000,'Version 1.2',24.0,0.0,'2007-02-10','2007-02-21',0,'','BX'),(5102,5101,'Task 392496',23.0,13.0,'2007-02-08','2007-02-20',56,'','CW'),(5103,5101,'Task 506266',28.0,12.0,'2007-02-09','2007-02-19',42,'','CW'),(5104,5101,'Task 932101',18.0,14.0,'2007-02-05','2007-02-18',77,'','AZ'),(5105,5101,'Task 951253',24.0,18.0,'2007-02-10','2007-02-21',75,'','AZ'),(5106,5101,'Task 261637',11.0,4.0,'2007-02-11','2007-02-16',36,'','AZ'),(5107,5101,'Task 977837',8.0,0.0,'2007-02-07','2007-02-23',0,'','AZ'),(5108,5101,'Task 742214',24.0,15.0,'2007-02-12','2007-02-17',62,'','CW'),(5109,5101,'Task 947129',27.0,11.0,'2007-02-09','2007-02-17',40,'','AZ'),(5110,5101,'Task 734944',7.0,0.0,'2007-02-10','2007-02-18',0,'','CW'),(5111,5101,'Task 775797',21.0,2.0,'2007-02-10','2007-02-23',9,'','AZ'),(5201,5000,'Version 1.3',12.0,11.0,'2007-02-10','2007-02-23',91,'','BX'),(5202,5201,'Task 205566',25.0,4.0,'2007-02-09','2007-02-23',16,'','AZ'),(5203,5201,'Task 425889',25.0,15.0,'2007-02-07','2007-02-19',60,'','CW'),(5204,5201,'Task 550292',5.0,2.0,'2007-02-09','2007-02-16',40,'','CW'),(5205,5201,'Task 457248',1.0,1.0,'2007-02-13','2007-02-18',100,'','CW'),(5206,5201,'Task 997450',14.0,14.0,'2007-02-13','2007-02-20',100,'','AZ'),(5207,5201,'Task 660481',24.0,19.0,'2007-02-06','2007-02-17',79,'','CW'),(5208,5201,'Task 241482',25.0,19.0,'2007-02-09','2007-02-22',76,'','AZ'),(5209,5201,'Task 396701',1.0,1.0,'2007-02-13','2007-02-21',100,'','CW'),(5210,5201,'Task 976833',27.0,11.0,'2007-02-10','2007-02-23',40,'','BX'),(5211,5201,'Task 360351',4.0,4.0,'2007-02-10','2007-02-18',100,'','AZ'),(5301,5000,'Version 1.4',27.0,26.0,'2007-02-12','2007-02-21',96,'','CW'),(5302,5301,'Task 712103',1.0,0.0,'2007-02-08','2007-02-23',0,'','AZ'),(5303,5301,'Task 157904',24.0,10.0,'2007-02-08','2007-02-22',41,'','CW'),(5304,5301,'Task 815077',9.0,0.0,'2007-02-08','2007-02-22',0,'','BX'),(5305,5301,'Task 992648',18.0,11.0,'2007-02-06','2007-02-24',61,'','AZ'),(5306,5301,'Task 971869',11.0,3.0,'2007-02-12','2007-02-18',27,'','CW'),(5307,5301,'Task 561767',1.0,0.0,'2007-02-07','2007-02-24',0,'','BX'),(5308,5301,'Task 210259',6.0,6.0,'2007-02-14','2007-02-24',100,'','BX'),(5309,5301,'Task 337483',25.0,8.0,'2007-02-09','2007-02-24',32,'','CW'),(5310,5301,'Task 669135',12.0,12.0,'2007-02-11','2007-02-23',100,'','AZ'),(5311,5301,'Task 458685',8.0,5.0,'2007-02-12','2007-02-22',62,'','BX'),(5401,5000,'Version 1.5',28.0,25.0,'2007-02-07','2007-02-19',89,'','AZ'),(5402,5401,'Task 501085',13.0,2.0,'2007-02-05','2007-02-16',15,'','AZ'),(5403,5401,'Task 690592',18.0,6.0,'2007-02-11','2007-02-20',33,'','BX'),(5404,5401,'Task 141818',28.0,22.0,'2007-02-10','2007-02-17',78,'','CW'),(5405,5401,'Task 316568',29.0,22.0,'2007-02-05','2007-02-16',75,'','AZ'),(5406,5401,'Task 759982',30.0,28.0,'2007-02-05','2007-02-22',93,'','BX'),(5407,5401,'Task 211642',6.0,4.0,'2007-02-07','2007-02-22',66,'','CW'),(5408,5401,'Task 383354',2.0,2.0,'2007-02-12','2007-02-22',100,'','CW'),(5409,5401,'Task 848036',14.0,13.0,'2007-02-14','2007-02-17',92,'','AZ'),(5410,5401,'Task 150824',1.0,0.0,'2007-02-13','2007-02-22',0,'','BX'),(5411,5401,'Task 475748',12.0,3.0,'2007-02-09','2007-02-20',25,'','BX'),(6000,0,'dhtmlXTabbar',10.0,7.0,'2007-02-12','2007-02-19',70,'','BX'),(6001,6000,'Version 1.1',22.0,2.0,'2007-02-06','2007-02-21',9,'','BX'),(6002,6001,'Task 570800',8.0,3.0,'2007-02-08','2007-02-19',37,'','CW'),(6003,6001,'Task 980360',7.0,5.0,'2007-02-08','2007-02-24',71,'','BX'),(6004,6001,'Task 668999',24.0,19.0,'2007-02-10','2007-02-21',79,'','CW'),(6005,6001,'Task 959635',6.0,3.0,'2007-02-12','2007-02-24',50,'','AZ'),(6006,6001,'Task 591851',21.0,3.0,'2007-02-13','2007-02-20',14,'','BX'),(6007,6001,'Task 388563',21.0,16.0,'2007-02-05','2007-02-23',76,'','BX'),(6008,6001,'Task 811577',3.0,2.0,'2007-02-08','2007-02-20',66,'','AZ'),(6009,6001,'Task 406032',17.0,0.0,'2007-02-06','2007-02-17',0,'','AZ'),(6010,6001,'Task 467068',20.0,8.0,'2007-02-06','2007-02-24',40,'','BX'),(6011,6001,'Task 817599',8.0,5.0,'2007-02-09','2007-02-23',62,'','CW'),(6101,6000,'Version 1.2',18.0,15.0,'2007-02-12','2007-02-20',83,'','AZ'),(6102,6101,'Task 133761',28.0,18.0,'2007-02-08','2007-02-24',64,'','BX'),(6103,6101,'Task 206298',30.0,14.0,'2007-02-13','2007-02-20',46,'','AZ'),(6104,6101,'Task 920762',11.0,2.0,'2007-02-08','2007-02-21',18,'','BX'),(6105,6101,'Task 697292',21.0,10.0,'2007-02-09','2007-02-22',47,'','CW'),(6106,6101,'Task 817138',8.0,6.0,'2007-02-09','2007-02-20',75,'','CW'),(6107,6101,'Task 311550',5.0,1.0,'2007-02-11','2007-02-23',20,'','AZ'),(6108,6101,'Task 628445',19.0,14.0,'2007-02-11','2007-02-18',73,'','CW'),(6109,6101,'Task 521294',7.0,0.0,'2007-02-13','2007-02-17',0,'','AZ'),(6110,6101,'Task 715793',2.0,0.0,'2007-02-06','2007-02-24',0,'','CW'),(6111,6101,'Task 576524',4.0,2.0,'2007-02-08','2007-02-19',50,'','BX'),(6201,6000,'Version 1.3',15.0,2.0,'2007-02-13','2007-02-24',13,'','BX'),(6202,6201,'Task 850694',30.0,19.0,'2007-02-07','2007-02-19',63,'','BX'),(6203,6201,'Task 465548',3.0,2.0,'2007-02-11','2007-02-24',66,'','CW'),(6204,6201,'Task 383788',29.0,2.0,'2007-02-06','2007-02-17',6,'','AZ'),(6205,6201,'Task 844997',8.0,1.0,'2007-02-06','2007-02-17',12,'','CW'),(6206,6201,'Task 172091',13.0,2.0,'2007-02-06','2007-02-20',15,'','AZ'),(6207,6201,'Task 326877',22.0,0.0,'2007-02-07','2007-02-24',0,'','BX'),(6208,6201,'Task 910047',25.0,8.0,'2007-02-12','2007-02-17',32,'','CW'),(6209,6201,'Task 272298',20.0,20.0,'2007-02-10','2007-02-23',100,'','BX'),(6210,6201,'Task 180989',2.0,0.0,'2007-02-06','2007-02-22',0,'','BX'),(6211,6201,'Task 709038',21.0,14.0,'2007-02-10','2007-02-25',66,'','AZ'),(6301,6000,'Version 1.4',17.0,1.0,'2007-02-10','2007-02-24',5,'','AZ'),(6302,6301,'Task 267171',12.0,12.0,'2007-02-13','2007-02-18',100,'','AZ'),(6303,6301,'Task 272433',8.0,1.0,'2007-02-12','2007-02-25',12,'','CW'),(6304,6301,'Task 568928',4.0,1.0,'2007-02-06','2007-02-20',25,'','CW'),(6305,6301,'Task 604573',29.0,11.0,'2007-02-13','2007-02-24',37,'','BX'),(6306,6301,'Task 688395',1.0,1.0,'2007-02-09','2007-02-20',100,'','CW'),(6307,6301,'Task 434977',9.0,0.0,'2007-02-14','2007-02-19',0,'','AZ'),(6308,6301,'Task 764458',13.0,7.0,'2007-02-13','2007-02-17',53,'','BX'),(6309,6301,'Task 569200',9.0,6.0,'2007-02-09','2007-02-24',66,'','AZ'),(6310,6301,'Task 491563',2.0,1.0,'2007-02-14','2007-02-21',50,'','BX'),(6311,6301,'Task 479464',16.0,16.0,'2007-02-06','2007-02-19',100,'','CW'),(6401,6000,'Version 1.5',8.0,8.0,'2007-02-12','2007-02-22',100,'','BX'),(6402,6401,'Task 517306',27.0,27.0,'2007-02-14','2007-02-23',100,'','BX'),(6403,6401,'Task 688151',30.0,23.0,'2007-02-14','2007-02-24',76,'','AZ'),(6404,6401,'Task 270019',23.0,5.0,'2007-02-13','2007-02-19',21,'','AZ'),(6405,6401,'Task 419162',18.0,16.0,'2007-02-10','2007-02-18',88,'','BX'),(6406,6401,'Task 152940',7.0,2.0,'2007-02-11','2007-02-17',28,'','AZ'),(6407,6401,'Task 127604',5.0,2.0,'2007-02-05','2007-02-20',40,'','BX'),(6408,6401,'Task 193847',27.0,17.0,'2007-02-07','2007-02-19',62,'','CW'),(6409,6401,'Task 507920',4.0,2.0,'2007-02-05','2007-02-20',50,'','CW'),(6410,6401,'Task 864963',30.0,11.0,'2007-02-09','2007-02-22',36,'','CW'),(6411,6401,'Task 921223',11.0,0.0,'2007-02-09','2007-02-23',0,'','BX'),(7000,0,'dhtmlXCalendar',3.0,3.0,'2007-02-10','2007-02-19',100,'','AZ'),(7001,7000,'Version 1.1',11.0,3.0,'2007-02-06','2007-02-18',27,'','BX'),(7002,7001,'Task 721137',8.0,1.0,'2007-02-09','2007-02-18',12,'','BX'),(7003,7001,'Task 928005',25.0,2.0,'2007-02-12','2007-02-21',8,'','CW'),(7004,7001,'Task 257703',9.0,5.0,'2007-02-09','2007-02-19',55,'','BX'),(7005,7001,'Task 394259',13.0,2.0,'2007-02-07','2007-02-25',15,'','AZ'),(7006,7001,'Task 216145',23.0,20.0,'2007-02-13','2007-02-25',86,'','CW'),(7007,7001,'Task 462944',23.0,1.0,'2007-02-05','2007-02-20',4,'','CW'),(7008,7001,'Task 402018',4.0,1.0,'2007-02-08','2007-02-25',25,'','BX'),(7009,7001,'Task 717393',30.0,26.0,'2007-02-14','2007-02-20',86,'','BX'),(7010,7001,'Task 176432',8.0,5.0,'2007-02-12','2007-02-22',62,'','AZ'),(7011,7001,'Task 296495',23.0,0.0,'2007-02-08','2007-02-18',0,'','BX'),(7101,7000,'Version 1.2',18.0,4.0,'2007-02-11','2007-02-16',22,'','BX'),(7102,7101,'Task 423204',5.0,1.0,'2007-02-06','2007-02-18',20,'','BX'),(7103,7101,'Task 513536',16.0,16.0,'2007-02-11','2007-02-17',100,'','CW'),(7104,7101,'Task 214545',25.0,1.0,'2007-02-14','2007-02-20',4,'','AZ'),(7105,7101,'Task 863037',19.0,18.0,'2007-02-10','2007-02-17',94,'','CW'),(7106,7101,'Task 212483',26.0,11.0,'2007-02-14','2007-02-23',42,'','CW'),(7107,7101,'Task 655246',2.0,0.0,'2007-02-05','2007-02-18',0,'','CW'),(7108,7101,'Task 555908',17.0,16.0,'2007-02-06','2007-02-22',94,'','CW'),(7109,7101,'Task 695719',26.0,9.0,'2007-02-08','2007-02-16',34,'','CW'),(7110,7101,'Task 939263',22.0,17.0,'2007-02-14','2007-02-23',77,'','BX'),(7111,7101,'Task 456678',17.0,3.0,'2007-02-09','2007-02-21',17,'','BX'),(7201,7000,'Version 1.3',18.0,11.0,'2007-02-11','2007-02-21',61,'','AZ'),(7202,7201,'Task 469346',17.0,2.0,'2007-02-12','2007-02-20',11,'','AZ'),(7203,7201,'Task 579427',22.0,22.0,'2007-02-06','2007-02-17',100,'','BX'),(7204,7201,'Task 586642',2.0,0.0,'2007-02-11','2007-02-19',0,'','AZ'),(7205,7201,'Task 425021',1.0,0.0,'2007-02-11','2007-02-20',0,'','AZ'),(7206,7201,'Task 556369',17.0,14.0,'2007-02-07','2007-02-25',82,'','BX'),(7207,7201,'Task 414713',8.0,7.0,'2007-02-10','2007-02-22',87,'','AZ'),(7208,7201,'Task 406304',22.0,9.0,'2007-02-09','2007-02-21',40,'','BX'),(7209,7201,'Task 354058',24.0,11.0,'2007-02-06','2007-02-21',45,'','BX'),(7210,7201,'Task 608669',22.0,1.0,'2007-02-06','2007-02-21',4,'','CW'),(7211,7201,'Task 493055',17.0,12.0,'2007-02-10','2007-02-22',70,'','BX'),(7301,7000,'Version 1.4',7.0,2.0,'2007-02-09','2007-02-20',28,'','AZ'),(7302,7301,'Task 936387',7.0,7.0,'2007-02-06','2007-02-23',100,'','CW'),(7303,7301,'Task 587917',18.0,6.0,'2007-02-11','2007-02-23',33,'','AZ'),(7304,7301,'Task 693874',25.0,21.0,'2007-02-14','2007-02-25',84,'','BX'),(7305,7301,'Task 285508',2.0,2.0,'2007-02-09','2007-02-19',100,'','AZ'),(7306,7301,'Task 810736',14.0,10.0,'2007-02-11','2007-02-20',71,'','BX'),(7307,7301,'Task 134141',17.0,11.0,'2007-02-13','2007-02-22',64,'','AZ'),(7308,7301,'Task 759195',17.0,6.0,'2007-02-14','2007-02-19',35,'','CW'),(7309,7301,'Task 272704',13.0,8.0,'2007-02-05','2007-02-19',61,'','AZ'),(7310,7301,'Task 455918',8.0,2.0,'2007-02-07','2007-02-17',25,'','BX'),(7311,7301,'Task 395643',13.0,11.0,'2007-02-09','2007-02-23',84,'','CW'),(7401,7000,'Version 1.5',1.0,0.0,'2007-02-08','2007-02-23',0,'','CW'),(7402,7401,'Task 753580',6.0,5.0,'2007-02-08','2007-02-22',83,'','CW'),(7403,7401,'Task 923122',18.0,16.0,'2007-02-10','2007-02-21',88,'','AZ'),(7404,7401,'Task 514105',30.0,13.0,'2007-02-06','2007-02-23',43,'','AZ'),(7405,7401,'Task 599446',21.0,8.0,'2007-02-06','2007-02-19',38,'','AZ'),(7406,7401,'Task 779839',7.0,4.0,'2007-02-06','2007-02-23',57,'','AZ'),(7407,7401,'Task 294867',21.0,13.0,'2007-02-10','2007-02-23',61,'','AZ'),(7408,7401,'Task 911892',25.0,22.0,'2007-02-07','2007-02-18',88,'','AZ'),(7409,7401,'Task 926052',10.0,0.0,'2007-02-06','2007-02-17',0,'','CW'),(7410,7401,'Task 715820',5.0,4.0,'2007-02-13','2007-02-23',80,'','BX'),(7411,7401,'Task 298556',22.0,15.0,'2007-02-08','2007-02-24',68,'','CW'),(8000,0,'dhtmlXWindow',5.0,5.0,'2007-02-07','2007-02-24',100,'','BX'),(8001,8000,'Version 1.1',12.0,6.0,'2007-02-06','2007-02-19',50,'','AZ'),(8002,8001,'Task 553331',11.0,1.0,'2007-02-08','2007-02-16',9,'','AZ'),(8003,8001,'Task 435980',20.0,15.0,'2007-02-11','2007-02-20',75,'','CW'),(8004,8001,'Task 257432',3.0,0.0,'2007-02-06','2007-02-25',0,'','AZ'),(8005,8001,'Task 507269',9.0,1.0,'2007-02-06','2007-02-19',11,'','BX'),(8006,8001,'Task 425075',9.0,4.0,'2007-02-08','2007-02-17',44,'','BX'),(8007,8001,'Task 889322',24.0,5.0,'2007-02-07','2007-02-17',20,'','BX'),(8008,8001,'Task 195149',17.0,6.0,'2007-02-05','2007-02-21',35,'','AZ'),(8009,8001,'Task 498806',16.0,6.0,'2007-02-08','2007-02-21',37,'','BX'),(8010,8001,'Task 928765',4.0,0.0,'2007-02-05','2007-02-16',0,'','BX'),(8011,8001,'Task 474609',13.0,4.0,'2007-02-11','2007-02-18',30,'','CW'),(8101,8000,'Version 1.2',18.0,18.0,'2007-02-10','2007-02-22',100,'','BX'),(8102,8101,'Task 812906',26.0,23.0,'2007-02-05','2007-02-21',88,'','BX'),(8103,8101,'Task 118950',18.0,2.0,'2007-02-09','2007-02-23',11,'','AZ'),(8104,8101,'Task 865532',14.0,12.0,'2007-02-13','2007-02-19',85,'','BX'),(8105,8101,'Task 417236',7.0,3.0,'2007-02-11','2007-02-22',42,'','BX'),(8106,8101,'Task 333089',22.0,13.0,'2007-02-06','2007-02-25',59,'','BX'),(8107,8101,'Task 366563',4.0,2.0,'2007-02-09','2007-02-19',50,'','AZ'),(8108,8101,'Task 465576',6.0,1.0,'2007-02-09','2007-02-23',16,'','BX'),(8109,8101,'Task 994710',17.0,5.0,'2007-02-06','2007-02-22',29,'','BX'),(8110,8101,'Task 290771',27.0,26.0,'2007-02-08','2007-02-17',96,'','CW'),(8111,8101,'Task 218343',9.0,6.0,'2007-02-06','2007-02-25',66,'','BX'),(8201,8000,'Version 1.3',12.0,10.0,'2007-02-11','2007-02-17',83,'','AZ'),(8202,8201,'Task 905273',2.0,1.0,'2007-02-13','2007-02-20',50,'','BX'),(8203,8201,'Task 305718',25.0,17.0,'2007-02-08','2007-02-20',68,'','AZ'),(8204,8201,'Task 835937',27.0,10.0,'2007-02-06','2007-02-24',37,'','CW'),(8205,8201,'Task 568847',23.0,7.0,'2007-02-11','2007-02-24',30,'','CW'),(8206,8201,'Task 549587',4.0,3.0,'2007-02-13','2007-02-18',75,'','AZ'),(8207,8201,'Task 573296',3.0,1.0,'2007-02-11','2007-02-21',33,'','BX'),(8208,8201,'Task 296223',18.0,11.0,'2007-02-06','2007-02-23',61,'','CW'),(8209,8201,'Task 346842',14.0,2.0,'2007-02-10','2007-02-19',14,'','CW'),(8210,8201,'Task 770290',23.0,4.0,'2007-02-07','2007-02-20',17,'','CW'),(8211,8201,'Task 361707',1.0,1.0,'2007-02-05','2007-02-18',100,'','AZ'),(8301,8000,'Version 1.4',16.0,4.0,'2007-02-06','2007-02-23',25,'','BX'),(8302,8301,'Task 132948',12.0,5.0,'2007-02-09','2007-02-22',41,'','AZ'),(8303,8301,'Task 545328',19.0,5.0,'2007-02-11','2007-02-20',26,'','AZ'),(8304,8301,'Task 658664',27.0,24.0,'2007-02-10','2007-02-24',88,'','AZ'),(8305,8301,'Task 198648',23.0,22.0,'2007-02-05','2007-02-23',95,'','BX'),(8306,8301,'Task 196533',17.0,0.0,'2007-02-08','2007-02-19',0,'','CW'),(8307,8301,'Task 544677',24.0,22.0,'2007-02-12','2007-02-19',91,'','CW'),(8308,8301,'Task 218777',6.0,6.0,'2007-02-08','2007-02-19',100,'','BX'),(8309,8301,'Task 166747',6.0,0.0,'2007-02-12','2007-02-17',0,'','CW'),(8310,8301,'Task 864284',1.0,0.0,'2007-02-12','2007-02-22',0,'','AZ'),(8311,8301,'Task 759304',1.0,1.0,'2007-02-08','2007-02-22',100,'','BX'),(8401,8000,'Version 1.5',27.0,11.0,'2007-02-06','2007-02-21',40,'','AZ'),(8402,8401,'Task 136989',28.0,24.0,'2007-02-14','2007-02-23',85,'','AZ'),(8403,8401,'Task 905924',27.0,0.0,'2007-02-12','2007-02-21',0,'','CW'),(8404,8401,'Task 745605',16.0,10.0,'2007-02-09','2007-02-25',62,'','BX'),(8405,8401,'Task 867838',14.0,3.0,'2007-02-08','2007-02-21',21,'','BX'),(8406,8401,'Task 789984',9.0,9.0,'2007-02-07','2007-02-22',100,'','BX'),(8407,8401,'Task 334960',26.0,20.0,'2007-02-08','2007-02-24',76,'','BX'),(8408,8401,'Task 742350',12.0,10.0,'2007-02-14','2007-02-19',83,'','AZ'),(8409,8401,'Task 446180',29.0,13.0,'2007-02-10','2007-02-24',44,'','BX'),(8410,8401,'Task 630479',14.0,11.0,'2007-02-13','2007-02-18',78,'','BX'),(8411,8401,'Task 118163',5.0,3.0,'2007-02-09','2007-02-20',60,'','CW'); -/*!40000 ALTER TABLE `tasks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `teams` --- - -DROP TABLE IF EXISTS `teams`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `teams` ( - `team_id` int(11) NOT NULL AUTO_INCREMENT, - `team_name` varchar(255) NOT NULL, - PRIMARY KEY (`team_id`) -) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `teams` --- - -LOCK TABLES `teams` WRITE; -/*!40000 ALTER TABLE `teams` DISABLE KEYS */; -INSERT INTO `teams` VALUES (1,'Team 1'),(2,'Team 2'),(3,'Team 3'),(4,'Team 4'),(5,'Team 5'),(6,'Team 6'),(7,'Team 7'),(8,'Team 8'),(9,'Team 9'),(10,'Team 10'); -/*!40000 ALTER TABLE `teams` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tevents` --- - -DROP TABLE IF EXISTS `tevents`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `tevents` ( - `event_id` int(11) NOT NULL AUTO_INCREMENT, - `event_name` varchar(127) NOT NULL, - `start_date` datetime NOT NULL, - `end_date` datetime NOT NULL, - `type` int(11) NOT NULL, - PRIMARY KEY (`event_id`) -) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tevents` --- - -LOCK TABLES `tevents` WRITE; -/*!40000 ALTER TABLE `tevents` DISABLE KEYS */; -INSERT INTO `tevents` VALUES (1,'dblclick me!','2010-03-02 00:00:00','2010-03-04 00:00:00',1),(2,'and me!','2010-03-09 00:00:00','2010-03-11 00:00:00',2),(3,'and me too!','2010-03-16 00:00:00','2010-03-18 00:00:00',3),(4,'Type 2 event','2010-03-02 08:00:00','2010-03-02 14:10:00',2); -/*!40000 ALTER TABLE `tevents` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `types` --- - -DROP TABLE IF EXISTS `types`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `types` ( - `typeid` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - PRIMARY KEY (`typeid`) -) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `types` --- - -LOCK TABLES `types` WRITE; -/*!40000 ALTER TABLE `types` DISABLE KEYS */; -INSERT INTO `types` VALUES (1,'Simple'),(2,'Complex'),(3,'Unknown'); -/*!40000 ALTER TABLE `types` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2010-09-28 19:16:55 diff --git a/samples/export/csv.php b/samples/export/csv.php deleted file mode 100644 index b96c68f..0000000 --- a/samples/export/csv.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - - require("../../codebase/grid_connector.php"); - require("../../codebase/convert.php"); - - $convert = new ConvertService("http://dhtmlxgrid.appspot.com/export/csv"); - $convert->excel(); - - $grid = new GridConnector($res, "PDO"); - $config = new GridConfiguration(); - - $grid = new GridConnector($res, "PDO"); - $grid->set_config($config); - $grid->render_table("grid50"); -?>
\ No newline at end of file diff --git a/samples/export/excel.php b/samples/export/excel.php deleted file mode 100644 index 6c0f3f8..0000000 --- a/samples/export/excel.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - - require("../../codebase/grid_connector.php"); - require("../../codebase/convert.php"); - - $convert = new ConvertService("http://dhtmlxgrid.appspot.com/export/excel"); - $convert->excel(); - - $grid = new GridConnector($res, "PDO"); - $config = new GridConfiguration(); - - $grid = new GridConnector($res, "PDO"); - $grid->set_config($config); - $grid->render_table("grid50"); -?>
\ No newline at end of file diff --git a/samples/export/html.php b/samples/export/html.php deleted file mode 100644 index f083dec..0000000 --- a/samples/export/html.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - - require("../../codebase/grid_connector.php"); - require("../../codebase/convert.php"); - - $convert = new ConvertService("http://dhtmlxgrid.appspot.com/export/html"); - $convert->excel(); - - $grid = new GridConnector($res, "PDO"); - $config = new GridConfiguration(); - - $grid = new GridConnector($res, "PDO"); - $grid->set_config($config); - $grid->render_table("grid50"); -?>
\ No newline at end of file diff --git a/samples/export/pdf.php b/samples/export/pdf.php deleted file mode 100644 index 5a1bd9d..0000000 --- a/samples/export/pdf.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - - require("../../codebase/grid_connector.php"); - require("../../codebase/convert.php"); - - $convert = new ConvertService("http://dhtmlxgrid.appspot.com/export/pdf"); - - $grid = new GridConnector($res, "PDO"); - $config = new GridConfiguration(); - - $config->set_convert_mode(true); - $grid->set_config($config); - $grid->render_table("grid50"); -?>
\ No newline at end of file diff --git a/samples/gantt/01_basic_init_connector.php b/samples/gantt/01_basic_init_connector.php deleted file mode 100644 index 5675146..0000000 --- a/samples/gantt/01_basic_init_connector.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - - include ('../config.php'); - require_once("../../codebase/db_pdo.php"); - include ('../../codebase/gantt_connector.php'); - - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $gantt = new JSONGanttConnector($res, "PDO"); - - $gantt->mix("open", 1); - - $gantt->render_links("gantt_links", "id", "source,target,type"); - $gantt->render_table("gantt_tasks","id","start_date,duration,text,progress,parent",""); - -?>
\ No newline at end of file diff --git a/samples/grid/01_basic.html b/samples/grid/01_basic.html deleted file mode 100644 index ae3c1ff..0000000 --- a/samples/grid/01_basic.html +++ /dev/null @@ -1,53 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - - function myErrorHandler(type, desc, erData){ - alert("GOT IT!"); - return false; - } - // dhtmlxError.catchError("LoadXML", myErrorHandler); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Column A, Column B"); - mygrid.attachHeader("#connector_text_filter,#connector_text_filter") - mygrid.setInitWidths("100,*") - mygrid.setColTypes("edtxt,ed"); - mygrid.setColSorting("connector,connector") - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("01_basic_connector.php"); - var dp = new dataProcessor("01_basic_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/01_basic_connector.php b/samples/grid/01_basic_connector.php deleted file mode 100644 index 93d8007..0000000 --- a/samples/grid/01_basic_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - $grid->enable_log("some.txt", true); - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/01a_sql_basic.html b/samples/grid/01a_sql_basic.html deleted file mode 100644 index fdaadb2..0000000 --- a/samples/grid/01a_sql_basic.html +++ /dev/null @@ -1,46 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("01a_sql_basic_connector.php");
- var dp = new dataProcessor("01a_sql_basic_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT grid50000.item_id as ID , grid50000.item_nm FROM grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id(ID)"</span><span style="color: #007700">,</span><span style="color: #DD0000">"grid50000.item_id(ID),item_nm"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/01a_sql_basic_connector.php b/samples/grid/01a_sql_basic_connector.php deleted file mode 100644 index 66e0a3e..0000000 --- a/samples/grid/01a_sql_basic_connector.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - require("../../codebase/grid_connector.php"); - - -$gridConn = new GridConnector($res, "PDO"); -$sql = "SELECT * FROM grid50"; -$gridConn->render_sql($sql,"item_id","item_nm,item_cd"); - -?>
\ No newline at end of file diff --git a/samples/grid/02_rendering.html b/samples/grid/02_rendering.html deleted file mode 100644 index 3fe8b17..0000000 --- a/samples/grid/02_rendering.html +++ /dev/null @@ -1,50 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Column A, Column B"); - mygrid.attachHeader("#connector_text_filter,#connector_text_filter") - mygrid.setInitWidths("100,*") - mygrid.setColTypes("edtxt,ed"); - mygrid.setColSorting("connector,connector") - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("02_rendering_connector.php"); - var dp = new dataProcessor("02_rendering_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> function </span><span style="color: #0000BB">color_rows</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">){ -<br /> if (</span><span style="color: #0000BB">$row</span><span style="color: #007700">-></span><span style="color: #0000BB">get_index</span><span style="color: #007700">()%</span><span style="color: #0000BB">2</span><span style="color: #007700">) </span><span style="color: #0000BB">$row</span><span style="color: #007700">-></span><span style="color: #0000BB">set_row_style</span><span style="color: #007700">(</span><span style="color: #DD0000">"background-color: red"</span><span style="color: #007700">); -<br /> } -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">event</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #DD0000">"color_rows"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/02_rendering_connector.php b/samples/grid/02_rendering_connector.php deleted file mode 100644 index 9c2ccb9..0000000 --- a/samples/grid/02_rendering_connector.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - function color_rows($row){ - if ($row->get_index()%2) { - $row->set_row_style("background-color: red"); - } - } - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - $grid->event->attach("beforeRender","color_rows"); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/03_validation.html b/samples/grid/03_validation.html deleted file mode 100644 index 2bfce38..0000000 --- a/samples/grid/03_validation.html +++ /dev/null @@ -1,51 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Column A, Column B"); - mygrid.attachHeader("#connector_text_filter,#connector_text_filter") - mygrid.setInitWidths("100,*") - mygrid.setColTypes("edtxt,ed"); - mygrid.setColSorting("connector,connector") - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("03_validation_connector.php"); - var dp = new dataProcessor("03_validation_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> function </span><span style="color: #0000BB">check_data</span><span style="color: #007700">(</span><span style="color: #0000BB">$action</span><span style="color: #007700">){ -<br /> if (</span><span style="color: #0000BB">$action</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_cd"</span><span style="color: #007700">)==</span><span style="color: #DD0000">"" </span><span style="color: #007700">|| </span><span style="color: #0000BB">$action</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">)==</span><span style="color: #DD0000">""</span><span style="color: #007700">) -<br /> </span><span style="color: #0000BB">$action</span><span style="color: #007700">-></span><span style="color: #0000BB">invalid</span><span style="color: #007700">(); -<br /> } -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">event</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeProcessing"</span><span style="color: #007700">,</span><span style="color: #0000BB">check_data</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/03_validation_connector.php b/samples/grid/03_validation_connector.php deleted file mode 100644 index 87343b9..0000000 --- a/samples/grid/03_validation_connector.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - function check_data($action){ - if ($action->get_value("item_cd")=="" || $action->get_value("item_nm")=="") - $action->invalid(); - } - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - $grid->event->attach("beforeProcessing",check_data); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/04_custom_sql.html b/samples/grid/04_custom_sql.html deleted file mode 100644 index 396b0db..0000000 --- a/samples/grid/04_custom_sql.html +++ /dev/null @@ -1,50 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("04_custom_sql_connector.php");
- var dp = new dataProcessor("04_custom_sql_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">sql</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"delete"</span><span style="color: #007700">,</span><span style="color: #DD0000">"update grid50000 set item_nm='deleted' where item_id='{item_id}'"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/04_custom_sql_connector.php b/samples/grid/04_custom_sql_connector.php deleted file mode 100644 index f0bed29..0000000 --- a/samples/grid/04_custom_sql_connector.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - - $grid->sql->attach("delete","update grid50000 set item_nm='deleted' where item_id='{item_id}'"); - - $grid->dynamic_loading(100); - - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/05_select_filter.html b/samples/grid/05_select_filter.html deleted file mode 100644 index 95ebf3c..0000000 --- a/samples/grid/05_select_filter.html +++ /dev/null @@ -1,47 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - - mygrid.setHeader("Column A, Column B"); - mygrid.attachHeader("#connector_select_filter,#connector_select_filter") - mygrid.setInitWidths("200,*") - mygrid.setColTypes("edtxt,ed"); - mygrid.setColSorting("connector,connector") - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("05_select_filter_connector.php"); - var dp = new dataProcessor("05_select_filter_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"countries"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/05_select_filter_connector.php b/samples/grid/05_select_filter_connector.php deleted file mode 100644 index 63690a9..0000000 --- a/samples/grid/05_select_filter_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - $grid->render_table("countries","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/05a_select_filter.html b/samples/grid/05a_select_filter.html deleted file mode 100644 index 279de54..0000000 --- a/samples/grid/05a_select_filter.html +++ /dev/null @@ -1,57 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_select_filter,#connector_select_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("05a_select_filter_connector.php");
- var dp = new dataProcessor("05a_select_filter_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br />
-<br />
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #FF8000">/*$filter1 = new OptionsConnector($res, "PDO");
-<br /> $filter1->render_table("countries","item_id","item_id(value),item_nm(label)");
-<br /> $grid->set_options("item_nm",$filter1);*/
-<br />
-<br /> </span><span style="color: #0000BB">$filter1 </span><span style="color: #007700">= new </span><span style="color: #0000BB">OptionsConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$filter1</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT DISTINCT SUBSTR(item_nm,1,2) as value from grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm(value)"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">,</span><span style="color: #0000BB">$filter1</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/05a_select_filter_connector.php b/samples/grid/05a_select_filter_connector.php deleted file mode 100644 index a21dad3..0000000 --- a/samples/grid/05a_select_filter_connector.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - require("../../codebase/grid_connector.php"); - - - - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - - /*$filter1 = new OptionsConnector($res, "PDO"); - $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); - $grid->set_options("item_nm",$filter1);*/ - - $filter1 = new OptionsConnector($res, "PDO"); - $filter1->render_sql("SELECT DISTINCT SUBSTR(item_nm,1,2) as value from grid50000","item_id","item_nm(value)"); - $grid->set_options("item_nm",$filter1); - - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/06_combo.html b/samples/grid/06_combo.html deleted file mode 100644 index 9b44051..0000000 --- a/samples/grid/06_combo.html +++ /dev/null @@ -1,58 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("co,co");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("06_combo_connector.php");
- var dp = new dataProcessor("06_combo_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br />
-<br />
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #FF8000">/*$filter1 = new OptionsConnector($res, "PDO");
-<br /> $filter1->render_table("countries","item_id","item_id(value),item_nm(label)");
-<br /> $grid->set_options("item_nm",$filter1);*/
-<br />
-<br /> </span><span style="color: #0000BB">$filter1 </span><span style="color: #007700">= new </span><span style="color: #0000BB">OptionsConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$filter1</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"countries"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id(value),item_nm(label)"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">,</span><span style="color: #0000BB">$filter1</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br />
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/06_combo_connector.php b/samples/grid/06_combo_connector.php deleted file mode 100644 index 9029730..0000000 --- a/samples/grid/06_combo_connector.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - require("../../codebase/grid_connector.php"); - - - - $grid = new GridConnector($res, "PDO"); - - $grid->dynamic_loading(100); - - /*$filter1 = new OptionsConnector($res, "PDO"); - $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); - $grid->set_options("item_nm",$filter1);*/ - - $filter1 = new OptionsConnector($res, "PDO"); - $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); - $grid->set_options("item_nm",$filter1); - - $grid->render_table("grid50000","item_id","item_nm,item_cd"); - -?>
\ No newline at end of file diff --git a/samples/grid/06a_combo.html b/samples/grid/06a_combo.html deleted file mode 100644 index c5a2f99..0000000 --- a/samples/grid/06a_combo.html +++ /dev/null @@ -1,63 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Column A, Column B"); - mygrid.attachHeader("#connector_text_filter,#connector_text_filter") - mygrid.setInitWidths("100,*") - mygrid.setColTypes("co,co"); - mygrid.setColSorting("connector,connector") - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("06a_combo_connector.php"); - var dp = new dataProcessor("06a_combo_connector.php"); - dp.setUpdateMode("off") - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<input type="button" name="update" value="update row" onclick="dp.sendData()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> -<br /> -<br /> -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #FF8000">/*$filter1 = new OptionsConnector($res, "PDO"); -<br /> $filter1->render_table("countries","item_id","item_id(value),item_nm(label)"); -<br /> $grid->set_options("item_nm",$filter1);*/ -<br /> -<br /> -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">,array(</span><span style="color: #DD0000">"1"</span><span style="color: #007700">,</span><span style="color: #DD0000">"two"</span><span style="color: #007700">,</span><span style="color: #DD0000">"3"</span><span style="color: #007700">)); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_cd"</span><span style="color: #007700">,array(</span><span style="color: #DD0000">"91"</span><span style="color: #007700">=></span><span style="color: #DD0000">"one"</span><span style="color: #007700">, </span><span style="color: #DD0000">"75"</span><span style="color: #007700">=></span><span style="color: #DD0000">"two"</span><span style="color: #007700">)); -<br /> -<br /> -<br /> -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">sql</span><span style="color: #007700">-></span><span style="color: #0000BB">set_transaction_mode</span><span style="color: #007700">(</span><span style="color: #DD0000">"record"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /> -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/09_server_side_configuration.html b/samples/grid/09_server_side_configuration.html deleted file mode 100644 index 553c4f4..0000000 --- a/samples/grid/09_server_side_configuration.html +++ /dev/null @@ -1,30 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - - mygrid.loadXML("09_server_side_configuration.php"); - var dp = new dataProcessor("09_server_side_configuration.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> - -</body> -</html> diff --git a/samples/grid/09_server_side_configuration.php b/samples/grid/09_server_side_configuration.php deleted file mode 100644 index 35d2304..0000000 --- a/samples/grid/09_server_side_configuration.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $config = new GridConfiguration(); - $config->setHeader("ID,First Name,Last Name,Title,Office,Extn,Mobile,Email"); - $config->setColTypes("ro,ed,ed,ed,ed,ed,ed,ed"); - $grid->set_config($config); - - $grid->render_table("grid50"); -?>
\ No newline at end of file diff --git a/samples/grid/10_auto_config.html b/samples/grid/10_auto_config.html deleted file mode 100644 index a3e16c1..0000000 --- a/samples/grid/10_auto_config.html +++ /dev/null @@ -1,30 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - - mygrid.loadXML("10_auto_config.php"); - var dp = new dataProcessor("10_auto_config.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> - -</body> -</html> diff --git a/samples/grid/10_auto_config.php b/samples/grid/10_auto_config.php deleted file mode 100644 index ea78e8f..0000000 --- a/samples/grid/10_auto_config.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - $grid->set_config(false); - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/11_auto_config_filters.html b/samples/grid/11_auto_config_filters.html deleted file mode 100644 index 9a478b8..0000000 --- a/samples/grid/11_auto_config_filters.html +++ /dev/null @@ -1,30 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - - mygrid.loadXML("11_auto_config_filters.php"); - var dp = new dataProcessor("11_auto_config_filters.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> - -</body> -</html> diff --git a/samples/grid/11_auto_config_filters.php b/samples/grid/11_auto_config_filters.php deleted file mode 100644 index 63d7ed2..0000000 --- a/samples/grid/11_auto_config_filters.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - $grid->set_config(true); - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/12_attach_header_server.html b/samples/grid/12_attach_header_server.html deleted file mode 100644 index 37753a4..0000000 --- a/samples/grid/12_attach_header_server.html +++ /dev/null @@ -1,55 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("12_attach_header_server.php"); - var dp = new dataProcessor("12_attach_header_server.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$config </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConfiguration</span><span style="color: #007700">(); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setHeader</span><span style="color: #007700">(</span><span style="color: #DD0000">"Item,#cspan"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">attachHeader</span><span style="color: #007700">(</span><span style="color: #DD0000">"Item Name,Item CD"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColIds</span><span style="color: #007700">(</span><span style="color: #DD0000">"col1,col2"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setInitWidths</span><span style="color: #007700">(</span><span style="color: #DD0000">"120,*"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColSorting</span><span style="color: #007700">(</span><span style="color: #DD0000">"connector,connector"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColColor</span><span style="color: #007700">(</span><span style="color: #DD0000">",#dddddd"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColHidden</span><span style="color: #007700">(</span><span style="color: #DD0000">"false,false"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColTypes</span><span style="color: #007700">(</span><span style="color: #DD0000">"ro,ed"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColAlign</span><span style="color: #007700">(</span><span style="color: #DD0000">"center,center"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$config</span><span style="color: #007700">-></span><span style="color: #0000BB">setColVAlign</span><span style="color: #007700">(</span><span style="color: #DD0000">"bottom,middle"</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">set_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/12_attach_header_server.php b/samples/grid/12_attach_header_server.php deleted file mode 100644 index b26d06e..0000000 --- a/samples/grid/12_attach_header_server.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - require_once("../config.php"); - require("../../codebase/db_pdo.php"); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - $grid = new GridConnector($res, "PDO"); - - - $config = new GridConfiguration(); - - $config->setHeader("Item,#cspan"); - $config->attachHeader("Item Name,Item CD"); - $config->setColIds("col1,col2"); - $config->setInitWidths('120,*'); - $config->setColSorting("connector,connector"); - $config->setColColor(",#dddddd"); - $config->setColHidden("false,false"); - $config->setColTypes("ro,ed"); - $config->setColAlign('center,center'); - $config->setColVAlign('bottom,middle'); - - $grid->set_config($config); - - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/13_filesystem_grid_connector.html b/samples/grid/13_filesystem_grid_connector.html deleted file mode 100644 index 0f2e696..0000000 --- a/samples/grid/13_filesystem_grid_connector.html +++ /dev/null @@ -1,38 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - -<div id="gridbox" width="850px" height="350px" style="background-color:white;overflow:hidden"></div> - -<script> - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("File name,Full file name,Size,Name,Extention,Date,Is folder"); - mygrid.setInitWidths("100,250,100,100,100,100,*"); - mygrid.init(); - mygrid.loadXML("13_filesystem_grid_connector.php"); - -</script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../../codebase/db_filesystem.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #DD0000">"c:/"</span>, <span style="color: #DD0000">"FileSystem"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"../"</span><span style="color: #007700">,</span><span style="color: #DD0000">"safe_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">"filename,full_filename,size,name,extention,date,is_folder"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div> -</body> -</html> diff --git a/samples/grid/13_filesystem_grid_connector.php b/samples/grid/13_filesystem_grid_connector.php deleted file mode 100644 index 692f101..0000000 --- a/samples/grid/13_filesystem_grid_connector.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - require("../../codebase/db_filesystem.php"); - require("../../codebase/grid_connector.php"); - - $grid = new GridConnector("c:/", "FileSystem"); - $grid->render_table("../","safe_name","filename,full_filename,size,name,extention,date,is_folder"); -?>
\ No newline at end of file diff --git a/samples/grid/index.html b/samples/grid/index.html deleted file mode 100644 index b934842..0000000 --- a/samples/grid/index.html +++ /dev/null @@ -1,35 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - <li><a href="01_basic.html">Basic init</a></li> - <li><a href="01a_sql_basic.html">Basic init by sql string</a></li> - <li><a href="02_rendering.html">Rendering customization</a></li> - <li><a href="03_validation.html">Validation</a></li> - <li><a href="04_custom_sql.html">Custom update logic</a></li> - <li><a href="05_select_filter.html">Select filter in grid</a></li> - <li><a href="05a_select_filter.html">Select filter in grid ( different init )</a></li> - <li><a href="06_combo.html">Combo in grid (sub connector)</a></li> - <li><a href="06a_combo.html">Combo in grid (predefined list)</a></li> - <li><a href="09_server_side_configuration.html">Configuration on server side</a></li> - <li><a href="10_auto_config.html">Auto configuration</a></li> - <li><a href="11_auto_config_filters.html">Auto configuration with filters</a></li> - <li><a href="12_attach_header_server.html">Attaching header on the server side</a></li> - <li><a href="13_filesystem_grid_connector.html">File system connector</a></li> - </body> -</html>
\ No newline at end of file diff --git a/samples/grid/some.txt b/samples/grid/some.txt deleted file mode 100644 index 1b45afb..0000000 --- a/samples/grid/some.txt +++ /dev/null @@ -1,72 +0,0 @@ - - -==================================== -Log started, 08/08/2014 02:11:30 -==================================== - -SELECT item_id,item_nm,item_cd FROM grid50000 LIMIT 0,100 - -SELECT COUNT(*) as DHX_COUNT FROM grid50000 - -Done in 0.0074200630187988s - - - -==================================== -Log started, 08/08/2014 02:13:34 -==================================== - -SELECT item_id,item_nm,item_cd FROM grid50000 LIMIT 0,100 - -SELECT COUNT(*) as DHX_COUNT FROM grid50000 - -Done in 0.0053791999816895s - - - -==================================== -Log started, 08/08/2014 02:17:52 -==================================== - -SELECT item_id,item_nm,item_cd FROM grid50000 LIMIT 0,100 - -SELECT COUNT(*) as DHX_COUNT FROM grid50000 - -Done in 0.0059990882873535s - - - -==================================== -Log started, 08/08/2014 02:17:54 -==================================== - -SELECT item_id,item_nm,item_cd FROM grid50000 LIMIT 0,100 - -SELECT COUNT(*) as DHX_COUNT FROM grid50000 - -Done in 0.0051469802856445s - - - -==================================== -Log started, 08/08/2014 02:29:44 -==================================== - -SELECT item_id,item_nm,item_cd FROM grid50000 LIMIT 0,100 - -SELECT COUNT(*) as DHX_COUNT FROM grid50000 - -Done in 0.004889965057373s - - - -==================================== -Log started, 08/08/2014 02:31:03 -==================================== - -SELECT item_id,item_nm,item_cd FROM grid50000 LIMIT 0,100 - -SELECT COUNT(*) as DHX_COUNT FROM grid50000 - -Done in 0.0049238204956055s - diff --git a/samples/grid/xx_adodb.html b/samples/grid/xx_adodb.html deleted file mode 100644 index b342e28..0000000 --- a/samples/grid/xx_adodb.html +++ /dev/null @@ -1,46 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Column A, Column B"); - mygrid.attachHeader("#connector_text_filter,#connector_text_filter") - mygrid.setInitWidths("100,*") - mygrid.setColTypes("edtxt,ed"); - mygrid.setColSorting("connector,connector") - mygrid.enableSmartRendering(true) - mygrid.enableMultiselect(true) - mygrid.init(); - mygrid.loadXML("xx_adodb.php"); - var dp = new dataProcessor("xx_adodb.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/grid/xx_adodb.php b/samples/grid/xx_adodb.php deleted file mode 100644 index 2fd2f8e..0000000 --- a/samples/grid/xx_adodb.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - - require_once("../config.php"); - require_once("./adodb5/adodb.inc.php"); - - $db = ADONewConnection('mysql'); - $db->Connect($mysql_server,$mysql_user,$mysql_pass, $mysql_db); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_adodb.php"); - $grid = new GridConnector($db, "Ado"); - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); - -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_mssql.html b/samples/grid/xx_sample_mssql.html deleted file mode 100644 index 9eac6a6..0000000 --- a/samples/grid/xx_sample_mssql.html +++ /dev/null @@ -1,48 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("xx_sample_mssql_connector.php");
- var dp = new dataProcessor("xx_sample_mssql_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mssql_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">'.\SQLEXPRESS'</span><span style="color: #007700">,</span><span style="color: #DD0000">"sa"</span><span style="color: #007700">,</span><span style="color: #DD0000">"1"</span><span style="color: #007700">,</span><span style="color: #0000BB">false</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">mssql_select_db</span><span style="color: #007700">(</span><span style="color: #DD0000">"sampleDB"</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/db_mssql.php"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"MsSQL"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/xx_sample_mssql_connector.php b/samples/grid/xx_sample_mssql_connector.php deleted file mode 100644 index 0aa0f39..0000000 --- a/samples/grid/xx_sample_mssql_connector.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - require_once("../config.php"); - $res=mssql_connect('.\SQLEXPRESS',"sa","1",false); - mssql_select_db("sampleDB"); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_mssql.php"); - - $grid = new GridConnector($res, "PDO","MsSQL"); - - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_mysqli.html b/samples/grid/xx_sample_mysqli.html deleted file mode 100644 index 8930ac0..0000000 --- a/samples/grid/xx_sample_mysqli.html +++ /dev/null @@ -1,23 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>MySQLi connector with dhtmlxGrid - read-only version</title> - <script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> - <script> - function doOnLoad() { - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("./codebase/imgs/"); - mygrid.setSkin('dhx_skyblue'); - mygrid.setHeader("Event name, Details"); - mygrid.setInitWidths("300,*") - mygrid.setColTypes("ro,ro"); - mygrid.init(); - mygrid.loadXML("xx_sample_mysqli_connector.php"); - } - </script> -</head> -<body onload="doOnLoad();"> - <div id="gridbox" style="width: 700px; height: 300px; background-color:white;overflow:hidden; border: 1px solid #dfdfdf;"></div> -</body> -</html> diff --git a/samples/grid/xx_sample_mysqli_connector.php b/samples/grid/xx_sample_mysqli_connector.php deleted file mode 100644 index 726bd61..0000000 --- a/samples/grid/xx_sample_mysqli_connector.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - - require("../config.php"); - require("../../codebase/db_mysqli.php"); - require("../../codebase/grid_connector.php"); - - $mysqli = new mysqli($server, $user, $pass, $mysql_db); - if (mysqli_connect_errno()) { - printf("Ïîäêëþ÷åíèå ê ñåðâåðó MySQL íåâîçìîæíî. Êîä îøèáêè: %s\n", mysqli_connect_error()); - exit; - } - - $grid = new GridConnector($mysqli, "MySQLi"); - - $grid->render_table("events","event_id","event_name,details"); -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_oracle.html b/samples/grid/xx_sample_oracle.html deleted file mode 100644 index e06c543..0000000 --- a/samples/grid/xx_sample_oracle.html +++ /dev/null @@ -1,51 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("xx_sample_oracle_connector.php");
- var dp = new dataProcessor("xx_sample_oracle_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res </span><span style="color: #007700">= </span><span style="color: #0000BB">oci_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$oci_dbuser</span><span style="color: #007700">,</span><span style="color: #0000BB">$oci_dbpass</span><span style="color: #007700">,</span><span style="color: #0000BB">$oci_dbname</span><span style="color: #007700">);
-<br />
-<br />
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/db_oracle.php"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"Oracle"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">50</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">sql</span><span style="color: #007700">-></span><span style="color: #0000BB">sequence</span><span style="color: #007700">(</span><span style="color: #DD0000">"EMPLOYEES_INC.nextVal"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"EMPLOYEES"</span><span style="color: #007700">,</span><span style="color: #DD0000">"EMPLOYEE_ID"</span><span style="color: #007700">,</span><span style="color: #DD0000">"FIRST_NAME,LAST_NAME"</span><span style="color: #007700">);
-<br />
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/xx_sample_oracle_connector.php b/samples/grid/xx_sample_oracle_connector.php deleted file mode 100644 index ed1b258..0000000 --- a/samples/grid/xx_sample_oracle_connector.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - require_once("../config.php"); - $res = oci_connect($oci_dbuser,$oci_dbpass,$oci_dbname); - - - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_oracle.php"); - - $grid = new GridConnector($res, "PDO","Oracle"); - - $grid->dynamic_loading(50); - $grid->sql->sequence("EMPLOYEES_INC.nextVal"); - $grid->render_table("EMPLOYEES","EMPLOYEE_ID","FIRST_NAME,LAST_NAME"); - -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_pdo.html b/samples/grid/xx_sample_pdo.html deleted file mode 100644 index 518aa2d..0000000 --- a/samples/grid/xx_sample_pdo.html +++ /dev/null @@ -1,47 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("xx_sample_pdo_connector.php");
- var dp = new dataProcessor("xx_sample_pdo_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host='</span><span style="color: #007700">.</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">.</span><span style="color: #DD0000">';dbname='</span><span style="color: #007700">.</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">, </span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">, </span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/db_pdo.php"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbh</span><span style="color: #007700">,</span><span style="color: #DD0000">"PDO"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/xx_sample_pdo_connector.php b/samples/grid/xx_sample_pdo_connector.php deleted file mode 100644 index 2b202ce..0000000 --- a/samples/grid/xx_sample_pdo_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - $dbh = new PDO('mysql:host='.$mysql_server.';dbname='.$mysql_db, $mysql_user, $mysql_pass); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_pdo.php"); - - $grid = new GridConnector($dbh,"PDO"); - - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_pdo_pg.html b/samples/grid/xx_sample_pdo_pg.html deleted file mode 100644 index 29c7085..0000000 --- a/samples/grid/xx_sample_pdo_pg.html +++ /dev/null @@ -1,47 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("xx_sample_pdo_pg_connector.php");
- var dp = new dataProcessor("xx_sample_pdo_pg_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'pgsql:host=localhost;dbname='</span><span style="color: #007700">.</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">.</span><span style="color: #DD0000">";user=root;password=1234"</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/db_pdo.php"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbh</span><span style="color: #007700">,</span><span style="color: #DD0000">"PDO"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/xx_sample_pdo_pg_connector.php b/samples/grid/xx_sample_pdo_pg_connector.php deleted file mode 100644 index 674c6b0..0000000 --- a/samples/grid/xx_sample_pdo_pg_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - $dbh = new PDO('pgsql:host=localhost;dbname='.$mysql_db.";user=root;password=1234"); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_pdo.php"); - - $grid = new GridConnector($dbh,"PDO"); - - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_postgresql.html b/samples/grid/xx_sample_postgresql.html deleted file mode 100644 index 3d4ff2e..0000000 --- a/samples/grid/xx_sample_postgresql.html +++ /dev/null @@ -1,47 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("xx_sample_postgresql_connector.php");
- var dp = new dataProcessor("xx_sample_postgresql_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">pg_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$postrgre_connection</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/db_postgre.php"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"Postgre"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/xx_sample_postgresql_connector.php b/samples/grid/xx_sample_postgresql_connector.php deleted file mode 100644 index e86f4fd..0000000 --- a/samples/grid/xx_sample_postgresql_connector.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - require_once("../config.php"); - $postrgre_connection = "host=192.168.1.251 port=5432 dbname=sampledb user=pguser password=pgpass"; - $res=pg_connect($postrgre_connection); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_postgre.php"); - - $grid = new GridConnector($res, "PDO","Postgre"); - - $grid->dynamic_loading(100); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_sasql.html b/samples/grid/xx_sample_sasql.html deleted file mode 100644 index 9d4b008..0000000 --- a/samples/grid/xx_sample_sasql.html +++ /dev/null @@ -1,47 +0,0 @@ -
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>For demo purpose only :: &1</title>
-
-
-
-
-<script src="../common/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
-<link rel="stylesheet" href="../common/dhtmlx.css" type="text/css" charset="utf-8">
-</head>
-<body>
- <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
-<script>
- mygrid = new dhtmlXGridObject('gridbox');
- mygrid.setImagePath("../dhtmlx/imgs/");
- mygrid.setHeader("Column A, Column B");
- mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
- mygrid.setInitWidths("100,*")
- mygrid.setColTypes("edtxt,ed");
- mygrid.setColSorting("connector,connector")
- mygrid.enableSmartRendering(true)
- mygrid.enableMultiselect(true)
- mygrid.init();
- mygrid.loadXML("xx_sample_sasql_connector.php");
- var dp = new dataProcessor("xx_sample_sasql_connector.php");
- dp.init(mygrid);
-</script>
-<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
-<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
-<div class='code'><code><span style="color: #000000">
-<span style="color: #0000BB"><?php
-<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">pg_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$postrgre_connection</span><span style="color: #007700">);
-<br />
-<br /> require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
-<br /> require(</span><span style="color: #DD0000">"../../codebase/db_postgre.php"</span><span style="color: #007700">);
-<br />
-<br /> </span><span style="color: #0000BB">$grid </span><span style="color: #007700">= new </span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"Postgre"</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
-<br /> </span><span style="color: #0000BB">$grid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
-<br /></span><span style="color: #0000BB">?></span>
-</span>
-</code></div></body>
-</html>
diff --git a/samples/grid/xx_sample_sasql_connector.php b/samples/grid/xx_sample_sasql_connector.php deleted file mode 100644 index 27b94b5..0000000 --- a/samples/grid/xx_sample_sasql_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - $res = sasql_connect($sasql_conn); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_sasql.php"); - $grid = new GridConnector($res, "PDO", "SaSQL"); - $grid->enable_log("temp.log",true); - $grid->dynamic_loading(100); - $grid->render_table("Contacts","ID","Surname,GivenName,Title"); -?>
\ No newline at end of file diff --git a/samples/grid/xx_sample_sqlite3_connector.php b/samples/grid/xx_sample_sqlite3_connector.php deleted file mode 100644 index 762dc87..0000000 --- a/samples/grid/xx_sample_sqlite3_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - - $db = new SQLite3('mysqlitedb.db'); - - require("../../codebase/grid_connector.php"); - require("../../codebase/db_sqlite3.php"); - - $grid = new GridConnector($db,"SQLite3"); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); - -?>
\ No newline at end of file diff --git a/samples/index.html b/samples/index.html deleted file mode 100644 index c329ac2..0000000 --- a/samples/index.html +++ /dev/null @@ -1,32 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - - <div>Be sure to create a test DB from "dump.sql" and adjust db settings in "config.php"</div> - - <li><a href="./grid/index.html">Grid</a></li> - <li><a href="./tree/index.html">Tree</a></li> - <li><a href="./treegrid/index.html">TreeGrid</a></li> - <li><a href="./combo/index.html">Combo</a></li> - <li><a href="./dataview/index.html">DataView</a></li> - <li><a href="./scheduler/index.html">Scheduler</a></li> - <hr/> - <li><a href="./treegrid/index.html">Data Export</a></li> - </body> -</html>
\ No newline at end of file diff --git a/samples/readme.txt b/samples/readme.txt deleted file mode 100644 index bb3ba9b..0000000 --- a/samples/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ -Expected php.ini settings - magic_quotes off - error_level E_ALL & ~E_NOTICE - - -Before running samples, make sure that db connection settings in config.php are set properly and database was filled from dump.sql file - -(c) dhtmlx ltd.
\ No newline at end of file diff --git a/samples/scheduler/01_basic_init.html b/samples/scheduler/01_basic_init.html deleted file mode 100644 index 06fc578..0000000 --- a/samples/scheduler/01_basic_init.html +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.config.prevent_cache = true; - scheduler.config.lightbox.sections=[ - {name:"description", height:130, map_to:"text", type:"textarea" , focus:true}, - {name:"location", height:43, type:"textarea", map_to:"details" }, - {name:"time", height:72, type:"time", map_to:"auto"} - ] - scheduler.config.first_hour=4; - scheduler.locale.labels.section_location="Location"; - scheduler.config.details_on_create=true; - scheduler.config.details_on_dblclick=true; - scheduler.init('scheduler_here',new Date(2009,10,1),"month"); - scheduler.load("01_basic_init_connector.php?uid="+scheduler.uid()); - var dp = new dataProcessor("01_basic_init_connector.php"); - dp.init(scheduler); - } -</script> -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/01_basic_init_connector.php b/samples/scheduler/01_basic_init_connector.php deleted file mode 100644 index 97442fa..0000000 --- a/samples/scheduler/01_basic_init_connector.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - - include ('../config.php'); - include ('../../codebase/db_pdo.php'); - include ('../../codebase/scheduler_connector.php'); - - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $scheduler = new schedulerConnector($res, "PDO"); - //$scheduler->enable_log("log.txt",true); - $scheduler->render_table("events","event_id","start_date,end_date,event_name,details"); -?>
\ No newline at end of file diff --git a/samples/scheduler/02_dynamic_loading.html b/samples/scheduler/02_dynamic_loading.html deleted file mode 100644 index aa043a2..0000000 --- a/samples/scheduler/02_dynamic_loading.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.config.prevent_cache = true; - scheduler.config.lightbox.sections=[ - {name:"description", height:130, map_to:"text", type:"textarea" , focus:true}, - {name:"location", height:43, type:"textarea", map_to:"details" }, - {name:"time", height:72, type:"time", map_to:"auto"} - ] - scheduler.config.first_hour=4; - scheduler.locale.labels.section_location="Location"; - scheduler.config.details_on_create=true; - scheduler.config.details_on_dblclick=true; - - scheduler.init('scheduler_here',new Date(2009,10,1),"day"); - scheduler.setLoadMode("day"); - scheduler.load("02_dynamic_loading_connector.php?uid="+scheduler.uid()); - var dp = new dataProcessor("02_dynamic_loading_connector.php"); - dp.init(scheduler); - } -</script> -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/02_dynamic_loading_connector.php b/samples/scheduler/02_dynamic_loading_connector.php deleted file mode 100644 index 97442fa..0000000 --- a/samples/scheduler/02_dynamic_loading_connector.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - - include ('../config.php'); - include ('../../codebase/db_pdo.php'); - include ('../../codebase/scheduler_connector.php'); - - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $scheduler = new schedulerConnector($res, "PDO"); - //$scheduler->enable_log("log.txt",true); - $scheduler->render_table("events","event_id","start_date,end_date,event_name,details"); -?>
\ No newline at end of file diff --git a/samples/scheduler/03_connector_options.html b/samples/scheduler/03_connector_options.html deleted file mode 100644 index 411551c..0000000 --- a/samples/scheduler/03_connector_options.html +++ /dev/null @@ -1,57 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> - -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> - -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.multi_day = true; - scheduler.config.prevent_cache = true; - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.init('scheduler_here',new Date(2010,2,1),"month"); - - - scheduler.locale.labels.section_type = "Type"; - scheduler.config.lightbox.sections = [ - {name:"description", height:200, map_to:"text", type:"textarea" , focus:true}, - {name:"type", height:21, map_to:"type", type:"select", - options:scheduler.serverList("type")}, - {name:"time", height:72, type:"time", map_to:"auto"} - ]; - scheduler.load("03_connector_options.php"); - - var dp = new dataProcessor("03_connector_options.php"); - dp.init(scheduler); - } -</script> - -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/03_connector_options.php b/samples/scheduler/03_connector_options.php deleted file mode 100644 index 29d5445..0000000 --- a/samples/scheduler/03_connector_options.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - include ('../../codebase/db_pdo.php'); - include ('../../codebase/scheduler_connector.php'); - include ('../config.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $list = new OptionsConnector($res, "PDO"); - $list->render_table("types","typeid","typeid(value),name(label)"); - - $scheduler = new schedulerConnector($res, "PDO"); -// $scheduler->enable_log("log.txt",true); - - $scheduler->set_options("type", $list); - $scheduler->render_table("tevents","event_id","start_date,end_date,event_name,type"); -?>
\ No newline at end of file diff --git a/samples/scheduler/04_recurring_events.html b/samples/scheduler/04_recurring_events.html deleted file mode 100644 index bc000cb..0000000 --- a/samples/scheduler/04_recurring_events.html +++ /dev/null @@ -1,46 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <script src="../dhtmlx/dhtmlxscheduler_recurring.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.config.details_on_create=true; - scheduler.config.details_on_dblclick=true; - scheduler.init('scheduler_here',null,"month"); - scheduler.load("04_recurring_events_connector.php?uid="+scheduler.uid()); - - var dp = new dataProcessor("04_recurring_events_connector.php"); - dp.init(scheduler); - } -</script> -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/04_recurring_events_connector.php b/samples/scheduler/04_recurring_events_connector.php deleted file mode 100644 index c370cff..0000000 --- a/samples/scheduler/04_recurring_events_connector.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - include ('../config.php'); - include ('../../codebase/db_pdo.php'); - include ('../../codebase/scheduler_connector.php'); - include ('../../codebase/db_sqlsrv.php'); - - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - - function delete_related($action){ - global $scheduler; - - $status = $action->get_status(); - $type =$action->get_value("rec_type"); - $pid =$action->get_value("event_pid"); - //when serie changed or deleted we need to remove all linked events - if (($status == "deleted" || $status == "updated") && $type!=""){ - $scheduler->sql->query("DELETE FROM events_rec WHERE event_pid='".$scheduler->sql->escape($action->get_id())."'"); - } - if ($status == "deleted" && $pid !=0){ - $scheduler->sql->query("UPDATE events_rec SET rec_type='none' WHERE event_id='".$scheduler->sql->escape($action->get_id())."'"); - $action->success(); - } - - } - function insert_related($action){ - $status = $action->get_status(); - $type =$action->get_value("rec_type"); - - if ($status == "inserted" && $type=="none") - $action->set_status("deleted"); - } - - $scheduler = new schedulerConnector($res, "PDO"); - //$scheduler->enable_log("log.txt",true); - $scheduler->event->attach("beforeProcessing","delete_related"); - $scheduler->event->attach("afterProcessing","insert_related"); - $scheduler->render_table("events_rec","event_id","start_date,end_date,text,rec_type,event_pid,event_length"); -?>
\ No newline at end of file diff --git a/samples/scheduler/05_json.html b/samples/scheduler/05_json.html deleted file mode 100644 index 388c038..0000000 --- a/samples/scheduler/05_json.html +++ /dev/null @@ -1,52 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.config.prevent_cache = true; - scheduler.config.lightbox.sections=[ - {name:"description", height:130, map_to:"text", type:"textarea" , focus:true}, - {name:"location", height:43, type:"textarea", map_to:"details" }, - {name:"time", height:72, type:"time", map_to:"auto"} - ] - scheduler.config.first_hour=4; - scheduler.locale.labels.section_location="Location"; - scheduler.config.details_on_create=true; - scheduler.config.details_on_dblclick=true; - scheduler.init('scheduler_here',new Date(2009,10,1),"month"); - scheduler.load("05_json_connector.php?uid="+scheduler.uid(), "json"); - var dp = new dataProcessor("05_json_connector.php"); - dp.init(scheduler); - } -</script> -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/05_json_connector.php b/samples/scheduler/05_json_connector.php deleted file mode 100644 index ae36cac..0000000 --- a/samples/scheduler/05_json_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - - include ('../config.php'); - include ('../../codebase/db_pdo.php'); - include ('../../codebase/scheduler_connector.php'); - - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $scheduler = new JSONSchedulerConnector($res, "PDO"); - $scheduler->render_table("events","event_id","start_date,end_date,event_name,details"); -?>
\ No newline at end of file diff --git a/samples/scheduler/06_json_connector_options.html b/samples/scheduler/06_json_connector_options.html deleted file mode 100644 index d795a3b..0000000 --- a/samples/scheduler/06_json_connector_options.html +++ /dev/null @@ -1,57 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> - -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> - -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.multi_day = true; - scheduler.config.prevent_cache = true; - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.init('scheduler_here',new Date(2010,2,1),"month"); - - - scheduler.locale.labels.section_type = "Type"; - scheduler.config.lightbox.sections = [ - {name:"description", height:200, map_to:"text", type:"textarea" , focus:true}, - {name:"type", height:21, map_to:"type", type:"select", - options:scheduler.serverList("type")}, - {name:"time", height:72, type:"time", map_to:"auto"} - ]; - scheduler.load("06_json_connector_options.php", "json"); - - var dp = new dataProcessor("06_json_connector_options.php"); - dp.init(scheduler); - } -</script> - -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/06_json_connector_options.php b/samples/scheduler/06_json_connector_options.php deleted file mode 100644 index 613c6fe..0000000 --- a/samples/scheduler/06_json_connector_options.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - include ('../../codebase/db_pdo.php'); - include ('../../codebase/scheduler_connector.php'); - include ('../config.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - $list = new JSONOptionsConnector($res, "PDO"); - $list->render_table("types","typeid","typeid(value),name(label)"); - - $scheduler = new JSONSchedulerConnector($res, "PDO"); - - $scheduler->set_options("type", $list); - $scheduler->render_table("tevents","event_id","start_date,end_date,event_name,type"); -?>
\ No newline at end of file diff --git a/samples/scheduler/07_array_connector.html b/samples/scheduler/07_array_connector.html deleted file mode 100644 index c4c2183..0000000 --- a/samples/scheduler/07_array_connector.html +++ /dev/null @@ -1,54 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<head> - <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <title></title> -</head> - <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script> - <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8"> - -<style type="text/css" media="screen"> - html, body{ - margin:0px; - padding:0px; - height:100%; - overflow:hidden; - } -</style> - -<script type="text/javascript" charset="utf-8"> - function init() { - scheduler.config.multi_day = true; - scheduler.config.prevent_cache = true; - scheduler.config.xml_date="%Y-%m-%d %H:%i"; - scheduler.init('scheduler_here',new Date(2012,4,1),"month"); - - - scheduler.locale.labels.section_type = "Type"; - scheduler.config.lightbox.sections = [ - {name:"description", height:200, map_to:"text", type:"textarea" , focus:true}, - {name:"type", height:21, map_to:"type", type:"select", - options:scheduler.serverList("type")}, - {name:"time", height:72, type:"time", map_to:"auto"} - ]; - scheduler.load("07_array_connector.php"); - } -</script> - -<body onload="init();"> - <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'> - <div class="dhx_cal_navline"> - <div class="dhx_cal_prev_button"> </div> - <div class="dhx_cal_next_button"> </div> - <div class="dhx_cal_today_button"></div> - <div class="dhx_cal_date"></div> - <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div> - <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div> - <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div> - </div> - <div class="dhx_cal_header"> - </div> - <div class="dhx_cal_data"> - </div> - </div> -</body>
\ No newline at end of file diff --git a/samples/scheduler/07_array_connector.php b/samples/scheduler/07_array_connector.php deleted file mode 100644 index dd65e1b..0000000 --- a/samples/scheduler/07_array_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - - include ('../../codebase/scheduler_connector.php'); - - $data = array( - array("event_id" => 1, "start_date" => "2012-05-24 00:00", "end_date" => "2012-05-25 00:00", "event_name" => "creation time"), - array("event_id" => 2, "start_date" => "2010-02-16", "end_date" => "2084-06-08", "event_name" => "second part") - ); - - $scheduler = new SchedulerConnector(); - $scheduler->render_array($data,"event_id","start_date,end_date,event_name"); -?>
\ No newline at end of file diff --git a/samples/scheduler/index.html b/samples/scheduler/index.html deleted file mode 100644 index c480dc6..0000000 --- a/samples/scheduler/index.html +++ /dev/null @@ -1,28 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - - <li><a href="01_basic_init.html">Basic init</a></li> - <li><a href="02_dynamic_loading.html">Dynamic loading</a></li> - <li><a href="03_connector_options.html">Connector options</a></li> - <li><a href="04_recurring_events.html">Recurring events</a></li> - <li><a href="05_json.html">JSON data loading</a></li> - </body> -</html> - diff --git a/samples/security/data_csrf.php b/samples/security/data_csrf.php deleted file mode 100644 index 676befc..0000000 --- a/samples/security/data_csrf.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/data_connector.php"); - - ConnectorSecurity::$security_key = true; - - $grid = new JSONDataConnector($res, "PDO"); - $grid->set_limit(10); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/security/dataview_csrf.php b/samples/security/dataview_csrf.php deleted file mode 100644 index 897a8c1..0000000 --- a/samples/security/dataview_csrf.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/dataview_connector.php"); - - ConnectorSecurity::$security_key = true; - - $grid = new DataViewConnector($res, "PDO"); - $grid->set_limit(10); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/security/form_csrf.php b/samples/security/form_csrf.php deleted file mode 100644 index 62ea2f6..0000000 --- a/samples/security/form_csrf.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/form_connector.php"); - - ConnectorSecurity::$security_key = true; - - $_GET["id"] = 810; - - $grid = new FormConnector($res, "PDO"); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/security/grid_csrf.php b/samples/security/grid_csrf.php deleted file mode 100644 index 1061e45..0000000 --- a/samples/security/grid_csrf.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/grid_connector.php"); - - ConnectorSecurity::$security_key = true; - - $grid = new GridConnector($res, "PDO"); - $grid->set_limit(10); - $grid->render_table("grid50000","item_id","item_nm,item_cd"); -?>
\ No newline at end of file diff --git a/samples/security/scheduler_csrf.php b/samples/security/scheduler_csrf.php deleted file mode 100644 index ca278ab..0000000 --- a/samples/security/scheduler_csrf.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/scheduler_connector.php"); - - ConnectorSecurity::$security_key = true; - - $_GET["id"] = 810; - - $grid = new JSONSchedulerConnector($res, "PDO"); - $grid->render_table("events","event_id","start_date, end_date, event_name"); -?>
\ No newline at end of file diff --git a/samples/security/tree_csrf.php b/samples/security/tree_csrf.php deleted file mode 100644 index 013aaba..0000000 --- a/samples/security/tree_csrf.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/tree_connector.php"); - - ConnectorSecurity::$security_key = true; - - $grid = new TreeConnector($res, "PDO"); - $grid->render_table("tasks","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/01_basic.html b/samples/tree/01_basic.html deleted file mode 100644 index 3afbf8b..0000000 --- a/samples/tree/01_basic.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title></title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.loadXML("01_basic_connector.php"); -</script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/01_basic_connector.php b/samples/tree/01_basic_connector.php deleted file mode 100644 index 41d3539..0000000 --- a/samples/tree/01_basic_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - $tree->render_table("tasks","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/01p_basic.html b/samples/tree/01p_basic.html deleted file mode 100644 index f9c3f5d..0000000 --- a/samples/tree/01p_basic.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title></title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - Server side code uses custom code to mark leafs|branches - data generated a lot faster ( about 5x ) than for default sample. -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.loadXML("01p_basic_connector.php"); -</script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br />function </span><span style="color: #0000BB">child_setter</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">){ -<br /> </span><span style="color: #FF8000">//the check is kind of lame, in real table you most probably may have some more stable way to detect is item have childs or not -<br /> </span><span style="color: #007700">if (</span><span style="color: #0000BB">$data</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">)%</span><span style="color: #0000BB">100</span><span style="color: #007700">></span><span style="color: #0000BB">1</span><span style="color: #007700">) -<br /> </span><span style="color: #0000BB">$data</span><span style="color: #007700">-></span><span style="color: #0000BB">set_kids</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">); -<br /> else -<br /> </span><span style="color: #0000BB">$data</span><span style="color: #007700">-></span><span style="color: #0000BB">set_kids</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br />} -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">event</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #DD0000">"child_setter"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/01p_basic_connector.php b/samples/tree/01p_basic_connector.php deleted file mode 100644 index 9179ab3..0000000 --- a/samples/tree/01p_basic_connector.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - -function child_setter($data){ - //the check is kind of lame, in real table you most probably may have some more stable way to detect is item have childs or not - if ($data->get_value("taskId")%100>1) - $data->set_kids(false); - else - $data->set_kids(true); -} - - require("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - $tree->event->attach("beforeRender","child_setter"); - $tree->render_table("tasks","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/02_dynamic_loading.html b/samples/tree/02_dynamic_loading.html deleted file mode 100644 index 07e4049..0000000 --- a/samples/tree/02_dynamic_loading.html +++ /dev/null @@ -1,37 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.setXMLAutoLoading("02_dynamic_loading_connector.php") - tree.loadXML("02_dynamic_loading_connector.php"); -</script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/02_dynamic_loading_connector.php b/samples/tree/02_dynamic_loading_connector.php deleted file mode 100644 index 18218d4..0000000 --- a/samples/tree/02_dynamic_loading_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - $tree->dynamic_loading(true); - $tree->render_table("tasks","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/03_sql_config.html b/samples/tree/03_sql_config.html deleted file mode 100644 index 1713523..0000000 --- a/samples/tree/03_sql_config.html +++ /dev/null @@ -1,35 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.loadXML("03_sql_config_connector.php"); -</script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT taskId,taskName from tasks WHERE complete>49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/03_sql_config_connector.php b/samples/tree/03_sql_config_connector.php deleted file mode 100644 index 272f4d9..0000000 --- a/samples/tree/03_sql_config_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - $tree->render_sql("SELECT taskId,taskName from tasks WHERE complete>49","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/04_custom_styles.html b/samples/tree/04_custom_styles.html deleted file mode 100644 index a6c4de7..0000000 --- a/samples/tree/04_custom_styles.html +++ /dev/null @@ -1,43 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.enableCheckBoxes(true); - tree.loadXML("04_custom_styles_connector.php"); -</script> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require_once(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> function </span><span style="color: #0000BB">custom_format</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">){ -<br /> if (</span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"duration"</span><span style="color: #007700">)></span><span style="color: #0000BB">10</span><span style="color: #007700">) -<br /> </span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">set_image</span><span style="color: #007700">(</span><span style="color: #DD0000">"lock.gif"</span><span style="color: #007700">); -<br /> if (</span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"complete"</span><span style="color: #007700">)></span><span style="color: #0000BB">75</span><span style="color: #007700">) -<br /> </span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">set_check_state</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">); -<br /> } -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">event</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #0000BB">custom_format</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT taskId,taskName,duration,complete from tasks WHERE complete>49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/04_custom_styles_connector.php b/samples/tree/04_custom_styles_connector.php deleted file mode 100644 index 3dd2835..0000000 --- a/samples/tree/04_custom_styles_connector.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require_once("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - function custom_format($item){ - if ($item->get_value("duration")>10) - $item->set_image("lock.gif"); - if ($item->get_value("complete")>75) - $item->set_check_state(1); - } - $tree->event->attach("beforeRender",custom_format); - $tree->render_sql("SELECT taskId,taskName,duration,complete from tasks WHERE complete>49","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/05_save.html b/samples/tree/05_save.html deleted file mode 100644 index c8002f6..0000000 --- a/samples/tree/05_save.html +++ /dev/null @@ -1,42 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.enableItemEditor(true); - tree.enableDragAndDrop(true) - tree.loadXML("05_save_connector.php"); - var dp = new dataProcessor("05_save_connector.php"); - dp.init(tree); -</script> -<input type="button" name="some_name" value="delete item" onclick="tree.deleteItem(tree.getSelectedItemId())"> -<input type="button" name="some_name" value="add item" onclick="tree.insertNewItem((tree.getSelectedItemId()||'0'),(new Date()).valueOf(),'item')">> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/05_save_connector.php b/samples/tree/05_save_connector.php deleted file mode 100644 index 41d3539..0000000 --- a/samples/tree/05_save_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - $tree->render_table("tasks","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/06_validation.html b/samples/tree/06_validation.html deleted file mode 100644 index dffdead..0000000 --- a/samples/tree/06_validation.html +++ /dev/null @@ -1,49 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Filtering and Autocomplete mode</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - //tree.enableSmartXMLParsing(true); - tree.enableItemEditor(true); - tree.enableDragAndDrop(true) - tree.loadXML("06_validation_connector.php"); - var dp = new dataProcessor("06_validation_connector.php"); - dp.setUpdateMode("off"); - dp.init(tree); -</script> -<input type="button" name="some_name" value="delete item" onclick="tree.deleteItem(tree.getSelectedItemId())"> -<input type="button" name="some_name" value="add item" onclick="tree.insertNewItem((tree.getSelectedItemId()||'0'),(new Date()).valueOf(),'item')"> -<input type="button" name="some_name" value="sync with server" onclick="dp.sendData();"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> function </span><span style="color: #0000BB">my_check</span><span style="color: #007700">(</span><span style="color: #0000BB">$action</span><span style="color: #007700">){ -<br /> if (</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$action</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">))<</span><span style="color: #0000BB">5</span><span style="color: #007700">) -<br /> </span><span style="color: #0000BB">$action</span><span style="color: #007700">-></span><span style="color: #0000BB">invalid</span><span style="color: #007700">(); -<br /> } -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">event</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeProcessing"</span><span style="color: #007700">,</span><span style="color: #0000BB">my_check</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/tree/06_validation_connector.php b/samples/tree/06_validation_connector.php deleted file mode 100644 index c24da86..0000000 --- a/samples/tree/06_validation_connector.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/tree_connector.php"); - $tree = new TreeConnector($res, "PDO"); -// - function my_check($action){ - if (strlen($action->get_value("taskName"))<5) - $action->invalid(); - } - $tree->event->attach("beforeProcessing",my_check); - $tree->render_table("tasks","taskId","taskName","","parentId"); -?>
\ No newline at end of file diff --git a/samples/tree/08_tree_group_connector.html b/samples/tree/08_tree_group_connector.html deleted file mode 100644 index 155c6e3..0000000 --- a/samples/tree/08_tree_group_connector.html +++ /dev/null @@ -1,45 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Group connector</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> - -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> - -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - tree.enableItemEditor(true); - tree.loadXML("08_tree_group_connector.php"); - - var dp = new dataProcessor("08_tree_group_connector.php"); - dp.init(tree); -</script> - -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegroup_connector.php"</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGroupConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"products"</span><span style="color: #007700">,</span><span style="color: #DD0000">"id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"product_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""<span style="color: #007700">,</span>"category"<span style="color: #007700">); -<br /> -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div> - -</body> -</html> diff --git a/samples/tree/08_tree_group_connector.php b/samples/tree/08_tree_group_connector.php deleted file mode 100644 index c12cc07..0000000 --- a/samples/tree/08_tree_group_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/treegroup_connector.php"); - $tree = new TreeGroupConnector($res, "PDO"); - $tree->render_table("products", "id", "product_name", "", "category"); - -?>
\ No newline at end of file diff --git a/samples/tree/09_tree_multitable_connector.html b/samples/tree/09_tree_multitable_connector.html deleted file mode 100644 index 3ab67e5..0000000 --- a/samples/tree/09_tree_multitable_connector.html +++ /dev/null @@ -1,66 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Multitable connector</title> - <script> - window.dhx_globalImgPath="../common/imgs/"; - </script> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> - -</head> - -<body> -<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div> - -<script type="text/javascript" charset="utf-8"> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("../dhtmlx/imgs/dhxtree_skyblue/"); - tree.setXMLAutoLoading("09_tree_multitable_connector.php"); - tree.enableItemEditor(true); - tree.loadXML("09_tree_multitable_connector.php"); - - var dp = new dataProcessor("09_tree_multitable_connector.php"); - dp.init(tree); -</script> - -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegridmultitable_connector.php"</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeMultitableConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">setMaxLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$level </span><span style="color: #007700">= </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">get_level</span><span style="color: #007700">(); -<br /> -<br /> </span><span style="color: #0000BB">switch </span><span style="color: #007700">(</span><span style="color: #0000BB">$level</span><span style="color: #007700">) { -<br /> </span><span style="color: #0000BB">case 0</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"projects"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> </span><span style="color: #0000BB">case 1</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql(</span><span style="color: #DD0000">"SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> </span><span style="color: #0000BB">case 2</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"developers"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_team"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> </span><span style="color: #0000BB">case 3</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"phones"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_developer"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> } -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div> - -</body> -</html> diff --git a/samples/tree/09_tree_multitable_connector.php b/samples/tree/09_tree_multitable_connector.php deleted file mode 100644 index 6a5a557..0000000 --- a/samples/tree/09_tree_multitable_connector.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/treemultitable_connector.php"); - - - $tree = new TreeMultitableConnector($res, "PDO"); - // - $tree->setMaxLevel(3); - $level = $tree->get_level(); - - switch ($level) { - case 0: - $tree->render_table("projects","project_id","project_name","",""); - break; - case 1: - $tree->render_sql("SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id", "team_id", "team_name", "", "project_id"); - break; - case 2: - $tree->render_table("developers", "developer_id", "developer_name", "", "developer_team"); - break; - case 3: - $tree->render_table("phones", "phone_id", "phone", "", "phone_developer"); - break; - } - -?>
\ No newline at end of file diff --git a/samples/tree/index.html b/samples/tree/index.html deleted file mode 100644 index 7582ec0..0000000 --- a/samples/tree/index.html +++ /dev/null @@ -1,33 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - - <li><a href="01_basic.html">Basic init</a></li> - <li><a href="01p_basic.html">Basic init with server side child flag setting</a></li> - <li><a href="02_dynamic_loading.html">Dynamical loading</a></li> - <li><a href="03_sql_config.html">Basic init with SQL configuration</a></li> - <li><a href="04_custom_styles.html">Rendering customization</a></li> - <li><a href="05_save.html">DataProcessor usage</a></li> - <li><a href="06_validation.html">Validation</a></li> - <li><a href="08_tree_group_connector.html">Group connector</a></li> - <li><a href="09_tree_multitable_connector.html">Multitable connector</a></li> - - </body> -</html> - diff --git a/samples/treegrid/01_basic.html b/samples/treegrid/01_basic.html deleted file mode 100644 index 6b4fd36..0000000 --- a/samples/treegrid/01_basic.html +++ /dev/null @@ -1,45 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.setColSorting("connector,connector") - mygrid.init(); - mygrid.loadXML("01_basic_connector.php"); - var dp = new dataProcessor("01_basic_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/treegrid/01_basic_connector.php b/samples/treegrid/01_basic_connector.php deleted file mode 100644 index edc582a..0000000 --- a/samples/treegrid/01_basic_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/treegrid_connector.php"); - $tree = new TreeGridConnector($res, "PDO"); - - $tree->render_table("tasks","taskId","taskName,duration,complete","","parentId"); -?>
\ No newline at end of file diff --git a/samples/treegrid/02_dynamic_loading.html b/samples/treegrid/02_dynamic_loading.html deleted file mode 100644 index a5ef6a0..0000000 --- a/samples/treegrid/02_dynamic_loading.html +++ /dev/null @@ -1,43 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.init(); - mygrid.kidsXmlFile="02_dynamic_loading_connector.php"; - mygrid.loadXML("02_dynamic_loading_connector.php"); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/treegrid/02_dynamic_loading_connector.php b/samples/treegrid/02_dynamic_loading_connector.php deleted file mode 100644 index 87065dd..0000000 --- a/samples/treegrid/02_dynamic_loading_connector.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/treegrid_connector.php"); - $tree = new TreeGridConnector($res, "PDO"); - - $tree->dynamic_loading(true); - $tree->render_table("tasks","taskId","taskName,duration,complete","","parentId"); -?>
\ No newline at end of file diff --git a/samples/treegrid/03_sql_config.html b/samples/treegrid/03_sql_config.html deleted file mode 100644 index 00e6cb5..0000000 --- a/samples/treegrid/03_sql_config.html +++ /dev/null @@ -1,42 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.setColSorting("connector,connector") - mygrid.init(); - mygrid.loadXML("03_sql_config_connector.php"); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT * from tasks WHERE complete>49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/treegrid/03_sql_config_connector.php b/samples/treegrid/03_sql_config_connector.php deleted file mode 100644 index e4944cf..0000000 --- a/samples/treegrid/03_sql_config_connector.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/treegrid_connector.php"); - $tree = new TreeGridConnector($res, "PDO"); - - $tree->render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId"); -?>
\ No newline at end of file diff --git a/samples/treegrid/04_custom_styles.html b/samples/treegrid/04_custom_styles.html deleted file mode 100644 index 45830d4..0000000 --- a/samples/treegrid/04_custom_styles.html +++ /dev/null @@ -1,50 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.setColSorting("connector,connector") - mygrid.init(); - mygrid.loadXML("04_custom_styles_connector.php"); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require_once(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> function </span><span style="color: #0000BB">custom_format</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">){ -<br /> </span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">set_row_color</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"complete"</span><span style="color: #007700">)<</span><span style="color: #0000BB">75</span><span style="color: #007700">?</span><span style="color: #DD0000">"#AAFFFF"</span><span style="color: #007700">:</span><span style="color: #DD0000">"#FFAAFF"</span><span style="color: #007700">); -<br /> if (</span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"duration"</span><span style="color: #007700">)></span><span style="color: #0000BB">10</span><span style="color: #007700">) -<br /> </span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">set_image</span><span style="color: #007700">(</span><span style="color: #DD0000">"true.gif"</span><span style="color: #007700">); -<br /> else -<br /> </span><span style="color: #0000BB">$item</span><span style="color: #007700">-></span><span style="color: #0000BB">set_image</span><span style="color: #007700">(</span><span style="color: #DD0000">"false.gif"</span><span style="color: #007700">); -<br /> } -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">event</span><span style="color: #007700">-></span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #0000BB">custom_format</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT * from tasks WHERE complete>49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div></body> -</html> diff --git a/samples/treegrid/04_custom_styles_connector.php b/samples/treegrid/04_custom_styles_connector.php deleted file mode 100644 index 44de104..0000000 --- a/samples/treegrid/04_custom_styles_connector.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require_once("../../codebase/treegrid_connector.php"); - $tree = new TreeGridConnector($res, "PDO"); - - function custom_format($item){ - $item->set_row_color($item->get_value("complete")<75?"#AAFFFF":"#FFAAFF"); - if ($item->get_value("duration")>10) - $item->set_image("true.gif"); - else - $item->set_image("false.gif"); - } - $tree->event->attach("beforeRender",custom_format); - $tree->render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId"); -?>
\ No newline at end of file diff --git a/samples/treegrid/05_live_update.html b/samples/treegrid/05_live_update.html deleted file mode 100644 index c8550b6..0000000 --- a/samples/treegrid/05_live_update.html +++ /dev/null @@ -1,52 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>Live update mode</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.setColSorting("connector,connector") - mygrid.init(); - mygrid.loadXML("05_live_update_connector.php"); - - var dp = new dataProcessor("05_live_update_connector.php"); - dp.init(mygrid); - dp.setUpdateMode("off"); - dp.setAutoUpdate(2000); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'', 0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> - -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_live_update</span><span style="color: #007700">(</span><span style="color: #0000BB">"actions_table"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700"></span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700"></span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">); -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div> - -</body> -</html> diff --git a/samples/treegrid/06_treegrid_group_connector.html b/samples/treegrid/06_treegrid_group_connector.html deleted file mode 100644 index 5b7ec7d..0000000 --- a/samples/treegrid/06_treegrid_group_connector.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> - <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.init(); - mygrid.loadXML("06_treegrid_group_connector.php"); - - var dp = new dataProcessor("06_treegrid_group_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'', 0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> - -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegridgroup_connector.php"</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$treegrid </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridGroupConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"products"</span><span style="color: #007700">,</span><span style="color: #DD0000">"id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"product_name,scales,colour"</span><span style="color: #007700">,</span><span style="color: #DD0000">""<span style="color: #007700">,</span><span style="color: #DD0000">"category"<span style="color: #007700">); -<br /> -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div> - -</body> -</html> diff --git a/samples/treegrid/06_treegrid_group_connector.php b/samples/treegrid/06_treegrid_group_connector.php deleted file mode 100644 index e08e10d..0000000 --- a/samples/treegrid/06_treegrid_group_connector.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php - - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require_once('../../codebase/treegridgroup_connector.php'); - $treegrid = new TreeGridGroupConnector($res, "PDO"); - - $treegrid->render_table("products", "id", "product_name,scales,colour", "", "category"); - -?>
\ No newline at end of file diff --git a/samples/treegrid/07_treegrid_multitable_connector.html b/samples/treegrid/07_treegrid_multitable_connector.html deleted file mode 100644 index 23379e2..0000000 --- a/samples/treegrid/07_treegrid_multitable_connector.html +++ /dev/null @@ -1,69 +0,0 @@ - -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <title>For demo purpose only :: &1</title> - - - - -<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script> -<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8"> -</head> -<body> -<div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div> -<script> -if (!window.eXcell_tree) - alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite."); - - mygrid = new dhtmlXGridObject('gridbox'); - mygrid.setImagePath("../dhtmlx/imgs/"); - mygrid.setHeader("Tree, Column A, Column B"); - mygrid.setInitWidths("200,*,*") - mygrid.setColTypes("tree,ed,ed"); - mygrid.init(); - mygrid.kidsXmlFile = "07_treegrid_multitable_connector.php"; - mygrid.loadXML("07_treegrid_multitable_connector.php"); - - var dp = new dataProcessor("07_treegrid_multitable_connector.php"); - dp.init(mygrid); -</script> -<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'', 0); mygrid.showRow(id);"> -<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()"> - -<div class='code'><code><span style="color: #000000"> -<span style="color: #0000BB"><?php -<br /> </span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB"> new PDO</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); -<br /> require(</span><span style="color: #DD0000">"../../codebase/treegridmultitable_connector.php"</span><span style="color: #007700">); -<br /> -<br /> </span><span style="color: #0000BB">$treegrid </span><span style="color: #007700">= new </span><span style="color: #0000BB">TreeGridMultitableConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">setMaxLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">$level </span><span style="color: #007700">= </span><span style="color: #0000BB">$tree</span><span style="color: #007700">-></span><span style="color: #0000BB">get_level</span><span style="color: #007700">(); -<br /> -<br /> </span><span style="color: #0000BB">switch </span><span style="color: #007700">(</span><span style="color: #0000BB">$level</span><span style="color: #007700">) { -<br /> </span><span style="color: #0000BB">case 0</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"projects"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_name, project_dsc"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> </span><span style="color: #0000BB">case 1</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_sql(</span><span style="color: #DD0000">"SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> </span><span style="color: #0000BB">case 2</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"developers"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_name,developer_email"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_team"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> </span><span style="color: #0000BB">case 3</span><span style="color: #007700">: -<br /> </span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-></span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"phones"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone,phone_type"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_developer"</span><span style="color: #007700">); -<br /> </span><span style="color: #0000BB">break</span><span style="color: #007700">; - -<br /> } -<br /></span><span style="color: #0000BB">?></span> -</span> -</code></div> - -</body> -</html> diff --git a/samples/treegrid/07_treegrid_multitable_connector.php b/samples/treegrid/07_treegrid_multitable_connector.php deleted file mode 100644 index 6dd0d9f..0000000 --- a/samples/treegrid/07_treegrid_multitable_connector.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - - require_once("../config.php"); - require_once('../../codebase/db_pdo.php'); - $res= new PDO($mysql_server,$mysql_user,$mysql_pass); - - - require("../../codebase/treegridmultitable_connector.php"); - - $treegrid = new TreeGridMultitableConnector($res, "PDO"); - - $treegrid->setMaxLevel(3); - $level = $treegrid->get_level(); - - switch ($level) { - case 0: - $treegrid->render_table("projects", "project_id", "project_name, project_dsc", "", ""); - break; - case 1: - $treegrid->render_sql("SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id", "team_id", "team_name", "", "project_id"); - break; - case 2: - $treegrid->render_table("developers", "developer_id", "developer_name,developer_email", "", "developer_team"); - break; - case 3: - $treegrid->render_table("phones", "phone_id", "phone,phone_type", "", "phone_developer"); - break; - } - -?>
\ No newline at end of file diff --git a/samples/treegrid/index.html b/samples/treegrid/index.html deleted file mode 100644 index d8f5d8e..0000000 --- a/samples/treegrid/index.html +++ /dev/null @@ -1,32 +0,0 @@ -<html> - <head></head> - <style type="text/css" media="screen"> - *{ - font-family:Tahoma; - } - div,li{ - font-size:10pt; - } - div{ - padding-bottom:20px; - } - li{ - padding-left:50px; - padding-bottom:10px; - } - </style> - <body> - <h2>dhtmlxConnector for PHP :: Samples</h2> - - <div>Samples are based on standard edition, so to have working TreeGrid samples you need to update files in common folder with ones from dhtmlxSuite pro</div> - - <li><a href="01_basic.html">Basic init</a></li> - <li><a href="02_dynamic_loading.html">Dynamic loading</a></li> - <li><a href="03_sql_config.html">SQL config</a></li> - <li><a href="04_custom_styles.html">Custom styles</a></li> - <li><a href="06_treegrid_group_connector.html">Group connector</a></li> - <li><a href="07_treegrid_multitable_connector.html">Multitable connector</a></li> - - </body> -</html> - |