init
authorAlan Knowles <alan@akbkhome.com>
Mon, 12 Apr 2010 09:35:44 +0000 (17:35 +0800)
committerAlan Knowles <alan@akbkhome.com>
Mon, 12 Apr 2010 09:35:44 +0000 (17:35 +0800)
30 files changed:
Admin.perms.json [new file with mode: 0644]
Admin.translation.json [new file with mode: 0644]
GroupRights.php [new file with mode: 0644]
Pman.Dialog.Groups.js [new file with mode: 0644]
Pman.Dialog.PersonBulkAdd.js [new file with mode: 0644]
Pman.Tab.Admin.js [new file with mode: 0644]
Pman.Tab.AdminLogEvents.js [new file with mode: 0644]
Pman.Tab.AdminLogs.js [new file with mode: 0644]
Pman.Tab.AdminProjects.js [new file with mode: 0644]
Pman.Tab.AdminTranslations.js [new file with mode: 0644]
Pman.Tab.Companies.js [new file with mode: 0644]
Pman.Tab.ContactGrps.js [new file with mode: 0644]
Pman.Tab.Contacts.js [new file with mode: 0644]
Pman.Tab.ContactsMgr.js [new file with mode: 0644]
Pman.Tab.GroupMgr.js [new file with mode: 0644]
Pman.Tab.Group_Members.js [new file with mode: 0644]
Pman.Tab.Group_Rights.js [new file with mode: 0644]
Pman.Tab.Groups.js [new file with mode: 0644]
Pman.Tab.Office.js [new file with mode: 0644]
Pman.Tab.PersonStaff.js [new file with mode: 0644]
Pman.Tab.ProjectMgr.js [new file with mode: 0644]
Pman.Tab.StaffMgr.js [new file with mode: 0644]
Pman.Tab.Teams.js [new file with mode: 0644]
Signup.php [new file with mode: 0644]
Translations.php [new file with mode: 0644]
compiled/Admin.js [new file with mode: 0644]
compiled/_translation_.js [new file with mode: 0644]
data/lang.zh_CN.js [new file with mode: 0644]
data/lang.zh_HK.js [new file with mode: 0644]
data/oldeng.js [new file with mode: 0644]

diff --git a/Admin.perms.json b/Admin.perms.json
new file mode 100644 (file)
index 0000000..23aecda
--- /dev/null
@@ -0,0 +1,9 @@
+
+{      
+  
+        
+       "Admin_Tab"                 : [ "S",      "" ] ,
+        "Logs"                 : [ "S",      "" ] 
+        
+}
+      
\ No newline at end of file
diff --git a/Admin.translation.json b/Admin.translation.json
new file mode 100644 (file)
index 0000000..9c1c2b0
--- /dev/null
@@ -0,0 +1,199 @@
+
+"Pman.Tab.Teams.js" : {
+        "Teams" : "Teams",
+        "Staff Teams" : "Staff Teams"
+},
+"Pman.Tab.Admin.js" : {
+        "Admin" : "Admin",
+        "Add Project" : "Add Project",
+        "Administration" : "Administration"
+},
+"Pman.Tab.Groups.js" : {
+        "Groups" : "Groups",
+        "Permission Groups" : "Permission Groups"
+},
+"Pman.Tab.Office.js" : {
+        "Add" : "Add",
+        "Fax" : "Fax",
+        "Edit" : "Edit",
+        "Email" : "Email",
+        "Error" : "Error",
+        "Phone" : "Phone",
+        "Delete" : "Delete",
+        "Address" : "Address",
+        "Select a Row" : "Select a Row",
+        "No Offices found" : "No Offices found",
+        "Select only one Row" : "Select only one Row",
+        "Name / Department / Sub Comp." : "Name / Department / Sub Comp.",
+        "Displaying Offices {0} - {1} of {2}" : "Displaying Offices {0} - {1} of {2}",
+        "Select a company to add a office to" : "Select a company to add a office to",
+        "Offices / Departments / Sub-Companies" : "Offices / Departments / Sub-Companies"
+},
+"Pman.Tab.Contacts.js" : {
+        "Contact" : "Contact",
+        "Contacts" : "Contacts",
+        "Contacts List" : "Contacts List"
+},
+"Pman.Tab.GroupMgr.js" : {
+        "Permissions" : "Permissions",
+        "Groups and Permissions" : "Groups and Permissions"
+},
+"Pman.Tab.StaffMgr.js" : {
+        "Staff / Teams" : "Staff / Teams",
+        "Staff Manager" : "Staff Manager"
+},
+"Pman.Dialog.Groups.js" : {
+        "" : "",
+        "Save" : "Save",
+        "Cancel" : "Cancel",
+        "Leader" : "Leader",
+        "Edit Team" : "Edit Team",
+        "Edit Group" : "Edit Group",
+        "Group Name" : "Group Name",
+        "Searching..." : "Searching...",
+        "Enter Group name" : "Enter Group name",
+        "Select Person Who opened" : "Select Person Who opened"
+},
+"Pman.Tab.AdminLogs.js" : {
+        "Logs" : "Logs"
+},
+"Pman.Tab.Companies.js" : {
+        "Add" : "Add",
+        "Fax" : "Fax",
+        "Tel" : "Tel",
+        "Edit" : "Edit",
+        "Name" : "Name",
+        "Ref#" : "Ref#",
+        "Type" : "Type",
+        "Email" : "Email",
+        "Error" : "Error",
+        "Delete" : "Delete",
+        "Address" : "Address",
+        "Offices" : "Offices",
+        "Remarks" : "Remarks",
+        "Companies" : "Companies",
+        "Select a Row" : "Select a Row",
+        "No Companies found" : "No Companies found",
+        "Select only one Row" : "Select only one Row",
+        "Contact Companies Manager" : "Contact Companies Manager",
+        "Displaying Companies {0} - {1} of {2}" : "Displaying Companies {0} - {1} of {2}"
+},
+"Pman.Tab.ProjectMgr.js" : {
+        "" : "",
+        "Add" : "Add",
+        "All" : "All",
+        "Code" : "Code",
+        "Edit" : "Edit",
+        "Team" : "Team",
+        "Type" : "Type",
+        "Error" : "Error",
+        "Client" : "Client",
+        "Closed" : "Closed",
+        "Search" : "Search",
+        "Project" : "Project",
+        "Remarks" : "Remarks",
+        "Projects" : "Projects",
+        "Add Project" : "Add Project",
+        "Non-Project" : "Non-Project",
+        "Non-Projects" : "Non-Projects",
+        "Project Name" : "Project Name",
+        "Reset Search" : "Reset Search",
+        "Select a Row" : "Select a Row",
+        "Project Manager" : "Project Manager",
+        "Project (Closed)" : "Project (Closed)",
+        "Select only one Row" : "Select only one Row",
+        "Non-Project (Closed)" : "Non-Project (Closed)",
+        "Project (Unconfirmed)" : "Project (Unconfirmed)"
+},
+"Pman.Tab.PersonStaff.js" : {
+        "Staff" : "Staff"
+},
+"Pman.Tab.ContactsMgr.js" : {
+        "Contacts Manager" : "Contacts Manager"
+},
+"Pman.Tab.ContactGrps.js" : {
+        "Groups" : "Groups",
+        "Contacts Groups" : "Contacts Groups"
+},
+"Pman.Tab.Group_Rights.js" : {
+        "" : "",
+        "Add" : "Add",
+        "Fax" : "Fax",
+        "Edit" : "Edit",
+        "Save" : "Save",
+        "Email" : "Email",
+        "Staff" : "Staff",
+        "[All]" : "[All]",
+        "Delete" : "Delete",
+        "Events" : "Events",
+        "Groups" : "Groups",
+        "Person" : "Person",
+        "Reload" : "Reload",
+        "Rights" : "Rights",
+        "Offices" : "Offices",
+        "Admin Tab" : "Admin Tab",
+        "Companies" : "Companies",
+        "Documents" : "Documents",
+        "List/View" : "List/View",
+        "Timesheet" : "Timesheet",
+        "Permission" : "Permission",
+        "Document Types" : "Document Types",
+        "Print / Export" : "Print / Export",
+        "Projects (All)" : "Projects (All)",
+        "Document Manager" : "Document Manager",
+        "Unread Documents" : "Unread Documents",
+        "Work In Progress" : "Work In Progress",
+        "Permission Groups" : "Permission Groups",
+        "Project Directory" : "Project Directory",
+        "Distribute Documents" : "Distribute Documents",
+        "Projects (Member Of)" : "Projects (Member Of)",
+        "Send Faxes To Companies" : "Send Faxes To Companies",
+        "There was a problem saving the data" : "There was a problem saving the data",
+        "You can not set permissions for that group" : "You can not set permissions for that group"
+},
+"Pman.Tab.AdminProjects.js" : {
+        "Add" : "Add",
+        "All" : "All",
+        "Edit" : "Edit",
+        "Error" : "Error",
+        "Show:" : "Show:",
+        "Closed" : "Closed",
+        "Project" : "Project",
+        "Search:" : "Search:",
+        "Projects" : "Projects",
+        "Non-Project" : "Non-Project",
+        "Non-Projects" : "Non-Projects",
+        "Admin - Projects" : "Admin - Projects",
+        "Project (Closed)" : "Project (Closed)",
+        "Select a Project" : "Select a Project",
+        "No Projects found" : "No Projects found",
+        "Non-Project (Closed)" : "Non-Project (Closed)",
+        "Project (Unconfirmed)" : "Project (Unconfirmed)",
+        "Select only one Project" : "Select only one Project",
+        "Displaying Projects  {0} - {1} of {2}" : "Displaying Projects  {0} - {1} of {2}"
+},
+"Pman.Tab.Group_Members.js" : {
+        "Staff Membership" : "Staff Membership",
+        "Permission Group Membership" : "Permission Group Membership"
+},
+"Pman.Tab.AdminLogEvents.js" : {
+        "Show" : "Show",
+        "Events" : "Events",
+        "Person " : "Person ",
+        "Searching..." : "Searching...",
+        "Select Person " : "Select Person ",
+        "No Events found" : "No Events found",
+        "Admin - Logs - Events" : "Admin - Logs - Events",
+        "Displaying Events  {0} - {1} of {2}" : "Displaying Events  {0} - {1} of {2}"
+},
+"Pman.Dialog.PersonBulkAdd.js" : {
+        "Bulk add Contacts" : "Bulk add Contacts"
+},
+"Pman.Tab.AdminTranslations.js" : {
+        "Error" : "Error",
+        "Translations" : "Translations",
+        "Select Module" : "Select Module",
+        "Select Language" : "Select Language",
+        "Admin - Translations" : "Admin - Translations",
+        "There was a problem saving the data - try reloading" : "There was a problem saving the data - try reloading"
+},
\ No newline at end of file
diff --git a/GroupRights.php b/GroupRights.php
new file mode 100644 (file)
index 0000000..eebc395
--- /dev/null
@@ -0,0 +1,128 @@
+<?php
+/**
+ * 
+ * Part of Core..
+ * 
+ */
+require_once 'Pman.php';
+
+class Pman_Admin_GroupRights extends Pman
+{
+    function getAuth() {
+        parent::getAuth(); // load company!
+        $au = $this->getAuthUser();
+        if (!$au) {
+            $this->jerr("Not authenticated", array('authFailure' => true));
+        }
+        $this->authUser = $au;
+        return true;
+    }
+    
+    // perms - any table that can be modified by the user should be listed here..
+    // without it, our perms manager should deny writing via the web interface...
+    
+    // FOR PERMS - SEE THE DATAOBJECT!
+    
+    function get()
+    {
+        // must recieve a group..
+        if (!isset($_GET['group_id']) || (int)$_GET['group_id'] < 0) {
+            $this->jerr("NO GROUP");
+        }
+        if (!$this->hasPerm( 'Core.Groups','S')) { // listing groups..
+            $this->jerr("PERMISSION DENIED");
+        }
+         //   DB_DataObject::debugLevel(1);
+        $p = DB_DataObject::factory('Group_Rights');
+        $p->group_id = (int)$_GET['group_id'];
+        $p->find();
+        $cur = array();
+    
+        while ($p->fetch()) {
+            $cur[$p->rightname] = clone($p);
+        }
+        $e = -1;
+        $ar = array();
+        // echo "<PRE>"; print_r($p->defaultPermData() );
+        foreach($p->defaultPermData() as $k => $defdata) {
+            
+            if (empty($defdata[0])) { // no admin data available..
+                continue;
+            }
+            if (!isset($cur[$k])) {
+                // then there is no current access right for it..
+                //DB_DataObject::debugLevel(1);
+                $gr = DB_DataObject::factory('Group_Rights');
+                $gr->group_id = (int)$_GET['group_id'];
+                $gr->rightname = $k;
+                $gr->AccessMask = $defdata[1]; // set to defaults..
+                $gr->insert();
+                $cur[$k] = clone($gr);
+            }
+            
+            
+            $ar[] = array(
+                'id' => $cur[$k]->id * 1, //
+                'rightname' => $k,
+                'descript' => isset($defdata[2]) ? $defdata[2] : '' ,
+                'AccessMask' => $cur[$k]->AccessMask,
+                'FullMask' => $defdata[0],
+                'group_id' => (int)$_GET['group_id']
+            );
+                
+        }
+        $this->jdata($ar);
+        
+         
+    }
+    
+    
+    // post.. 
+    function post()
+    {
+        if (!isset($_POST['group_id']) || (int)$_POST['group_id'] < 0) {
+            $this->jerr("NO GROUP");
+        }
+        if (!$this->hasPerm( 'Core.Groups','E')) { // editing groups..
+            $this->jerr("PERMISSION DENIED");
+        }
+        
+        
+            
+        
+        
+        // add or update..
+        if (!empty($_POST['dataUpdate'])) {
+            foreach($_POST['dataUpdate'] as $id => $ac) {
+                $p = DB_DataObject::factory('Group_Rights');
+                $p->group_id = (int)$_POST['group_id'];
+                if (!$p->get($id)) {
+                    continue; // errro cond.
+                }
+                $po = clone($p);
+                $p->AccessMask = $ac;
+                $p->validate(); // ensure that the basic perms can not be removed
+                $p->update($po);
+            }
+        }
+        if (!empty($_POST['dataAdd'])) {
+            foreach($_POST['dataAdd'] as $perm => $ac) {
+                $p = DB_DataObject::factory('Group_Rights');
+                $p->group_id = (int)$_POST['group_id'];
+                $p->rightname = $perm;
+                $p->AccessMask = $ac;
+                $p->validate(); // ensure that the basic perms can not be removed
+                $p->insert();
+            }
+        }
+        $this->jok("done");
+        
+        
+        
+    }
+     
+    
+    
+    
+    
+}
\ No newline at end of file
diff --git a/Pman.Dialog.Groups.js b/Pman.Dialog.Groups.js
new file mode 100644 (file)
index 0000000..0702ce5
--- /dev/null
@@ -0,0 +1,235 @@
+//<script type="text/javascript">
+
+// generic groups edit dialog 
+
+Pman.Dialog.Groups = {
+    dialog : false,
+    form : false,
+    id: 'Group',
+    create: function()
+    {
+        if (this.dialog) {
+            return;
+        }
+        var _this = this;
+        this.dialog = new Ext.LayoutDialog(Ext.get(document.body).createChild({tag:'div'}),  { 
+            autoCreated: true,
+            title: 'edit team',
+            modal: true,
+            width:  650,
+            height: 150,
+            shadow:true,
+            minWidth:200,
+            minHeight:150,
+            //proxyDrag: true,
+            closable: false,
+            draggable: false,
+            center: {
+                autoScroll:false,
+                titlebar: false,
+               // tabPosition: 'top',
+                hideTabs: true,
+                closeOnTab: true,
+                alwaysShowTabs: false
+            }
+        });
+        this.dialog.addKeyListener(27, this.dialog.hide, this.dialog);
+        this.dialog.addButton("Cancel", this.dialog.hide, this.dialog);
+       
+        this.dialog.addButton("Save", this.save, this);
+        this.layout = this.dialog.getLayout();
+        this.layout.beginUpdate();
+        
+       
+        
+        this.form = new Ext.form.Form({
+            labelWidth: 250 ,
+            listeners : {
+                actionfailed : function(f, act) {
+                    _this.dialog.el.unmask();
+                    // error msg???
+                    
+                    Pman.standardActionFailed(f,act);
+                              
+                },
+                actioncomplete: function(f, act) {
+                    _this.dialog.el.unmask();
+                    //console.log('load completed'); 
+                    // error messages?????
+                    
+                   
+                    if (act.type == 'load') {
+                        
+                        _this.data = act.result.data;
+                       // _this.loaded();
+                        return;
+                    }
+                    
+                    
+                    if (act.type == 'submit') { // only submitted here if we are 
+                        _this.dialog.hide();
+                        if (_this.callback) {
+                            _this.callback.call(this, act.result.data);
+                        }
+                        return; 
+                    }
+                    // unmask?? 
+                }
+            }
+        
+            
+            
+             
+        });
+        //?? will this work...
+        this.form.addxtype.apply(this.form,[{
+                name : 'name',
+                fieldLabel : "Group Name",  // should be team name for other one.!!!!!
+                value : '',
+                allowBlank : false,
+                qtip : "Enter Group name",
+                xtype : 'TextField',
+                width : 300
+            },
+            {
+                
+                xtype: 'ComboBox',
+                fieldLabel: "Leader",
+                name : 'leader_name',
+                selectOnFocus:true,
+                qtip : "Select Person Who opened",
+                allowBlank : true,
+                width: 280,
+                
+                store: new Ext.data.Store({
+                      // load using HTTP
+                    proxy: new Ext.data.HttpProxy({
+                        url: baseURL + '/Roo/Person.php',
+                        method: 'GET'
+                    }),
+                    reader: Pman.Readers.Person,
+                    listeners : {
+                        beforeload : function(st,o)
+                        {
+                            // compnay myst be set..
+                             
+                            o.params.company_id = Pman.Login.authUser.company_id * 1;
+                             
+                             
+                        }
+                    }
+                }),
+                 
+                
+                displayField:'name',
+                valueField : 'id',
+                hiddenName:  'leader',
+                typeAhead: true,
+                forceSelection: true,
+                doForce : function(){
+                    if(this.el.dom.value.length > 0){
+                        this.el.dom.value =
+                            this.lastSelectionText === undefined ? "" : this.lastSelectionText;
+                        this.applyEmptyText();
+                        if (!this.el.dom.value.length) {
+                            this.setFromData({  id: 0, name:  '----'  });
+                        }
+                    }
+                },
+
+                //mode: 'local',
+                triggerAction: 'all',
+                tpl: new Ext.Template(
+                    '<div class="x-grid-cell-text x-btn button">',
+                        '<b>{name}</b> {role}',
+                    '</div>'
+                ),
+                queryParam: 'query[name]',
+                loadingText: "Searching...",
+                listWidth: 300,
+               
+                minChars: 2,
+                pageSize:20 
+                 
+                 
+            },
+            
+            
+            {
+                name : 'id',
+                value : '',
+                xtype : 'Hidden'
+                
+            },{
+                name : 'type', // 0 == Group, 1 == team..
+                value : '',
+                xtype : 'Hidden'
+                
+            }
+        ]);
+        var ef = this.dialog.getLayout().getEl().createChild({tag: 'div'});
+        ef.dom.style.margin = 10;
+         
+        this.form.render(ef.dom);
+
+        var vp = this.dialog.getLayout().add('center', new Ext.ContentPanel(ef, {
+            autoCreate : true,
+            //title: 'Org Details',
+            //toolbar: this.tb,
+            width: 250,
+            maxWidth: 250,
+            fitToFrame:true
+        }));
+          
+
+        
+        
+        this.layout.endUpdate();
+    },
+    _id : 0,
+    show : function(data, callback)
+    {
+        this.callback= callback;
+        this._id = data.id;
+        this.data = data;
+        this.create();
+        this.form.reset();
+        this.form.setValues(data);
+        this.dialog.show();
+        
+        this.dialog.setTitle(data.type ? "Edit Group" : "Edit Team");
+        var lw = Ext.get(this.form.findField('leader').el.dom.parentNode.parentNode.parentNode);
+        // change the label!?!!?
+        lw.setVisibilityMode(Ext.Element.DISPLAY);
+        if (this.data.type) {
+            // show the leader..
+            lw.show();
+            
+            this.form.findField('leader').setFromData({
+                id:  this.data.leader,
+                name : this.data.leader ? this.data.leader_name : ''
+            });
+            
+        } else {
+            // hide the leader
+            lw.hide();
+        }
+        
+        
+        
+
+    },
+    save : function()
+    {
+         this.form.doAction('submit', {
+            url: baseURL + '/Roo/Groups.php',
+            method: 'POST',
+            params: {
+                _id: this._id ,
+                ts : Math.random()
+            } 
+        });
+    }
+     
+         
+};
\ No newline at end of file
diff --git a/Pman.Dialog.PersonBulkAdd.js b/Pman.Dialog.PersonBulkAdd.js
new file mode 100644 (file)
index 0000000..e2354d3
--- /dev/null
@@ -0,0 +1,31 @@
+//<script type="text/javascript">
+// for needed for new person in External contacts...
+
+
+
+// needs adding to init!!!!
+Pman.on('beforeload', function() {
+     // new - company/office pulldowns.
+     // used by pman
+    Pman.Dialog.PersonBulkAdd = new Pman.Dialog.PersonEditor({
+        type : 'new',
+        dialogConfig : {
+            title: "Bulk add Contacts",
+            height: 350 // slightly taller..
+        },
+        itemList : [
+            'company_id_name',
+            'office_id_name',
+            'bulklist',
+            
+            'id',   // 0
+            'active'
+         
+            
+        ]
+    });
+    
+    
+    
+    
+});
\ No newline at end of file
diff --git a/Pman.Tab.Admin.js b/Pman.Tab.Admin.js
new file mode 100644 (file)
index 0000000..8346da2
--- /dev/null
@@ -0,0 +1,116 @@
+//<script type="text/javascript">
+
+
+/**
+* Tab for fax stuff..
+*/
+
+Pman.on('beforeload', function()
+{
+    
+    // only the system admin company can see this!!
+    if (Pman.Login.authUser.company_id_isOwner * 1 < 1) {
+        return;
+    }
+    Pman.register({
+        modKey : '900-pman-tab-admin',
+        module : Pman.Tab.Admin,
+        region : 'center',
+        parent : Pman,
+        name : "Administration"
+    });
+     if (Pman.hasPerm('Core.Projects_All', 'E')) {
+        
+        Pman.subMenuItems.push({
+                seqid : 401,
+                text: "Add Project",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/dd/drop-add.gif',
+                
+                handler : function() {
+                    Pman.Dialog.Projects.show( 
+                        { 
+                            id : 0
+                        },
+                        function(data) {
+                            Pman.refreshActivePanel();
+                    }); 
+                }
+        });
+        Pman.subMenuItems.push( new Roo.menu.Separator({
+            seqid : 402
+        }));
+        
+    }
+});
+Pman.Tab.Admin = {
+    
+    tab : false,
+    
+    add : function(parentLayout, region)
+    {
+        
+        if (!Pman.hasPerm('Admin.Admin_Tab', 'S')) {
+            return;
+        }
+        if (this.tab) {
+            return;
+        }
+                
+        
+        this.layout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+                center: {
+                    autoScroll:true,
+                    hideTabs: false,
+                    tabPosition: 'top'
+                }
+            }
+        );
+            
+                //this.mainTab.on('activate', function() {
+                //    Pman.adminLayout.showPanel(0);
+                  //  Pman.Tab.Documents_In.paging.onClick('first');
+               // });
+
+        var _this = this;
+        this.tab = parentLayout.add('center',  
+            new Ext.NestedLayoutPanel(
+                this.layout, {
+                    title: "Admin",
+                    background : true
+                }));
+
+        this.tab.on('activate', function() {
+            
+            
+            //_this.layout.getRegion('center').showPanel(0);
+            
+            //try {
+            //    Pman.Tab.ProjectsMgr.paging.onClick('first');
+            //} catch(e) {
+            // do nothing .. - if projects is not avail...
+            //}
+            
+            // auto loads?!?!
+            //Pman.Tab.ProjectsMgr.paging.onClick('first');
+        });
+        //this.adminLayout.beginUpdate();
+    },
+
+    
+    buildAdminLayout : function() 
+    {
+         
+        if (isDev) {
+            Pman.Translation.add(this.layout, 'center');
+        }
+       
+        
+    }
+};
+        
+    
\ No newline at end of file
diff --git a/Pman.Tab.AdminLogEvents.js b/Pman.Tab.AdminLogEvents.js
new file mode 100644 (file)
index 0000000..5542a21
--- /dev/null
@@ -0,0 +1,195 @@
+//<script type="text/javascript"> 
+       
+// Auto generated file build Builder
+
+            
+       
+// register the module first       
+Pman.on('beforeload', function()
+{
+
+    Pman.register({
+        modKey : '000-pman_tab_adminlogevents',
+        module : Pman.Tab.AdminLogEvents,
+        region : 'center',
+        parent : Pman.Tab.AdminLogs,
+        name : "Admin - Logs - Events"
+    });
+});
+
+Pman.Tab.AdminLogEvents = {
+    
+    panel : false,
+    disabled : false,
+    parentLayout:  false,
+
+    add : function(parentLayout, region)
+    {
+        
+        if (this.disabled) {
+            return;
+        }
+        var _this = this;
+        this.parentLayout = parentLayout;
+        
+        this.panel = this.parentLayout.addxtype({
+            xtype : 'GridPanel',
+            title : "Events",
+            fitToframe : true,
+            fitContainer : true,
+            tableName : 'Events',
+            background : true,
+            listeners : {
+                activate: function() {
+                    _this.panel = this;
+                    if (_this.grid) {
+                        _this.grid.footer.onClick('first');
+                    }
+                }
+            },
+            grid : {
+                xtype : 'Grid',
+                autoExpandColumn : 'remarks',
+                loadMask : true,
+                listeners : {
+                    render: function() { 
+                        _this.grid = this; 
+                        //_this.dialog = Pman.Dialog.FILL_IN
+                        if (_this.panel.active) {
+                           this.footer.onClick('first');
+                        }
+                    }
+                },
+                dataSource : {
+                    xtype : 'Store',
+                    reader: Pman.Readers.Events,
+                    listeners : {
+                        beforeload: function (_self, o)
+                        {
+                           if (! _this.personSel) {
+                            return;
+                            }
+                            o.params = o.params || {};
+                            o.params.person_id = _this.personSel.getValue();
+                            
+                        }
+                    },
+                    remoteSort : true,
+                    sortInfo: { field: 'event_when', direction: 'DESC'},
+                    proxy : {
+                        xtype : 'HttpProxy',
+                        method : 'GET',
+                        url: baseURL + '/Roo/Events.php'
+                    }
+                },
+                colModel : [
+                    {
+                        header : 'When',
+                        width : 100,
+                        dataIndex : 'event_when',
+                        renderer: function(v) { return v ? v.dateFormat('d/m/Y H:i') : ''; }
+                    },
+                    {
+                        header : 'Staff',
+                        width : 150,
+                        dataIndex : 'person_name',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    },
+                    {
+                        header : 'Action',
+                        width : 100,
+                        dataIndex : 'action',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    },
+                    {
+                        header : 'IP',
+                        width : 100,
+                        dataIndex : 'ipaddr',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    },
+                    {
+                        header : 'Affected',
+                        width : 100,
+                        dataIndex : 'on_id',
+                        renderer: function(v, x, r) {                             return v ? String.format('{0}({1})', r.data.on_table, v)  : '';                         }
+                    },
+                    {
+                        header : 'Remarks',
+                        width : 300,
+                        dataIndex : 'remarks',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    }
+                ],
+                footer : {
+                    xtype : 'PagingToolbar',
+                    pageSize : 25,
+                    displayInfo : true,
+                    displayMsg : "Displaying Events  {0} - {1} of {2}",
+                    emptyMsg : "No Events found"
+                },
+                toolbar : {
+                    xtype : 'Toolbar',
+                    items : [
+                        {
+                            xtype : 'TextItem',
+                            xns: Roo.Toolbar,
+                            text : "Show"
+                        },
+                        {
+                            fieldLabel : "Person ",
+                            name : 'person_id_name',
+                            qtip : "Select Person ",
+                            emptyText : "Select Person ",
+                            xtype : 'ComboBox',
+                            selectOnFocus : true,
+                            allowBlank : true,
+                            width : 150,
+                            listWidth : 400,
+                            editable : false,
+                            displayField : 'name',
+                            valueField : 'id',
+                            typeAhead : true,
+                            forceSelection : true,
+                            triggerAction : 'all',
+                            tpl : '<div class=\"x-grid-cell-text x-btn button\"><b>{name}<\/b> <\/div>',
+                            queryParam : 'query[name]',
+                            loadingText : "Searching...",
+                            minChars : 2,
+                            pageSize : 20,
+                            listeners : {
+                                select: function (combo, record, index)
+                                {
+                                  _this.grid.footer.onClick('first');
+                                },
+                                render: function (_self)
+                                {
+                                  _this.personSel = _self;
+                                }
+                            },
+                            store : {
+                                xtype : 'Store',
+                                reader: Pman.Readers.Person,
+                                listeners : {
+                                    beforeload: function (_self, o)
+                                    {
+                                        o.params = o.params || {};
+                                        o.company_id = Pman.Login.authUser.company_id;
+                                    }
+                                },
+                                proxy : {
+                                    xtype : 'HttpProxy',
+                                    url: baseURL + '/Roo/Person.php',
+                                    method : 'GET'
+                                }
+                            }
+                        }
+                    ]
+                }
+            },
+            region : 'center'
+        });
+
+        
+        
+    }
+}
diff --git a/Pman.Tab.AdminLogs.js b/Pman.Tab.AdminLogs.js
new file mode 100644 (file)
index 0000000..fe03ca0
--- /dev/null
@@ -0,0 +1,64 @@
+//<script type="text/javascript"> 
+       
+// Auto generated file build Builder
+
+            
+       
+// register the module first       
+Pman.on('beforeload', function()
+{
+
+    if (Pman.Login.authUser.company_id_comptype != 'OWNER') {
+        return;
+    }
+    
+    
+    if (!Pman.hasPerm('Admin.Logs', 'S')) {
+        return;
+    }
+    
+    Pman.register({
+        modKey : '901-pman_tab_adminlogs',
+        module : Pman.Tab.AdminLogs,
+        region : 'center',
+        parent : Pman,
+        name : "Logs"
+    });
+});
+
+Pman.Tab.AdminLogs = {
+    
+    panel : false,
+    disabled : false,
+    parentLayout:  false,
+
+    add : function(parentLayout, region)
+    {
+        
+        if (this.disabled) {
+            return;
+        }
+        var _this = this;
+        this.parentLayout = parentLayout;
+        
+        this.panel = this.parentLayout.addxtype({
+            xtype : 'NestedLayoutPanel',
+            background : true,
+            fitToFrame : true,
+            region : 'center',
+            title : "Logs",
+            layout : {
+                xtype : 'BorderLayout',
+                center : {
+                    titlebar : false,
+                    tabPosition : 'top'
+                }
+            }
+        });
+
+        this.layout = this.panel.layout;
+
+        
+        
+    }
+}
diff --git a/Pman.Tab.AdminProjects.js b/Pman.Tab.AdminProjects.js
new file mode 100644 (file)
index 0000000..914f4ce
--- /dev/null
@@ -0,0 +1,339 @@
+//<script type="text/javascript"> 
+       
+// Auto generated file build Builder
+
+            
+       
+// register the module first       
+Pman.on('beforeload', function()
+{
+
+    if (Pman.Login.authUser.company_id_comptype != 'OWNER') {
+        return;
+    }
+    
+    if (!Pman.hasPerm('Core.Projects_All', 'S')) {
+        return;
+    }
+    
+    Pman.register({
+        modKey : '010-pman_tab_adminprojects',
+        module : Pman.Tab.AdminProjects,
+        region : 'center',
+        parent : Pman.Tab.Admin,
+        name : "Admin - Projects"
+    });
+});
+
+Pman.Tab.AdminProjects = {
+    
+    panel : false,
+    disabled : false,
+    parentLayout:  false,
+
+    add : function(parentLayout, region)
+    {
+        
+        if (this.disabled) {
+            return;
+        }
+        var _this = this;
+        this.parentLayout = parentLayout;
+        
+        this.panel = this.parentLayout.addxtype({
+            xtype : 'GridPanel',
+            title : "Projects",
+            fitToframe : true,
+            fitContainer : true,
+            tableName : 'Projects',
+            background : true,
+            listeners : {
+                activate: function() {
+                    _this.panel = this;
+                  
+                    
+                      if (_this.grid && _this.grid.rendered) {
+                        _this.grid.footer.onClick('first');
+                    }
+                }
+            },
+            grid : {
+                xtype : 'Grid',
+                autoExpandColumn : 'remarks',
+                loadMask : true,
+                listeners : {
+                    render: function() { 
+                        _this.grid = this; 
+                        _this.dialog = Pman.Dialog.Projects;
+                        _this.filter =  'P,U';
+                        _this.getTypes = function()
+                        {
+                            return [
+                                [  'U' , "Project (Unconfirmed)" ],
+                                [  'P' , "Project" ],
+                                [  'C' , "Project (Closed)" ],
+                                [  'N' , "Non-Project" ],
+                                [  'X' , "Non-Project (Closed)" ]
+                            
+                            ];
+                        };
+                        _this.typeToString = function(v)
+                        {
+                            var ar = this.getTypes();
+                            var ret = '';
+                            Roo.each(ar, function(a) {
+                                if (a[0] == v) {
+                                    ret = a[1];
+                                    return false;
+                                }
+                            });
+                            return ret;
+                        }
+                         _this.grid.footer.onClick('first');
+                    },
+                    rowdblclick: function (g, ri, e)
+                    {
+                    
+                        _this.dialog.show(g.getDataSource().getAt(ri).data, function() {
+                           _self.footer.onClick('refresh');
+                        });
+                    }
+                },
+                dataSource : {
+                    xtype : 'Store',
+                    reader: Pman.Readers.Projects,
+                    listeners : {
+                        beforeload: function (_self, o)
+                        {
+                            if (!_this.searchBox) {
+                                return false;
+                            }  
+                            o.params = o.params ? o.params : {};
+                                                    o.params['query[project_search]'] = _this.searchBox.getValue();
+                                                    o.params['query[project_filter]'] = _this.filter;
+                        }
+                    },
+                    sortInfo: {field:'code', direction:'DESC'},
+                    remoteSort : true,
+                    proxy : {
+                        xtype : 'HttpProxy',
+                        method : 'GET',
+                        url: baseURL + '/Roo/Projects.php'
+                    }
+                },
+                colModel : [
+                    {
+                        header : 'Type',
+                        width : 70,
+                        dataIndex : 'type',
+                        renderer: function(v) {return _this.typeToString(v); }
+                    },
+                    {
+                        header : 'Code',
+                        width : 90,
+                        dataIndex : 'code',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    },
+                    {
+                        header : 'Project Name',
+                        width : 300,
+                        dataIndex : 'name',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    },
+                    {
+                        header : 'Client ',
+                        width : 100,
+                        dataIndex : 'client_id_name',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    },
+                    {
+                        header : 'Remarks',
+                        width : 300,
+                        dataIndex : 'remarks',
+                        renderer: function(v) { return String.format('{0}', v); }
+                    }
+                ],
+                footer : {
+                    xtype : 'PagingToolbar',
+                    pageSize : 25,
+                    displayInfo : true,
+                    displayMsg : "Displaying Projects  {0} - {1} of {2}",
+                    emptyMsg : "No Projects found"
+                },
+                toolbar : {
+                    xtype : 'Toolbar',
+                    items : [
+                        {
+                            text : "Add",
+                            xtype : 'Button',
+                            cls : 'x-btn-text-icon',
+                            icon: Roo.rootURL + 'images/default/dd/drop-add.gif',
+                            listeners : {
+                                click: function()
+                                        {
+                                            _this.dialog.show( { id : 0 }, function() {
+                                                _this.grid.footer.onClick('first');
+                                
+                                            }); 
+                                
+                                        }
+                                        
+                            }
+                        },
+                        {
+                            text : "Edit",
+                            xtype : 'Button',
+                            cls : 'x-btn-text-icon',
+                            icon: Roo.rootURL + 'images/default/tree/leaf.gif',
+                            listeners : {
+                                click: function()
+                                        {
+                                            var s = _this.grid.getSelectionModel().getSelections();
+                                            if (!s.length || (s.length > 1))  {
+                                                Roo.MessageBox.alert("Error", s.length ? "Select only one Project" : "Select a Project");
+                                                return;
+                                            }
+                                            
+                                            _this.dialog.show(s[0].data, function() {
+                                                _this.grid.footer.onClick('first');
+                                               }); 
+                                            
+                                        }
+                                        
+                            }
+                        },
+                        {
+                            xtype : 'Separator',
+                            xns: Roo.Toolbar
+                        },
+                        {
+                            xtype : 'TextItem',
+                            xns: Roo.Toolbar,
+                            text : "Search:"
+                        },
+                        {
+                            xtype : 'TextField',
+                            xns: Roo.form,
+                            listeners : {
+                                render: function (_self)
+                                {
+                                   _this.searchBox = _self;
+                                },
+                                specialkey: function (_self, e)
+                                {
+                                    if(e.getKey() == 13) {
+                                        _this.grid.footer.onClick('first');
+                                    }
+                                }
+                            },
+                            width : 135
+                        },
+                        {
+                            xtype : 'Button',
+                            xns: Roo.Toolbar,
+                            listeners : {
+                                click: function (_self, e)
+                                {
+                                 _this.grid.footer.onClick('first');
+                                }
+                            },
+                            icon: rootURL + '/Pman/templates/images/search.gif',
+                            cls : 'x-btn-icon'
+                        },
+                        {
+                            xtype : 'Button',
+                            xns: Roo.Toolbar,
+                            listeners : {
+                                click: function (_self, e)
+                                {
+                                    _this.searchBox.setValue('');
+                                    _this.grid.footer.onClick('first');
+                                }
+                            },
+                            icon: rootURL + '/Pman/templates/images/edit-clear.gif',
+                            cls : 'x-btn-icon'
+                        },
+                        {
+                            xtype : 'Separator',
+                            xns: Roo.Toolbar
+                        },
+                        {
+                            xtype : 'TextItem',
+                            xns: Roo.Toolbar,
+                            text : "Show:"
+                        },
+                        {
+                            xtype : 'Button',
+                            xns: Roo.Toolbar,
+                            text : "All",
+                            listeners : {
+                                toggle: function (_self, st)
+                                {
+                                if (st) { _this.filter = 'P,N,U'; } 
+                                    _this.grid.footer.onClick('first');
+                                }
+                            },
+                            toggleGroup : 'pgrp',
+                            pressed : false,
+                            enableToggle : true
+                        },
+                        {
+                            xtype : 'Button',
+                            xns: Roo.Toolbar,
+                            text : "Projects",
+                            listeners : {
+                                toggle: function (_self, st)
+                                {
+                                if (st) { _this.filter = 'P,U'; } 
+                                    _this.grid.footer.onClick('first');
+                                }
+                            },
+                            toggleGroup : 'pgrp',
+                            pressed : true,
+                            enableToggle : true
+                        },
+                        {
+                            xtype : 'Button',
+                            xns: Roo.Toolbar,
+                            text : "Non-Projects",
+                            listeners : {
+                                toggle: function (_self, st)
+                                {
+                                if (st) { _this.filter = 'N'; } 
+                                    _this.grid.footer.onClick('first');
+                                }
+                            },
+                            toggleGroup : 'pgrp',
+                            pressed : false,
+                            enableToggle : true
+                        },
+                        {
+                            xtype : 'Button',
+                            xns: Roo.Toolbar,
+                            text : "Closed",
+                            listeners : {
+                                toggle: function (_self, st)
+                                {
+                                if (st) { _this.filter = 'X,C'; } 
+                                    _this.grid.footer.onClick('first');
+                                }
+                            },
+                            toggleGroup : 'pgrp',
+                            pressed : false,
+                            enableToggle : true
+                        }
+                    ]
+                },
+                selModel : {
+                    xtype : 'RowSelectionModel',
+                    xns: Roo.grid,
+                    singleSelect : true
+                }
+            },
+            region : 'center'
+        });
+
+        
+        
+    }
+}
diff --git a/Pman.Tab.AdminTranslations.js b/Pman.Tab.AdminTranslations.js
new file mode 100644 (file)
index 0000000..b2fcef0
--- /dev/null
@@ -0,0 +1,311 @@
+//<script type="text/javascript">
+
+// Auto generated file - created by Builder Module - do not edit directly
+
+
+
+// register the module first
+Pman.on('beforeload', function()
+{
+    var disabled = false;
+    if (disabled) {
+        return; 
+    }
+    Pman.register({
+        modKey : '999-pman_tab_admintranslations',
+        module : Pman.Tab.AdminTranslations,
+        region : 'center',
+        parent : Pman.Tab.Admin,
+        name : "Admin - Translations"
+    });
+});
+Pman.Tab.AdminTranslations = new Roo.util.Observable({
+
+    panel : false,
+    disabled : false,
+    parentLayout:  false,
+
+    add : function(parentLayout, region)
+    {
+
+        var _this = this;
+        this.parentLayout = parentLayout;
+
+        this.panel = parentLayout.addxtype({
+            xtype : 'GridPanel',
+            title : "Translations",
+            fitToframe : true,
+            fitContainer : true,
+            background : true,
+            listeners : {
+                activate: function() {
+                    _this.panel = this;
+                    if (_this.grid) {
+                       _this.grid.getDataSource().reload(); 
+                    }
+                }
+            },
+            grid : {
+                xtype : 'EditorGrid',
+                autoExpandColumn : 'txt',
+                loadMask : true,
+                listeners : {
+                    render: function() { 
+                        _this.grid = this; 
+                        //_this.dialog = Pman.Dialog.FILL_IN
+                        if (_this.panel.active) {
+                          _this.grid.getDataSource().reload(); 
+                        }
+                    },
+                    beforeedit: function(e) {
+                        console.log('beforeedit');
+                        //if (e.record.get('origtxt').indexOf('<') > -1) {
+                                           // console.log("HTML EDITOR!!");
+                                         
+                                        //    return false;
+                                        //}
+                                        if (e.record.get('txt').replace(/\s+/, '').length) {
+                                            return true;
+                                        }
+                                        if (e.record.get('suggest').length) {
+                                            e.record.set('txt', e.record.get('suggest'));
+                                        //    _this.saveRec(e.record);
+                                            return;
+                                        }
+                                        
+                                        
+                                        
+                                       
+                                        var tl = e.record.get('id').split('/')[0];
+                                      
+                                        tl = (tl == 'zh_HK') ? 'zh-TW' : tl; 
+                                        tl = tl.replace('_', '-');
+                                        var rec = e.record;
+                                        
+                                        
+                                        
+                                        Pman.gtranslate(e.record.get('origtxt'), 'en', tl, function(result) { 
+                                            if (typeof(result) == 'object') { //error
+                                                return; 
+                                               }
+                                            
+                                            if (_this.grid.activeEditor) {
+                                                _this.grid.activeEditor.setValue(result);
+                                            } else {
+                                                rec.set('txt',result);
+                                                //_this.saveRec(rec);
+                                            }
+                    
+                                            //
+                                            
+                                            
+                                            //console.log(result.translation);
+                                        });
+                                        
+                                       
+                                        
+                                        return true;
+                                    } ,
+                    afteredit: function (e)
+                    {
+                        var saveRec  = function(rec)
+                        {
+                            var g = _this.grid;
+                    
+                            //g.getView().el.mask('Saving');
+                            Ext.Ajax.request({
+                                url : baseURL + '/Admin/Translations.php',
+                                method: 'POST',
+                                params : {
+                                    id : rec.get('id'),
+                                    txt : rec.get('txt'),
+                                    lang :  _this.langCombo.getValue(),
+                                    module :  _this.modCombo.getValue()
+                                },
+                                success : function()
+                                {
+                                    //g.getView().el.unmask();
+                                    //g.getDataSource().reload();
+                                },
+                                failure : function()
+                                {
+                                    Ext.Msg.alert("Error", "There was a problem saving the data - try reloading");
+                                   // g.getView().el.unmask();
+                                }
+                                
+                        });
+                            };
+                        
+                        saveRec.defer(1000, _this, [ e.record ]);
+                    }
+                },
+                clicksToEdit : 1,
+                xns: Roo.Grid,
+                dataSource : {
+                    xtype : 'Store',
+                    reader: Pman.Readers.Category,
+                    listeners : {
+                        beforeload: function (_self, opts)
+                        {
+                        
+                                                if (!_this.langCombo || !_this.langCombo.getValue().length) {
+                                                    return false;
+                                                }
+                                                if (!_this.modCombo || !_this.modCombo.getValue().length) {
+                                                    return false;
+                                                }
+                                                opts.params = {
+                                                    lang :  _this.langCombo.getValue(),
+                                                    module :  _this.modCombo.getValue()
+                                                };
+                        }
+                    },
+                    proxy : {
+                        xtype : 'HttpProxy',
+                        method : 'GET',
+                        url: baseURL + '/Admin/Translations.php'
+                    },
+                    reader : {
+                        xtype : 'JsonReader',
+                        xns: Roo.data,
+                        root : 'data',
+                        totalProperty : 'total',
+                        id : 'id',
+                        fields: [                    'id',             'tablename',             'tableid',             'colname',             'txt',             'lang',             { name:'updated', type:'date', dateFormat: 'Y-m-d H:i:s' },             { name:'origupdated', type:'date', dateFormat: 'Y-m-d H:i:s' },             'origtxt',             'msum',             'suggest'                  ]
+                    }
+                },
+                colModel : [
+                    {
+                        header : 'Name',
+                        width : 150,
+                        dataIndex : 'colname',
+                        renderer: function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style="color:'+c+'";>' +r.get('tableid')+ ':' + v + '</div>';                                              }
+                    },
+                    {
+                        header : 'Original',
+                        width : 300,
+                        dataIndex : 'origtxt',
+                        renderer: function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                         return '<div style="color:' + c+ '">' +                                  Ext.util.Format.htmlEncode(v) + '</div>';                                              }
+                    },
+                    {
+                        header : 'Translated (Click to Edit)',
+                        width : 150,
+                        dataIndex : 'txt',
+                        renderer: function(v,x,r) {                                                   var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style="color:' + c+ '">' + Ext.util.Format.htmlEncode(v) + '</div>';                     },
+                        editor : {
+                            xtype : 'GridEditor',
+                            xns: Roo.grid,
+                            field : {
+                                xtype : 'TextField',
+                                xns: Roo.form
+                            }
+                        }
+                    }
+                ],
+                toolbar : {
+                    xtype : 'Toolbar',
+                    items : [
+                        {
+                            xtype : 'ComboBox',
+                            listeners : {
+                                render: function (_self)
+                                {
+                                  _this.modCombo = _self;
+                                },
+                                select: function (combo, record, index)
+                                {
+                                  _this.grid.getDataSource().reload(); 
+                                }
+                            },
+                            valueField : 'module',
+                            displayField : 'module',
+                            width : 200,
+                            typeAhead : false,
+                            editable : false,
+                            mode : 'local',
+                            triggerAction : 'all',
+                            emptyText : "Select Module",
+                            selectOnFocus : true,
+                            store : {
+                                xtype : 'SimpleStore',
+                                xns: Roo.data,
+                                fields: ['module'],
+                                data: (function() {             var modlist = [];             Roo.each( AppModules.split(','), function(mod) {            
+                                         modlist.push( [ mod ] );             });             return modlist;         })()
+                            }
+                        },
+                        {
+                            xtype : 'ComboBox',
+                            listeners : {
+                                select: function (combo, record, index)
+                                {
+                                  _this.grid.getDataSource().reload(); 
+                                },
+                                render: function (_self)
+                                {
+                                  _this.langCombo=_self;
+                                }
+                            },
+                            valueField : 'lang',
+                            displayField : 'ldisp',
+                            width : 200,
+                            typeAhead : false,
+                            editable : false,
+                            mode : 'local',
+                            triggerAction : 'all',
+                            emptyText : "Select Language",
+                            selectOnFocus : true,
+                            store : {
+                                xtype : 'SimpleStore',
+                                xns: Roo.data,
+                                fields: ['lang', 'ldisp'],
+                                data: [                                                [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ],                         [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ]                     ]
+                            }
+                        }
+                    ]
+                }
+            },
+            region : 'center'
+        });
+    }
+});
+/*
+--SOURCE--
+QlpoNDFBWSZTWSRX4cgAC4r/gF5t7uF4//+/v//frr////5gCT3feax1uMK95edvJ7nQB0GgaNAeEioy
+Cp6aZR6g2keoaeKHojag/UjIaNNHpqaPUaeo9I0GmQ0A00iU9kTIEeSYFMZGoaPUxBk00NqGRgQHqaHp
+kCYEkEKRkjbVNNpMnlDTQAHqAABoAAAA0aDIJEpTTTTQAADTQAAAAAAAAGgAAOABoDQNAA00yAA0aZAB
+oyYIDEAACRIgCaAU9qMptNTTEYTUxRtJ6nomj1AbSaHpAeoDT9U0yuBIAKCJ7TaFiP8YieBISQRIIt2c
+LSR5pdIKOtuw6lA61oLUJzQXrsZRhjbK9BXy+KlUqCQTD47iP4n19tikmmKbzYGf852d7kKfzFn1+xom
+OIYh/ulanVQbIlgJC7MyqxsT2BzlI9MwqxV3CgJ9lLD2LcqlCUqOBggpBSEpWupJBoTOFt6nwWEeGtL3
+KIYruSdTXVMwk2o2d+smcTV7bOA0qF12NJWYL0OahiPht2a5L8YIE4kBBQsp2aySrmroC0QG52f2gvtw
+ODmCr0buFl1tbsL8GRj3xIwslVry4FNEskOPhVMoi+SLmE2E1VGQUEIk5UswMjrz1wqyySiyIU5qYyiS
+MKpVfYidoiorLHIlvhAa1iJtNpA2gxTGyE4TYNjY0JptIYxAxgxtMGNjTGgxBsbG022xtAxpsDQjXqnS
+jfDkOLJ4XSCauBTS86NiEmiVIkKm1d1KUEAuTsMPR9XgrkqauHVpdLLF6VZOTKTMcVgzcyTqZ5SDszyZ
+Z3kdlSFEJhhmREBrDGcZeDfulAXLHJtJkrkWKELhZpezHAo2WrrxS6l8DUrQchW5pkTsYMOAypzlQ6yn
+3ZyplNPDpsAk2DTSZGSQSJQZ3fKeFF9md9NMrAy9ZpOi0SwRg1WMHOyTWDBu7mgnVFNfukp9uYv85Qqk
+suSxSJDGxSQ4IcDaSYxEiRCSZ/BwlsaKck4HeGdSxUxUBJ7Ok2TSw6r/s09GMeI0aSovFKLTs9yaKLGm
+Gd3TBWRMqYYFdhXJDDFWyETkImib1ZyktvvlTZWM4wtXrxubePy+uSzi9DjRyjnF+uHfTRS73wbay5Tr
+4dbDWZHqg7u8h/pMM4XYpDIKOrC8nEJZCSQXhZO/CRCPI+yEkS8y/KRBgQYE6CW8qVAptJEOoZLkhMZJ
+mRPJYVZJrcabEp1qyZxj8CltENp3ySgcYUHBtRidbl8CH0EoULxWujRVA+6KEeOVY6IjsgwYMEP8oSP+
+ZNsNDBFOxQ4TCZgxs5OFG3k4xlyfWPgrU0rXIMNTXili6cOeG35Y2Jt4ZPs7zPm3BWH0spvguZiJ0nR3
+8ev13nArPTri9jzdhXIiLdknPxlpJSqTwiO5v4KVgJqlY2SJDWHmJPjilz/tUg0bO09fdBNijMnUJzhj
+bDOzBV9hyNi/SjBev+Uw5ky82eamBlLQYGWgwRV6iesjsP9EMYLixKY92gRHMqrantu10IHt+/DMrjGx
+jJpnPdg0ldGjvF/Nw6a24DRcciThk3aTfLslOoZCZLkSyGpQZ7BlBGoa7rRFxKAppgFcUa8oNulS2Ejd
+RLgmsbA9sCt+RHy/bhQfOUwPfu8r5KQbyiW+lf9UIg+EBScL62h3cI3ty3DMGuc58nPkSCoXeMFaGBO4
++cjcaEoaKxAOWsKUMiEUiqhxxMDQz0hETdvOsNYwzEzlArClhWKwTYpReVl57W2Ntf2WdWBnFUsqJIIM
+3c90iD8kbXjOTNAQwJtD6uUgmpEU7QaGOUUG3g5XDQypYzbGz8cXFxVU2VKZWTLSAmUGOUw+iCHBDGNp
+KgODK0EgxOJQZ+hRRSbqE27lsQcxggrS013FojklQKSAgI2aoU8iCFk7OI1U0rdSgItsdta2XIgFlGJN
+rEkkaFYLtX+pAv1cl6Py+0Ni2486ZC2188xeJlQ2mthRKEQGrEm5iq1osQlmPAneSLmBorCKAhhxIxyQ
+H3A/GWLZ1k0Jbi455o9rRPfcRWLWkNyiMKN66waqWmarfTxGNQpSOacvlXkXlGubxnFT2nFYBSxBWkKQ
+Yghgx6BmwRRCQw5OvxeIKIM9JtZaQsG05z5iRDHoOmngb/Xm5TwIzAUlZcKmmF5Er9BFK/WqykVAWhkq
+mjn06lkQFhUXFQptkrE5qcJWIaCQaJ6aPQepFfUUBWJWAW+bILQXBydtyKlLvfFxTO7i1LUZRhEa6QCu
+VwquJh1vauhQWQxQylVSbJsl1kYH4TSkF9AvoVaknJAQQ20nARMtX1CZIBqbdwlv2MJiYm16JZANGiDu
+NHQ20uB6wgTbaeS2pFF5zqEeNJjQaRIk0SUvUlVlwBbOyQXJzKwUI8q49KUaQ6s1JX2C+0g0dVIjYS2T
+r2+M6X4t4HWJF0zcXFwzl7OP94jGwqLLKwJuBuGC9yitezrUgoGt+2s1SbRs0CpBOqEYab6wzBYJBgXF
+RQUOCI0CryqZUqy+7AqzjeqvSvSzDEM1nmzgahoaRy6mI9OwsiXh7taEXILd/IY+lB6VIRlMEB6yzz90
+2JEqyC9ns5dxujzAZTgYnvRUvRnpDIkf/yBSYQwaQWF66+hUI19mPnIV7GnBfVHaUzQwMWQGKdAlihnk
+xBBE1RNiUhFABBcrbSYBMRWgJ9W1HKGbwIEy41mQEXC0wHPS/JCw8xFdU0ZT4lI5MOKRyisXMe/Okeqm
+tvFsbNtRkXGgLSo0cwWU7krAGfdJcaBikG0QeHSZVYDkKjf4vAkbjTYeHTxrShrUdvsf8+7h0uoLReFX
+Wo0kkfEqI0C6tISGBARUgKjcVchVTIhIWIXJGUv/am2fTEMbXMig8jNOzaSQTRQC0mhIUzYubz/V8ZYB
+82fDbaXL3gxrKfA1BNuVrhc7mpGIXRFVVBEg7xdyRThQkCRX4cg=
+*/
diff --git a/Pman.Tab.Companies.js b/Pman.Tab.Companies.js
new file mode 100644 (file)
index 0000000..5541848
--- /dev/null
@@ -0,0 +1,267 @@
+//<script type="text/javascript">
+Pman.on('beforeload', function()
+{
+    //                case 1 : Pman.Tab.Projects.add(this.mainLayout, 'west'); break;
+    
+  
+    if (Pman.hasPerm('Core.Companies', 'E')) {
+        Pman.register({
+            modKey : '030-pman-tab-companies',
+            module : Pman.Tab.Companies,
+            region : 'center',
+            parent : Pman.Tab.Admin,
+            name : "Contact Companies Manager"
+        });
+    }
+        
+});
+
+Pman.Tab.Companies = new Roo.util.Observable({
+    events : {
+        'beforerender' : true // trigger so we can add modules later..
+    },
+    colExtra : [], // extra items on columns
+    
+    grid : false,
+    panel : false,
+    add : function(parentLayout, region) {
+        
+        var _this = this;
+        if (this.tab) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+     
+        
+        this.innerLayout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                center: {
+                    autoScroll:true,
+                    hideTabs: true
+                },
+                south : {
+                    split:true,
+                    title: "Offices",
+                    autoScroll:true,
+                    hideTabs: true,
+                    height: 200
+                }
+            }
+        );
+
+
+
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.innerLayout, {title: "Companies", background: true, controller : this}));
+
+        this.tab.on('activate', function() {
+            _this.delayedCreate();
+            _this.paging.onClick('refresh');
+        });
+    },
+    delayedCreate : function () 
+    {
+        var _this = this;
+        if (this.grid) {
+            return;
+           }
+        this.innerLayout.beginUpdate();
+       
+
+        var frm = this.innerLayout.getEl().createChild({tag:'div'});
+        //this.grid = new Ext.grid.EditorGrid(frm,  {
+        this.grid = new Ext.grid.Grid(frm,  {
+                id: 'grid-companies',
+                ds:   new Ext.data.Store({
+                    // load using HTTP
+                    proxy: new Ext.data.HttpProxy({
+                        url: baseURL + '/Roo/Companies.html',
+                        method: 'GET'
+                    }),
+                    reader: Pman.Readers.Companies,
+                       
+                    listeners : {
+                        load : function()
+                        {
+                            Pman.Tab.Office.paging.onClick('refresh');
+                        },
+                        loadexception : Pman.loadException
+                    },
+                    remoteSort: true
+                }),
+                cm:  new Ext.grid.ColumnModel(
+                    [
+                    {
+                        
+                        header : "Type",
+                        dataIndex : 'comptype',
+                        sortable : true,
+                        width : 90,
+                        renderer : function (v,x ,r) {
+                            return Pman.Dialog.Companies.comptypeListToString(r.data.isOwner ? 'OWNER' : v);
+                        }
+                    },
+                    
+                    
+                    {
+                        
+                        header : "Ref#",
+                        dataIndex : 'code',
+                        sortable : true,
+                        width : 50
+                    },{
+                        id : 'companies-name',
+                        header : "Name",
+                        dataIndex : 'name',
+                        sortable : true,
+                        width : 200,
+                        renderer : function(v,x,r) {
+                            return String.format(r.data.isOwner ? '<B>{0}</B>' : '{0}',v);    
+                        }
+                    },{
+                        header : "Tel",
+                        dataIndex : 'tel',
+                        sortable : true,
+                        width : 100
+                    },{
+                        header : "Fax",
+                        dataIndex : 'fax',
+                        sortable : true,
+                        width : 100
+                    },{
+                        header : "Email",
+                        dataIndex : 'email',
+                        sortable : true,
+                        width : 100,
+                        renderer : function (v) {
+                            return (v.length && v.indexOf('@') > 0 ) ? 
+                                String.format('<a href="mailto:{0}">{0}</a>',v) : v;
+                                
+                        }
+                    },{
+                        id : 'companies-address',
+                        header : "Address",
+                        dataIndex : 'address',
+                        sortable : true,
+                        width : 200
+                    },{
+                        id : 'companies-remarks',
+                        header : "Remarks",
+                        dataIndex : 'remarks',
+                        sortable : true,
+                        width : 200
+                    }
+                ]),
+                autoExpandColumn: 'companies-address' , // fixme!!!!
+                clicksToEdit : 1,
+                
+                loadMask: true,
+
+                
+                listeners : {
+                   
+                    cellclick : function(g, ri, ci ,e) {
+                       
+                        Pman.Tab.Office.paging.onClick('refresh');
+                          
+                    },
+                    rowdblclick : function(g, ri, e) {
+                        var s = g.getDataSource().getAt(ri).data;
+                      
+                        _dialog.show(s, refreshPager); 
+                    }
+                }
+                 
+        });
+        this.panel  = this.innerLayout.add('center',  new Ext.GridPanel(this.grid ,
+            { fitToframe: true,fitContainer: true, controller : this })
+        );
+        this.grid.render();
+        var gridFoot = this.grid.getView().getFooterPanel(true);
+        this.paging = new Ext.PagingToolbar(gridFoot, this.grid.getDataSource(), {
+            pageSize: 25,
+            displayInfo: true,
+            displayMsg: "Displaying Companies {0} - {1} of {2}",
+            emptyMsg: "No Companies found"
+        });
+        var grid = this.grid;
+        var gridHead = this.grid.getView().getHeaderPanel(true);
+        var tb = new Ext.Toolbar(gridHead);
+    
+        var refreshPager = function() {
+            _this.paging.onClick('refresh');
+        }
+        var _dialog = Pman.Dialog.Companies;
+        tb.add(
+            {
+                text: "Add",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/dd/drop-add.gif',
+                hidden : !Pman.hasPerm('Core.Companies', 'A'),
+                handler : function(){
+                    _dialog.show( { id : 0 }, refreshPager ); 
+                }
+            }, 
+            {
+                text: "Edit",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/tree/leaf.gif',
+                hidden : !Pman.hasPerm('Core.Companies', 'E'),
+                handler : function(){
+                    var s = grid.getSelectionModel().getSelections();
+                    if (!s.length || (s.length > 1))  {
+                        Ext.MessageBox.alert("Error", s.length ? "Select only one Row" : "Select a Row");
+                        return;
+                    }
+                    
+                    _dialog.show(s[0].data, refreshPager); 
+                }
+            },  
+            {
+                text: "Delete",
+                cls: 'x-btn-text-icon',
+                hidden : !Pman.hasPerm('Core.Companies', 'D'),
+                icon: rootURL + '/Pman/templates/images/trash.gif',
+               
+                handler : function(){
+                    Pman.genericDelete(_this, 'Companies'); 
+                }
+            }
+        );
+    
+        Pman.Tab.Office.add(this.innerLayout, 'south');
+        //this.toolbar = tb;
+        // add stuff to toolbar?
+        this.innerLayout.endUpdate();
+        
+        
+        
+    },
+    show: function (parentLayout, region)
+    {
+        this.add(parentLayout, region);
+        this.grid.getDataSource().load({
+            params: {
+                start:0, 
+                limit:25
+            }
+        });
+
+    },
+    getSelectedId : function()
+    {
+        var s = this.grid.getSelectionModel().getSelections();
+        if (s.length != 1)  {
+            return 0;
+        }
+        return s[0].data.id;
+        
+    }
+});
+
diff --git a/Pman.Tab.ContactGrps.js b/Pman.Tab.ContactGrps.js
new file mode 100644 (file)
index 0000000..9382eff
--- /dev/null
@@ -0,0 +1,26 @@
+//<script type="text/javascript">
+
+
+// fixme - needs a delayed create..
+
+
+Pman.on('beforeload', function()
+{ 
+    
+    
+
+    Pman.Tab.ContactGrps = new Pman.Tab.GroupsList({
+        id : 'cgroups',
+        title:  "Groups",
+        type : 2,
+        getDialog : function () { return Pman.Dialog.Groups; }
+    });
+    Pman.register({
+        modKey : '060-pman-tab-contactgrps',
+        module : Pman.Tab.ContactGrps,
+        region : 'west',
+        parent : Pman.Tab.ContactsMgr,
+        name : "Contacts Groups"
+    });
+        
+});
\ No newline at end of file
diff --git a/Pman.Tab.Contacts.js b/Pman.Tab.Contacts.js
new file mode 100644 (file)
index 0000000..08d7ba2
--- /dev/null
@@ -0,0 +1,75 @@
+//<script type="text/javascript">
+/**
+ * 
+ * The contacts..
+ * 
+ * -- this should implement personlist.!!!!
+ */
+Pman.on('beforeload', function()
+{
+    if (!Pman.hasPerm('Core.Person', 'E')) {
+        return;
+    }
+   
+    
+    
+    Pman.register({
+        modKey : '040-pman-tab-contacts',
+        module : Pman.Tab.Contacts,
+        region : 'center',
+        parent : Pman.Tab.ContactsMgr,
+        name : "Contacts List"
+    });
+
+    
+});
+Pman.Tab.Contacts = new Pman.Tab.PersonList({
+        id: 'contacts',
+        type: 2,
+        title : "Contacts",
+        itemDisplayName : "Contact",
+        permName : 'Core.Person',
+        getLeftSelections : function() {
+        
+            return Pman.Tab.ContactGrps.grid ? 
+                Pman.Tab.ContactGrps.grid.getSelectionModel().getSelections() : [];
+        },
+        beforeload: function(t, o) {
+                //console.log(o.params);
+            var _this= Pman.Tab.Contacts;
+            o.params['query[person_not_internal]'] = 1;
+            o.params['query[search]'] = _this.searchBox.getValue();
+            
+            var tms = _this.getLeftSelections();
+            
+            if (tms.length) {
+                o.params['query[in_group]'] = tms[0].data.id;
+            }
+            //o.params['query[name]'] = _this.searchBox.getValue();
+            o.params['query[type]'] = _this.type; // group type..
+            
+            
+            
+        }, 
+        columns : function()
+        {
+            return [
+                this.c_project_id_code(),
+                this.c_company_id_name(),
+                this.c_name(),
+                this.c_role(),
+                this.c_phone(),
+                this.c_fax(),
+                this.c_email() 
+            ]
+        },
+        dialog: function () {
+            return Pman.Dialog.PersonEdit;
+        },
+        bulkAdd : function() {
+            return Pman.Dialog.PersonBulkAdd;
+        },  
+        newDefaults : function() {  return { id : 0 }; }
+
+    
+    });
\ No newline at end of file
diff --git a/Pman.Tab.ContactsMgr.js b/Pman.Tab.ContactsMgr.js
new file mode 100644 (file)
index 0000000..ef70fc0
--- /dev/null
@@ -0,0 +1,88 @@
+//<script type="text/javascript">
+
+// Contacts Manager 
+// left - list of groups.
+// right - People...
+
+
+Pman.on('beforeload', function()
+{
+    
+    if (!Pman.hasPerm('Core.Person', 'E')) {
+        return;
+    }
+    // anyone with admin can see this.....
+    
+    Pman.register({
+        modKey : '060-pman-tab-contactsmgr',
+        module : Pman.Tab.ContactsMgr,
+        region : 'center',
+        parent : Pman.Tab.Admin,
+        name : "Contacts Manager"
+    });
+        
+});
+
+
+Pman.Tab.ContactsMgr = {
+    grid : false,
+    panel : false,
+    title : false, 
+    add : function(parentLayout, region) {
+        
+
+        if (this.panel) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+     
+        
+        this.layout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                west : {
+                    autoScroll:true,
+                    hideTabs: true,
+                    titlebar: true,
+                    split:true,
+                    initialSize: 250
+                },
+                center: {
+                    autoScroll:true,
+                    hideTabs: false,
+                     tabPosition: 'top'
+                   
+                }
+            }
+        );
+        
+        
+       
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.layout, {title: this.title || "Contacts Manager", background : true}));
+        var _this = this;
+        this.tab.on('activate', function() {
+            if (_this.layout.getRegion('west').panels.length) {
+                _this.layout.getRegion('west').showPanel(0);
+                Pman.Tab.ContactGrps.refresh();
+            } else {
+                Pman.Tab.Contacts.loadFirst();
+            }
+            _this.layout.getRegion('center').showPanel(0);
+            
+            
+            
+             
+            
+        });
+    },
+    donelayout : false //,
+    
+    //show: function (parentLayout, region)
+   // {
+     //   this.add(parentLayout, region);
+   //     
+
+    //} 
+};
\ No newline at end of file
diff --git a/Pman.Tab.GroupMgr.js b/Pman.Tab.GroupMgr.js
new file mode 100644 (file)
index 0000000..91459c8
--- /dev/null
@@ -0,0 +1,87 @@
+//<script type="text/javascript">
+
+// Groupmanager 
+// left - list of groups.
+// right - Permissions | Members..
+
+
+Pman.on('beforeload', function()
+{
+    
+  
+    if (!Pman.hasPerm('Core.Groups', 'E')) {
+        return;
+    }
+    Pman.register({
+        modKey : '060-pman-tab-groupmgr',
+        module : Pman.Tab.GroupMgr,
+        region : 'center',
+        parent : Pman.Tab.Admin,
+        name : "Groups and Permissions",
+        finalize : function() {
+            
+            var _this = Pman.Tab.GroupMgr;
+            if (!_this.layout) {
+                return;
+            }
+            
+            _this.layout.endUpdate(); 
+            
+        }
+    });
+    
+        
+});
+
+
+Pman.Tab.GroupMgr = {
+    grid : false,
+    panel : false,
+    add : function(parentLayout, region) {
+        
+
+        if (this.panel) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+     
+        
+        this.layout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                west : {
+                    autoScroll:true,
+                    hideTabs: true,
+                    titlebar: true,
+                    split:true,
+                    initialSize: 250
+                },
+                center: {
+                    autoScroll:true,
+                    hideTabs: false,
+                     tabPosition: 'top'
+                   
+                }
+            }
+        );
+        
+        
+       
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.layout, {title: "Permissions", background : true}));
+        var _this = this;
+        this.tab.on('activate', function() {
+            //console.log('groupmgr.activate');
+            //Pman.Tab.Group_Members.disableReload = true;
+            _this.layout.getRegion('center').showPanel(0);
+            Pman.Tab.Groups.refresh();
+            //Pman.Tab.Group_Members.disableReload = false;
+            
+            //Pman.Tab.Groups.grid.getDataSource().reload();
+            
+        });
+        this.layout.beginUpdate();
+    } 
+     
+};
\ No newline at end of file
diff --git a/Pman.Tab.Group_Members.js b/Pman.Tab.Group_Members.js
new file mode 100644 (file)
index 0000000..48ee2ba
--- /dev/null
@@ -0,0 +1,81 @@
+//<script type="text/javascript">
+/**
+ *  group membershipg - for permissions..
+ */
+ Pman.on('beforeload', function()
+{
+    //                case 1 : Pman.Tab.Projects.add(this.mainLayout, 'west'); break;
+    
+   
+    
+    Pman.register({
+        modKey : '001-pman-tab-groups-members',
+        module : Pman.Tab.Group_Members,
+        region : 'center',
+        parent : Pman.Tab.GroupMgr,
+        name : "Permission Group Membership"
+    });
+
+    
+});
+
+Pman.Tab.Group_Members = new  Pman.Tab.PersonList({
+    id : 'group_members',
+    type: 0,
+    title : "Staff Membership",
+    hideDelete: true, // as it's confusing..
+    getLeftSelections : function() {
+        return Pman.Tab.Groups.grid.getSelectionModel().getSelections();
+    },
+    
+    // beforeload handler... -- override on extended versions..
+    beforeload: function(t, o) {
+        //console.log(o.params);
+        // teams!?!
+        var tms = this.getLeftSelections();
+        
+        if (tms.length) {
+            o.params['query[in_group]'] = tms[0].data.id;
+        }
+        o.params['query[name]'] = this.searchBox.getValue();
+        o.params['query[type]'] = this.type; // group type..
+        o.params['query[person_internal_only_all]'] = 1;
+        o.params['query[person_inactive]'] = this.showInActive ? 0  : 1;
+        
+    },
+    
+    columns : function()
+    {
+        return [
+            this.c_name(),
+            this.c_office_id_name(),
+            this.c_role(),
+            this.c_phone(),
+            this.c_fax(),
+            this.c_email(),
+            this.c_active()
+        ]
+    },
+    
+    dialog: function () {
+        return Pman.Dialog.PersonStaff;
+    },
+    bulkAdd : function() {
+        //return Pman.Dialog.PersonBulkAdd
+        return false;
+    },
+    newDefaults : function() {
+        return {
+            
+            id : 0,
+            company_id : Pman.Login.authUser.company_id,
+            company_id_name : Pman.Login.authUser.company_id_name,
+            company_id_address : Pman.Login.authUser.company_id_address,
+            company_id_tel : Pman.Login.authUser.company_id_tel,
+            company_id_fax : Pman.Login.authUser.company_id_fax
+        };
+    }
+    
+});
\ No newline at end of file
diff --git a/Pman.Tab.Group_Rights.js b/Pman.Tab.Group_Rights.js
new file mode 100644 (file)
index 0000000..79ad976
--- /dev/null
@@ -0,0 +1,412 @@
+//<script type="text/javascript">
+
+/**
+ * 
+ * needs a translation list..
+ * 
+ * 
+ */
+ Pman.on('beforeload', function()
+{ 
+    
+    
+  Pman.register({
+        modKey : '002-pman-tab-groups-rights',
+        module : Pman.Tab.Group_Rights,
+        region : 'center',
+        parent : Pman.Tab.GroupMgr,
+        name : "Permission Groups"
+    });
+});
+
+Pman.ColModels.Group_RightsRenderer =  function(v, c, r, ri, ci, st) {
+        // work out what the column is..
+        var h = Pman.Tab.Group_Rights.grid.getColumnModel().getColumnId(ci).toUpperCase();
+        // ADESPIM
+        var fm = r.json.FullMask;
+        state = '';
+        if (h == 'AA') { // All....
+            state = v== fm ? '-checked' : '';
+        } else if (v.indexOf(h.substring(3)) > -1) {
+            state = '-checked';
+        }
+        if (fm.indexOf(h.substring(3)) < 0) { // dont show checkboxes for no perms.
+            return '';
+        }
+        
+        return '<img class="x-grid-check-icon' + state + '" src="' + Ext.BLANK_IMAGE_URL + '"/>';
+        
+        
+};
+
+Pman.Tab.Group_Rights = {
+    rightNames : { }, // filled in by modules.
+       
+    
+    grid : false,
+    panel : false,
+    add : function(parentLayout, region) {
+        
+
+        if (this.panel) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+        var _this= this;
+        /*
+        this.innerLayout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                center: {
+                    autoScroll:true,
+                    hideTabs: true
+                }
+            }
+        );
+
+        
+
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.innerLayout, {title: "Rights", id: 'Group_Rights'}));
+        */
+       
+        //this.innerLayout.beginUpdate();
+       
+
+        var frm = parentLayout.getRegion(region).getEl().createChild({tag:'div', id: 'grid-group_rights'});
+        //this.grid = new Ext.grid.EditorGrid(frm,  {
+        this.grid = new Ext.grid.Grid(frm,  {
+                
+                ds:   new Ext.data.Store({
+                    // load using HTTP
+                    proxy: new Ext.data.HttpProxy({
+                        url: baseURL + '/Admin/GroupRights.php',
+                        method: 'GET'
+                    }),
+                    reader: Pman.Readers.Group_Rights,
+                    remoteSort: false,
+                    listeners : {
+                        beforeload : function(t,o)
+                        {
+                            if (!o.params) {
+                                o.params = {}
+                            }
+                            var s = Pman.Tab.Groups.grid.getSelectionModel().getSelections();
+                            if (!s.length) {
+                                o.params.group_id = -1;
+                            } else {
+                                o.params.group_id = s[0].data.id;
+                            }
+                            if (o.params.group_id < 0) {
+                                _this.grid.getView().el.mask("You can not set permissions for that group");
+                                return false;
+                            }
+                            _this.grid.getView().el.unmask();
+                            return true;
+                        },
+                        loadexception : Pman.loadException
+                    
+                    }
+                }), 
+                selModel: new Ext.grid.CellSelectionModel(),
+                cm: new Ext.grid.ColumnModel([
+                    {
+                        'id' : 'aa',
+                        header : "[All]",
+                        dataIndex : 'AccessMask',
+                        'sortable' : false,
+                        'width' : 50,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    },
+                    {
+                        'id' : 'group_rights-rightname',
+                        header : "Permission",
+                        'dataIndex' : 'rightname',
+                        'sortable' : false,
+                        'width' : 300,
+                        renderer : function (v,x,r) {
+                            
+                            if (r.json.descript && r.json.descript.length) {
+                                return String.format('{0}',r.json.descript);
+                            }
+                            
+                            
+                            // this needs to be generated by the modules..
+                            switch(v) {
+                                case   'Documents.Document_Manager': return "Document Manager";
+                                case   'Documents.Documents': return "Documents";
+                                case   'Documents.Unread_Documents': return "Unread Documents";
+                                case   'Documents.Distribute_Documents': return "Distribute Documents";
+                                case   'Documents.Work_In_Progress': return "Work In Progress";
+                                
+                                case   'Documents.Project_Directory': return "Project Directory";
+                                    
+                                 
+                                case   'Fax.Fax': return "Fax";
+                                case   'Fax.Fax_To_Company': return "Send Faxes To Companies";
+                                case   'Timesheet.Timesheet': return "Timesheet";
+                                
+                                case   'Admin.Admin_Tab':   return "Admin Tab";  
+                                case   'Core.Person': return "Person";
+                                case   'Core.Offices': return "Offices";
+                                case   'Core.Companies': return "Companies";
+                                    
+                                case   'Core.Staff': return "Staff";
+                                case   'Core.Groups': return "Groups";
+                               
+                                case   'Core.Events':   return "Events";
+                                default : 
+                                    if (typeof(Pman.rightNames[v]) == 'string' && Pman.rightNames[v].length) {
+                                        return String.format('{0}',Pman.rightNames[v]);
+                                    }
+                                    
+                                    return '???' + v;
+                                     
+                            }
+                            
+                            
+                        }
+                    },
+                    {
+                        'id' : 'am-a',
+                        header : "Add",
+                        'dataIndex' : 'AccessMask',
+                        'width' : 50,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    },
+                    {
+                        'id' : 'am-e',
+                        header : "Edit",
+                        'dataIndex' : 'AccessMask',
+                        'width' : 50,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    },
+                    {
+                        'id' : 'am-d',
+                        header : "Delete",
+                        'dataIndex' : 'AccessMask',
+                        'width' : 50,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    },
+                    {
+                        'id' : 'am-s', // S
+                        header : "List/View",
+                        'dataIndex' : 'AccessMask',
+                        'width' : 90,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    }, // P= print / I= import (not used)
+                    
+                     {
+                        'id' : 'am-p',
+                        header : "Print / Export",
+                        'dataIndex' : 'AccessMask',
+                        'width' : 100,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    }, /*
+                    {
+                        'id' : 'AM-I',
+                        header : "Import",
+                        'dataIndex' : 'AccessMask',
+                        'width' : 50,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    },
+                    /*
+                    {
+                        'id' : 'AM-M',
+                        'header' : 'Admin mode',
+                        'dataIndex' : 'AccessMask',
+                        'width' : 100,
+                        'sortable' : false,
+                        renderer : Pman.ColModels.Group_RightsRenderer
+                    },
+                    */
+                    {
+                        'id': 'group_rights-remarks',
+                        header : '',
+                        dataIndex : 'Remarks',
+                        'sortable' : false,
+                        'width' : 50 
+                    }
+                ]),
+                autoExpandColumn: 'group_rights-remarks' , // fixme!!!!
+                clicksToEdit : 1,
+                
+                loadMask: true,
+                trackMouseOver : false,
+                listeners : {
+                    cellclick: function (g, ri, ci, e)
+                    {
+                        var h = g.getColumnModel().getColumnId(ci);
+                        //console.log(h);
+                        var fm = g.getDataSource().getAt(ri).json.FullMask;
+                        
+                        if (h.substring(0,2) == 'aa') {
+                            var old = g.getDataSource().getAt(ri).data.AccessMask;
+                            
+                            g.getDataSource().getAt(ri).set('AccessMask',
+                                old == fm ? "" : fm );
+                            return;
+                        }
+                        
+                        if (h.substring(0,2) != 'am') {
+                            return;
+                        }
+                        var c = h.substring(3).toUpperCase();
+                        
+                        if (fm.indexOf(c) < 0) {
+                            return; // skip no perms boxes
+                        }
+                        // ADESPIM
+                        //var def = 'ADESPIM';
+                        function toKV(str) {
+                           
+                            var ret = { };
+                            for(var i = 0;i< fm.length; i++) {
+                                var cc = fm.substring(i,i+1);
+                                ret[cc] = str.indexOf(cc) > -1;
+                            }
+                            return ret;
+                        }
+                        function toStr(obj) {
+                           
+                            var ret = '';
+                            for(var i = 0;i< fm.length; i++) {
+                                var cc = fm.substring(i,i+1);
+                                if (obj[cc]) {
+                                    ret += cc;
+                                }
+                            }
+                            //console.log(ret);
+                            return ret;    
+                        }
+                        
+                        
+                        // get existing value..
+                        var conf = toKV(g.getDataSource().getAt(ri).data.AccessMask);
+                        conf[c] = !conf[c];
+                        g.getDataSource().getAt(ri).set('AccessMask',toStr(conf));
+                    }
+                    
+                }
+                 
+        });
+        this.grid.getSelectionModel().lock();
+        this.panel  = parentLayout.add(region,  new Ext.GridPanel(this.grid ,
+            { fitToframe: true,fitContainer: true, title: "Rights", id: 'group_rights', controller : this })
+        );
+        this.grid.render();
+        /*
+        var gridFoot = this.grid.getView().getFooterPanel(true);
+        
+        this.paging = new Ext.PagingToolbar(gridFoot, this.grid.getDataSource(), {
+            pageSize: 25,
+            displayInfo: true,
+            displayMsg: "", 
+            emptyMsg: ""
+        });
+        */
+        var grid = this.grid;
+        var gridHead = this.grid.getView().getHeaderPanel(true);
+        var tb = new Ext.Toolbar(gridHead);
+        
+      
+        
+        tb.add(
+            {
+                text: "Save",
+                cls: 'x-btn-text-icon',
+                icon: rootURL + '/Pman/templates/images/save.gif',
+                hidden : !Pman.hasPerm('Core.Groups', 'E'),
+                handler : function(){
+                    var data = {}; 
+                    grid.getDataSource().each(function(r) {
+                            if (!r.dirty) {
+                                return;
+                            }
+                            data[r.data.id > -1 ? 'dataUpdate['+r.data.id+']' : 'dataAdd['+r.data.rightname+']'] = r.data.AccessMask;
+                            
+                    });
+                    
+                    data.group_id = grid.getDataSource().lastOptions.params.group_id;
+                    Ext.Ajax.request({
+                        url: baseURL + '/Admin/GroupRights.php',
+                        params : data,
+                        method: 'POST',
+                        success : function() {
+                            _this.refresh();
+                            //Pman.Tab.Group_Rights.paging.onClick('first');
+                        },
+                        failure: function() {
+                            Ext.MessageBox.alert("There was a problem saving the data");
+                        }
+                    });
+                }
+            }, 
+            '-',
+            {
+                text: "Reload",
+                 cls: 'x-btn-text-icon',
+                icon: rootURL + '/Pman/templates/images/refresh.gif',
+                handler : function(){
+                    _this.refresh();
+                }
+            } 
+        );
+        this.panel.on('activate', function() {
+            _this.refresh();
+        });
+            
+        //this.toolbar = tb;
+        // add stuff to toolbar?
+        //this.innerLayout.endUpdate();
+        
+        
+        
+    },
+    refresh : function() {
+        this.grid.getDataSource().reload();
+    },
+    /*
+    show: function (parentLayout, region)
+    {
+        this.add(parentLayout, region);
+        this.grid.getDataSource().load({
+            params: {
+                start:0, 
+                limit:25
+            }
+        });
+
+    },
+    */
+    renderer: function(v, c, r, ri, ci, st) {
+        // work out what the column is..
+        var h = Pman.Tab.Group_Rights.grid.getColumnModel().getColumnId(ci).toUpperCase();
+        // ADESPIM
+        
+        if (v.indexOf(h.substring(3)) > -1) {
+            return 'Y';
+        }
+        
+        return '-';
+        
+    },
+    save : function()
+    {
+       
+    }
+        
+        
+};
diff --git a/Pman.Tab.Groups.js b/Pman.Tab.Groups.js
new file mode 100644 (file)
index 0000000..96a1ebb
--- /dev/null
@@ -0,0 +1,27 @@
+//<script type="text/javascript">
+
+
+// fixme - needs a delayed create..
+
+
+Pman.on('beforeload', function()
+{ 
+    
+    Pman.Tab.Groups.title = "Groups";
+    
+    Pman.register({
+        modKey : '00-pman-tab-groups',
+        module : Pman.Tab.Groups,
+        region : 'west',
+        parent : Pman.Tab.GroupMgr,
+        name : "Permission Groups"
+    });
+});   
+
+Pman.Tab.Groups = new Pman.Tab.GroupsList({
+    id : 'groups',
+    title:  "Groups", // fixme change to method!!!
+    type : 0,
+    getDialog : function () { return Pman.Dialog.Groups; }
+});
\ No newline at end of file
diff --git a/Pman.Tab.Office.js b/Pman.Tab.Office.js
new file mode 100644 (file)
index 0000000..bad55c5
--- /dev/null
@@ -0,0 +1,206 @@
+ //<script type="text/javascript">
+
+Pman.Tab.Office = {
+    grid : false,
+    panel : false,
+    add : function(parentLayout, region) {
+        
+
+        if (this.panel) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+     
+        
+        this.innerLayout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                center: {
+                    autoScroll:true,
+                    hideTabs: true
+                }
+            }
+        );
+
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.innerLayout, {title: "Offices / Departments / Sub-Companies" }));
+
+       
+        this.innerLayout.beginUpdate();
+        var _dialog = Pman.Dialog.Office;
+        var refreshPager = function() {
+            _this.paging.onClick('refresh');
+        }
+      
+        //this.grid = new Ext.grid.EditorGrid(frm,  {
+        this.grid = new Ext.grid.Grid(this.innerLayout.getEl().createChild({tag:'div'}),  {
+                id: 'grid-Office',
+                ds:   new Ext.data.Store({
+                    // load using HTTP
+                    proxy: new Ext.data.HttpProxy({
+                        url: baseURL + '/Roo/Office.html',
+                        method: 'GET'
+                    }),
+                    reader: Pman.Readers.Office,
+                    remoteSort: true,
+                    listeners : {
+                        beforeload: function(t, o) {
+                            //console.log(o.params);
+                            o.params.company_id = Pman.Tab.Companies.getSelectedId();
+                            if (!o.params.company_id) {
+                                return false;
+                               }
+                            
+                        },
+                     
+                        loadexception : Pman.loadException
+                    
+                    }
+                }),
+                cm: new Ext.grid.ColumnModel(
+                    [ {
+                        'id' : 'Office-name',
+                        header : "Name / Department / Sub Comp.",
+                        'dataIndex' : 'name',
+                        'sortable' : true,
+                        'width' : 200
+                    },{
+                        'id' : 'Office-phone',
+                        header : "Phone",
+                        'dataIndex' : 'phone',
+                        'sortable' : true,
+                        'width' : 100
+                    },{
+                        'id' : 'Office-fax',
+                        header : "Fax",
+                        'dataIndex' : 'fax',
+                        'sortable' : true,
+                        'width' : 100
+                    },{
+                        'id' : 'Office-email',
+                        header : "Email",
+                        'dataIndex' : 'email',
+                        'sortable' : true,
+                        'width' : 150,
+                        renderer : function (v) {
+                            return (v.length && v.indexOf('@') > 0 ) ? 
+                                String.format('<a href="mailto:{0}">{0}</a>',v) : v;
+                                
+                        }
+                    },{
+                        'id' : 'Office-address',
+                        header : "Address",
+                        'dataIndex' : 'address',
+                        'sortable' : true,
+                        'width' : 300
+                    }]
+                ),
+                autoExpandColumn: 'Office-address' , // fixme!!!!
+                clicksToEdit : 1,
+                
+                loadMask: true,
+
+                listeners : {
+                    rowdblclick : function(g, ri, e) {
+                        var s = g.getDataSource().getAt(ri).data
+                        s.company_name = Pman.Tab.Companies.grid.getSelectionModel().getSelected().data.name;
+                        _dialog.show(s, refreshPager); 
+                    }
+                }
+                 
+        });
+        this.panel  = this.innerLayout.add('center',  new Ext.GridPanel(this.grid ,
+            { fitToframe: true,fitContainer: true })
+        );
+        this.grid.render();
+        var gridFoot = this.grid.getView().getFooterPanel(true);
+        this.paging = new Ext.PagingToolbar(gridFoot, this.grid.getDataSource(), {
+            pageSize: 25,
+            displayInfo: true,
+            displayMsg: "Displaying Offices {0} - {1} of {2}",
+            emptyMsg: "No Offices found"
+        });
+        var grid = this.grid;
+        var gridHead = this.grid.getView().getHeaderPanel(true);
+        var tb = new Ext.Toolbar(gridHead);
+        var _this = Pman.Tab.Office;
+         
+       
+        
+        tb.add(
+            {
+                text: "Add",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/dd/drop-add.gif',
+                hidden : !Pman.hasPerm('Core.Offices', 'A'),
+                handler : function(){
+                    if (!Pman.Tab.Companies.grid.getSelectionModel().getSelections().length) {
+                        Ext.MessageBox.alert("Select a company to add a office to");
+                        return;
+                    }
+                    var cdata = Pman.Tab.Companies.grid.getSelectionModel().getSelected().data;
+                    _dialog.show( { 
+                        id : 0 ,
+                        company_name : cdata.name,
+                        company_id : cdata.id,
+                        address : cdata.address,
+                        phone : cdata.tel,
+                        fax : cdata.fax,
+                        email  : cdata.email
+                    }, refreshPager );  
+                }
+            }, 
+            {
+                text: "Edit",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/tree/leaf.gif',
+               hidden : !Pman.hasPerm('Core.Offices', 'E'),
+                handler : function(){
+                    var s = grid.getSelectionModel().getSelections();
+                    if (!s.length || (s.length > 1))  {
+                        Ext.MessageBox.alert("Error", s.length ? "Select only one Row" : "Select a Row");
+                        return;
+                    }
+                    // we should have company_id - just need name..
+                    s[0].data.company_name = Pman.Tab.Companies.grid.getSelectionModel().getSelected().data.name;
+                    _dialog.show(s[0].data, refreshPager); 
+                    
+                }
+            },  
+            {
+                text: "Delete",
+                cls: 'x-btn-text-icon',
+                icon: rootURL + '/Pman/templates/images/trash.gif',
+                hidden : !Pman.hasPerm('Core.Offices', 'D'),
+                handler : function(){
+                    Pman.genericDelete(_this, 'Office'); 
+                }
+            } 
+        );
+        this.tab.on('activate', function() {
+           //_this.paging.onClick('refresh');
+        });
+            
+        //this.toolbar = tb;
+        // add stuff to toolbar?
+        this.innerLayout.endUpdate();
+        
+        
+        
+    },
+    show: function (parentLayout, region)
+    {
+        this.add(parentLayout, region);
+        this.grid.getDataSource().load({
+            params: {
+                start:0, 
+                limit:25
+            }
+        });
+
+    }
+};
diff --git a/Pman.Tab.PersonStaff.js b/Pman.Tab.PersonStaff.js
new file mode 100644 (file)
index 0000000..99dd3ce
--- /dev/null
@@ -0,0 +1,84 @@
+//<script type="text/javascript">
+
+/**
+ * 
+ * Staff list with General Group adding ability.
+ * 
+ */
+Pman.on('beforeload', function()
+{
+     
+    Pman.register({
+        modKey : '001-pman-tab-personlist',
+        module : Pman.Tab.PersonStaff,
+        region : 'center',
+        parent : Pman.Tab.StaffMgr,
+        name : "Staff"
+    });
+   
+    // where is this loaded into??? - by staffmgr - ** fix this...
+      
+   
+    
+});
+
+Pman.Tab.PersonStaff = new  Pman.Tab.PersonList({
+    id : 'personstaff',
+    type: 1,
+    permName : 'Core.Staff', // or 'Core.Staff'
+    getLeftSelections : function() {
+        
+        return Pman.Tab.Teams.grid ? Pman.Tab.Teams.grid.getSelectionModel().getSelections() : [];
+    },
+    
+    
+    
+    
+    // beforeload handler... -- override on extended versions..
+    beforeload: function(t, o) {
+        //console.log(o.params);
+        // teams!?!
+        var tms = this.getLeftSelections();
+        
+        if (tms.length) {
+            o.params['query[in_group]'] = tms[0].data.id;
+        }
+        o.params['query[name]'] = this.searchBox.getValue();
+        o.params['query[type]'] = this.type; // group type..
+        o.params['query[person_internal_only_all]'] = 1;
+        o.params['query[person_inactive]'] = this.showInActive ? 0  : 1;
+        
+    },
+    
+    columns : function()
+    {
+        return [
+            this.c_name(),
+            this.c_office_id_name(),
+            this.c_role(),
+            this.c_phone(),
+            this.c_fax(),
+            this.c_email(),
+            this.c_active()
+        ]
+    },
+    
+    dialog: function () {
+        return Pman.Dialog.PersonStaff;
+    },
+    bulkAdd : function() {
+        //return Pman.Dialog.PersonBulkAdd
+        return false;
+    },
+    newDefaults : function() {
+        return {
+            
+            id : 0,
+            company_id : Pman.Login.authUser.company_id,
+            company_id_name : Pman.Login.authUser.company_id_name,
+            company_id_address : Pman.Login.authUser.company_id_address,
+            company_id_tel : Pman.Login.authUser.company_id_tel,
+            company_id_fax : Pman.Login.authUser.company_id_fax
+        };
+    }
+});
\ No newline at end of file
diff --git a/Pman.Tab.ProjectMgr.js b/Pman.Tab.ProjectMgr.js
new file mode 100644 (file)
index 0000000..cad8d3d
--- /dev/null
@@ -0,0 +1,357 @@
+//<script type="text/javascript">
+  
+// tab on left...  
+Pman.on('beforeload', function()
+{
+    //                case 1 : Pman.Tab.Projects.add(this.mainLayout, 'west'); break;
+    
+    return;
+    if (!Pman.hasPerm('Core.Projects_All', 'E')) {
+        return;
+    }
+    Pman.register({
+        modKey : '010-pman-tab-projectmgr',
+        module : Pman.Tab.ProjectsMgr,
+        region : 'center',
+        parent : Pman.Tab.Admin,
+        name : "Project Manager"
+    });
+});
+   
+
+Pman.Tab.ProjectsMgr = {
+    grid : false,
+    panel : false,
+    disabled:  false,
+    filter : 'P,N,U',
+    searchBox : false,
+    add : function(parentLayout, region) {
+        if (this.disabled) {
+            return;
+        }
+        // add to the menu!!
+        Pman.subMenuItems.push({
+                seqid : 401,
+                text: "Add Project",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/dd/drop-add.gif',
+                
+                handler : function() {
+                    Pman.Dialog.Projects.show( 
+                        { 
+                            id : 0
+                        },
+                        function(data) {
+                            Pman.refreshActivePanel();
+                    }); 
+                }
+        });
+        Pman.subMenuItems.push( new Roo.menu.Separator({
+            seqid : 402
+        }));
+        
+        
+        if (this.panel) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+     
+        
+        this.innerLayout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                center: {
+                    autoScroll:true,
+                    hideTabs: true
+                }
+            }
+        );
+
+        var _this = this;
+
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.innerLayout, {title: "Projects", background: true}));
+            
+        this.tab.on('activate', function() {
+           // console.log('activate');
+            _this.delayedCreate();
+            _this.paging.onClick('refresh');
+        });
+    },
+    delayedCreate :  function() 
+    {
+        if (this.grid) {
+            return;
+        }
+        var _this = this;
+        this.innerLayout.beginUpdate();
+        var refreshPager = function() {
+            _this.paging.onClick('refresh');
+        }
+
+        var frm = this.innerLayout.getEl().createChild({tag:'div'});
+        //this.grid = new Ext.grid.EditorGrid(frm,  {
+        this.grid = new Ext.grid.Grid(frm,  {
+                id: 'grid-projectsmgr',
+                ds:   new Ext.data.Store({
+                    // load using HTTP
+                    proxy: new Ext.data.HttpProxy({
+                        url: baseURL + '/Roo/Projects.php',
+                        method: 'GET'
+                    }),
+                    remoteSort: true,
+                    reader: Pman.Readers.Projects,
+                     
+                    listeners : {
+                        
+                        beforeload: function(t, o) {
+                            //console.log(o.params);
+                            // teams!?!
+                            o.params = o.params ? o.params : {};
+                            o.params['query[project_search]'] = _this.searchBox.getValue();
+                            o.params['query[project_filter]'] = _this.filter;
+                            
+                            
+                        },
+                        loadexception : Pman.loadException
+                    
+                    },
+                    sortInfo: {
+                        field: 'code', direction: 'DESC'
+                    }
+                }),
+                cm: new Ext.grid.ColumnModel(
+                    [
+                    {
+                    //    id : 'Projects-type',
+                        header : "Type",
+                        dataIndex : 'type',
+                        sortable : true,
+                        width : 130,
+                        renderer : function(v)
+                        {
+                            return _this.typeToString(v)
+                        }
+                    },
+                    
+                    {
+                       // id : 'Projects-code',
+                        header : "Code",
+                        dataIndex : 'code',
+                        sortable : true,
+                        width : 70
+                    }, 
+                    {
+                     //   id : 'Projects-name',
+                        header : "Project Name",
+                        dataIndex : 'name',
+                        sortable : true,
+                        width : 300
+                    },
+                    {
+                     //   id : 'Projects-name',
+                        header : "Client",
+                        dataIndex : 'client_id_name',
+                        sortable : true,
+                        width : 150
+                    },
+                    {
+                     //   id : 'Projects-name',
+                        header : "Team",
+                        dataIndex : 'team_id_name',
+                        sortable : true,
+                        width : 100
+                    },
+                    
+                    
+                    {
+                        id : 'projects-remarks',
+                        header : "Remarks",
+                        dataIndex : 'remarks',
+                        sortable : true,
+                        width : 300
+                    }  ]
+                ),
+                autoExpandColumn: 'projects-remarks' , // fixme!!!!
+                clicksToEdit : 1,
+                
+                loadMask: true,
+
+                listeners: {
+                    
+                    rowdblclick : function(g, ri, e) {
+                        var s = g.getDataSource().getAt(ri).data;
+                      
+                        _dialog.show(s, refreshPager); 
+                    }
+                }
+                 
+        });
+        this.panel  = this.innerLayout.add('center',  new Ext.GridPanel(this.grid ,
+            { fitToframe: true,fitContainer: true })
+        );
+        this.grid.render();
+        var gridFoot = this.grid.getView().getFooterPanel(true);
+        this.paging = new Ext.PagingToolbar(gridFoot, this.grid.getDataSource(), {
+            pageSize: 25,
+            displayInfo: true,
+            displayMsg: "",
+            emptyMsg: ""
+        });
+        var grid = this.grid;
+        var gridHead = this.grid.getView().getHeaderPanel(true);
+        var tb = new Ext.Toolbar(gridHead);
+        
+       
+        this.searchBox = new Ext.form.TextField({
+            name: 'search',
+            width:135,
+            listeners : {
+                specialkey : function(f,e)
+                {
+                    
+                    if (e.getKey() == 13) {
+                        
+                        refreshPager();
+                    } 
+                   
+                
+                }
+            }
+         
+        });
+    
+       
+        var _dialog = Pman.Dialog.Projects;
+        tb.add(
+            {
+                text: "Add",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/dd/drop-add.gif',
+                handler : function(){
+                    _dialog.show( { id: 0 }, refreshPager); 
+                }
+            }, 
+            {
+                text: "Edit",
+                cls: 'x-btn-text-icon',
+                icon: Ext.rootURL + 'images/default/tree/leaf.gif',
+                   
+                handler : function(){
+                    var s = grid.getSelectionModel().getSelections();
+                    if (!s.length || (s.length > 1))  {
+                        Ext.MessageBox.alert("Error", s.length ? "Select only one Row" : "Select a Row");
+                        return;
+                    }
+                    _dialog.show(s[0].data, refreshPager); 
+                }
+            }, '-',
+            'Search: ',
+            this.searchBox,
+            {
+                
+               
+                icon: rootURL + '/Pman/templates/images/search.gif', // icons can also be specified inline
+                cls: 'x-btn-icon',
+                qtip: "Search",
+                handler : function () {
+                    //_this.grid.getSelectionModel().clearSelections();
+                    refreshPager();
+                }
+            },   
+             {
+                
+               
+                icon: rootURL + '/Pman/templates/images/edit-clear.gif', // icons can also be specified inline
+                cls: 'x-btn-icon',
+                qtip: "Reset Search",
+                handler : function () {
+                    _this.searchBox.setValue('');
+                    //_this.grid.getSelectionModel().clearSelections();
+                    refreshPager();
+                }
+            },
+            '-',
+            'Show : ',
+            {
+                text: "All",
+                toggleGroup : 'pgrp',
+                pressed : true,
+                enableToggle: true,
+                toggleHandler : function(b, st) { if (st) { _this.filter = 'P,N,U'; } refreshPager();}
+            },
+            {
+                text: "Projects",
+                toggleGroup : 'pgrp',
+                pressed : false,
+                enableToggle: true,
+                toggleHandler : function(b, st) { if (st) { _this.filter = 'P,U'; } refreshPager();}
+            },
+            {
+                text: "Non-Projects",
+                toggleGroup : 'pgrp',
+                pressed : false,
+                enableToggle: true,
+                toggleHandler : function(b, st) { if (st) { _this.filter = 'N'; } refreshPager();}
+            },
+            {
+                text: "Closed",
+                toggleGroup : 'pgrp',
+                pressed : false,
+                enableToggle: true,
+                toggleHandler : function(b, st) { if (st) { _this.filter = 'X,C'; } refreshPager();}
+            }
+             
+        );
+        
+            
+        //this.toolbar = tb;
+        // add stuff to toolbar?
+        this.innerLayout.endUpdate();
+        
+         // _this.paging.onClick('refresh');
+        
+    },
+    show: function (parentLayout, region)
+    {
+        this.add(parentLayout, region);
+        this.grid.getDataSource().load({
+            params: {
+                start:0, 
+                limit:25
+            }
+        });
+
+    },
+    
+    getTypes: function()
+    {
+        return [
+            [  'U' , "Project (Unconfirmed)" ],
+            [  'P' , "Project" ],
+            [  'C' , "Project (Closed)" ],
+            [  'N' , "Non-Project" ],
+            [  'X' , "Non-Project (Closed)" ]
+        
+        ];
+    },
+    typeToString : function(v)
+    {
+        var ar = this.getTypes();
+        var ret = '';
+        Ext.each(ar, function(a) {
+            if (a[0] == v) {
+                ret = a[1];
+                return false;
+            }
+        });
+        return ret;
+    }
+    
+    
+    
+};   
+    
diff --git a/Pman.Tab.StaffMgr.js b/Pman.Tab.StaffMgr.js
new file mode 100644 (file)
index 0000000..8c6ff65
--- /dev/null
@@ -0,0 +1,87 @@
+//<script type="text/javascript">
+
+// Groupmanager 
+// left - list of groups.
+// right - Permissions | Members..
+Pman.on('beforeload', function()
+{
+    //                case 1 : Pman.Tab.Projects.add(this.mainLayout, 'west'); break;
+    
+    if (!Pman.hasPerm('Core.Staff', 'E')) {
+        return;
+    }   
+    Pman.register({
+        modKey : '020-pman-tab-staffmgr',
+        module : Pman.Tab.StaffMgr,
+        region : 'center',
+        parent : Pman.Tab.Admin,
+        name : "Staff Manager",
+        finalize : function() {
+            
+            var _this = Pman.Tab.StaffMgr;
+            if (!_this.layout) {
+                return;
+            }
+            
+            _this.layout.endUpdate(); 
+            
+        }
+    });
+    
+});
+
+Pman.Tab.StaffMgr = {
+    grid : false,
+    panel : false,
+    title: false,
+    add : function(parentLayout, region) {
+        var _this = this;
+        if (this.panel) {
+            parentLayout.getRegion(region).showPanel(this.panel);
+            return;
+        }
+     
+        
+        this.layout = new Ext.BorderLayout(
+            parentLayout.getEl().createChild({tag:'div'}),
+            {
+               
+                west : {
+                    autoScroll:true,
+                    hideTabs: true,
+                    titlebar: true,
+                    split:true,
+                    initialSize: 250
+                },
+                center: {
+                    autoScroll:true,
+                    hideTabs: false,
+                     tabPosition: 'top'
+                   
+                }
+            }
+        );
+        
+        
+       
+        this.tab = parentLayout.add(region,  new Ext.NestedLayoutPanel(
+            this.layout, {title: this.title || "Staff / Teams", background: true}));
+        
+        this.tab.on('activate', function() {
+            _this.layout.getRegion('center').showPanel(0);
+            
+            if (_this.layout.getRegion('west').panels.length) {
+                _this.layout.getRegion('west').showPanel(0); // forces a refresh..
+                Pman.Tab.Teams.refresh();
+              // Pman.Tab.Teams.refresh();
+            } else {
+                 Pman.Tab.PersonStaff.loadFirst();
+                
+            }
+            
+            
+        });
+        this.layout.beginUpdate();
+
+    }  
+};
\ No newline at end of file
diff --git a/Pman.Tab.Teams.js b/Pman.Tab.Teams.js
new file mode 100644 (file)
index 0000000..5204fb6
--- /dev/null
@@ -0,0 +1,25 @@
+//<script type="text/javascript">
+
+
+// fixme - needs a delayed create..
+
+
+Pman.on('beforeload', function()
+{ 
+    
+    Pman.register({
+        modKey : '00-pman-tab-teams',
+        module : Pman.Tab.Teams,
+        region : 'west',
+        parent : Pman.Tab.StaffMgr,
+        name : "Staff Teams"
+    });
+});
+Pman.Tab.Teams = new Pman.Tab.GroupsList({
+    id : 'teams',
+    title:  "Teams",
+    type : 1,
+    getDialog : function () { return Pman.Dialog.Groups; }
+});
+    
\ No newline at end of file
diff --git a/Signup.php b/Signup.php
new file mode 100644 (file)
index 0000000..fa65cd8
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+require_once 'Pman.php';
+
+class Pman_Admin_Signup extends Pman 
+{
+    function getAuth() {
+        parent::getAuth(); // load company!
+        $au = $this->getAuthUser();
+        if (!$au) {
+            $this->jerr("Not authenticated", array('authFailure' => true));
+        }
+        $this->authUser = $au;
+        if ($au->company()->comptype != 'OWNER') {
+             $this->jerr("Permission Denied - not owner company" );
+        }
+        return true;
+    }
+    
+    function post()
+    {
+        
+        $si = DB_DataObject::factory('Signup');
+        if (empty($_REQUEST['id']) || ! $si->get($_REQUEST['id'])) {
+            $this->jerr("invalid request");
+        }
+        if ($si->person_id != 0 ){
+            $si->jerr("Account already processed");
+        }
+        // rejected..
+        if ($_REQUEST['person_id'] < 0) {
+            $si->setFrom($_REQUEST);
+            $si->update();
+            $this->jok("OK");
+        }
+        
+        $p = DB_DataObject::factory("Person");
+        $p->setFrom($_REQUEST);
+        $p->insert();
+        
+        
+        $si->setFrom($_REQUEST);
+        $si->person_id = $p->id;
+        $si->update();
+        
+        // generate a password
+        // and send welcome message.
+        
+        
+        
+        $this->jok($p->toArray());
+    }
+}
\ No newline at end of file
diff --git a/Translations.php b/Translations.php
new file mode 100644 (file)
index 0000000..0cb1ec0
--- /dev/null
@@ -0,0 +1,276 @@
+<?php
+
+
+/**
+ * Translation
+ * - 
+ * 
+ * 
+ * 
+ * 
+ */
+
+require_once 'Pman.php';
+
+class Pman_Admin_Translations extends Pman
+{
+    
+    var $prefix = '';
+    var $fn = '';
+    var $data = array();
+    
+    
+    function getAuth()
+    {
+        parent::getAuth();
+        $au = $this->getAuthUser();
+        if (!$au) {
+            $this->jerr("Not authenticated", array('authFailure' => true));
+        }
+        $this->authUser = $au;
+        return true;
+    }
+    
+    function get()
+    {
+        // load and parse json file containing all translations...
+        if (isset($_REQUEST['id'])) {
+            return $this->post();
+        }
+        if (empty($_REQUEST['lang']) || !preg_match('/^[A-Z_]+$/i', $_REQUEST['lang'])) {
+            $this->jerr("NO LANG / INVALID LANG");
+        }
+        $fm = HTML_FlexyFramework::get();
+        $enable = explode(',', $fm->enable);
+        if (empty($_REQUEST['module']) || !in_array($_REQUEST['module'], $enable)) {
+            $this->jerr("NO MODULE / INVALID MODULE");
+        }
+        
+        $lang = $_REQUEST['lang'];
+        $module = $_REQUEST['module'];
+        
+        
+        $data = $this->loadOriginalStrings($lang,$module); // what needs translating..
+        
+        $translated_data = $this->loadTranslate($lang, $module); // the 'database!'
+        
+        
+        
+        // overlay translated..
+        if (empty($translated_data)) {
+            // try using old data!!!!
+            $translated_data = $this->loadOld($lang,$data); // phase out???
+                    
+        }
+        // covert data ready to send back..
+        
+        $ret = array();
+        foreach($data as $k=>$ar) {
+            foreach($ar as $tr=>$trv) {
+                // $hint = isset($hints[$tr]) ? $hints[$tr] : '';
+                $key = md5($k.'-'.$tr);
+                $ret[] = array(
+                    'id' => $lang.'/'.$key,
+                    'msum' => $key,
+                    'colname' => $k,
+                    'origtxt' => $tr,
+                    'txt' => isset($translated_data[$key]) ? $translated_data[$key] : '',
+                   // 'suggest' => $hint
+                );
+                
+            }
+        }
+        
+        
+        $this->jdata($ret);
+        
+        
+        exit;
+        
+    }
+    
+      function post() 
+    {
+         
+        $fm = HTML_FlexyFramework::get();
+        $enable = explode(',',   $fm->enable);
+        if (empty($_REQUEST['module']) || !in_array($_REQUEST['module'], $enable)) {
+            $this->jerr("NO MODULE / INVALID MODULE");
+        }
+        
+        //id   zh_HK/54e1d44609e3abed11f6e1eb6ae54988
+        //txt  é \85ç\9b®
+        list($lang,$id) = explode('/', $_REQUEST['id']);
+        
+        
+        $data = $this->loadTranslate($lang,$_REQUEST['module']);
+        if (empty($data)) {
+            // try using old data!!!!
+            $data = $this->loadOld($lang,$data); // phase out???
+                    
+        }
+        $data[$id] = $_REQUEST['txt'];
+        
+        
+        $this->writeTransMod($lang,$_REQUEST['module'], $data);
+        // write merged file..
+        //$this->prefix = '_T["'.$lang .'"]=';
+        //file_put_contents($this->fn, $this->prefix. $j->encode($this->data).';');
+        $this->jok("OK");
+    }
+    
+    /**
+     * load strings that need translating..
+     */
+    
+    function loadOriginalStrings($lang, $module)
+    {
+        // since this can handle errors better.!!?
+        require_once 'Services/JSON.php';
+        $j = new Services_JSON();
+        
+        
+        $trans = file_get_contents(
+            dirname(__FILE__) . '/../' . $module. "/compiled/_translation_.js");
+        
+        
+        return (array) $j->decode('{'. $trans .'}');
+    }
+    
+     
+    
+    
+    /**
+     * 
+     * Load the user translated strings.
+     * 
+     */
+    function loadTranslate($lang, $module)
+    {
+         
+        $fn = $this->getTransFilename($lang,$module);
+        
+         
+        if (!file_exists($fn)) {
+            return array();
+        }
+        
+        return (array) json_decode(file_get_contents($fn));
+        //$this->data = (array) $j->decode(substr(file_get_contents($this->fn), strlen($this->prefix), -1));
+    }
+    
+    
+    function loadTranslateDB($lang, $module)
+    {
+        $d = DB_DataObject('translations');
+        $d->module = $module;
+        $d->lang = $lang;
+        $d->find();
+        while ($d->fetch()) {
+            if (!isset($ret[$d->tfile])) {
+                $ret[$d->tfile] = array( $d->tkey => $d->tval );
+                continue;
+            }
+            $ret[$d->tfile][$d->tkey] = $d->tval;
+        }
+        return $ret;
+    }
+    
+    function saveTranslateDB($lang, $module, $tfile, $tkey, $tval)
+    {
+        $d = DB_DataObject('translations');
+        $d->module = $module;
+        $d->lang = $lang;
+        $d->tfile = $tfile;
+        $d->tkey = $tkey;
+        if ($d->find(true)) {
+            $d->tval = $tval;
+            $d->update();
+        }
+        $d->tval = $tval;
+        $d->insert();
+        
+    }
+    
+    
+    
+    
+    function getTransFilename($lang, $module)
+    {
+        $fn = dirname(__FILE__).'/../../_translations_/'. $lang . '/'. $module.'.json';
+        if (!file_exists(dirname($fn))) {
+            
+            /// create the direct
+            $oldumask = umask(0);
+            mkdir(dirname($fn), 0770, true);
+            umask($oldumask);  
+            clearstatcache();
+            if (!file_exists(dirname($fn))) {
+                $this->jerr("_translations_ directory does not exist in Pman folder");
+            }
+            
+        }
+        return $fn;
+    }
+    
+    
+  
+    function loadOld($lang,$data)
+    {
+        // need the old for hinting..
+        $old = (array) json_decode(file_get_contents(dirname(__FILE__).'/data/oldeng.js'));
+        //print_r($old);
+        // contains key/value of data..
+        $prefix = '_T["'.$lang .'"]=';
+        $trans = (array) json_decode(substr(file_get_contents(
+            dirname(__FILE__).'/data/lang.' . $lang . '.js'
+        ), strlen($prefix), -1));
+        
+       // echo '<PRE>';print_r($trans);
+        
+        $hints = array();
+        foreach($old as $k=>$v) {
+            if (isset($trans[$k]) && empty($hints[$v])) {
+                $hints[$v] = $trans[$k];
+            }
+        }
+        $translated_data = array();
+        foreach($data as $k=>$ar) {
+                foreach($ar as $tr=>$trv) {
+                $key = md5($k.'-'.$tr);
+                if (isset($hints[$tr])) {
+                    $translated_data[$key] = $hints[$tr];
+                }
+            }
+        }
+        // $this->writeTransMod($lang, $module, $translated_data);
+        //echo '<PRE>';print_r($hints);
+        return $translated_data;
+        
+    }
+    
+    function writeTransMod($lang, $module, $data)
+    {
+        $fn = $this->getTransFilename($lang, $module);
+        file_put_contents($fn, json_encode($data));
+        
+        $base = dirname(__FILE__).'/../../_translations_' ;
+        $out = '';
+        foreach(scandir($base) as $l) {
+             
+            if (!strlen($l) || $l[0] == '.' || !is_dir("$base/$l") || !file_exists("$base/$l/$module.json")) {
+                continue;
+            }
+              
+            $out .= "_T.$l= Roo.apply( _T.$l || { }, " . file_get_contents("$base/$l/$module.json") . ");\n";
+        }
+        //var_dump($out);
+        if (strlen($out)) {
+            file_put_contents("$base/$module.js", $out);
+        }
+        //$this->writeTrans($lang);
+    }
+     
+    
+    
+}
\ No newline at end of file
diff --git a/compiled/Admin.js b/compiled/Admin.js
new file mode 100644 (file)
index 0000000..dccbb07
--- /dev/null
@@ -0,0 +1,312 @@
+if (typeof(_T) == 'undefined') { _T={};}
+_T["14d6689659ede20bce95a3afbc69d7f5"]="Teams";
+_T["1657530925c817b429ddb4bf97fe0978"]="Staff Teams";
+
+_T["69da01e457e2f2a0ebb02e596194c754"]="Admin";
+_T["b867721a6c0fe529a256cc3184811368"]="Add Project";
+_T["9f4b723d1ffa9b3fb6c01391903bdfca"]="Administration";
+
+_T["5a178e059ab3533daa4a3f07c19fb1f9"]="Groups";
+_T["1ff9f57e39e5c607eb754a217a12f625"]="Permission Groups";
+
+_T["8364277cb7aebb7e939b6128959be85b"]="Add";
+_T["11d2a9130faa2b53f8a0c46fcb65d6f9"]="Fax";
+_T["2850518f8fb2ce186d66fb5ab95fdc85"]="Edit";
+_T["05611ce987d955a0149e5796a3f0f21e"]="Email";
+_T["6a3e8f2743a8b83b817cd6225ef2ac02"]="Error";
+_T["4af68a421bd4ae25a16b075c1f31a0c7"]="Phone";
+_T["1b1040648d1bd36ebec9ccc00f273c2a"]="Delete";
+_T["7121653d4a85e0b6337deaad2461a3b3"]="Address";
+_T["374285ff04cce911b156900ad0610b83"]="Select a Row";
+_T["699d51392d6e7aa401d4d67392c51beb"]="No Offices found";
+_T["c0bcf22aa39b7db4fa40674ed7f21aa0"]="Select only one Row";
+_T["71dc5bd5d5eb3fbdb4480d14f83cec65"]="Name / Department / Sub Comp.";
+_T["f44c781279ab022f34d1670a1d691dd6"]="Displaying Offices {0} - {1} of {2}";
+_T["c698b2d2a29e44490e97854dc491b72d"]="Select a company to add a office to";
+_T["42603d9dedd89be3346d59211bc8d398"]="Offices / Departments / Sub-Companies";
+
+_T["0ba99120c6904bf4c044f70b983f41ff"]="Staff / Teams";
+_T["7688196bd4f26fe91afcb4ba89dbaa09"]="Staff Manager";
+
+_T["5ae0f91d1ab815d6345b3e7df8779e17"]="Contact";
+_T["f21683b352db77267c613f64cf9e72c2"]="Contacts";
+_T["eec34ef27f9d63f9cbb237a82c49c547"]="Contacts List";
+
+_T["d4650cf6ae2be8b06b0e97025f1bc35b"]="Permissions";
+_T["cb15ca57cc9364dac6ed578ec4248c42"]="Groups and Permissions";
+
+_T["3430b90edd3644ec8b40cf74e39b5a58"]="";
+_T["dd6a53f3ec4097eff373be1a2981b9f6"]="Save";
+_T["40e22bcebd4c093a709a1d94aae7eddf"]="Cancel";
+_T["03c47106e6347d6be442e141baeb198e"]="Leader";
+_T["67f112a05685b54d025b71df7e810c4c"]="Edit Team";
+_T["694107e645006e31b148fbad58162a53"]="Edit Group";
+_T["ef36841feea4b33d42303e3bb4f9ef6a"]="Group Name";
+_T["425f2679b8159c6c2befedf611498097"]="Searching...";
+_T["6f4ae3eb4445956d92c6467a6dbb65e2"]="Enter Group name";
+_T["0cbfa2f00e443885deb6af46c307b514"]="Select Person Who opened";
+
+_T["4730343a950fbffdaababbff1106f875"]="Logs";
+
+_T["89d47001ed0bc7dce8089c70c530e9da"]="Add";
+_T["3295810216bdf4311365063e10ab15cb"]="Fax";
+_T["b29f1cefbb7b2c837888af98c72673a7"]="Tel";
+_T["fa7ded56a3e7a4cd4bd4355c8001d4e7"]="Edit";
+_T["72a390bba1504e6d0edeb309a3bd4e50"]="Name";
+_T["7b07e722ca6652676cdf3b792ea3d770"]="Ref#";
+_T["b6d43af91616495569344be2097741a6"]="Type";
+_T["68aa6f83f2ee6598843f2f2f92f7ffce"]="Email";
+_T["d07b747fbfea3158969027710bafd7a0"]="Error";
+_T["e8be59bd01083870754856e8af6a9798"]="Delete";
+_T["e1ed0accd8e0c6be1be42cf909dc9894"]="Address";
+_T["c54291aca733e7fad1cbbb4eb61b757f"]="Offices";
+_T["342885a7034a793650de1341f12ca378"]="Remarks";
+_T["fa937535d755805fbd6c75f5299a1ecc"]="Companies";
+_T["daf89aa71a426dbe394931265f118114"]="Select a Row";
+_T["b3add4944f491fa4255f902a52c70e53"]="No Companies found";
+_T["807fb12397762890519c2126d4b2761d"]="Select only one Row";
+_T["942284b7800603ef7973f02a0d0d316b"]="Contact Companies Manager";
+_T["face8f2106579fbbe360f20c6c099bab"]="Displaying Companies {0} - {1} of {2}";
+
+_T["d39361eed2a55dc77b364d2e8e05669e"]="";
+_T["a5bfef34caca725b18629eb454a8d0ed"]="Add";
+_T["da648ec65a83d2ec0b6fb62ff8a9da45"]="All";
+_T["302272b599e770c94306081db1b9c2b0"]="Code";
+_T["16c99a680d7375b89ac2bfd358275990"]="Edit";
+_T["03257a30723a481b6de0c5b2b3c92e66"]="Team";
+_T["1422b0be61d9dbb017891ded3ac4725a"]="Type";
+_T["c6de8ba3ec8a14e3cd46c019c65f9ed8"]="Error";
+_T["d88a59e4df9d2b0eb247401e73106512"]="Client";
+_T["a4a9da4d3a9f154a8aac3f3306d13e90"]="Closed";
+_T["56c8ba04e5906e26f3e98a0ff78aac15"]="Search";
+_T["19af604903388289f669e8f63641401a"]="Project";
+_T["c58b05cb01570e33305ae4ec0091a50e"]="Remarks";
+_T["f8980eb475aa95ca8be58905e61f474a"]="Projects";
+_T["ee8a792a5a2f527b11fb1caf108e670a"]="Add Project";
+_T["09ff0e18b325e410e4e8286e0941500d"]="Non-Project";
+_T["b042d6b28bb1c747a3b8f397aace8fcf"]="Non-Projects";
+_T["3f117653553437b0592beb6d0f7c01ba"]="Project Name";
+_T["d05faf9542eae295a5c68f7dbc517a91"]="Reset Search";
+_T["31efe80b1989123ce791d9c972e7f7fd"]="Select a Row";
+_T["51b5b47f6a080ef6a4fec0b487b02a08"]="Project Manager";
+_T["f70e5beb9b7006918d0b43cad001a57d"]="Project (Closed)";
+_T["2f368be8825faa2910155e721125a1d5"]="Select only one Row";
+_T["28978164fd48d9b02b8a83e4957cf883"]="Non-Project (Closed)";
+_T["c53484bd6bebd4ba5602c0e9d5fdae35"]="Project (Unconfirmed)";
+
+_T["3f9458fc9671d0b5780ed148372cc24d"]="Contacts Manager";
+
+_T["63808ec7983c0ceee59da6d0288aafcd"]="Groups";
+_T["e588768ea57cf7e551471aafd00b307e"]="Contacts Groups";
+
+_T["6c4ab083946c373f2adeefc6cc3f7a0c"]="Staff";
+
+_T["5e246909a49d67371a5fdc0ebca2eb74"]="";
+_T["469997edd419d96959754b6c5836bb1f"]="Add";
+_T["27676b11ab383213a3b854fd5ae8c169"]="Fax";
+_T["06ec80b73375bae5dc4310bb3b74a2c7"]="Edit";
+_T["c12cd5233ac730fc7f0129d4d0cdad1c"]="Save";
+_T["da7f39a9b5ca989a11c50819b0e11a8c"]="Staff";
+_T["60d933dfa7753ecb66c14d62d64dc91a"]="[All]";
+_T["9420ef6833779757d6d478400f999f31"]="Delete";
+_T["fa8d63966a54ea2f37fdb2f57014079b"]="Events";
+_T["a374d5906bdb8bc352e514774bae00a5"]="Groups";
+_T["2be9b95e4897f569988d1da2c3c696e8"]="Person";
+_T["5469b404166eeda9825a4843504910da"]="Reload";
+_T["4bb1807156a2dad4663604173f607e86"]="Rights";
+_T["51a1afb021b662d94c99e75b3fd6dae3"]="Offices";
+_T["2ddc69dbb3bb3180c86d238e4e43044d"]="Admin Tab";
+_T["0404d4821b03a48193b6189238410506"]="Companies";
+_T["77a76222cc0c1da727ff6a327e880b6d"]="Documents";
+_T["91a7a956228674052e355ee7578d86d4"]="List/View";
+_T["097fc1f523b6ddd8a0763b5f841b173e"]="Timesheet";
+_T["06a52628ddc9ff79dce87c94b0f9d931"]="Permission";
+_T["71d64cf7a0239fc8c37f808911d5cb37"]="Print / Export";
+_T["9efb8a28d8020256496b0373a150881f"]="Document Manager";
+_T["d481fb9cc897bfde3f7d9d4b3f7ac653"]="Unread Documents";
+_T["541e3bc900a640c3cb86027ca2aea691"]="Work In Progress";
+_T["55fc11c5ead376d75fe79969a2c826c5"]="Permission Groups";
+_T["96d64c29469febba0e69f066f3fa5cad"]="Project Directory";
+_T["504a6ec27d97facab115d15d4fd40675"]="Distribute Documents";
+_T["a8158b4933ffde3322bdd34411bac480"]="Send Faxes To Companies";
+_T["b5c0fe8dd8c6d39aef5041ad32a98090"]="There was a problem saving the data";
+_T["c2df49acf6bc67c764118d525d6ab7c2"]="You can not set permissions for that group";
+
+_T["030108316dbe80f3bb3bd39a26841a4e"]="Staff Membership";
+_T["6aee775a74f303c87e97a419fb5b65ea"]="Permission Group Membership";
+
+_T["bc286832507396098fb722f0044c19fa"]="Add";
+_T["471a89fceb6e624e6ccbae3921eedee1"]="All";
+_T["442a6817e8f99102370b535fa55d2d05"]="Edit";
+_T["ce80b3a191db7f941f320dea440b47b0"]="Error";
+_T["2cc3dce41de8c75237e0ada619eed78d"]="Show:";
+_T["c9af45ef2226a5c486f868634f557ca4"]="Closed";
+_T["bdf15682d085d16c96ee0691a12093fe"]="Project";
+_T["abd8c39761eb10b00ad61ce418ff6504"]="Search:";
+_T["f6437120f077a24232be600cea646ec1"]="Projects";
+_T["5707676d5fcba13248788c5ead856c7a"]="Non-Project";
+_T["08122fd86306d97ace5e61fdbdab612a"]="Non-Projects";
+_T["2fd9324fe11c112090e216c588b1ce2e"]="Admin - Projects";
+_T["0f04e5f053394b0c0f0c8c7a59c67a44"]="Project (Closed)";
+_T["0e9c16fe133240e390334f702776a673"]="Select a Project";
+_T["a416145f09384cea45e24d3da8321900"]="No Projects found";
+_T["7b5b05c6f68ff37d71ebd54016374cd4"]="Non-Project (Closed)";
+_T["af28d3518a6766751b3919d79c405dd1"]="Project (Unconfirmed)";
+_T["a0c74aadfcf9b556a76ebc1d0142f560"]="Select only one Project";
+_T["680089b0ca930a79f1b605e9962c523c"]="Displaying Projects  {0} - {1} of {2}";
+
+_T["b6ae8269eb074050cf22d7199051a157"]="Show";
+_T["0d38c3fb4c8500c67d01990bba2cf569"]="Events";
+_T["a9dbe313b1e0082050bda7ce5fc93f7e"]="Person ";
+_T["d2489c8b4febecb80a1c387c1431696c"]="Searching...";
+_T["b827dddadd3ebfc23104551ee6a3a6f9"]="Select Person ";
+_T["9a0575c139cbae13541dff297791a7d8"]="No Events found";
+_T["53510339347f1ff64b52c8c3747c0cd3"]="Admin - Logs - Events";
+_T["2ff0fe02cb998d6c2953ae2d68ca6ea4"]="Displaying Events  {0} - {1} of {2}";
+
+_T["001969a043caf8ee9c27978405c14cf2"]="Bulk add Contacts";
+
+_T["cc3c9c34f380feb1c3d59fc9ade606eb"]="Error";
+_T["f721d54a743cf7f401af0579e7524d23"]="Translations";
+_T["7dc4f8fc44cbe1bbe1d99a2d7bac22d4"]="Select Module";
+_T["69cea9ae503551d985aced167bb01c62"]="Select Language";
+_T["13e4f84d09a2d4057fdee709efdcca61"]="Admin - Translations";
+_T["809badd958a9c1ea39a77cc940810dde"]="There was a problem saving the data - try reloading";
+
+Pman.on("beforeload",function(){Pman.register({modKey:"00-pman-tab-teams",module:Pman.Tab.Teams,region:"west",parent:Pman.Tab.StaffMgr,name:_T["1657530925c817b429ddb4bf97fe0978"]});});Pman.Tab.Teams=new Pman.Tab.GroupsList({id:"teams",title:_T["14d6689659ede20bce95a3afbc69d7f5"],type:1,getDialog:function(){return Pman.Dialog.Groups;
+}});
+Pman.on("beforeload",function(){if(Pman.Login.authUser.company_id_isOwner*1<1){return;}Pman.register({modKey:"900-pman-tab-admin",module:Pman.Tab.Admin,region:"center",parent:Pman,name:_T["9f4b723d1ffa9b3fb6c01391903bdfca"]});if(Pman.hasPerm("Core.Projects_All","E")){Pman.subMenuItems.push({seqid:401,text:_T["b867721a6c0fe529a256cc3184811368"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/dd/drop-add.gif",handler:function(){Pman.Dialog.Projects.show({id:0},function(A){Pman.refreshActivePanel();
+});}});Pman.subMenuItems.push(new Roo.menu.Separator({seqid:402}));}});Pman.Tab.Admin={tab:false,add:function(C,B){if(!Pman.hasPerm("Admin.Admin_Tab","S")){return;}if(this.tab){return;}this.layout=new Ext.BorderLayout(C.getEl().createChild({tag:"div"}),{center:{autoScroll:true,hideTabs:false,tabPosition:"top"}});
+var A=this;this.tab=C.add("center",new Ext.NestedLayoutPanel(this.layout,{title:_T["69da01e457e2f2a0ebb02e596194c754"],background:true}));this.tab.on("activate",function(){});},buildAdminLayout:function(){if(isDev){Pman.Translation.add(this.layout,"center");
+}}};
+Pman.on("beforeload",function(){Pman.Tab.Groups.title=_T["5a178e059ab3533daa4a3f07c19fb1f9"];Pman.register({modKey:"00-pman-tab-groups",module:Pman.Tab.Groups,region:"west",parent:Pman.Tab.GroupMgr,name:_T["1ff9f57e39e5c607eb754a217a12f625"]});});Pman.Tab.Groups=new Pman.Tab.GroupsList({id:"groups",title:_T["5a178e059ab3533daa4a3f07c19fb1f9"],type:0,getDialog:function(){return Pman.Dialog.Groups;
+}});
+Pman.Tab.Office={grid:false,panel:false,add:function(G,C){if(this.panel){G.getRegion(C).showPanel(this.panel);return;}this.innerLayout=new Ext.BorderLayout(G.getEl().createChild({tag:"div"}),{center:{autoScroll:true,hideTabs:true}});this.tab=G.add(C,new Ext.NestedLayoutPanel(this.innerLayout,{title:_T["42603d9dedd89be3346d59211bc8d398"]}));
+this.innerLayout.beginUpdate();var D=Pman.Dialog.Office;var H=function(){B.paging.onClick("refresh");};this.grid=new Ext.grid.Grid(this.innerLayout.getEl().createChild({tag:"div"}),{id:"grid-Office",ds:new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:baseURL+"/Roo/Office.html",method:"GET"}),reader:Pman.Readers.Office,remoteSort:true,listeners:{beforeload:function(t,o){o.params.company_id=Pman.Tab.Companies.getSelectedId();
+if(!o.params.company_id){return false;}},loadexception:Pman.loadException}}),cm:new Ext.grid.ColumnModel([{"id":"Office-name",header:_T["71dc5bd5d5eb3fbdb4480d14f83cec65"],dataIndex:"name",sortable:true,width:200},{"id":"Office-phone",header:_T["4af68a421bd4ae25a16b075c1f31a0c7"],dataIndex:"phone",sortable:true,width:100},{"id":"Office-fax",header:_T["11d2a9130faa2b53f8a0c46fcb65d6f9"],dataIndex:"fax",sortable:true,width:100},{"id":"Office-email",header:_T["05611ce987d955a0149e5796a3f0f21e"],dataIndex:"email",sortable:true,width:150,renderer:function(v){return (v.length&&v.indexOf("@")>0)?String.format("<a href=\"mailto:{0}\">{0}</a>",v):v;
+}},{"id":"Office-address",header:_T["7121653d4a85e0b6337deaad2461a3b3"],dataIndex:"address",sortable:true,width:300}]),autoExpandColumn:"Office-address",clicksToEdit:1,loadMask:true,listeners:{rowdblclick:function(g,ri,e){var s=g.getDataSource().getAt(ri).datas.company_name=Pman.Tab.Companies.grid.getSelectionModel().getSelected().data.name;
+D.show(s,H);}}});this.panel=this.innerLayout.add("center",new Ext.GridPanel(this.grid,{fitToframe:true,fitContainer:true}));this.grid.render();var E=this.grid.getView().getFooterPanel(true);this.paging=new Ext.PagingToolbar(E,this.grid.getDataSource(),{pageSize:25,displayInfo:true,displayMsg:_T["f44c781279ab022f34d1670a1d691dd6"],emptyMsg:_T["699d51392d6e7aa401d4d67392c51beb"]});
+var A=this.grid;var F=this.grid.getView().getHeaderPanel(true);var tb=new Ext.Toolbar(F);var B=Pman.Tab.Office;tb.add({text:_T["8364277cb7aebb7e939b6128959be85b"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/dd/drop-add.gif",hidden:!Pman.hasPerm("Core.Offices","A"),handler:function(){if(!Pman.Tab.Companies.grid.getSelectionModel().getSelections().length){Ext.MessageBox.alert(_T["c698b2d2a29e44490e97854dc491b72d"]);
+return;}var I=Pman.Tab.Companies.grid.getSelectionModel().getSelected().data;D.show({id:0,company_name:I.name,company_id:I.id,address:I.address,phone:I.tel,fax:I.fax,email:I.email},H);}},{text:_T["2850518f8fb2ce186d66fb5ab95fdc85"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/tree/leaf.gif",hidden:!Pman.hasPerm("Core.Offices","E"),handler:function(){var s=A.getSelectionModel().getSelections();
+if(!s.length||(s.length>1)){Ext.MessageBox.alert(_T["6a3e8f2743a8b83b817cd6225ef2ac02"],s.length?_T["c0bcf22aa39b7db4fa40674ed7f21aa0"]:_T["374285ff04cce911b156900ad0610b83"]);return;}s[0].data.company_name=Pman.Tab.Companies.grid.getSelectionModel().getSelected().data.name;
+D.show(s[0].data,H);}},{text:_T["1b1040648d1bd36ebec9ccc00f273c2a"],cls:"x-btn-text-icon",icon:rootURL+"/Pman/templates/images/trash.gif",hidden:!Pman.hasPerm("Core.Offices","D"),handler:function(){Pman.genericDelete(B,"Office");}});this.tab.on("activate",function(){});
+this.innerLayout.endUpdate();},show:function(B,A){this.add(B,A);this.grid.getDataSource().load({params:{start:0,limit:25}});}};
+Pman.on("beforeload",function(){if(!Pman.hasPerm("Core.Staff","E")){return;}Pman.register({modKey:"020-pman-tab-staffmgr",module:Pman.Tab.StaffMgr,region:"center",parent:Pman.Tab.Admin,name:_T["7688196bd4f26fe91afcb4ba89dbaa09"],finalize:function(){var A=Pman.Tab.StaffMgr;
+if(!A.layout){return;}A.layout.endUpdate();}});});Pman.Tab.StaffMgr={grid:false,panel:false,title:false,add:function(C,B){var A=this;if(this.panel){C.getRegion(B).showPanel(this.panel);return;}this.layout=new Ext.BorderLayout(C.getEl().createChild({tag:"div"}),{west:{autoScroll:true,hideTabs:true,titlebar:true,split:true,initialSize:250},center:{autoScroll:true,hideTabs:false,tabPosition:"top"}});
+this.tab=C.add(B,new Ext.NestedLayoutPanel(this.layout,{title:this.title||_T["0ba99120c6904bf4c044f70b983f41ff"],background:true}));this.tab.on("activate",function(){A.layout.getRegion("center").showPanel(0);if(A.layout.getRegion("west").panels.length){A.layout.getRegion("west").showPanel(0);
+Pman.Tab.Teams.refresh();}else{Pman.Tab.PersonStaff.loadFirst();}});this.layout.beginUpdate();}};
+Pman.on("beforeload",function(){if(!Pman.hasPerm("Core.Person","E")){return;}Pman.register({modKey:"040-pman-tab-contacts",module:Pman.Tab.Contacts,region:"center",parent:Pman.Tab.ContactsMgr,name:_T["eec34ef27f9d63f9cbb237a82c49c547"]});});Pman.Tab.Contacts=new Pman.Tab.PersonList({id:"contacts",type:2,title:_T["f21683b352db77267c613f64cf9e72c2"],itemDisplayName:_T["5ae0f91d1ab815d6345b3e7df8779e17"],permName:"Core.Person",getLeftSelections:function(){return Pman.Tab.ContactGrps.grid?Pman.Tab.ContactGrps.grid.getSelectionModel().getSelections():[];
+},beforeload:function(t,o){var B=Pman.Tab.Contacts;o.params["query[person_not_internal]"]=1;o.params["query[search]"]=B.searchBox.getValue();var A=B.getLeftSelections();if(A.length){o.params["query[in_group]"]=A[0].data.id;}o.params["query[type]"]=B.type;
+},columns:function(){return [this.c_project_id_code(),this.c_company_id_name(),this.c_name(),this.c_role(),this.c_phone(),this.c_fax(),this.c_email()]},dialog:function(){return Pman.Dialog.PersonEdit;},bulkAdd:function(){return Pman.Dialog.PersonBulkAdd;},newDefaults:function(){return {id:0};
+}});
+Pman.on("beforeload",function(){if(!Pman.hasPerm("Core.Groups","E")){return;}Pman.register({modKey:"060-pman-tab-groupmgr",module:Pman.Tab.GroupMgr,region:"center",parent:Pman.Tab.Admin,name:_T["cb15ca57cc9364dac6ed578ec4248c42"],finalize:function(){var A=Pman.Tab.GroupMgr;
+if(!A.layout){return;}A.layout.endUpdate();}});});Pman.Tab.GroupMgr={grid:false,panel:false,add:function(C,B){if(this.panel){C.getRegion(B).showPanel(this.panel);return;}this.layout=new Ext.BorderLayout(C.getEl().createChild({tag:"div"}),{west:{autoScroll:true,hideTabs:true,titlebar:true,split:true,initialSize:250},center:{autoScroll:true,hideTabs:false,tabPosition:"top"}});
+this.tab=C.add(B,new Ext.NestedLayoutPanel(this.layout,{title:_T["d4650cf6ae2be8b06b0e97025f1bc35b"],background:true}));var A=this;this.tab.on("activate",function(){A.layout.getRegion("center").showPanel(0);Pman.Tab.Groups.refresh();});this.layout.beginUpdate();
+}};
+Pman.Dialog.Groups={dialog:false,form:false,id:"Group",create:function(){if(this.dialog){return;}var A=this;this.dialog=new Ext.LayoutDialog(Ext.get(document.body).createChild({tag:"div"}),{autoCreated:true,title:"edit team",modal:true,width:650,height:150,shadow:true,minWidth:200,minHeight:150,closable:false,draggable:false,center:{autoScroll:false,titlebar:false,hideTabs:true,closeOnTab:true,alwaysShowTabs:false}});
+this.dialog.addKeyListener(27,this.dialog.hide,this.dialog);this.dialog.addButton(_T["40e22bcebd4c093a709a1d94aae7eddf"],this.dialog.hide,this.dialog);this.dialog.addButton(_T["dd6a53f3ec4097eff373be1a2981b9f6"],this.save,this);this.layout=this.dialog.getLayout();
+this.layout.beginUpdate();this.form=new Ext.form.Form({labelWidth:250,listeners:{actionfailed:function(f,B){A.dialog.el.unmask();Pman.standardActionFailed(f,B);},actioncomplete:function(f,B){A.dialog.el.unmask();if(B.type=="load"){A.data=B.result.data;return;
+}if(B.type=="submit"){A.dialog.hide();if(A.callback){A.callback.call(this,B.result.data);}return;}}}});this.form.addxtype.apply(this.form,[{name:"name",fieldLabel:_T["ef36841feea4b33d42303e3bb4f9ef6a"],value:"",allowBlank:false,qtip:_T["6f4ae3eb4445956d92c6467a6dbb65e2"],xtype:"TextField",width:300},{xtype:"ComboBox",fieldLabel:_T["03c47106e6347d6be442e141baeb198e"],name:"leader_name",selectOnFocus:true,qtip:_T["0cbfa2f00e443885deb6af46c307b514"],allowBlank:true,width:280,store:new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:baseURL+"/Roo/Person.php",method:"GET"}),reader:Pman.Readers.Person,listeners:{beforeload:function(st,o){o.params.company_id=Pman.Login.authUser.company_id*1;
+}}}),displayField:"name",valueField:"id",hiddenName:"leader",typeAhead:true,forceSelection:true,doForce:function(){if(this.el.dom.value.length>0){this.el.dom.value=this.lastSelectionText===undefined?_T["3430b90edd3644ec8b40cf74e39b5a58"]:this.lastSelectionText;
+this.applyEmptyText();if(!this.el.dom.value.length){this.setFromData({id:0,name:"----"});}}},triggerAction:"all",tpl:new Ext.Template("<div class=\"x-grid-cell-text x-btn button\">","<b>{name}</b> {role}","</div>"),queryParam:"query[name]",loadingText:_T["425f2679b8159c6c2befedf611498097"],listWidth:300,minChars:2,pageSize:20},{name:"id",value:"",xtype:"Hidden"},{name:"type",value:"",xtype:"Hidden"}]);
+var ef=this.dialog.getLayout().getEl().createChild({tag:"div"});ef.dom.style.margin=10;this.form.render(ef.dom);var vp=this.dialog.getLayout().add("center",new Ext.ContentPanel(ef,{autoCreate:true,width:250,maxWidth:250,fitToFrame:true}));this.layout.endUpdate();
+},_id:0,show:function(A,B){this.callback=B;this._id=A.id;this.data=A;this.create();this.form.reset();this.form.setValues(A);this.dialog.show();this.dialog.setTitle(A.type?_T["694107e645006e31b148fbad58162a53"]:_T["67f112a05685b54d025b71df7e810c4c"]);var lw=Ext.get(this.form.findField("leader").el.dom.parentNode.parentNode.parentNode);
+lw.setVisibilityMode(Ext.Element.DISPLAY);if(this.data.type){lw.show();this.form.findField("leader").setFromData({id:this.data.leader,name:this.data.leader?this.data.leader_name:""});}else{lw.hide();}},save:function(){this.form.doAction("submit",{url:baseURL+"/Roo/Groups.php",method:"POST",params:{_id:this._id,ts:Math.random()}});
+}};
+Pman.on("beforeload",function(){if(Pman.Login.authUser.company_id_comptype!="OWNER"){return;}if(!Pman.hasPerm("Admin.Logs","S")){return;}Pman.register({modKey:"901-pman_tab_adminlogs",module:Pman.Tab.AdminLogs,region:"center",parent:Pman,name:_T["4730343a950fbffdaababbff1106f875"]});
+});Pman.Tab.AdminLogs={panel:false,disabled:false,parentLayout:false,add:function(C,B){if(this.disabled){return;}var A=this;this.parentLayout=C;this.panel=this.parentLayout.addxtype({xtype:"NestedLayoutPanel",background:true,fitToFrame:true,region:"center",title:_T["4730343a950fbffdaababbff1106f875"],layout:{xtype:"BorderLayout",center:{titlebar:false,tabPosition:"top"}}});
+this.layout=this.panel.layout;}};
+Pman.on("beforeload",function(){if(Pman.hasPerm("Core.Companies","E")){Pman.register({modKey:"030-pman-tab-companies",module:Pman.Tab.Companies,region:"center",parent:Pman.Tab.Admin,name:_T["942284b7800603ef7973f02a0d0d316b"]});}});Pman.Tab.Companies=new Roo.util.Observable({events:{"beforerender":true},colExtra:[],grid:false,panel:false,add:function(C,B){var A=this;
+if(this.tab){C.getRegion(B).showPanel(this.panel);return;}this.innerLayout=new Ext.BorderLayout(C.getEl().createChild({tag:"div"}),{center:{autoScroll:true,hideTabs:true},south:{split:true,title:_T["c54291aca733e7fad1cbbb4eb61b757f"],autoScroll:true,hideTabs:true,height:200}});
+this.tab=C.add(B,new Ext.NestedLayoutPanel(this.innerLayout,{title:_T["fa937535d755805fbd6c75f5299a1ecc"],background:true,controller:this}));this.tab.on("activate",function(){A.delayedCreate();A.paging.onClick("refresh");});},delayedCreate:function(){var C=this;
+if(this.grid){return;}this.innerLayout.beginUpdate();var A=this.innerLayout.getEl().createChild({tag:"div"});this.grid=new Ext.grid.Grid(A,{id:"grid-companies",ds:new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:baseURL+"/Roo/Companies.html",method:"GET"}),reader:Pman.Readers.Companies,listeners:{load:function(){Pman.Tab.Office.paging.onClick("refresh");
+},loadexception:Pman.loadException},remoteSort:true}),cm:new Ext.grid.ColumnModel([{header:_T["b6d43af91616495569344be2097741a6"],dataIndex:"comptype",sortable:true,width:90,renderer:function(v,x,r){return Pman.Dialog.Companies.comptypeListToString(r.data.isOwner?"OWNER":v);
+}},{header:_T["7b07e722ca6652676cdf3b792ea3d770"],dataIndex:"code",sortable:true,width:50},{id:"companies-name",header:_T["72a390bba1504e6d0edeb309a3bd4e50"],dataIndex:"name",sortable:true,width:200,renderer:function(v,x,r){return String.format(r.data.isOwner?"<B>{0}</B>":"{0}",v);
+}},{header:_T["b29f1cefbb7b2c837888af98c72673a7"],dataIndex:"tel",sortable:true,width:100},{header:_T["3295810216bdf4311365063e10ab15cb"],dataIndex:"fax",sortable:true,width:100},{header:_T["68aa6f83f2ee6598843f2f2f92f7ffce"],dataIndex:"email",sortable:true,width:100,renderer:function(v){return (v.length&&v.indexOf("@")>0)?String.format("<a href=\"mailto:{0}\">{0}</a>",v):v;
+}},{id:"companies-address",header:_T["e1ed0accd8e0c6be1be42cf909dc9894"],dataIndex:"address",sortable:true,width:200},{id:"companies-remarks",header:_T["342885a7034a793650de1341f12ca378"],dataIndex:"remarks",sortable:true,width:200}]),autoExpandColumn:"companies-address",clicksToEdit:1,loadMask:true,listeners:{cellclick:function(g,ri,ci,e){Pman.Tab.Office.paging.onClick("refresh");
+},rowdblclick:function(g,ri,e){var s=g.getDataSource().getAt(ri).data;_dialog.show(s,F);}}});this.panel=this.innerLayout.add("center",new Ext.GridPanel(this.grid,{fitToframe:true,fitContainer:true,controller:this}));this.grid.render();var D=this.grid.getView().getFooterPanel(true);
+this.paging=new Ext.PagingToolbar(D,this.grid.getDataSource(),{pageSize:25,displayInfo:true,displayMsg:_T["face8f2106579fbbe360f20c6c099bab"],emptyMsg:_T["b3add4944f491fa4255f902a52c70e53"]});var B=this.grid;var E=this.grid.getView().getHeaderPanel(true);
+var tb=new Ext.Toolbar(E);var F=function(){C.paging.onClick("refresh");};var _dialog=Pman.Dialog.Companies;tb.add({text:_T["89d47001ed0bc7dce8089c70c530e9da"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/dd/drop-add.gif",hidden:!Pman.hasPerm("Core.Companies","A"),handler:function(){_dialog.show({id:0},F);
+}},{text:_T["fa7ded56a3e7a4cd4bd4355c8001d4e7"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/tree/leaf.gif",hidden:!Pman.hasPerm("Core.Companies","E"),handler:function(){var s=B.getSelectionModel().getSelections();if(!s.length||(s.length>1)){Ext.MessageBox.alert(_T["d07b747fbfea3158969027710bafd7a0"],s.length?_T["807fb12397762890519c2126d4b2761d"]:_T["daf89aa71a426dbe394931265f118114"]);
+return;}_dialog.show(s[0].data,F);}},{text:_T["e8be59bd01083870754856e8af6a9798"],cls:"x-btn-text-icon",hidden:!Pman.hasPerm("Core.Companies","D"),icon:rootURL+"/Pman/templates/images/trash.gif",handler:function(){Pman.genericDelete(C,"Companies");}});Pman.Tab.Office.add(this.innerLayout,"south");
+this.innerLayout.endUpdate();},show:function(B,A){this.add(B,A);this.grid.getDataSource().load({params:{start:0,limit:25}});},getSelectedId:function(){var s=this.grid.getSelectionModel().getSelections();if(s.length!=1){return 0;}return s[0].data.id;}});
+Pman.on("beforeload",function(){return;if(!Pman.hasPerm("Core.Projects_All","E")){return;}Pman.register({modKey:"010-pman-tab-projectmgr",module:Pman.Tab.ProjectsMgr,region:"center",parent:Pman.Tab.Admin,name:_T["51b5b47f6a080ef6a4fec0b487b02a08"]});});Pman.Tab.ProjectsMgr={grid:false,panel:false,disabled:false,filter:"P,N,U",searchBox:false,add:function(C,B){if(this.disabled){return;
+}Pman.subMenuItems.push({seqid:401,text:_T["ee8a792a5a2f527b11fb1caf108e670a"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/dd/drop-add.gif",handler:function(){Pman.Dialog.Projects.show({id:0},function(D){Pman.refreshActivePanel();});}});Pman.subMenuItems.push(new Roo.menu.Separator({seqid:402}));
+if(this.panel){C.getRegion(B).showPanel(this.panel);return;}this.innerLayout=new Ext.BorderLayout(C.getEl().createChild({tag:"div"}),{center:{autoScroll:true,hideTabs:true}});var A=this;this.tab=C.add(B,new Ext.NestedLayoutPanel(this.innerLayout,{title:_T["f8980eb475aa95ca8be58905e61f474a"],background:true}));
+this.tab.on("activate",function(){A.delayedCreate();A.paging.onClick("refresh");});},delayedCreate:function(){if(this.grid){return;}var B=this;this.innerLayout.beginUpdate();var F=function(){B.paging.onClick("refresh");};var frm=this.innerLayout.getEl().createChild({tag:"div"});
+this.grid=new Ext.grid.Grid(frm,{id:"grid-projectsmgr",ds:new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:baseURL+"/Roo/Projects.php",method:"GET"}),remoteSort:true,reader:Pman.Readers.Projects,listeners:{beforeload:function(t,o){o.params=o.params?o.params:{};
+o.params["query[project_search]"]=B.searchBox.getValue();o.params["query[project_filter]"]=B.filter;},loadexception:Pman.loadException},sortInfo:{field:"code",direction:"DESC"}}),cm:new Ext.grid.ColumnModel([{header:_T["1422b0be61d9dbb017891ded3ac4725a"],dataIndex:"type",sortable:true,width:130,renderer:function(v){return B.typeToString(v)}},{header:_T["302272b599e770c94306081db1b9c2b0"],dataIndex:"code",sortable:true,width:70},{header:_T["3f117653553437b0592beb6d0f7c01ba"],dataIndex:"name",sortable:true,width:300},{header:_T["d88a59e4df9d2b0eb247401e73106512"],dataIndex:"client_id_name",sortable:true,width:150},{header:_T["03257a30723a481b6de0c5b2b3c92e66"],dataIndex:"team_id_name",sortable:true,width:100},{id:"projects-remarks",header:_T["c58b05cb01570e33305ae4ec0091a50e"],dataIndex:"remarks",sortable:true,width:300}]),autoExpandColumn:"projects-remarks",clicksToEdit:1,loadMask:true,listeners:{rowdblclick:function(g,ri,e){var s=g.getDataSource().getAt(ri).data;
+C.show(s,F);}}});this.panel=this.innerLayout.add("center",new Ext.GridPanel(this.grid,{fitToframe:true,fitContainer:true}));this.grid.render();var D=this.grid.getView().getFooterPanel(true);this.paging=new Ext.PagingToolbar(D,this.grid.getDataSource(),{pageSize:25,displayInfo:true,displayMsg:_T["d39361eed2a55dc77b364d2e8e05669e"],emptyMsg:_T["d39361eed2a55dc77b364d2e8e05669e"]});
+var A=this.grid;var E=this.grid.getView().getHeaderPanel(true);var tb=new Ext.Toolbar(E);this.searchBox=new Ext.form.TextField({name:"search",width:135,listeners:{specialkey:function(f,e){if(e.getKey()==13){F();}}}});var C=Pman.Dialog.Projects;tb.add({text:_T["a5bfef34caca725b18629eb454a8d0ed"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/dd/drop-add.gif",handler:function(){C.show({id:0},F);
+}},{text:_T["16c99a680d7375b89ac2bfd358275990"],cls:"x-btn-text-icon",icon:Ext.rootURL+"images/default/tree/leaf.gif",handler:function(){var s=A.getSelectionModel().getSelections();if(!s.length||(s.length>1)){Ext.MessageBox.alert(_T["c6de8ba3ec8a14e3cd46c019c65f9ed8"],s.length?_T["2f368be8825faa2910155e721125a1d5"]:_T["31efe80b1989123ce791d9c972e7f7fd"]);
+return;}C.show(s[0].data,F);}},"-","Search: ",this.searchBox,{icon:rootURL+"/Pman/templates/images/search.gif",cls:"x-btn-icon",qtip:_T["56c8ba04e5906e26f3e98a0ff78aac15"],handler:function(){F();}},{icon:rootURL+"/Pman/templates/images/edit-clear.gif",cls:"x-btn-icon",qtip:_T["d05faf9542eae295a5c68f7dbc517a91"],handler:function(){B.searchBox.setValue("");
+F();}},"-","Show : ",{text:_T["da648ec65a83d2ec0b6fb62ff8a9da45"],toggleGroup:"pgrp",pressed:true,enableToggle:true,toggleHandler:function(b,st){if(st){B.filter="P,N,U";}F();}},{text:_T["f8980eb475aa95ca8be58905e61f474a"],toggleGroup:"pgrp",pressed:false,enableToggle:true,toggleHandler:function(b,st){if(st){B.filter="P,U";
+}F();}},{text:_T["b042d6b28bb1c747a3b8f397aace8fcf"],toggleGroup:"pgrp",pressed:false,enableToggle:true,toggleHandler:function(b,st){if(st){B.filter="N";}F();}},{text:_T["a4a9da4d3a9f154a8aac3f3306d13e90"],toggleGroup:"pgrp",pressed:false,enableToggle:true,toggleHandler:function(b,st){if(st){B.filter="X,C";
+}F();}});this.innerLayout.endUpdate();},show:function(B,A){this.add(B,A);this.grid.getDataSource().load({params:{start:0,limit:25}});},getTypes:function(){return [["U",_T["c53484bd6bebd4ba5602c0e9d5fdae35"]],["P",_T["19af604903388289f669e8f63641401a"]],["C",_T["f70e5beb9b7006918d0b43cad001a57d"]],["N",_T["09ff0e18b325e410e4e8286e0941500d"]],["X",_T["28978164fd48d9b02b8a83e4957cf883"]]];
+},typeToString:function(v){var ar=this.getTypes();var A="";Ext.each(ar,function(a){if(a[0]==v){A=a[1];return false;}});return A;}};
+Pman.on("beforeload",function(){if(!Pman.hasPerm("Core.Person","E")){return;}Pman.register({modKey:"060-pman-tab-contactsmgr",module:Pman.Tab.ContactsMgr,region:"center",parent:Pman.Tab.Admin,name:_T["3f9458fc9671d0b5780ed148372cc24d"]});});Pman.Tab.ContactsMgr={grid:false,panel:false,title:false,add:function(C,B){if(this.panel){C.getRegion(B).showPanel(this.panel);
+return;}this.layout=new Ext.BorderLayout(C.getEl().createChild({tag:"div"}),{west:{autoScroll:true,hideTabs:true,titlebar:true,split:true,initialSize:250},center:{autoScroll:true,hideTabs:false,tabPosition:"top"}});this.tab=C.add(B,new Ext.NestedLayoutPanel(this.layout,{title:this.title||_T["3f9458fc9671d0b5780ed148372cc24d"],background:true}));
+var A=this;this.tab.on("activate",function(){if(A.layout.getRegion("west").panels.length){A.layout.getRegion("west").showPanel(0);Pman.Tab.ContactGrps.refresh();}else{Pman.Tab.Contacts.loadFirst();}A.layout.getRegion("center").showPanel(0);});},donelayout:false};
+
+Pman.on("beforeload",function(){Pman.Tab.ContactGrps=new Pman.Tab.GroupsList({id:"cgroups",title:_T["63808ec7983c0ceee59da6d0288aafcd"],type:2,getDialog:function(){return Pman.Dialog.Groups;}});Pman.register({modKey:"060-pman-tab-contactgrps",module:Pman.Tab.ContactGrps,region:"west",parent:Pman.Tab.ContactsMgr,name:_T["e588768ea57cf7e551471aafd00b307e"]});
+});
+Pman.on("beforeload",function(){Pman.register({modKey:"001-pman-tab-personlist",module:Pman.Tab.PersonStaff,region:"center",parent:Pman.Tab.StaffMgr,name:_T["6c4ab083946c373f2adeefc6cc3f7a0c"]});});Pman.Tab.PersonStaff=new Pman.Tab.PersonList({id:"personstaff",type:1,permName:"Core.Staff",getLeftSelections:function(){return Pman.Tab.Teams.grid?Pman.Tab.Teams.grid.getSelectionModel().getSelections():[];
+},beforeload:function(t,o){var A=this.getLeftSelections();if(A.length){o.params["query[in_group]"]=A[0].data.id;}o.params["query[name]"]=this.searchBox.getValue();o.params["query[type]"]=this.type;o.params["query[person_internal_only_all]"]=1;o.params["query[person_inactive]"]=this.showInActive?0:1;
+},columns:function(){return [this.c_name(),this.c_office_id_name(),this.c_role(),this.c_phone(),this.c_fax(),this.c_email(),this.c_active()]},dialog:function(){return Pman.Dialog.PersonStaff;},bulkAdd:function(){return false;},newDefaults:function(){return {id:0,company_id:Pman.Login.authUser.company_id,company_id_name:Pman.Login.authUser.company_id_name,company_id_address:Pman.Login.authUser.company_id_address,company_id_tel:Pman.Login.authUser.company_id_tel,company_id_fax:Pman.Login.authUser.company_id_fax};
+}});
+Pman.on("beforeload",function(){Pman.register({modKey:"002-pman-tab-groups-rights",module:Pman.Tab.Group_Rights,region:"center",parent:Pman.Tab.GroupMgr,name:_T["55fc11c5ead376d75fe79969a2c826c5"]});});Pman.ColModels.Group_RightsRenderer=function(v,c,r,ri,ci,st){var h=Pman.Tab.Group_Rights.grid.getColumnModel().getColumnId(ci).toUpperCase();
+var fm=r.json.FullMask;state="";if(h=="AA"){state=v==fm?"-checked":"";}else if(v.indexOf(h.substring(3))>-1){state="-checked";}if(fm.indexOf(h.substring(3))<0){return "";}return "<img class=\"x-grid-check-icon"+state+"\" src=\""+Ext.BLANK_IMAGE_URL+"\"/>";
+};Pman.Tab.Group_Rights={rightNames:{},grid:false,panel:false,add:function(F,D){if(this.panel){F.getRegion(D).showPanel(this.panel);return;}var C=this;var A=F.getRegion(D).getEl().createChild({tag:"div",id:"grid-group_rights"});this.grid=new Ext.grid.Grid(A,{ds:new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:baseURL+"/Admin/GroupRights.php",method:"GET"}),reader:Pman.Readers.Group_Rights,remoteSort:false,listeners:{beforeload:function(t,o){if(!o.params){o.params={}}var s=Pman.Tab.Groups.grid.getSelectionModel().getSelections();
+if(!s.length){o.params.group_id=-1;}else{o.params.group_id=s[0].data.id;}if(o.params.group_id<0){C.grid.getView().el.mask(_T["c2df49acf6bc67c764118d525d6ab7c2"]);return false;}C.grid.getView().el.unmask();return true;},loadexception:Pman.loadException}}),selModel:new Ext.grid.CellSelectionModel(),cm:new Ext.grid.ColumnModel([{"id":"aa",header:_T["60d933dfa7753ecb66c14d62d64dc91a"],dataIndex:"AccessMask",sortable:false,width:50,renderer:Pman.ColModels.Group_RightsRenderer},{"id":"group_rights-rightname",header:_T["06a52628ddc9ff79dce87c94b0f9d931"],dataIndex:"rightname",sortable:false,width:300,renderer:function(v,x,r){if(r.json.descript&&r.json.descript.length){return String.format("{0}",r.json.descript);
+}switch(v){case "Documents.Document_Manager":return _T["9efb8a28d8020256496b0373a150881f"];case "Documents.Documents":return _T["77a76222cc0c1da727ff6a327e880b6d"];case "Documents.Unread_Documents":return _T["d481fb9cc897bfde3f7d9d4b3f7ac653"];case "Documents.Distribute_Documents":return _T["504a6ec27d97facab115d15d4fd40675"];
+case "Documents.Work_In_Progress":return _T["541e3bc900a640c3cb86027ca2aea691"];case "Documents.Project_Directory":return _T["96d64c29469febba0e69f066f3fa5cad"];case "Fax.Fax":return _T["27676b11ab383213a3b854fd5ae8c169"];case "Fax.Fax_To_Company":return _T["a8158b4933ffde3322bdd34411bac480"];
+case "Timesheet.Timesheet":return _T["097fc1f523b6ddd8a0763b5f841b173e"];case "Admin.Admin_Tab":return _T["2ddc69dbb3bb3180c86d238e4e43044d"];case "Core.Person":return _T["2be9b95e4897f569988d1da2c3c696e8"];case "Core.Offices":return _T["51a1afb021b662d94c99e75b3fd6dae3"];
+case "Core.Companies":return _T["0404d4821b03a48193b6189238410506"];case "Core.Staff":return _T["da7f39a9b5ca989a11c50819b0e11a8c"];case "Core.Groups":return _T["a374d5906bdb8bc352e514774bae00a5"];case "Core.Events":return _T["fa8d63966a54ea2f37fdb2f57014079b"];
+default:if(typeof (Pman.rightNames[v])=="string"&&Pman.rightNames[v].length){return String.format("{0}",Pman.rightNames[v]);}return "???"+v;}}},{"id":"am-a",header:_T["469997edd419d96959754b6c5836bb1f"],dataIndex:"AccessMask",width:50,sortable:false,renderer:Pman.ColModels.Group_RightsRenderer},{"id":"am-e",header:_T["06ec80b73375bae5dc4310bb3b74a2c7"],dataIndex:"AccessMask",width:50,sortable:false,renderer:Pman.ColModels.Group_RightsRenderer},{"id":"am-d",header:_T["9420ef6833779757d6d478400f999f31"],dataIndex:"AccessMask",width:50,sortable:false,renderer:Pman.ColModels.Group_RightsRenderer},{"id":"am-s",header:_T["91a7a956228674052e355ee7578d86d4"],dataIndex:"AccessMask",width:90,sortable:false,renderer:Pman.ColModels.Group_RightsRenderer},{"id":"am-p",header:_T["71d64cf7a0239fc8c37f808911d5cb37"],dataIndex:"AccessMask",width:100,sortable:false,renderer:Pman.ColModels.Group_RightsRenderer},{"id":"group_rights-remarks",header:"",dataIndex:"Remarks",sortable:false,width:50}]),autoExpandColumn:"group_rights-remarks",clicksToEdit:1,loadMask:true,trackMouseOver:false,listeners:{cellclick:function(g,ri,ci,e){var h=g.getColumnModel().getColumnId(ci);
+var fm=g.getDataSource().getAt(ri).json.FullMask;if(h.substring(0,2)=="aa"){var G=g.getDataSource().getAt(ri).data.AccessMask;g.getDataSource().getAt(ri).set("AccessMask",G==fm?_T["5e246909a49d67371a5fdc0ebca2eb74"]:fm);return;}if(h.substring(0,2)!="am"){return;
+}var c=h.substring(3).toUpperCase();if(fm.indexOf(c)<0){return;}function I(L){var K={};for(var i=0;i<fm.length;i++){var cc=fm.substring(i,i+1);K[cc]=L.indexOf(cc)>-1;}return K;}function J(K){var L="";for(var i=0;i<fm.length;i++){var cc=fm.substring(i,i+1);
+if(K[cc]){L+=cc;}}return L;}var H=I(g.getDataSource().getAt(ri).data.AccessMask);H[c]=!H[c];g.getDataSource().getAt(ri).set("AccessMask",J(H));}}});this.grid.getSelectionModel().lock();this.panel=F.add(D,new Ext.GridPanel(this.grid,{fitToframe:true,fitContainer:true,title:_T["4bb1807156a2dad4663604173f607e86"],id:"group_rights",controller:this}));
+this.grid.render();var B=this.grid;var E=this.grid.getView().getHeaderPanel(true);var tb=new Ext.Toolbar(E);tb.add({text:_T["c12cd5233ac730fc7f0129d4d0cdad1c"],cls:"x-btn-text-icon",icon:rootURL+"/Pman/templates/images/save.gif",hidden:!Pman.hasPerm("Core.Groups","E"),handler:function(){var G={};
+B.getDataSource().each(function(r){if(!r.dirty){return;}G[r.data.id>-1?"dataUpdate["+r.data.id+"]":"dataAdd["+r.data.rightname+"]"]=r.data.AccessMask;});G.group_id=B.getDataSource().lastOptions.params.group_id;Ext.Ajax.request({url:baseURL+"/Admin/GroupRights.php",params:G,method:"POST",success:function(){C.refresh();
+},failure:function(){Ext.MessageBox.alert(_T["b5c0fe8dd8c6d39aef5041ad32a98090"]);}});}},"-",{text:_T["5469b404166eeda9825a4843504910da"],cls:"x-btn-text-icon",icon:rootURL+"/Pman/templates/images/refresh.gif",handler:function(){C.refresh();}});this.panel.on("activate",function(){C.refresh();
+});},refresh:function(){this.grid.getDataSource().reload();},renderer:function(v,c,r,ri,ci,st){var h=Pman.Tab.Group_Rights.grid.getColumnModel().getColumnId(ci).toUpperCase();if(v.indexOf(h.substring(3))>-1){return "Y";}return "-";},save:function(){}};
+Pman.on("beforeload",function(){Pman.register({modKey:"001-pman-tab-groups-members",module:Pman.Tab.Group_Members,region:"center",parent:Pman.Tab.GroupMgr,name:_T["6aee775a74f303c87e97a419fb5b65ea"]});});Pman.Tab.Group_Members=new Pman.Tab.PersonList({id:"group_members",type:0,title:_T["030108316dbe80f3bb3bd39a26841a4e"],hideDelete:true,getLeftSelections:function(){return Pman.Tab.Groups.grid.getSelectionModel().getSelections();
+},beforeload:function(t,o){var A=this.getLeftSelections();if(A.length){o.params["query[in_group]"]=A[0].data.id;}o.params["query[name]"]=this.searchBox.getValue();o.params["query[type]"]=this.type;o.params["query[person_internal_only_all]"]=1;o.params["query[person_inactive]"]=this.showInActive?0:1;
+},columns:function(){return [this.c_name(),this.c_office_id_name(),this.c_role(),this.c_phone(),this.c_fax(),this.c_email(),this.c_active()]},dialog:function(){return Pman.Dialog.PersonStaff;},bulkAdd:function(){return false;},newDefaults:function(){return {id:0,company_id:Pman.Login.authUser.company_id,company_id_name:Pman.Login.authUser.company_id_name,company_id_address:Pman.Login.authUser.company_id_address,company_id_tel:Pman.Login.authUser.company_id_tel,company_id_fax:Pman.Login.authUser.company_id_fax};
+}});
+Pman.on("beforeload",function(){if(Pman.Login.authUser.company_id_comptype!="OWNER"){return;}if(!Pman.hasPerm("Core.Projects_All","S")){return;}Pman.register({modKey:"010-pman_tab_adminprojects",module:Pman.Tab.AdminProjects,region:"center",parent:Pman.Tab.Admin,name:_T["2fd9324fe11c112090e216c588b1ce2e"]});
+});Pman.Tab.AdminProjects={panel:false,disabled:false,parentLayout:false,add:function(C,B){if(this.disabled){return;}var A=this;this.parentLayout=C;this.panel=this.parentLayout.addxtype({xtype:"GridPanel",title:_T["f6437120f077a24232be600cea646ec1"],fitToframe:true,fitContainer:true,tableName:"Projects",background:true,listeners:{activate:function(){A.panel=this;
+if(A.grid&&A.grid.rendered){A.grid.footer.onClick("first");}}},grid:{xtype:"Grid",autoExpandColumn:"remarks",loadMask:true,listeners:{render:function(){A.grid=this;A.dialog=Pman.Dialog.Projects;A.filter="P,U";A.getTypes=function(){return [["U",_T["af28d3518a6766751b3919d79c405dd1"]],["P",_T["bdf15682d085d16c96ee0691a12093fe"]],["C",_T["0f04e5f053394b0c0f0c8c7a59c67a44"]],["N",_T["5707676d5fcba13248788c5ead856c7a"]],["X",_T["7b5b05c6f68ff37d71ebd54016374cd4"]]];
+};A.typeToString=function(v){var ar=this.getTypes();var D="";Roo.each(ar,function(a){if(a[0]==v){D=a[1];return false;}});return D;};A.grid.footer.onClick("first");},rowdblclick:function(g,ri,e){A.dialog.show(g.getDataSource().getAt(ri).data,function(){_self.footer.onClick("refresh");
+});}},dataSource:{xtype:"Store",reader:Pman.Readers.Projects,listeners:{beforeload:function(D,o){if(!A.searchBox){return false;}o.params=o.params?o.params:{};o.params["query[project_search]"]=A.searchBox.getValue();o.params["query[project_filter]"]=A.filter;
+}},sortInfo:{field:"code",direction:"DESC"},remoteSort:true,proxy:{xtype:"HttpProxy",method:"GET",url:baseURL+"/Roo/Projects.php"}},colModel:[{header:"Type",width:70,dataIndex:"type",renderer:function(v){return A.typeToString(v);}},{header:"Code",width:90,dataIndex:"code",renderer:function(v){return String.format("{0}",v);
+}},{header:"Project Name",width:300,dataIndex:"name",renderer:function(v){return String.format("{0}",v);}},{header:"Client ",width:100,dataIndex:"client_id_name",renderer:function(v){return String.format("{0}",v);}},{header:"Remarks",width:300,dataIndex:"remarks",renderer:function(v){return String.format("{0}",v);
+}}],footer:{xtype:"PagingToolbar",pageSize:25,displayInfo:true,displayMsg:_T["680089b0ca930a79f1b605e9962c523c"],emptyMsg:_T["a416145f09384cea45e24d3da8321900"]},toolbar:{xtype:"Toolbar",items:[{text:_T["bc286832507396098fb722f0044c19fa"],xtype:"Button",cls:"x-btn-text-icon",icon:Roo.rootURL+"images/default/dd/drop-add.gif",listeners:{click:function(){A.dialog.show({id:0},function(){A.grid.footer.onClick("first");
+});}}},{text:_T["442a6817e8f99102370b535fa55d2d05"],xtype:"Button",cls:"x-btn-text-icon",icon:Roo.rootURL+"images/default/tree/leaf.gif",listeners:{click:function(){var s=A.grid.getSelectionModel().getSelections();if(!s.length||(s.length>1)){Roo.MessageBox.alert(_T["ce80b3a191db7f941f320dea440b47b0"],s.length?_T["a0c74aadfcf9b556a76ebc1d0142f560"]:_T["0e9c16fe133240e390334f702776a673"]);
+return;}A.dialog.show(s[0].data,function(){A.grid.footer.onClick("first");});}}},{xtype:"Separator",xns:Roo.Toolbar},{xtype:"TextItem",xns:Roo.Toolbar,text:_T["abd8c39761eb10b00ad61ce418ff6504"]},{xtype:"TextField",xns:Roo.form,listeners:{render:function(D){A.searchBox=D;
+},specialkey:function(D,e){if(e.getKey()==13){A.grid.footer.onClick("first");}}},width:135},{xtype:"Button",xns:Roo.Toolbar,listeners:{click:function(D,e){A.grid.footer.onClick("first");}},icon:rootURL+"/Pman/templates/images/search.gif",cls:"x-btn-icon"},{xtype:"Button",xns:Roo.Toolbar,listeners:{click:function(D,e){A.searchBox.setValue("");
+A.grid.footer.onClick("first");}},icon:rootURL+"/Pman/templates/images/edit-clear.gif",cls:"x-btn-icon"},{xtype:"Separator",xns:Roo.Toolbar},{xtype:"TextItem",xns:Roo.Toolbar,text:_T["2cc3dce41de8c75237e0ada619eed78d"]},{xtype:"Button",xns:Roo.Toolbar,text:_T["471a89fceb6e624e6ccbae3921eedee1"],listeners:{toggle:function(D,st){if(st){A.filter="P,N,U";
+}A.grid.footer.onClick("first");}},toggleGroup:"pgrp",pressed:false,enableToggle:true},{xtype:"Button",xns:Roo.Toolbar,text:_T["f6437120f077a24232be600cea646ec1"],listeners:{toggle:function(D,st){if(st){A.filter="P,U";}A.grid.footer.onClick("first");}},toggleGroup:"pgrp",pressed:true,enableToggle:true},{xtype:"Button",xns:Roo.Toolbar,text:_T["08122fd86306d97ace5e61fdbdab612a"],listeners:{toggle:function(D,st){if(st){A.filter="N";
+}A.grid.footer.onClick("first");}},toggleGroup:"pgrp",pressed:false,enableToggle:true},{xtype:"Button",xns:Roo.Toolbar,text:_T["c9af45ef2226a5c486f868634f557ca4"],listeners:{toggle:function(D,st){if(st){A.filter="X,C";}A.grid.footer.onClick("first");}},toggleGroup:"pgrp",pressed:false,enableToggle:true}]},selModel:{xtype:"RowSelectionModel",xns:Roo.grid,singleSelect:true}},region:"center"});
+}};
+Pman.on("beforeload",function(){Pman.register({modKey:"000-pman_tab_adminlogevents",module:Pman.Tab.AdminLogEvents,region:"center",parent:Pman.Tab.AdminLogs,name:_T["53510339347f1ff64b52c8c3747c0cd3"]});});Pman.Tab.AdminLogEvents={panel:false,disabled:false,parentLayout:false,add:function(C,B){if(this.disabled){return;
+}var A=this;this.parentLayout=C;this.panel=this.parentLayout.addxtype({xtype:"GridPanel",title:_T["0d38c3fb4c8500c67d01990bba2cf569"],fitToframe:true,fitContainer:true,tableName:"Events",background:true,listeners:{activate:function(){A.panel=this;if(A.grid){A.grid.footer.onClick("first");
+}}},grid:{xtype:"Grid",autoExpandColumn:"remarks",loadMask:true,listeners:{render:function(){A.grid=this;if(A.panel.active){this.footer.onClick("first");}}},dataSource:{xtype:"Store",reader:Pman.Readers.Events,listeners:{beforeload:function(D,o){if(!A.personSel){return;
+}o.params=o.params||{};o.params.person_id=A.personSel.getValue();}},remoteSort:true,sortInfo:{field:"event_when",direction:"DESC"},proxy:{xtype:"HttpProxy",method:"GET",url:baseURL+"/Roo/Events.php"}},colModel:[{header:"When",width:100,dataIndex:"event_when",renderer:function(v){return v?v.dateFormat("d/m/Y H:i"):"";
+}},{header:"Staff",width:150,dataIndex:"person_name",renderer:function(v){return String.format("{0}",v);}},{header:"Action",width:100,dataIndex:"action",renderer:function(v){return String.format("{0}",v);}},{header:"IP",width:100,dataIndex:"ipaddr",renderer:function(v){return String.format("{0}",v);
+}},{header:"Affected",width:100,dataIndex:"on_id",renderer:function(v,x,r){return v?String.format("{0}({1})",r.data.on_table,v):"";}},{header:"Remarks",width:300,dataIndex:"remarks",renderer:function(v){return String.format("{0}",v);}}],footer:{xtype:"PagingToolbar",pageSize:25,displayInfo:true,displayMsg:_T["2ff0fe02cb998d6c2953ae2d68ca6ea4"],emptyMsg:_T["9a0575c139cbae13541dff297791a7d8"]},toolbar:{xtype:"Toolbar",items:[{xtype:"TextItem",xns:Roo.Toolbar,text:_T["b6ae8269eb074050cf22d7199051a157"]},{fieldLabel:_T["a9dbe313b1e0082050bda7ce5fc93f7e"],name:"person_id_name",qtip:_T["b827dddadd3ebfc23104551ee6a3a6f9"],emptyText:_T["b827dddadd3ebfc23104551ee6a3a6f9"],xtype:"ComboBox",selectOnFocus:true,allowBlank:true,width:150,listWidth:400,editable:false,displayField:"name",valueField:"id",typeAhead:true,forceSelection:true,triggerAction:"all",tpl:"<div class=\"x-grid-cell-text x-btn button\"><b>{name}</b> </div>",queryParam:"query[name]",loadingText:_T["d2489c8b4febecb80a1c387c1431696c"],minChars:2,pageSize:20,listeners:{select:function(D,F,E){A.grid.footer.onClick("first");
+},render:function(D){A.personSel=D;}},store:{xtype:"Store",reader:Pman.Readers.Person,listeners:{beforeload:function(D,o){o.params=o.params||{};o.company_id=Pman.Login.authUser.company_id;}},proxy:{xtype:"HttpProxy",url:baseURL+"/Roo/Person.php",method:"GET"}}}]}},region:"center"});
+}};
+Pman.on("beforeload",function(){Pman.Dialog.PersonBulkAdd=new Pman.Dialog.PersonEditor({type:"new",dialogConfig:{title:_T["001969a043caf8ee9c27978405c14cf2"],height:350},itemList:["company_id_name","office_id_name","bulklist","id","active"]});});
+Pman.on("beforeload",function(){var A=false;if(A){return;}Pman.register({modKey:"999-pman_tab_admintranslations",module:Pman.Tab.AdminTranslations,region:"center",parent:Pman.Tab.Admin,name:_T["13e4f84d09a2d4057fdee709efdcca61"]});});Pman.Tab.AdminTranslations=new Roo.util.Observable({panel:false,disabled:false,parentLayout:false,add:function(C,B){var A=this;
+this.parentLayout=C;this.panel=C.addxtype({xtype:"GridPanel",title:_T["f721d54a743cf7f401af0579e7524d23"],fitToframe:true,fitContainer:true,background:true,listeners:{activate:function(){A.panel=this;if(A.grid){A.grid.getDataSource().reload();}}},grid:{xtype:"EditorGrid",autoExpandColumn:"txt",loadMask:true,listeners:{render:function(){A.grid=this;
+if(A.panel.active){A.grid.getDataSource().reload();}},beforeedit:function(e){console.log("beforeedit");if(e.record.get("txt").replace(/\s+/,"").length){return true;}if(e.record.get("suggest").length){e.record.set("txt",e.record.get("suggest"));return;}var tl=e.record.get("id").split("/")[0];
+tl=(tl=="zh_HK")?"zh-TW":tl;tl=tl.replace("_","-");var D=e.record;Pman.gtranslate(e.record.get("origtxt"),"en",tl,function(E){if(typeof (E)=="object"){return;}if(A.grid.activeEditor){A.grid.activeEditor.setValue(E);}else{D.set("txt",E);}});return true;},afteredit:function(e){var D=function(E){var g=A.grid;
+Ext.Ajax.request({url:baseURL+"/Admin/Translations.php",method:"POST",params:{id:E.get("id"),txt:E.get("txt"),lang:A.langCombo.getValue(),module:A.modCombo.getValue()},success:function(){},failure:function(){Ext.Msg.alert(_T["cc3c9c34f380feb1c3d59fc9ade606eb"],_T["809badd958a9c1ea39a77cc940810dde"]);
+}});};D.defer(1000,A,[e.record]);}},clicksToEdit:1,xns:Roo.Grid,dataSource:{xtype:"Store",reader:Pman.Readers.Category,listeners:{beforeload:function(E,D){if(!A.langCombo||!A.langCombo.getValue().length){return false;}if(!A.modCombo||!A.modCombo.getValue().length){return false;
+}D.params={lang:A.langCombo.getValue(),module:A.modCombo.getValue()};}},proxy:{xtype:"HttpProxy",method:"GET",url:baseURL+"/Admin/Translations.php"},reader:{xtype:"JsonReader",xns:Roo.data,root:"data",totalProperty:"total",id:"id",fields:["id","tablename","tableid","colname","txt","lang",{name:"updated",type:"date",dateFormat:"Y-m-d H:i:s"},{name:"origupdated",type:"date",dateFormat:"Y-m-d H:i:s"},"origtxt","msum","suggest"]}},colModel:[{header:"Name",width:150,dataIndex:"colname",renderer:function(v,x,r){var c="#666";
+if(r.get("updated")<r.get("origupdated")){c="red";}return "<div style=\"color:"+c+"\";>"+r.get("tableid")+":"+v+"</div>";}},{header:"Original",width:300,dataIndex:"origtxt",renderer:function(v,x,r){var c="#666";if(r.get("updated")<r.get("origupdated")){c="red";
+}return "<div style=\"color:"+c+"\">"+Ext.util.Format.htmlEncode(v)+"</div>";}},{header:"Translated (Click to Edit)",width:150,dataIndex:"txt",renderer:function(v,x,r){var c="#666";if(r.get("updated")<r.get("origupdated")){c="red";}return "<div style=\"color:"+c+"\">"+Ext.util.Format.htmlEncode(v)+"</div>";
+},editor:{xtype:"GridEditor",xns:Roo.grid,field:{xtype:"TextField",xns:Roo.form}}}],toolbar:{xtype:"Toolbar",items:[{xtype:"ComboBox",listeners:{render:function(D){A.modCombo=D;},select:function(D,F,E){A.grid.getDataSource().reload();}},valueField:"module",displayField:"module",width:200,typeAhead:false,editable:false,mode:"local",triggerAction:"all",emptyText:_T["7dc4f8fc44cbe1bbe1d99a2d7bac22d4"],selectOnFocus:true,store:{xtype:"SimpleStore",xns:Roo.data,fields:["module"],data:(function(){var D=[];
+Roo.each(AppModules.split(","),function(E){D.push([E]);});return D;})()}},{xtype:"ComboBox",listeners:{select:function(D,F,E){A.grid.getDataSource().reload();},render:function(D){A.langCombo=D;}},valueField:"lang",displayField:"ldisp",width:200,typeAhead:false,editable:false,mode:"local",triggerAction:"all",emptyText:_T["69cea9ae503551d985aced167bb01c62"],selectOnFocus:true,store:{xtype:"SimpleStore",xns:Roo.data,fields:["lang","ldisp"],data:[["zh_HK","繁中 - Trad. Chin. (HK)"],["zh_CN","簡中 - Simp. Chin."]]}}]}},region:"center"});
+}});
diff --git a/compiled/_translation_.js b/compiled/_translation_.js
new file mode 100644 (file)
index 0000000..66c9ef2
--- /dev/null
@@ -0,0 +1,195 @@
+
+"Pman.Tab.Teams.js" : {
+        "Teams" : "Teams",
+        "Staff Teams" : "Staff Teams"
+},
+"Pman.Tab.Admin.js" : {
+        "Admin" : "Admin",
+        "Add Project" : "Add Project",
+        "Administration" : "Administration"
+},
+"Pman.Tab.Groups.js" : {
+        "Groups" : "Groups",
+        "Permission Groups" : "Permission Groups"
+},
+"Pman.Tab.Office.js" : {
+        "Add" : "Add",
+        "Fax" : "Fax",
+        "Edit" : "Edit",
+        "Email" : "Email",
+        "Error" : "Error",
+        "Phone" : "Phone",
+        "Delete" : "Delete",
+        "Address" : "Address",
+        "Select a Row" : "Select a Row",
+        "No Offices found" : "No Offices found",
+        "Select only one Row" : "Select only one Row",
+        "Name / Department / Sub Comp." : "Name / Department / Sub Comp.",
+        "Displaying Offices {0} - {1} of {2}" : "Displaying Offices {0} - {1} of {2}",
+        "Select a company to add a office to" : "Select a company to add a office to",
+        "Offices / Departments / Sub-Companies" : "Offices / Departments / Sub-Companies"
+},
+"Pman.Tab.StaffMgr.js" : {
+        "Staff / Teams" : "Staff / Teams",
+        "Staff Manager" : "Staff Manager"
+},
+"Pman.Tab.Contacts.js" : {
+        "Contact" : "Contact",
+        "Contacts" : "Contacts",
+        "Contacts List" : "Contacts List"
+},
+"Pman.Tab.GroupMgr.js" : {
+        "Permissions" : "Permissions",
+        "Groups and Permissions" : "Groups and Permissions"
+},
+"Pman.Dialog.Groups.js" : {
+        "" : "",
+        "Save" : "Save",
+        "Cancel" : "Cancel",
+        "Leader" : "Leader",
+        "Edit Team" : "Edit Team",
+        "Edit Group" : "Edit Group",
+        "Group Name" : "Group Name",
+        "Searching..." : "Searching...",
+        "Enter Group name" : "Enter Group name",
+        "Select Person Who opened" : "Select Person Who opened"
+},
+"Pman.Tab.AdminLogs.js" : {
+        "Logs" : "Logs"
+},
+"Pman.Tab.Companies.js" : {
+        "Add" : "Add",
+        "Fax" : "Fax",
+        "Tel" : "Tel",
+        "Edit" : "Edit",
+        "Name" : "Name",
+        "Ref#" : "Ref#",
+        "Type" : "Type",
+        "Email" : "Email",
+        "Error" : "Error",
+        "Delete" : "Delete",
+        "Address" : "Address",
+        "Offices" : "Offices",
+        "Remarks" : "Remarks",
+        "Companies" : "Companies",
+        "Select a Row" : "Select a Row",
+        "No Companies found" : "No Companies found",
+        "Select only one Row" : "Select only one Row",
+        "Contact Companies Manager" : "Contact Companies Manager",
+        "Displaying Companies {0} - {1} of {2}" : "Displaying Companies {0} - {1} of {2}"
+},
+"Pman.Tab.ProjectMgr.js" : {
+        "" : "",
+        "Add" : "Add",
+        "All" : "All",
+        "Code" : "Code",
+        "Edit" : "Edit",
+        "Team" : "Team",
+        "Type" : "Type",
+        "Error" : "Error",
+        "Client" : "Client",
+        "Closed" : "Closed",
+        "Search" : "Search",
+        "Project" : "Project",
+        "Remarks" : "Remarks",
+        "Projects" : "Projects",
+        "Add Project" : "Add Project",
+        "Non-Project" : "Non-Project",
+        "Non-Projects" : "Non-Projects",
+        "Project Name" : "Project Name",
+        "Reset Search" : "Reset Search",
+        "Select a Row" : "Select a Row",
+        "Project Manager" : "Project Manager",
+        "Project (Closed)" : "Project (Closed)",
+        "Select only one Row" : "Select only one Row",
+        "Non-Project (Closed)" : "Non-Project (Closed)",
+        "Project (Unconfirmed)" : "Project (Unconfirmed)"
+},
+"Pman.Tab.ContactsMgr.js" : {
+        "Contacts Manager" : "Contacts Manager"
+},
+"Pman.Tab.ContactGrps.js" : {
+        "Groups" : "Groups",
+        "Contacts Groups" : "Contacts Groups"
+},
+"Pman.Tab.PersonStaff.js" : {
+        "Staff" : "Staff"
+},
+"Pman.Tab.Group_Rights.js" : {
+        "" : "",
+        "Add" : "Add",
+        "Fax" : "Fax",
+        "Edit" : "Edit",
+        "Save" : "Save",
+        "Staff" : "Staff",
+        "[All]" : "[All]",
+        "Delete" : "Delete",
+        "Events" : "Events",
+        "Groups" : "Groups",
+        "Person" : "Person",
+        "Reload" : "Reload",
+        "Rights" : "Rights",
+        "Offices" : "Offices",
+        "Admin Tab" : "Admin Tab",
+        "Companies" : "Companies",
+        "Documents" : "Documents",
+        "List/View" : "List/View",
+        "Timesheet" : "Timesheet",
+        "Permission" : "Permission",
+        "Print / Export" : "Print / Export",
+        "Document Manager" : "Document Manager",
+        "Unread Documents" : "Unread Documents",
+        "Work In Progress" : "Work In Progress",
+        "Permission Groups" : "Permission Groups",
+        "Project Directory" : "Project Directory",
+        "Distribute Documents" : "Distribute Documents",
+        "Send Faxes To Companies" : "Send Faxes To Companies",
+        "There was a problem saving the data" : "There was a problem saving the data",
+        "You can not set permissions for that group" : "You can not set permissions for that group"
+},
+"Pman.Tab.Group_Members.js" : {
+        "Staff Membership" : "Staff Membership",
+        "Permission Group Membership" : "Permission Group Membership"
+},
+"Pman.Tab.AdminProjects.js" : {
+        "Add" : "Add",
+        "All" : "All",
+        "Edit" : "Edit",
+        "Error" : "Error",
+        "Show:" : "Show:",
+        "Closed" : "Closed",
+        "Project" : "Project",
+        "Search:" : "Search:",
+        "Projects" : "Projects",
+        "Non-Project" : "Non-Project",
+        "Non-Projects" : "Non-Projects",
+        "Admin - Projects" : "Admin - Projects",
+        "Project (Closed)" : "Project (Closed)",
+        "Select a Project" : "Select a Project",
+        "No Projects found" : "No Projects found",
+        "Non-Project (Closed)" : "Non-Project (Closed)",
+        "Project (Unconfirmed)" : "Project (Unconfirmed)",
+        "Select only one Project" : "Select only one Project",
+        "Displaying Projects  {0} - {1} of {2}" : "Displaying Projects  {0} - {1} of {2}"
+},
+"Pman.Tab.AdminLogEvents.js" : {
+        "Show" : "Show",
+        "Events" : "Events",
+        "Person " : "Person ",
+        "Searching..." : "Searching...",
+        "Select Person " : "Select Person ",
+        "No Events found" : "No Events found",
+        "Admin - Logs - Events" : "Admin - Logs - Events",
+        "Displaying Events  {0} - {1} of {2}" : "Displaying Events  {0} - {1} of {2}"
+},
+"Pman.Dialog.PersonBulkAdd.js" : {
+        "Bulk add Contacts" : "Bulk add Contacts"
+},
+"Pman.Tab.AdminTranslations.js" : {
+        "Error" : "Error",
+        "Translations" : "Translations",
+        "Select Module" : "Select Module",
+        "Select Language" : "Select Language",
+        "Admin - Translations" : "Admin - Translations",
+        "There was a problem saving the data - try reloading" : "There was a problem saving the data - try reloading"
+},
\ No newline at end of file
diff --git a/data/lang.zh_CN.js b/data/lang.zh_CN.js
new file mode 100644 (file)
index 0000000..8fcdd85
--- /dev/null
@@ -0,0 +1 @@
+_T["zh_CN"]={"2cbebab614b8ed2d39315ca3c3178ad4":"\u7ba1\u7406\u5458","da27970c3ea08e35a23fb956908b78f4":"\/","cf72aae865f3f0be736987f7dc390e25":"\u9519\u8bef","5359af676f739607431a729778549fdd":"\u6ce8\u9500","cd4b091c7fe3281497a3b47dfb18e9d9":"\u786e\u8ba4","02e3cddd44d16389541b6aeb8c790ecc":"\u5220\u53bb","1bbff82eb64f912dea3597cea30b34df":"\u9879\u76ee","e84cbf769d01c3cf5f2470839353035a":"\u9519\u8bef\u5220\u9664","1c34c8962b28be597267aef253b4694b":"\u8bf7\u7a0d\u5019...","52a960f47139e4edffb1f8491d8079fd":"\u5efa\u8bbe","40e47ffb407a4d733c8536dd4e1a705c":"\u65b0\u6587\u4ef6","0902cdfae7b5ebaa525d4dd4fc121adb":"\u66f4\u6539\u5bc6\u7801","83bb305e4ae0a9f125add2a4c184aeb1":"\u65b0\u6587\u4ef6","853a8322564e73c79d25f6053edd6397":"\u6587\u4ef6\u7ba1\u7406\u5668","fab1b3f63dbaddaaefb630f4798eb73e":"\u65b0\u7684\u6587\u4ef6\u8f93\u51fa","ef2ae132f9ef2221044baf7ddf055131":"\u65b0\u7684\u6587\u4ef6\u8f93\u51fa","77c934cb4278120e35dd4e1947aaa4a6":"\u53d1\u9001\u6570\u636e\u65f6\u53d1\u751f\u9519\u8bef","51ff98c417d79325f91861af9c61cfb3":"\u5efa\u7b51\u754c\u9762","6a4a6d2119244f74b8d02f20ef005c5e":"\u5efa\u7b51\u754c\u9762...","b636c0e59d884e880fb4ca5fda048cf4":"\u9519\u8bef\u8f7d\u5165\u7ec6\u8282","b5f19c6de6e6bde8526a37c2a842e149":"\u52a0\u8f7d\u6587\u4ef6\u8be6\u7ec6\u8bf4\u660e","39a3e0a4a6ff1d3b16ac0133704a5d0f":"\u8bf7\u66f4\u6b63\u6240\u6709\u9519\u8bef","9541c362ba7c5444620fc19601a3372d":"\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u884c\u5220\u9664","665a8e451416415f90d36738b66d99b3":"\u4f60\u51c6\u5907\u597d\u8981\u5220\u9664\u8fd9\u4e9b\u884c","7aabc9f3cf1f6785a4bc4dd0f1a2a321":"\u8282\u6c34\u5931\u8d25=\u4fee\u6b63\u9519\u8bef\uff0c\u7136\u540e\u518d\u8bd5\u4e00\u6b21","4411819afba5de2a011d9fc7e7633393":"\u6b22\u8fce {0} \uff08{1}\uff09 \uff0c\u4ee5\u4e00\u65bd\u5de5v \uff08{3}\uff09\u7684 {2}","ebccc1dae0449198236b0c614769f51a":"\u4e00\u65bd\u5de5\u6587\u4ef6\u7ba1\u7406\u7cfb\u7edfV","23ae09c64db8dec497f5624af73362ad":"\u4f20\u771f","626434c27546f821700d2113412f217b":"\u6dfb\u52a0","0a1c7fe7d40f8c02f06e6e059543a876":"\u7535\u8bdd","896d5e68ff54a3adeb1fb2626e15aa61":"\u4f20\u771f","14e570036be0c6392cc3754a2eed1848":"\u7f16\u8f91","a0eeb1fa20b9f07a5e45f2d6b151b08c":"\u540d\u5b57","f9ea6f84c6986c5d0ebaa617c56efc3f":"\u4fdd\u5b58","03f1e3da38f4fc8a3e7c47184d3bad57":"\u9519\u8bef","de21f69162c62fbfd9216a4f2e8e77ef":"\u7535\u90ae","8fc4b87ad6c7bcf2f4f2b373510bc36c":"\u7535\u8bdd","a0c2bac69a54727af53708085fabc273":"\u53d6\u6d88","50c493dc4c8b3f232a2e4325f3e7da87":"\u5220\u9664","69e56c04bfd11759fc68304f6bb18d0c":"\u5730\u5740","71123d5c432df83889d7ca43e8197811":"\u529e\u4e8b\u5904","1134ecf394487a64679d529e070ea5ea":"\u5907\u6ce8","40c2616bd3e32c849d5ec77f78efc9ee":"\u516c\u53f8","6cb3308eae6d9ed2b9ebb10bcccf5544":"\u53c2\u8003","c8ecbe6867f2f0101cb8640530e0dbb5":"\u8f93\u5165\u4ee3\u7801","9976254dc68ab1f1f8502e55ff33716b":"\u516c\u53f8\u540d\u79f0","82264ee7274fc7ed48a2dbaec40dc358":"\u9009\u4e2d\u67d0\u884c","d863ba3ca820b68e432d05f587120c22":"\u8f93\u5165\u5730\u5740","48f9d29d02a96bf47ad358cf9b7da512":"\u8f93\u5165\u5907\u6ce8","6f00d554e63504932897a28616dfa4eb":"\u4fee\u6539\u516c\u53f8","39068f40676e9592b65b34c8fbd40739":"\u8f93\u5165\u4f20\u771f\u53f7\u7801","aea1103ddab0b40b14d439e6fe418209":"\u8f93\u5165\u516c\u53f8\u540d\u79f0","ee9a7b4d5ffa537520840ca04a659c0b":"\u8f93\u5165\u7535\u8bdd\u53f7\u7801","d59ad4353a277c017ac9786d7db35c5d":"\u6ca1\u6709\u516c\u53f8\u53d1\u73b0","5c6c8dff18260ac6f51c3ca832e98dfb":"\u8f93\u5165\u7535\u5b50\u90ae\u4ef6\u5730\u5740","ed447e9e305d7511a4fc52333727c664":"\u516c\u53f8\u7f16\u53f7\uff08\u5907\u6848\u7f16\u53f7\u3002 \uff09","621c880ea3f2ef414bc10e94a2de6f35":"\u53ea\u9009\u62e9\u4e00\u5217","24ab6b3706b93c27b8926f0504f39b94":"\u663e\u793a\u516c\u53f8\uff08 0 \uff09 - \uff08 1 \uff09\u7684\uff08 2 \uff09","4bdc27a318967a4eb0358433aa6d4dc7":"\u81f3","e48ed554628617c4756dc2aa2e1609e5":"\u7f16\u8f91","e1b7fb69e1459d023ee0856bd1a52e77":"\u6587\u4ef6","5907ee8666b08970af6a623c014d2df2":"\u7c7b\u578b","91f526392b3fc95bb13abb6fc7f24d58":"\u9519\u8bef","ef493f39b05a8cf86909f2e86f7ff861":"CI Num","d3d25062e3d31eb5e5eb85a47499126e":"CO Num","3b8d12fbf53fab18ff7b99f4b2efbb35":"\u4e4b\u95f4","b2453597fc7b92e20c53d7a3ef0400f2":"\u641c\u7d22","de02c421a7c2cddd315c949dc90d7996":"\u9879\u76ee","9e686361bbed01edfd5f10ee64ae0a49":"CO","8adf77c03cf2906aa5757ac3ce59996f":"\u53d1\u51fa\u7684","95fdc3d2d5a02f85cadc8f0ea5f823ee":"\u9898\u76ee","13fa15f80c0a0285d547c079b5325e96":"\u53d1\u9001\u5230","fc96c58dd36f64d8ffb211f4f4dfadf1":"\u6dfb\u52a0\u6587\u4ef6","cf4141cfb59641f4e32359e65122f903":"\u7f29\u5199","921549bcf70afd971d0ec09b5b611753":"\u53c2\u8003","0364723536845e221318c572ceb57aaa":"\u641c\u7d22\uff1a","30457a111d5cac0cc27390bbb580f46f":"\u53ea\u663e\u793a\uff1a","3557b8f864ba487dd4bdb58319d9cbe3":"\u53d1\u884c\u65e5\u671f","3e91fb638ae80beacea9cc99e1f5d0da":"\u6587\u4ef6","4f94832b8a2d286761fd98b95f0db4c3":"\u53c2\u8003\uff08 2 \uff09","49728ecd775e27155dbccb172a5fdfea":"\u91cd\u7f6e\u641c\u7d22","56230157f3cf9ad9da5ef72c9c621467":"\u641c\u7d22...","3ccab08655b20b394d5159b7a2f3156e":"\u9009\u4e2d\u67d0\u884c","ff6d5c19f00a25ffce75ec31577a1bbc":"\u6587\u4ef6\u8f93\u51fa","6a94112b604de275d5ebaf7b7e7dfe5a":"\u8f93\u5165\u53d1\u9001\u5230","ab399032154eb912c79c663e390303b9":"\u6536\u5230\u65e5\u671f","d97da7b061cd3941e4b980683c1dcfb1":"\u8f93\u5165\u53d1\u9001\u5230","0605b9c1a5699ef5af5f2c5a796a3e01":"\u8f93\u5165\u4e3b\u9898","d1abeda0cf6e66a8886511b17130fe28":"\u8f93\u5165\u58f0\u6bcd","d44e0d48fe654839aa01c39eb9cd136a":"\u9009\u62e9\u9879\u76ee","302b2dc2147ed6adef6e12d7e10a4021":"\u7f16\u8f91\u6587\u4ef6","b3da063a9329a84c868bbd98b10a9c24":"\u8f93\u5165\u53c2\u8003","c2c871cbd6e6d654d1dd12b3a5fb0bd9":"\u7f16\u8f91\u6587\u4ef6\u8f93\u51fa","2f0380e0fe96168fe6b9cbb22837e29b":"\u8f93\u5165\u65e5\u671f\u5370\u53d1\u65e5\u671f","1b54b9ec331d5012b14ce7a9896380c0":"\u521b\u5efa\u6587\u4ef6","c65e0ee48ec011444b56cb74cf4ca917":"\u8f93\u5165\u53c2\u8003\uff08 2 \uff09","7481c432209462346b0b9810413b804b":"\u6ca1\u6709\u6587\u4ef6\u53d1\u73b0","f47f8b8b0abfcc913008a82a4d5d7076":"\u521b\u5efa\u6587\u4ef6\u8f93\u51fa","30a55ca6ec4cdc6ca482156481c01377":"\u8f93\u5165\u6536\u5230\u65e5\u671f","ab045522e04284eaa2bf4571800723f0":"\u53ea\u9009\u62e9\u4e00\u5217","9c749e2cd69e74c62f12519253bffc63":"\u9009\u62e9\u6587\u6863\u7c7b\u578b","78b415ef3a68650fae89eec57d485d87":"\u9009\u62e9\u4e00\u4e2a\u9879\u76ee\u7b2c\u4e00","e9963207acc2392ad66b84db09d58a2a":"\uff08\u9009\u62e9\u6587\u4ef6\u67e5\u770b\uff09","e94da1b3b038f54c4cfc576222e7c5b7":"\u9884\u89c8\/\u8be6\u60c5\/\u5907\u6ce8","74c17995e10ec81f1623a306a4479ce4":"\u663e\u793a\u6587\u4ef6 {0}  -  {1} \/ {2}","86039bbc50dd504e4b9976a549cbbc8f":"\u6587\u4ef6=\u67e5\u770b\/\u5faa\u73af\/\u8bc4\u8bba","cf621032c44bd39ede60c6900992cd07":"\u6587\u4ef6\u8f93\u51fa=\u67e5\u770b\/\u5faa\u73af\/\u8bc4\u8bba","08bdbb08af2ad3580621243cf11e7673":"\u6dfb\u52a0","614efef301b8ed0fc220250d15317a6d":"\u7801","a774f9cebbca86c2c0a2755b3b3293e0":"\u4fdd\u5b58","cc6fa92cb4fd0f242d4fdf1cc8d1594d":"\u7f16\u8f91","91d2053d6ed89a82bdcd1135aa3003a8":"\u9519\u8bef","e62ef7df7d2c826f2d1bbdd17edd6c95":"\u53d6\u6d88","0b8c4cefae65755a2a94492377b87e1e":"\u5220\u9664","6cb6b18c3aa9e2e5efacdb1b53bd0833":"\u5907\u6ce8","9dc55770a0ac10da80d90152e2788534":"\u8f93\u5165\u4ee3\u7801","ff62011ce3b6f176d275cbcd2a16e7f6":"\u9009\u4e2d\u67d0\u884c","5272e044d08bd444d6087e2890ec6e48":"\u8f93\u5165\u5907\u6ce8","9ab8d2b79fe7c8734cf4d5af399801be":"\u6587\u4ef6\u7c7b\u578b","f26795616f04f00bbfff642d8ef6cdd0":"\u6587\u4ef6\u7c7b\u578b","7fb8d76e66be8390c220f0c6b5847e8a":"\u7f16\u8f91\u6587\u4ef6\u7c7b\u578b","6530a62b6acef6d4ce7d9ffb3f6afd00":"\u8f93\u5165\u6587\u4ef6\u7c7b\u578b","f2e24d6b8606ba4ffd9f02afd0c70846":"\u53ea\u9009\u62e9\u4e00\u5217","ed1c37a89d97e107d6ec490ad157012e":"\u4efb\u4f55\u6587\u4ef6\u7c7b\u578b","018350df3629f8bfa9f344dbb395e284":"\u663e\u793a\u6587\u4ef6\u7c7b\u578b {0} - {1} \u7684 {2}","1035d6347edcb7b5c602dc23ad7aa63d":"\u4f20\u771f","bf535744b68f4559bbbfc36ec83b5ef7":"\u9519\u8bef","850e4593e30dd4e4774b4cdcb0733394":"\u4fdd\u5b58","3b0139efdd230aaf4724ad9028479bc3":"\u7535\u8bdd","16cc9851c6d1358d3a115107e1bab228":"\u516c\u53f8","7e179e7791497c427c10337391aaf966":"\u53d6\u6d88","376c6d10e2dda54bf802bf884c5cae88":"\u8f93\u5165\u4f20\u771f","44f39294228b4b68f2f2e476d6f0f775":"\u8f93\u5165\u540d\u5b57","416b0a6c4ef6d77ffb3aaa6c8417ef87":"\u8f93\u5165\u7535\u5b50\u90ae\u4ef6","c17163a6b3c919a8760865aa8b0ccdb5":"\u8f93\u5165\u7535\u8bdd\u53f7\u7801","c8eaf45780adacdc6be419ffd635c36d":"\u8054\u7cfb\u4eba\u59d3\u540d","3ce95f5f6901930c91b918b0ae2987ac":"\u641c\u7d22...","73664561bb3df5314ab74ab0c36707cb":"\u9009\u62e9\u516c\u53f8","30e41b3edce473481fb57f80e443de37":"\u9009\u62e9\u529e\u4e8b\u5904","259fb33d4f305803833dfa7dad7af4df":"\u6dfb\u52a0\u65b0\u7684\u8054\u7cfb\u4eba","7a87f10a95ea2d60798fc8dc8cb4280c":"\u89d2\u8272\/\u4f4d\u7f6e","0fe6b79a2964fce61ea37510f0cf209a":"\u9009\u62e9\u4e00\u4e2a\u516c\u53f8","34ca3e53d0a18f1f3ad3582fb2be4f02":"\u529e\u516c\u5ba4\/\u90e8","f5dd21cbede4923457d4e992e17177e5":"\u8fdb\u5165\u89d2\u8272\/\u4f4d\u7f6e","ff1677dd987eabe0c7ab80998d2b8c7e":"\u9009\u62e9\u4e00\u4e2a\u516c\u53f8\u7b2c\u4e00","b80d2dd906ab98609a139f4a294120d4":"\u4fdd\u5b58","807f66d5a6b6d0ab6a0816a9dbb56356":"\u9519\u8bef","f69bcf9758d4fb6db4aef93eb471104f":"\u5237\u65b0","1de19fc26c528842c7cd10f5f42b8f30":"\u6210\u5458","dd528577b58d62e70943430bfa4f1224":"\u5de5\u4f5c\u4eba\u5458\u59d3\u540d","a6e551d8b3d2cf3f5971735d740f06ca":"\u53d1\u9001","6946cf7d872bbb7838d9d95f9f4e5dcb":"\u662f\u4f1a\u5458\uff1f","e16e0a075e119585d5cc5dcfa6eebd2d":"\u6ca1\u6709\u7528\u6237\u53d1\u73b0","5983d6d236755a7558d81cf55e8841f0":"\u9519\u8bef\u66f4\u65b0","30e46f8177dff3914293f97547a81dc0":"\u663e\u793a\u5458\u5de5 {0} -  {1}\/{2}","6b8b3603b8ad7b14eedb3d9a4ec16931":"\u6709\u95ee\u9898\u7684\u6570\u636e\u62ef\u6551","91b3447b3245f95c3626e5463da39aa0":"\u6dfb\u52a0","b44692243232a3ed15031580566dad96":"\u7f16\u8f91","fef2188435d72bba15f1e6f93aadc20f":"\u4fdd\u5b58","8daea3c9b95aa92083e03c48d43f136c":"[\u5168\u90e8]","1457916e7ae2e99eea835580f70fc399":"\u5168\u4f53\u804c\u5458","3e776bd142c2a4cd6bd9517eebac2b0d":"\u5220\u9664","826197f6d212a3f49bec20404b0e67e3":"\u4e8b\u4ef6","f91241b3ebf4e346cda50b2886c199f0":"\u4eba","cd1c3bce4551622600b1ec2e12190e07":"\u56e2\u4f53","48deee385f013b60aca5c8fe978b57ad":"\u6743\u5229","d7cfa9dc0e21c6b7c9d8b6dbb56f7135":"\u5237\u65b0","c1f04c3535fc783dc9d97ee55d875e80":"\u529e\u4e8b\u5904","9cc9851b18db8400f95b0de77ab38b90":"\u7ba1\u7406\u5458\u8868","619a20c02f44f6ef9fe6a9e9a49ba86d":"\u516c\u53f8","bda1eefb990a1862d2b19ee7b3539086":"\u6587\u4ef6","318dbc7acbfb642f02288a7bd16d4d2f":"\u8bb8\u53ef","23b1130b6064ec1eba6e9c0b8cce95bc":"\u5217\u8868\/\u67e5\u770b","669465be045dcc6d6802336bb2bc35e9":"\u6253\u5370\/\u5bfc\u51fa","e1e5e5d7dd30f9c197a9c33f112832fa":"\u6587\u4ef6\u7c7b\u578b","e8a1565f85489d25e52fd06ac21df4f0":"\u9879\u76ee\uff08\u5168\u90e8\uff09","49afcee193427b46231fb165287be2cd":"\u672a\u8bfb\u6587\u4ef6","e4c55eabf0e7a8667e4369682ac982d2":"\u9879\u76ee\u76ee\u5f55","9b7dabeb6527227231cf285210b5c27e":"\u5206\u53d1\u6587\u4ef6","d3888611a3074ca0c9a83de7bd07e736":"\u9879\u76ee\uff08\u4f1a\u5458\u7684\uff09","c43b6fc7116389204759066319de9954":"\u6dfb\u52a0","b626b2cb2185981662611f725cb30053":"\u6709\u95ee\u9898\u7684\u6570\u636e\u62ef\u6551","d27ecf6c3f03332b85bfb59d9faad9a7":"\u540d\u5b57","857fb9b48fc0ebcc5b632c3b3be0e0b1":"\u4fdd\u5b58","d58415a6d14d553c3828638d02fb19a1":"\u7f16\u8f91","eaf49f44e766f8d5c6b7e1ea99771e7c":"\u53d6\u6d88","c8c302e51c74e12d32b2feb07e3dd275":"\u9519\u8bef","e8b09bda623b2afa74f352c3ae791b4c":"\u5220\u9664","b71328d9ad614f6d52b35cef7786d438":"\u56e2\u4f53","12b08dd886aac228d1663f867c39d9fa":"\u9ed8\u8ba4","28b7470d06ba4f17f8345aa7dfa259b7":"\u7f16\u8f91\u7ec4","0a5f140005d4d476021404f97cfbe886":"\u7ec4\u540d\u79f0","2cb30db612eddc6e7d5e99a0b657d527":"\u9009\u4e2d\u67d0\u884c","20ff7f0b0ba69db8b87713b7cd583c0a":"\u7ba1\u7406\u5458","0bc80948d243937859102eedf71fc75a":"\u8f93\u5165\u7ec4\u540d\u79f0","33c2039044308c0d944e0d91be191349":"\u60a8\u4e0d\u80fd\u5220\u9664\u8be5\u7ec4","2e6ca1b1f0733d95e9a48cdeee355c6c":"\u8f93\u5165\u7ec4\u540d\u79f0","94198f0fab1b7bdee01f28acfae7d6b8":"\u4f60\u4e0d\u80fd\u91cd\u547d\u540d\u8be5\u5de5\u4f5c\u7ec4","0447a9c18f0980017c9add64d8ecbb56":"\u77e5\u8bc6\u4ea7\u6743","9be66cd6ce6639269a52e2ae45754b6f":"\u8bba","ac43c7106de03bceeda506efed4545fe":"\u4f55\u65f6","25038634453c556b97b87afac033ddc9":"\u5168\u4f53\u804c\u5458","2ce3988501f86780ca717f3b1ab48d6a":"\u884c\u52a8","bde53900453526862b53ce22bf61f38c":"\u4e8b\u4ef6","df286f9cb1bcd5678f6035a925c51a66":"\u5907\u6ce8","c56fbf4206a96161bf6593925c5d78b3":"\u5c55\u793a\u6d3b\u52a8  {0} - {1}\/{2}","23cc9cc4d88f1179752b43014fc53a55":"\u672a\u53d1\u751f\u4efb\u4f55\u53d1\u73b0","6270248531ab8c9eeff32b0cd99b59cb":"\u6dfb\u52a0","08e0cbbba1b743ef6424bfd10b6e9fe4":"\u7801","aac7ac6c3b2737079fe150daf5d4aa95":"\u7f16\u8f91","8bf6dcfc1d67cbeb3988af3c95d9a087":"\u4fdd\u5b58","49d16175b68984c7e8f12d239335ea18":"\u9519\u8bef","620c15e6fe40321af884967f83f4b186":"\u53d6\u6d88","19d0e412088dcaab06f1dd2a3d495774":"\u641c\u7d22","a0aac1883a15cb863c1bbe30da3e4d6d":"\u5907\u6ce8","be481f704a94d3ed774855ec359e74e8":"\u9879\u76ee","c870a4e2e2a3328c2e02bec5615a8c3b":"\u641c\u7d22\uff1a","0e525c273540ccb06218c8b9f7d3d950":"\u9879\u76ee\u540d\u79f0","93e23f98d527bd3afef6bcba5fdd35e5":"\u7f16\u8f91\u9879\u76ee","a231825bd1b61fb68e9634368c9d3703":"\u91cd\u7f6e\u641c\u7d22","af2aad94fe0436c55e182d960081dc2e":"\u9009\u4e2d\u67d0\u884c","e624c03c9f86a60fccf8ef5d11324802":"\u8f93\u5165\u9879\u76ee\u540d\u79f0","28c83e01f44f9bcfc225913cb83d5f0e":"\u8f93\u5165\u9879\u76ee\u7f16\u53f7","10d8d0632c0fb434acb9685465f2f40e":"\u53ea\u9009\u62e9\u4e00\u5217","2814aa64aee4356b17def9612b9788fb":"\u8f93\u5165\u9879\u76ee\u5907\u6ce8","145f458ebee8091b74dadd74cda85e72":"\u4f20\u771f","c172378346df27ae1a4941cfc79b640a":"\u9009\u62e9\u529e\u4e8b\u5904","b60233712011b758fcf0d602db4a2bd0":"\u641c\u7d22...","14100cde44e510fd8bb63baf66d426d6":"\u8054\u7cfb\u4eba\u59d3\u540d","3a605fe62cddfb32a101dbe60b5adceb":"\u8f93\u5165\u7535\u8bdd\u53f7\u7801","45c1794bb415ed7ef7b42ca2ea39747c":"\u8f93\u5165\u540d\u5b57","055650f1ee8e3b9e74ff3acc7986a6a6":"\u8f93\u5165\u7535\u5b50\u90ae\u4ef6","ddaa4b7b56de0756b28e3115e68fc845":"\u516c\u53f8","cb4de9292abe5321e4f500637e9f1ba5":"\u8f93\u5165\u4f20\u771f","0ee1729fb559dfc157772c6d21407ced":"\u53d6\u6d88","d314cc7b1aeb73d0c6053e1e23ede12d":"\u9519\u8bef","aaf4c2ce115cd45cea8d929a66a09d6d":"\u7535\u90ae","3f578e2f8595b162833a1998f0378ff7":"\u4fdd\u5b58","447e7881c5548bbf8a05c543c772493b":"\u89d2\u8272\/\u4f4d\u7f6e","401e958ef11f33a4fc16a2938cf72e6a":"\u7535\u8bdd","80d83216c2620dd856942be09e68b8d1":"\u9009\u62e9\u4e00\u4e2a\u516c\u53f8","4b563c6f8f58ebc335750f8a036dbbf7":"\u7f16\u8f91\u8054\u7cfb\u65b9\u5f0f","2f06cf16e2cd23d49ac80f5e50a0467c":"\u529e\u516c\u5ba4\/\u90e8","e268d88b3bf396d5a6ae59f1bc98bc9e":"\u8fdb\u5165\u89d2\u8272\/\u4f4d\u7f6e","4d25672d89b4813add942cc2fa061671":"\u6dfb\u52a0","47a21b9c76c8b3530ee61d8e7d0e1e1d":"\u4f20\u771f","e3f1a9c726d8d42340d86b7584f7ff12":"\u7f16\u8f91","d2237c048950c3e8c877416875d7df8d":"\u529e\u516c\u5ba4\/\u90e8","bb9258703770bb252e39e630479986d4":"\u540d\u5b57","de0c51f8e0beab945d74f431bfb062bb":"\u6ca1\u6709\u5de5\u4f5c\u4eba\u5458\u53d1\u73b0","d111970bd6c11a2f29f34e8fdfc86a20":"Toogle\u4e3b\u52a8","e9283ca6d004393af503c03f829b7fc3":"\u9009\u62e9\u529e\u4e8b\u5904","3c27085091ef8b9e3e5cffb24d279066":"\u65b0\u5bc6\u7801","e28af56baf20c6306a4c248f42fdb68c":"\u53d1\u9001\u9519\u8bef","8ca3b644a1afe14d98efc589a3199656":"\u9009\u4e2d\u67d0\u884c","fff18e30ce788a442aaca2409fb529fa":"\u641c\u7d22...","4160367bc88c817e5306d28322dce3fe":"\u53d1\u9001","6eb6624e0a968c0166b8263d9712750c":"\u8f93\u5165\u540d\u5b57","d1ff44fd06b0541d6152871cfc5af0ae":"\u6ce8\u9500","612255281b387600bc0f7581487d21ae":"\u6d3b\u8dc3","90e813d48588c0ceb15b33d9ace30da7":"\u5168\u4f53\u804c\u5458","52283b0428e38a834618775c459a24ec":"\u53d6\u6d88","e189939337bb22d84f61ce8fe9e0c2f8":"\u8f93\u5165\u7535\u5b50\u90ae\u4ef6","29be3459e789762b803866070425b21e":"\u7535\u8bdd","73a29220db1eaf01cbccbcfe72687e29":"\u9519\u8bef","6943ef634b2a88104e989ac9661f9e91":"\u7535\u90ae","df6c1310e2c2b0a4147028fe9c5e0513":"\u4fdd\u5b58","77ef1ccfa3eadbe29085192b0362a46a":"\u89d2\u8272\/\u4f4d\u7f6e","1640073b047d8b8e9c2fe79e5884d5e7":"\u529e\u516c\u5ba4\/\u90e8","5a654f57c8e63dc83af9b7168bb3a5d0":"\u4efb\u4f55\u6587\u4ef6\u7c7b\u578b","4e5300168c5ffeb0251c01489fbcf329":"\u65b0\u6587\u4ef6","0a1bee4bb9731a03e7847606bcea866f":"\u53d1\u9001\u5230","569c5b9c1f394794e96df71d0c2d4e34":"\u53d1\u51fa\u7684","4ae2250d6c21f80e5a9431da2c3c91a2":"\u9898\u76ee","e04f5ffe058380ed0209db2c0c4af642":"\u7c7b\u578b","0db9141d575d689477371bc0fd4ad02e":"\u9879\u76ee","23f9e8978056a3d1f670553e73fa2d45":"\u7f16\u53f7\u3002","8d93180412e33610837445a165247bb1":"\u663e\u793a\u5458\u5de5 {0} - {2}\/{2}","a349046e085aeda3a12064f048fedd8d":"\u5bc6\u7801\uff08\u518d\u6b21\u8f93\u5165\u4ee5\u786e\u8ba4\uff09","9b5777ac19c771ac2adb99429ade15da":"\u9009\u62e9\u4e00\u4e2a\u516c\u53f8\u7b2c\u4e00","281f11dfd16f4e73728480e863eaf2f6":"\u5bc6\u7801\u4e0d\u5339\u914d","0561161361bd812ce39612740db2d38c":"\u8fdb\u5165\u89d2\u8272\/\u4f4d\u7f6e","e7e3caf55b60d132fd8cf5d7884e7d2e":"\u663e\u793a\/\u9690\u85cf\u5728\u4e3b\u52a8","cf7de24341ac58da2a11b0ac52d2e6bc":"\u529e\u516c\u5ba4\/\u90e8","32107f123960a3c9e62585deba517e1e":"\u6dfb\u52a0\/\u7f16\u8f91\u5de5\u4f5c\u4eba\u5458","9dce645159bb15518fb0b84cbbcda344":"\u8f93\u5165\u7535\u8bdd\u53f7\u7801","af7c9da876782eddaea704c4eecd516c":"\u53ea\u9009\u62e9\u4e00\u5217","a6e4a00c3b7af5a1ab0a2aca6adbab33":"\u65e5\u671f","de7b06c26e8b5361eb8e33d068dd2ce4":"\u8bf7\u68c0\u67e5\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u7684\u5bc6\u7801\u91cd\u7f6e\u90ae\u4ef6","c1b8242e54c06ad890a6a091195f7b8e":"\u767b\u5f55\u5931\u8d25-\u901a\u4fe1\u9519\u8bef-\u518d\u8bd5\u4e00\u6b21\u3002","b9f8e134e8143020e2eb596292c7c1d1":"\u9519\u8bef\u767b\u51fa\u3002 -\u7ee7\u7eed\u53cd\u6b63\u3002","64369cfb092be796cd5c203bc4e45113":"\u95ee\u9898\u8981\u6c42\u5bc6\u7801\u91cd\u8bbe","9055d707d0388278ceb4f35426316c1b":"\u586b\u5199\u60a8\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740","b2d0ea65f8ae06179a40d78e52b7833c":"\u5fd8\u8bb0\u5bc6\u7801","7e698d4c146d9eefd5dcd10552b18098":"\u7535\u90ae\u5730\u5740","31cfba7708e9535c79660355d0f8accf":"\u6d4b\u4e95","3b9a78188b115fa00e2285cd1047a02e":"\u5bc6\u7801","b2a3486b5105e365dae1a1796390ba42":"\u8bed\u8a00","9eba57f4ad82997225a340c5c140a869":"\u8b66\u544a","20f52c7354a3fd19843e600c53121d94":"\u901a\u77e5","8391d964e04c0c30d9f19bf036136c8d":"\u9519\u8bef","68156a5e398303b805bd96fbc6b1f8ee":"\u6ce8\u518c","2e5922b6b1c925e27289826a15bbb161":"\u6743\u9650","463c573d3aed3795e9e3145f10cd1416":"\u901a\u77e5","2409934e0552cdd76753d2c11005b6b5":"\u95ee\u9898\u8981\u6c42\u5bc6\u7801\u91cd\u8bbe","54242987801741c4105cfa0435d9912e":"\u9519\u8bef\u5f97\u5230\u9a8c\u8bc1\u7684\u5730\u4f4d\u3002 -\u5c1d\u8bd5\u91cd\u65b0\u52a0\u8f7d","3e00703b3d45a69033c58b2b00389e7e":"\u663e\u793a\u672a\u8bfb\u6587\u6863\u8ddf\u8e2a {0} - {1} \/{2}","5212be7f6511dd4055d425d26e693cbf":"\u672a\u8bfb\u6587\u4ef6\uff08\u529e\u516c\u5ba4\uff09","e66ba3fd8515d1244fc58dec98ee5a81":"\u4efb\u4f55\u6587\u4ef6\u672a\u8bfb","6160a520a83f6096bb6211944657ffb5":"\u672a\u8bfb\u901a\u8fc7","6f46e8321685bbefc3205b505744c902":"refresh","bba72f825a12b1141968d49d9e974be0":"\u9898\u76ee","eb137e2d226bf56a8e15e7ea913548cd":"\u53d1\u9001\u5230","f0338d29a214fd93842d97f74ae5d505":"\u53d1\u51fa\u7684","2a6082ef86ba417c0f69e110a3f98238":"\u9879\u76ee","0a57bec14576ce5935189bb22f6703bb":"CI\/CO","8fcd914af8a5f9569032f9dc2d0882af":"\u7c7b\u578b","3a8a05b24bafa01d7258736852131f6c":"\u5df2\u53d1\u9001","f876da203fff3aba0657805508aca5f0":"\u663e\u793a\u6587\u4ef6\u7c7b\u578b {0} - {1}\/{2}","4db53ec6234ee2d5bd74273137d172cb":"\u9884\u89c8\/\u8be6\u60c5\/\u5907\u6ce8","f48fc3eedcb0fae1b074134b51a9232d":"\u9884\u89c8\/\u8be6\u60c5\/\u5907\u6ce8","34491a87c07ab9a23890ef40788292d2":"\uff08\u9009\u62e9\u6587\u4ef6\u67e5\u770b\uff09","8a7ef992587b8c38be9acc9d968a7820":"\u641c\u7d22...","4f7d2c5b74d9f69eab59578fb95afcb2":"\u8054\u7cfb\u4eba\u59d3\u540d","25dd25e5438a8fc3da7c1f76473135d8":"\u89d2\u8272\/\u540d\u6b21\u3002","dc73ac4b2c3d14ab6699d9f9b75101e7":"\u8f93\u5165\u690d\u7269\u536b\u751f\u63aa\u65bd\u56fd\u9645\u6807\u51c6","ba8f685e8aa959a4f34334fd0b40821c":"\u8fdb\u5165\u89d2\u8272","e72d66b2895cb32b4938cbfd80caa8ca":"\u9879\u76ee","1ae7097f9175ba60f0aedf3611f3bdc8":"\u516c\u53f8","329e12148f755eb1177616440538f2a1":"\u5730\u5740","9f0f0f1bad7c0aa583a05b97d31b0efd":"\u901a\u77e5","de598e4bac2b020ccc9ee40d35d0b786":"\u5220\u9664","532dc1377dbf55808e205b410bc6dc50":"\u7535\u8bdd","edb6186549c180cafcf087d505ac31c2":"\u53d6\u6d88","17783c7f963137434a369f4ac88e7c6c":"\u9519\u8bef","36e07b222dd5d76a015bfd205c0fd3b3":"\u7535\u90ae","3dea5092f7ad295132ec0cf2d99ed937":"\u4fdd\u5b58","832a30e98dc16935a487775cadacf995":"\u7f16\u8f91","641faed5e096dd2d5818d51fd26a23ff":"\u4f20\u771f","29014e5e67cebcf3f663d0796256a3f3":"\u5de5\u4f5c","3db7ae45913582e812cc951bc986b506":"\u6dfb\u52a0","5d5717e963d28007da9511d1416cbc43":"\u8fd9\u662f\u4e00\u4e2a\u5f00\u653e\u7684\u7cfb\u7edf-\u8bf7\u5efa\u7acb\u4e00\u4e2a\u7ba1\u7406\u5458\u7528\u6237\u5bc6\u7801\u3002","fb7ccd4bfecb54edcf30753be71d10fa":"\u9009\u4e2d\u67d0\u884c","9432c95882418124c0b548a771aa07a4":"\u4fdd\u5b58","bef3175dabab54d2150e79aff2b4a595":"\u540d\u5b57","fd1423b8cbca9722889132635064d7d2":"\u4f20\u771f","0ca28e50f61de4393b20b4e6147daaae":"\u7f16\u8f91","9c14741283258db7d1af16cebd25626f":"\u4f20\u771f","649b5877701bcab7f894002d113a97d7":"\u60a8\u4e0d\u80fd\u6dfb\u52a0\u5230\u60a8\u81ea\u5df1\u7684\u516c\u53f8\u3002","269fa73325a695a57343080fe40f7cbf":"\u6dfb\u52a0","9ca8d4cc079ca5d5a0ce8158703e5fe3":"\u901a\u77e5\u6240\u6709\u7684\u65b0\u6587\u4ef6","9393328b54300cccba93f6e3101e9895":"\u4fee\u6539\/\u6dfb\u52a0\u9879\u76ee\u76ee\u5f55\u8be6\u60c5","9efe46753451cc2df39f8b65be75e597":"\u9009\u62e9\u4e00\u4e2a\u516c\u53f8\u7b2c\u4e00","d97d53e63c742a7a25c57d7664847335":"\u9009\u62e9\u8054\u7cfb\u4eba","a6ef9dd4e02810677d667ded0350cb3f":"\u53ea\u9009\u62e9\u4e00\u5217","3df1c640c550be5ee4f3253dd942e054":"\u529e\u516c\u5ba4\/\u90e8","f9ef4303aa266902f7f9e922f9551c69":"\u663e\u793a\u8054\u7cfb\u4eba","412647f47f77fe9f808fa4baf9df0d67":"\u9879\u76ee\u76ee\u5f55","886433e30870da7802bbf05754a95118":"\u4e0d\u63a5\u89e6\u53d1\u73b0","d20fc5ebae1c642e3d69034299da864a":"\u89d2\u8272\/\u4f4d\u7f6e","db6ef9d200a601a8d1939231e332bdca":"\u9009\u62e9\u9879\u76ee","007745517f6788d1fe96f6d3b8027108":"\u9009\u62e9\u516c\u53f8","2b31f09a9b5806577379d954d1731936":"\u8054\u7cfb\u4eba","2af36ca888981d315fca3dfa900a6b16":"\u9009\u62e9\u516c\u53f8","2c139631f1d1a9f0e5d5c05944969e78":"\u8fdb\u5165\u89d2\u8272\/\u4f4d\u7f6e","574fc57586f24db120a29ece5e0c0525":"\u7f16\u8f91\u8054\u7cfb\u65b9\u5f0f","61264f041648510e5894750615c95bff":"\u53ea\u9009\u62e9\u4e00\u5217","6cb6c219344a101f0e51f16c626d80fe":"\u529e\u516c\u5ba4\/\u90e8","1297cba9ef2d1bdb5dcc9e943758c8b6":"\u8f93\u5165\u7535\u8bdd\u53f7\u7801","eb0c5e12b68c835d229e3e9fd2dfdfb1":"\u8f93\u5165\u7535\u5b50\u90ae\u4ef6\u5730\u5740","43e503d47bf87a0e18c0d9bef68ad9aa":"\u4e0d\u63a5\u89e6\u53d1\u73b0","e833fd5a0f3f7cee36615671528ecd50":"\u5bf9\u5916\u8054\u7cfb","f7107ff3ad1d12dc0e654c10b36c912d":"\u8f93\u5165\u4f20\u771f\u53f7\u7801","0575629df88fcd83085c39d2d24634ca":"\u529e\u516c\u5ba4\/\u90e8","5c73aac2fa2c094c60dddcda78b82e4c":"\u7535\u90ae\u5730\u5740","0986757350df0ee8145794f8921bf90b":"\u89d2\u8272\/\u4f4d\u7f6e","e8ab7602bb49a737339ed19f8d92386b":"\u9009\u4e2d\u67d0\u884c","36c872b46617c38915ba64be2192b553":"\u8f93\u5165\u540d\u5b57","7b84507ae4168f2a00cdbd6785e68b91":"\u8054\u7cfb\u4eba\u59d3\u540d","23c7be9614dbeeabc2d1f26f2c7034f3":"\u516c\u53f8","ce53d41eff32250ad73ceb7d246a951a":"\u53d6\u6d88","e7d751796ae23e109ba61fb9c6148290":"\u7535\u8bdd","778968dd3d073e993cebe6e22b649fcf":"\u7535\u8bdd","3e0730cc7c2c84ae875e03060cf26670":"\u9519\u8bef","b1cac9b4aa34b017720ca17c14b56aeb":"\u7535\u5b50\u90ae\u4ef6","bbff5ceceec2a92f3bbb68a621e7ab72":"\u5220\u9664","b160aa2e1a53ed35cabda4889f889d54":"\u6ca1\u6709\u529e\u4e8b\u5904\u53d1\u73b0","603605d4bebd9210752126d718a106e7":"\u8f93\u5165\u7535\u8bdd\u53f7\u7801","5e2000650640b6044936f7e1e71d2f21":"\u8f93\u5165\u4f20\u771f","46d1c035d53200e6597c700be42e03c2":"\u8f93\u5165\u540d\u5b57","5d5b6506592f847e01b1cf024a81cd74":"\u8f93\u5165\u7535\u5b50\u90ae\u4ef6","91021d4fe16a6199e232c3ba8e1a2def":"\u529e\u4e8b\u5904","d854b1d0f301f8f5c326b984570287fa":"\u5730\u5740","8e02921883b78e1a56a70a066526ff7d":"\u53d6\u6d88","2854c7d8322078b77a613040594b6fd9":"\u516c\u53f8","4b29d34ab1e54cef97260f3b26abef0d":"\u9519\u8bef","3a612d1307df2d4d2322ab78b932a4ed":"\u7535\u90ae","51fa71b3f0a6158632ef8fdb313c4d30":"\u7535\u8bdd","48e1f10c09fd3d67784049d14b2e2e5a":"\u5220\u9664","b9781f48d722d8635b68a5b69db99bcb":"\u4fdd\u5b58","32da3f095584c2715370609796b526d2":"\u540d\u5b57","576796b4aba86269b7dfe52336759061":"\u4f20\u771f","feac3993717e4f28c52d48027fbe4f5f":"\u4f20\u771f","def564d3994afa7143e78432145a21a3":"\u6dfb\u52a0","38730c8e62ceacc061563401beb10d68":"\u7f16\u8f91","0c10365ac8af6363d6d0381e48404c76":"\u8f93\u5165\u5730\u5740","9d23212727741657f75dbbc28d6e608c":"\u9009\u4e2d\u67d0\u884c","b4d4fe6da458e68ec1538a890aaba482":"\u8054\u7cfb\u4eba\u663e\u793a {0} - {1}\/{2}","a6563d2bbbf6c9c54ceccdccd77c13f7":"\u529e\u516c\u5ba4\/\u90e8\u95e8\u540d\u79f0","2875d70574b3e6fcc7e7709bf97675ad":"\u7f16\u8f91\u529e\u516c\u5ba4\/\u90e8","82ee167d4c82e7bc3aba949c99aa0ab7":"\u9009\u62e9\u4e00\u4e2a\u516c\u53f8\u589e\u52a0\u4e00\u4e2a\u529e\u4e8b\u5904","3e7212819d8916b20bf9f25b165828f1":"\u53ea\u9009\u62e9\u4e00\u5217","019a05efbba570d617821f52af96e397":"\u663e\u793a\u5199\u5b57\u697c {0} - {1}\/{2}","ad2b3ddba13afdf05d0537ebdbcedcae":"\u6ca1\u6709Documents_Tracking\u53d1\u73b0","822c08c862667f4be342239e136491a0":"\u6d41\u901a","aaf72e0d5339c6acf19dec97c1321427":"\u8ddf\u8e2a","de81a3ca5f54256dbe764f4e356e7616":"\u5df2\u53d1\u9001","e14d4bb54c233f9de85e554ae66c17b2":"\u9605\u8bfb","6126d77922e1d3f44b5bdb283b7bf95a":"\u53d1\u4ef6\u4eba","df76ad23e275d7545364ef8e6b5b5061":"\u663e\u793aDocuments_Tracking   {0} - {1}\/{2}","e50eb86a79226edb10d42ff39d39f311":"\u4e0b\u8f7d\u6587\u4ef6","7f8bc76d43c4b5df70cf5a438127b6f1":"\u6587\u4ef6\u7c7b\u578b","2a05aaa82c136acdf11347b931827406":"\u70b9\u51fb\u67e5\u770b\/\u5206\u53d1","509ea13c14a1a97bdc05945e2a731125":"\u6536\u5230\u65e5\u671f","6e5628feb8995eb342eca975d031b3f4":"\u53c2\u8003\uff08 2 \uff09","0b20b62b95e317ca14faa9e3c9317b8d":"\u4ece\u516c\u53f8","f4ade129d45a329b0211ca3e8fae4502":"\u53d1\u884c\u65e5\u671f","82a79783e8fc497b1896c3e8ff7c81dd":"\u6279\u51c6","b8f463f3d4645fa61636178432d5fae0":"\u65b0\u589e\u5907\u6ce8","8bda019a981f4e05eefcb679f57bf63c":"\u53c2\u8003","f9951eb281695e95380899528b892f01":"\u65e0\u5907\u6ce8","35463ec16a53ba9b350f84ce8d669dad":"\u6587\u4ef6\u540d","d0fb37bb6d3f25dd598bad3cf9b3397d":"\u5907\u6ce8","5bc1c683979e205313a374bf85043c51":"\u9884\u89c8","dbb42f623f8cbfe6ddb4f36a4bee13d0":"\u9884\u89c8","75addef7bf5a2ac50d7a295063c7fa3a":"\u8be6\u60c5","77af7f5d42451be55f3042157335d2dc":"\u5de5\u4f5c","3888ce137a3d8e0848be27d8241ea7ca":"\u81f3","42700d2828fdd2e2205009a6016b4897":"\u6587\u4ef6\u540d","8d248ce70935a2f4ba5e496524510839":"\u8d77\u8349\u4eba\/\u6838\u51c6","04bb909bf9ab3e549dc38ab2e2f38856":"\u53d1\u9001\u9519\u8bef","714bd289a6bc5c00edd7f57f04cb3871":"\u6587\u4ef6\u7c7b\u578b","7619f174f2eec48a7c1537d14a57335d":"\u6536\u5230\u65e5\u671f","598fbd52c8be857ae05c36da90795714":"\u8bc4\u8bba\u5417\uff1f","cb7906b069496f45f40b3ca256c28278":"\u4ece\u516c\u53f8","9351c8de1d11115a58f9bac39e8e2aa8":"\u53d1\u884c\u65e5\u671f","9416a54801030a79b540e26824e92243":"\u65b0\u589e\u5907\u6ce8","e7a32d3a2687ccc7092ed52e36e2102f":"\u53c2\u8003","84d1b4c9e607d2f840f5ee055b247fc3":"\u6587\u4ef6\u540d","061b6613b9345c7ebe6fa6498e3fe277":"\u9898\u76ee","1fe592ad8e96ea81d58bdc7b731c2d8f":"\u5907\u6ce8","ecf57646619a01d8dff908c765bd9d9e":"\u9884\u89c8","4e174bf1bc9ea40c528b1a8a6a367d6d":"\u8be6\u60c5","7e329b2fb044b3fcbf96456b6862930b":"\u53d6\u6d88","7ca2041d27a77a2ba8e43d574753f1c3":"\u540d\u5b57","ec0941dde9486179a23526df26e0ba43":"\u5de5\u4f5c","a8c143ab7f82b2bd28dea65e1e4f2596":"\u9519\u8bef","e6647fab9e7f3c628536a60a56869d82":"\u6dfb\u52a0","a414726ddcd0ac303ec19061a0ce9986":"\u81f3","c6b882815deece5fc4af182308b4d2fd":"\u53d1\u9001\u7ed9\uff1a","25092a9a028d282401e526d9252c734d":"\u8282\u6c34\u5931\u8d25=\u4fee\u6b63\u9519\u8bef\uff0c\u7136\u540e\u518d\u8bd5\u4e00\u6b21","23b47796783d663d3113bde8469f9202":"\u8bf7\u66f4\u6b63\u6240\u6709\u9519\u8bef","6f52a45578b8376c688a75ddc7888122":"\u65b0\u7684\u5bc6\u7801\uff08\u952e\u5165\u518d\u6b21\u786e\u8ba4\uff09","a217bd43e7427e981bc8dbf18998faed":"\u5bc6\u7801\u4e0d\u5339\u914d","39b3f1da7208ad35ea991d47bb460b30":"\u9519\u8bef\u8f7d\u5165\u7ec6\u8282","eadd75daa6471a87eb75121dd5eab06a":"\u66f4\u6539\u5bc6\u7801","1b6ed9a99ae0f49a874fab476d0e70c4":"\u65b0\u5bc6\u7801","78a7430d961bec5b3d4759206ebc2b04":"\u8f93\u5165\u5bc6\u7801\u7684\u4e24\u4e2a\u65b9\u5757","9b6839c225da5cb93c3bf29720e0531d":"\u53d6\u6d88","f7c61a97b669d7f5128b51c8644c400c":"\u4fdd\u5b58","8a963223a56bdb91d7a361e1ce621c46":"\u9884\u89c8","d7ada1186edfc944895322f23ea936a1":"\u53d6\u6d88","a9b516446dd576eb582c55bfe060f029":"\u4fdd\u5b58","db88368227b739ed12b165005f43d2c9":"\u9519\u8bef","30359c4a7a54a6cecd1143b03dcb2ebf":"\u53ea\u6709\u6dfb\u52a0\u8bc4\u8bba\uff0c\u4e0d\u8981\u6563\u5e03\uff1f","ac523419e6a3616ce65eac450e49a952":"\u6ca1\u6709\u6743\u9650\u5206\u914d","b15687e4d1da118c2d9d1daff85edf1f":"\u65b0\u589e\u4eba\u5458\u8ba1\u5212","0378c374117dae594f790428a039c1a5":"\u53d1\u9001\/\u65b0\u589e\u8bc4\u8bba","658372f46bf54ab96dd56f3e87e8f93c":"\u5f3a\u58ee\u7684","0ab94e0bc51ea7ea092a017c47164964":"\u4e2d\u7b49","1442d5f188b9f17919e85e0df228e98b":"\u865a\u5f31\u7684","aba0eff28858ae382e41491bf1cb62be":"\u5305\u542b\u7684\u5bc6\u7801\u5b57\u7b26\uff0c\u662f\u4e0d\u5bb9\u8bb8\u7684\u3002\u8bf7\u8f93\u5165\u4e0d\u540c\u7684\u5bc6\u7801\u3002","3cdf7887c86019f7e5bdff4bb7e04df5":"\u60a8\u7684\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u8d85\u8fc716\u4e2a\u5b57\u7b26\u3002\u8bf7\u8f93\u5165\u4e0d\u540c\u7684\u5bc6\u7801\u3002","012e9e78bebb04e17f704c0384a2c44b":"\u60a8\u7684\u5bc6\u7801\u4e0d\u80fd\u5305\u62ec\u60a8\u7684ID\u7684\u4e00\u90e8\u5206\u3002\u8bf7\u8f93\u5165\u4e0d\u540c\u7684\u5bc6\u7801\u3002","e8dedb70bb4def5e44bb81fbd7b43cf2":"\u60a8\u7684\u5bc6\u7801\u5fc5\u987b\u81f3\u5c116\u4e2a\u5b57\u7b26\u3002\u8bf7\u8f93\u5165\u4e0d\u540c\u7684\u5bc6\u7801\u3002","b422f9d3d10e55390f8c1cca678d783f":"\u60a8\u7684\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u60a8\u7684\u59d3\u6c0f\u3002\u8bf7\u8f93\u5165\u4e0d\u540c\u7684\u5bc6\u7801\u3002","1a88d2ecf056abdaf0b9a2b32afc8059":"\u8bf7\u8f93\u5165\u5bc6\u7801\uff0c\u7136\u540e\u91cd\u65b0\u8f93\u5165\u4ee5\u786e\u8ba4\u3002","c387b4b2a7852e86ef26cd6dd4132dbb":"\u60a8\u7684\u5bc6\u7801\u592a\u8584\u5f31\u3002","93e83e34ea66ffe81f50a7e5d5dd1c05":"\u5bc6\u7801\u5f3a\u5ea6\uff1a","2a5d547899f8f5356e797092ff583fe5":"\u592a\u5f31","c84f415dbfa05999e600cd94fdfe5746":"\u60a8\u7684\u5bc6\u7801\u4e0d\u80fd\u5305\u542b\u60a8\u7684\u540d\u5b57\u3002\u8bf7\u8f93\u5165\u4e0d\u540c\u7684\u5bc6\u7801\u3002"};
\ No newline at end of file
diff --git a/data/lang.zh_HK.js b/data/lang.zh_HK.js
new file mode 100644 (file)
index 0000000..0296b4c
--- /dev/null
@@ -0,0 +1 @@
+_T["zh_HK"]={"77c934cb4278120e35dd4e1947aaa4a6":"\u767c\u9001\u6578\u64da\u6642\u767c\u751f\u932f\u8aa4","b5f19c6de6e6bde8526a37c2a842e149":"\u8f09\u5165\u6587\u4ef6\u8cc7\u6599","d8c7452a69bd3ea406792d86d316d346":"\u5efa\u7bc9\u754c\u9762","cf72aae865f3f0be736987f7dc390e25":"\u932f\u8aa4","cd4b091c7fe3281497a3b47dfb18e9d9":"\u78ba\u8a8d","02e3cddd44d16389541b6aeb8c790ecc":"\u522a\u9664","1bbff82eb64f912dea3597cea30b34df":"\u9805\u76ee","e84cbf769d01c3cf5f2470839353035a":"\u522a\u9664\u932f\u8aa4\u4e2d","52a960f47139e4edffb1f8491d8079fd":"\u5efa\u8a2d\u4e2d","9541c362ba7c5444620fc19601a3372d":"\u81f3\u5c11\u9078\u64c7\u4e00\u5217\u4ee5\u4f5c\u522a\u9664","665a8e451416415f90d36738b66d99b3":"\u4f60\u662f\u5426\u8981\u522a\u9664\u9019\u4e9b\u5217","626434c27546f821700d2113412f217b":"\u65b0\u589e","23ae09c64db8dec497f5624af73362ad":"\u50b3\u771f","0a1c7fe7d40f8c02f06e6e059543a876":"\u96fb\u8a71","896d5e68ff54a3adeb1fb2626e15aa61":"\u50b3\u771f","14e570036be0c6392cc3754a2eed1848":"\u7de8\u8f2f","a0eeb1fa20b9f07a5e45f2d6b151b08c":"\u540d\u7a31","f9ea6f84c6986c5d0ebaa617c56efc3f":"\u5132\u5b58","ff6d5c19f00a25ffce75ec31577a1bbc":"\u532f\u51fa\u6587\u4ef6","a88e20ddd93d67e684b9951b65a2f562":"\u767c\u9001\u932f\u8aa4","3e91fb638ae80beacea9cc99e1f5d0da":"\u532f\u5165\u6587\u4ef6","2cbebab614b8ed2d39315ca3c3178ad4":"\u7ba1\u7406\u54e1","853a8322564e73c79d25f6053edd6397":"\u6587\u4ef6\u7ba1\u7406","ebccc1dae0449198236b0c614769f51a":"\u5efa\u8a2d\u7db2\u7d61\u6587\u4ef6\u7ba1\u7406\u7cfb\u7d71V","e563fbae4bd5b67246b0472e41d254ab":"\u6b61\u8fce{0} \uff08{1} \uff09 \uff0c\u4ee5\u4e00\u65bd\u5de5v {3} \u7684 {2}","a6e4a00c3b7af5a1ab0a2aca6adbab33":"\u65e5\u671f","da7e5e46990b9d22a62aa732e40dde9a":"\u93c8\u63a5","e04f5ffe058380ed0209db2c0c4af642":"\u985e\u578b","4abedeb5c239a0d47123761a16c71ab2":"\u6536\u4ef6\u7bb1","d77c532c96276eca0ced1b63a605fca3":"\u9000\u51fa\/","e378bec2d72fbb8689800b3fef5173cb":"\u8a3b\u92b7","0db9141d575d689477371bc0fd4ad02e":"\u9805\u76ee","569c5b9c1f394794e96df71d0c2d4e34":"\u767c\u51fa\u5f9e","0a1bee4bb9731a03e7847606bcea866f":"\u767c\u9001\u5230","4ae2250d6c21f80e5a9431da2c3c91a2":"\u6a19\u984c","f05d853e6c207187cc63dddd7d2bae41":"\u53c3\u8003","720238cd2513928892881f31e066b59f":"\u53c3\u8003\uff08 2 \uff09","5a654f57c8e63dc83af9b7168bb3a5d0":"\u4e26\u7121\u6709\u95dc\u6587\u4ef6","f48fc3eedcb0fae1b074134b51a9232d":"\u9810\u89bd\/\u8a73\u60c5\/\u5099\u8a3b","f876da203fff3aba0657805508aca5f0":"\u986f\u793a\u6587\u4ef6\u985e\u578b {0} - {1} \u7684 {2}","6686b58b8eee96ba44f0d18ce0520008":"\u6dfb\u52a0","e48ed554628617c4756dc2aa2e1609e5":"\u7de8\u8f2f","e1b7fb69e1459d023ee0856bd1a52e77":"\u6587\u4ef6","8143b89e2cdc9ed743a3b6edb0f74d88":"\u93c8\u63a5","543db8d739fe5b45fd0ad49b93b97b43":"\u540d\u5b57","412647f47f77fe9f808fa4baf9df0d67":"\u9805\u76ee\u76ee\u9304","d6e8efbebe52e57c88e7100375eb092c":"\u4fdd\u5b58","83a5fd6875f92dc1f09ccf5850742ec9":"\u767c\u9001","5907ee8666b08970af6a623c014d2df2":"\u985e\u578b","91f526392b3fc95bb13abb6fc7f24d58":"\u932f\u8aa4","3d6345f2953b398d356a6a15c5f1b627":"\u6587\u4ef6\uff1a","ef493f39b05a8cf86909f2e86f7ff861":"CI \u865f\u78bc","d3d25062e3d31eb5e5eb85a47499126e":"CO \u865f\u78bc","85f6bbc45e5216e8b2264b91711f88bc":"\u53d6\u6d88","6b396ee6c63bfc002eb9e0ba6a3ba514":"\u6587\u4ef6\uff1a","11775170fc357446074fdcd46fc2cad5":"\u8a3b\u92b7","b2453597fc7b92e20c53d7a3ef0400f2":"\u641c\u7d22","69b757719dc9719efe5d00b684e87d6f":"\u9810\u89bd","de02c421a7c2cddd315c949dc90d7996":"\u9805\u76ee","8adf77c03cf2906aa5757ac3ce59996f":"\u767c\u51fa\u5f9e","13fa15f80c0a0285d547c079b5325e96":"\u767c\u9001\u5230","fc96c58dd36f64d8ffb211f4f4dfadf1":"\u65b0\u589e\u6587\u4ef6","95fdc3d2d5a02f85cadc8f0ea5f823ee":"\u984c\u76ee","cf4141cfb59641f4e32359e65122f903":"\u7e2e\u5beb","921549bcf70afd971d0ec09b5b611753":"\u53c3\u8003","0364723536845e221318c572ceb57aaa":"\u641c\u7d22\uff1a","9d705b37d3e51fd4bf668a24002c708e":"\u65b0\u589e\u5099\u8a3b","4cc33f7daafbe4fb197b364bc3c9b658":"\u6563\u4f48","c9f0d8e0b8d8d755bc2fe2acd26bba5f":"\u65b0\u589e\u5099\u8a3b","3557b8f864ba487dd4bdb58319d9cbe3":"\u767c\u51fa\u65e5\u671f","610fe4c696591d9e76eef577bb55dec0":"\u6587\u4ef6\u985e\u578b\uff1a","4f94832b8a2d286761fd98b95f0db4c3":"\u53c3\u8003\uff08 2 \uff09","49728ecd775e27155dbccb172a5fdfea":"\u91cd\u7f6e\u641c\u7d22","56230157f3cf9ad9da5ef72c9c621467":"\u641c\u7d22\u4e2d...","3ccab08655b20b394d5159b7a2f3156e":"\u8acb\u9078\u64c7\u5217","ab399032154eb912c79c663e390303b9":"\u6536\u5230\u65e5\u671f","62d8125b687d88340799dcdc148f3895":"\u6563\u4f48 >>","6a94112b604de275d5ebaf7b7e7dfe5a":"\u8f38\u5165\u767c\u9001\u5f9e","d97da7b061cd3941e4b980683c1dcfb1":"\u8f38\u5165\u767c\u9001\u5230","0605b9c1a5699ef5af5f2c5a796a3e01":"\u8f38\u5165\u6a19\u984c","d1abeda0cf6e66a8886511b17130fe28":"\u8f38\u5165\u7e2e\u5beb","d44e0d48fe654839aa01c39eb9cd136a":"\u9078\u64c7\u9805\u76ee","b3da063a9329a84c868bbd98b10a9c24":"\u8f38\u5165\u53c3\u8003","2f0380e0fe96168fe6b9cbb22837e29b":"\u8f38\u5165\u767c\u51fa\u65e5\u671f","c65e0ee48ec011444b56cb74cf4ca917":"\u8f38\u5165\u53c3\u8003\uff08 2 \uff09","7481c432209462346b0b9810413b804b":"\u4e26\u7121\u6709\u95dc\u6587\u4ef6","30a55ca6ec4cdc6ca482156481c01377":"\u8f38\u5165\u6536\u5230\u65e5\u671f","ab045522e04284eaa2bf4571800723f0":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","9c749e2cd69e74c62f12519253bffc63":"\u9078\u64c7\u6587\u4ef6\u985e\u578b","d0110e376266e71a9903ed28f33dd16e":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","817c9f4629d542c7de60d888e0d216b4":"\u96b1\u85cf\u5206\u4f48\u4e00\u89bd","78b415ef3a68650fae89eec57d485d87":"\u8acb\u5148\u9078\u64c7\u4e00\u500b\u9805\u76ee","2119c03f3df5e36bda3b9cb740636740":"\u8acb\u5148\u9078\u64c7\u4e00\u500b\u9805\u76ee","c116fa4dd951bb1f77d33fd6c1b0e389":"\u5275\u5efa\u7de8\u8f2f\/\u6587\u4ef6","067849fe7526424415ebf915c25c604b":"\u9078\u64c7\u8ab0\u767c\u7d66","e81614c632b3ef3d1c2e6268f9e6574e":"\u5275\u5efa\u7de8\u8f2f\/\u6587\u4ef6\u8f38\u51fa","74c17995e10ec81f1623a306a4479ce4":"\u986f\u793a\u6587\u4ef6 {0} - {1} \u7684 {2}","18d3591542938ae0433c00c0960363b4":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","6270248531ab8c9eeff32b0cd99b59cb":"\u65b0\u589e","08e0cbbba1b743ef6424bfd10b6e9fe4":"\u4ee3\u78bc","aac7ac6c3b2737079fe150daf5d4aa95":"\u7de8\u8f2f","b781fc2e9622e4fd1360f3189cca8949":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","bb5aa1c548f9981ebbec6998e51183c8":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","2814aa64aee4356b17def9612b9788fb":"\u8f38\u5165\u9805\u76ee\u5099\u8a3b","10d8d0632c0fb434acb9685465f2f40e":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","e624c03c9f86a60fccf8ef5d11324802":"\u8f38\u5165\u9805\u76ee\u540d\u7a31","28c83e01f44f9bcfc225913cb83d5f0e":"\u8f38\u5165\u9805\u76ee\u7de8\u865f","af2aad94fe0436c55e182d960081dc2e":"\u8acb\u9078\u64c7\u5217","a231825bd1b61fb68e9634368c9d3703":"\u91cd\u7f6e\u641c\u7d22","0e525c273540ccb06218c8b9f7d3d950":"\u9805\u76ee\u540d\u7a31","93e23f98d527bd3afef6bcba5fdd35e5":"\u7de8\u8f2f\u9805\u76ee","be481f704a94d3ed774855ec359e74e8":"\u9805\u76ee","c870a4e2e2a3328c2e02bec5615a8c3b":"\u641c\u7d22\uff1a","a0aac1883a15cb863c1bbe30da3e4d6d":"\u5099\u8a3b","19d0e412088dcaab06f1dd2a3d495774":"\u641c\u7d22","620c15e6fe40321af884967f83f4b186":"\u53d6\u6d88","92fb00c39dc47d37b4478d87044caeda":"\u8a3b\u92b7","49d16175b68984c7e8f12d239335ea18":"\u932f\u8aa4","8bf6dcfc1d67cbeb3988af3c95d9a087":"\u5132\u5b58","3a8a05b24bafa01d7258736852131f6c":"\u5df2\u767c\u9001","8fcd914af8a5f9569032f9dc2d0882af":"\u985e\u578b","90538dbbea5522143123cd2513dd32c3":"\u8a3b\u92b7","2a6082ef86ba417c0f69e110a3f98238":"\u9805\u76ee","f0338d29a214fd93842d97f74ae5d505":"\u767c\u51fa\u5f9e","eb137e2d226bf56a8e15e7ea913548cd":"\u767c\u9001\u5230","bba72f825a12b1141968d49d9e974be0":"\u6a19\u984c","6f46e8321685bbefc3205b505744c902":"\u5237\u65b0","967fadc47b56ff37d1ff32eb2f9b527d":"\u53c3\u8003","6160a520a83f6096bb6211944657ffb5":"\u672a\u95b1\u8b80","4a37476e1ae7d236b2dd5ca43785954b":"\u53c3\u8003\uff08 2 \uff09","e66ba3fd8515d1244fc58dec98ee5a81":"\u7121\u4efb\u4f55\u672a\u95b1\u8b80\u6587\u4ef6","5212be7f6511dd4055d425d26e693cbf":"\u672a\u95b1\u8b80\u6587\u4ef6\uff08\u8fa6\u516c\u5ba4\uff09","3e00703b3d45a69033c58b2b00389e7e":"\u986f\u793a\u672a\u95b1\u8b80\u4e4b\u8ddf\u8e64\u6587\u4ef6 {0} - {1} \u7684 {2}","b8cc86a5c981d43149be7645134ecea3":"\\n","3db7ae45913582e812cc951bc986b506":"\u65b0\u589e","641faed5e096dd2d5818d51fd26a23ff":"\u50b3\u771f","29014e5e67cebcf3f663d0796256a3f3":"\u5de5\u4f5c","5a010c62c46f92d995e19e7bf4fb7a1d":"{0}","832a30e98dc16935a487775cadacf995":"\u7de8\u8f2f","3dea5092f7ad295132ec0cf2d99ed937":"\u5132\u5b58","36e07b222dd5d76a015bfd205c0fd3b3":"\u96fb\u90f5","17783c7f963137434a369f4ac88e7c6c":"\u932f\u8aa4","532dc1377dbf55808e205b410bc6dc50":"\u96fb\u8a71","edb6186549c180cafcf087d505ac31c2":"\u53d6\u6d88","de598e4bac2b020ccc9ee40d35d0b786":"\u522a\u9664","33334c99134d522dc27933aba032e3b7":"\u662f\u5206\uff1f","329e12148f755eb1177616440538f2a1":"\u5730\u5740","1ae7097f9175ba60f0aedf3611f3bdc8":"\u516c\u53f8","e72d66b2895cb32b4938cbfd80caa8ca":"\u9805\u76ee","5eeeb787ee0cd8351d7c0bb76772ca41":"\u5237\u65b0","ba8f685e8aa959a4f34334fd0b40821c":"\u9032\u5165\u89d2\u8272","dc73ac4b2c3d14ab6699d9f9b75101e7":"\u9032\u5165ispm","25dd25e5438a8fc3da7c1f76473135d8":"\u89d2\u8272\/\u8077\u4f4d","4f7d2c5b74d9f69eab59578fb95afcb2":"\u806f\u7d61\u4eba\u59d3\u540d","8a7ef992587b8c38be9acc9d968a7820":"\u641c\u7d22\u4e2d...","fb7ccd4bfecb54edcf30753be71d10fa":"\u8acb\u9078\u64c7\u5217","2b31f09a9b5806577379d954d1731936":"\u9078\u64c7\u8fa6\u4e8b\u8655","007745517f6788d1fe96f6d3b8027108":"\u806f\u7d61\u4eba","2af36ca888981d315fca3dfa900a6b16":"\u8acb\u9078\u64c7\u516c\u53f8","db6ef9d200a601a8d1939231e332bdca":"\u8acb\u9078\u64c7\u9805\u76ee","d20fc5ebae1c642e3d69034299da864a":"\u89d2\u8272\/\u8077\u4f4d","886433e30870da7802bbf05754a95118":"\u4e26\u7121\u6709\u95dc\u806f\u7d61\u8cc7\u6599","3df1c640c550be5ee4f3253dd942e054":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","a6ef9dd4e02810677d667ded0350cb3f":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","7e087e8e6c1c3ded2575bd1858f758f9":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","d97d53e63c742a7a25c57d7664847335":"\u9078\u64c7\u806f\u7d61\u4eba","9efe46753451cc2df39f8b65be75e597":"\u8acb\u5148\u9078\u64c7\u4e00\u9593\u516c\u53f8","9393328b54300cccba93f6e3101e9895":"\u4fee\u6539\/\u65b0\u589e\u9805\u76ee\u76ee\u9304\u8a73\u60c5","649b5877701bcab7f894002d113a97d7":"\u95a3\u4e0b\u7121\u6cd5\u65b0\u589e\u81f3\u95a3\u4e0b\u4e4b\u516c\u53f8\u3002","622ceb0f45ff1be8250e15519516d149":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","174648bdcd5bf6376891042324f4adbb":"\u662f\u9805\u76ee\u7d93\u7406-\u7372\u5f97\u7684\u7b2c\u4e00\u4efd\u901a\u77e5","1008f61719531e98a985206463b7672d":"\u806f\u7e6b\u4eba\u986f\u793a {0} - {1} \u7684 {2}","e14d4bb54c233f9de85e554ae66c17b2":"\u5df2\u95b1\u8b80","de81a3ca5f54256dbe764f4e356e7616":"\u5df2\u767c\u9001","6126d77922e1d3f44b5bdb283b7bf95a":"\u767c\u4ef6\u4eba","0842ac1e3286dbd365da053dc03614cd":"\u5099\u8a3b","822c08c862667f4be342239e136491a0":"\u6d41\u901a","ad2b3ddba13afdf05d0537ebdbcedcae":"\u6c92\u6709\u767c\u73fe\u8ddf\u8e64\u6587\u4ef6","df76ad23e275d7545364ef8e6b5b5061":"\u986f\u793a\u8ddf\u8e64\u6587\u4ef6{0} - {1} \u7684 {2}","3888ce137a3d8e0848be27d8241ea7ca":"\u81f3","77af7f5d42451be55f3042157335d2dc":"\u5de5\u4f5c","75addef7bf5a2ac50d7a295063c7fa3a":"\u8a73\u60c5","5bc1c683979e205313a374bf85043c51":"\u8d77\u8349\u4eba","d0fb37bb6d3f25dd598bad3cf9b3397d":"\u5099\u8a3b","35463ec16a53ba9b350f84ce8d669dad":"\u6a19\u984c","42700d2828fdd2e2205009a6016b4897":"\u6587\u4ef6\u540d\u7a31","f9951eb281695e95380899528b892f01":"\u7121\u5099\u8a3b","82a79783e8fc497b1896c3e8ff7c81dd":"\u6279\u51c6\u81ea","f4ade129d45a329b0211ca3e8fae4502":"\u767c\u884c\u65e5\u671f","6e5628feb8995eb342eca975d031b3f4":"\u53c3\u8003\uff08 2 \uff09","0b20b62b95e317ca14faa9e3c9317b8d":"\u5f9e\u516c\u53f8","509ea13c14a1a97bdc05945e2a731125":"\u6536\u5230\u65e5\u671f","7f8bc76d43c4b5df70cf5a438127b6f1":"\u6587\u4ef6\u985e\u578b","e50eb86a79226edb10d42ff39d39f311":"\u4e0b\u8f09\u6587\u4ef6","2d4bdc39d011270ac0351c6db9ecd488":"\u9810\u89bd-\u9ede\u64ca\u67e5\u770b","401e958ef11f33a4fc16a2938cf72e6a":"\u96fb\u8a71","1bf12ca0a4d6610b7043ca19c3d33a3a":"\u7684X\u83dc\u55ae\u9805\u76ee\u6aa2\u67e5","de21f69162c62fbfd9216a4f2e8e77ef":"\u96fb\u90f5","03f1e3da38f4fc8a3e7c47184d3bad57":"\u932f\u8aa4","8fc4b87ad6c7bcf2f4f2b373510bc36c":"\u96fb\u8a71","a0c2bac69a54727af53708085fabc273":"\u53d6\u6d88","50c493dc4c8b3f232a2e4325f3e7da87":"\u522a\u9664","5d8c7ca623756c3bde8660e49ea912ed":"\u8a3b\u92b7","69e56c04bfd11759fc68304f6bb18d0c":"\u5730\u5740","71123d5c432df83889d7ca43e8197811":"\u8fa6\u4e8b\u8655","1134ecf394487a64679d529e070ea5ea":"\u5099\u8a3b","40c2616bd3e32c849d5ec77f78efc9ee":"\u516c\u53f8","6cb3308eae6d9ed2b9ebb10bcccf5544":"\u53c3\u8003","c8ecbe6867f2f0101cb8640530e0dbb5":"\u8f38\u5165\u4ee3\u78bc","9976254dc68ab1f1f8502e55ff33716b":"\u516c\u53f8\u540d\u7a31","82264ee7274fc7ed48a2dbaec40dc358":"\u8acb\u9078\u64c7\u5217","d863ba3ca820b68e432d05f587120c22":"\u8f38\u5165\u5730\u5740","48f9d29d02a96bf47ad358cf9b7da512":"\u8f38\u5165\u5099\u8a3b","6f00d554e63504932897a28616dfa4eb":"\u4fee\u6539\u516c\u53f8","39068f40676e9592b65b34c8fbd40739":"\u8f38\u5165\u50b3\u771f\u865f\u78bc","aea1103ddab0b40b14d439e6fe418209":"\u8f38\u5165\u516c\u53f8\u540d\u7a31","ee9a7b4d5ffa537520840ca04a659c0b":"\u8f38\u5165\u96fb\u8a71\u865f\u78bc","d59ad4353a277c017ac9786d7db35c5d":"\u6c92\u6709\u516c\u53f8\u767c\u73fe","5c6c8dff18260ac6f51c3ca832e98dfb":"\u8f38\u5165\u96fb\u5b50\u90f5\u4ef6\u5730\u5740","621c880ea3f2ef414bc10e94a2de6f35":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","0a004340d2d043a78e8ac61364324bd4":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","ed447e9e305d7511a4fc52333727c664":"\u516c\u53f8\u7de8\u865f\uff08\u5099\u6848\u7de8\u865f\u3002 \uff09","24ab6b3706b93c27b8926f0504f39b94":"\u986f\u793a\u516c\u53f8\uff08{0}\uff09 - \uff08{1}\uff09\u7684\uff08{2} \uff09","3ed812ed643b556980cb53f8799ed071":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","9e686361bbed01edfd5f10ee64ae0a49":"CO","08bdbb08af2ad3580621243cf11e7673":"\u65b0\u589e","614efef301b8ed0fc220250d15317a6d":"\u4ee3\u78bc","cc6fa92cb4fd0f242d4fdf1cc8d1594d":"\u7de8\u8f2f","a774f9cebbca86c2c0a2755b3b3293e0":"\u5132\u5b58","91d2053d6ed89a82bdcd1135aa3003a8":"\u932f\u8aa4","e62ef7df7d2c826f2d1bbdd17edd6c95":"\u53d6\u6d88","0b8c4cefae65755a2a94492377b87e1e":"\u522a\u9664","6f6195e491b367cb69f6f3b94f30e665":"\u8a3b\u92b7","6cb6b18c3aa9e2e5efacdb1b53bd0833":"\u5099\u8a3b","e17c663d128fd000258b685b12eff732":"refresh","9dc55770a0ac10da80d90152e2788534":"\u8f38\u5165\u4ee3\u78bc","ff62011ce3b6f176d275cbcd2a16e7f6":"\u8acb\u9078\u64c7\u5217","9ab8d2b79fe7c8734cf4d5af399801be":"\u6587\u4ef6\u985e\u578b","5272e044d08bd444d6087e2890ec6e48":"\u8f38\u5165\u5099\u8a3b","f26795616f04f00bbfff642d8ef6cdd0":"\u6587\u4ef6\u985e\u578b","6530a62b6acef6d4ce7d9ffb3f6afd00":"\u8f38\u5165\u6587\u4ef6\u985e\u578b","7fb8d76e66be8390c220f0c6b5847e8a":"\u7de8\u8f2f\u6587\u4ef6\u985e\u578b","f2e24d6b8606ba4ffd9f02afd0c70846":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","528bb81c047b9bc2ee5fae759f2d7dd1":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","ed1c37a89d97e107d6ec490ad157012e":"\u4e26\u7121\u6709\u95dc\u6587\u4ef6\u985e\u578b","ef28c5359202ca4305abdfe6bbec23c6":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","018350df3629f8bfa9f344dbb395e284":"\u986f\u793a\u6587\u4ef6\u985e\u578b\uff08 0 \uff09 - \uff08 1 \uff09\u7684\uff08 2 \uff09","1035d6347edcb7b5c602dc23ad7aa63d":"\u50b3\u771f","850e4593e30dd4e4774b4cdcb0733394":"\u5132\u5b58","bf535744b68f4559bbbfc36ec83b5ef7":"\u932f\u8aa4","3b0139efdd230aaf4724ad9028479bc3":"\u96fb\u8a71","7e179e7791497c427c10337391aaf966":"\u53d6\u6d88","16cc9851c6d1358d3a115107e1bab228":"\u516c\u53f8","376c6d10e2dda54bf802bf884c5cae88":"\u8f38\u5165\u50b3\u771f","44f39294228b4b68f2f2e476d6f0f775":"\u8f38\u5165\u540d\u7a31","416b0a6c4ef6d77ffb3aaa6c8417ef87":"\u8f38\u5165\u96fb\u5b50\u90f5\u4ef6","c8eaf45780adacdc6be419ffd635c36d":"\u806f\u7e6b\u4eba\u59d3\u540d","c17163a6b3c919a8760865aa8b0ccdb5":"\u8f38\u5165\u96fb\u8a71\u865f\u78bc","3ce95f5f6901930c91b918b0ae2987ac":"\u641c\u7d22\u4e2d...","30e41b3edce473481fb57f80e443de37":"\u9078\u64c7\u8fa6\u4e8b\u8655","73664561bb3df5314ab74ab0c36707cb":"\u9078\u64c7\u516c\u53f8","259fb33d4f305803833dfa7dad7af4df":"\u65b0\u589e\u806f\u7e6b\u4eba","7a87f10a95ea2d60798fc8dc8cb4280c":"\u89d2\u8272\/\u8077\u4f4d","0fe6b79a2964fce61ea37510f0cf209a":"\u9078\u64c7\u516c\u53f8","f5dd21cbede4923457d4e992e17177e5":"\u8f38\u5165\u89d2\u8272\/\u8077\u4f4d","34ca3e53d0a18f1f3ad3582fb2be4f02":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","88e11268b2fa94ee0a8f3fccddd0b9e6":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","ff1677dd987eabe0c7ab80998d2b8c7e":"\u8acb\u5148\u9078\u64c7\u516c\u53f8","48988b2602bbad1f4463f0b61fa51501":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","b80d2dd906ab98609a139f4a294120d4":"\u5132\u5b58","807f66d5a6b6d0ab6a0816a9dbb56356":"\u932f\u8aa4","eda781a986a0c9c5ba1a1fd74e06e81d":"\u8a3b\u92b7","f69bcf9758d4fb6db4aef93eb471104f":"\u5f9e\u65b0\u6574\u7406","1de19fc26c528842c7cd10f5f42b8f30":"\u6703\u54e1","a6e551d8b3d2cf3f5971735d740f06ca":"\u767c\u9001\u4e2d","dd528577b58d62e70943430bfa4f1224":"\u54e1\u5de5\u59d3\u540d","6946cf7d872bbb7838d9d95f9f4e5dcb":"\u662f\u5426\u6703\u54e1\uff1f","e16e0a075e119585d5cc5dcfa6eebd2d":"\u4e26\u7121\u6709\u95dc\u7528\u6236","30e46f8177dff3914293f97547a81dc0":"\u986f\u793a\u54e1\u5de5 {0} - {1} \u7684 {2}","5983d6d236755a7558d81cf55e8841f0":"\u66f4\u65b0\u932f\u8aa4\u4e2d","6b8b3603b8ad7b14eedb3d9a4ec16931":"\u5132\u5b58\u6578\u64da\u6642\u767c\u751f\u932f\u8aa4","91b3447b3245f95c3626e5463da39aa0":"\u65b0\u589e","b44692243232a3ed15031580566dad96":"\u7de8\u8f2f","fef2188435d72bba15f1e6f93aadc20f":"\u5132\u5b58","8daea3c9b95aa92083e03c48d43f136c":"[\u5168\u90e8]","3e776bd142c2a4cd6bd9517eebac2b0d":"\u522a\u9664","9cceee192c688c28e9f56031dd93a63c":"\u8a3b\u92b7","d7cfa9dc0e21c6b7c9d8b6dbb56f7135":"\u91cd\u65b0\u6574\u7406","23b1130b6064ec1eba6e9c0b8cce95bc":"\u8868\u5217\/\u67e5\u770b","48deee385f013b60aca5c8fe978b57ad":"\u6b0a\u5229","318dbc7acbfb642f02288a7bd16d4d2f":"\u6b0a\u9650","669465be045dcc6d6802336bb2bc35e9":"\u5217\u5370\/ \u532f\u51fa","b626b2cb2185981662611f725cb30053":"\u5132\u5b58\u6578\u64da\u6642\u767c\u751f\u932f\u8aa4","c43b6fc7116389204759066319de9954":"\u65b0\u589e","d58415a6d14d553c3828638d02fb19a1":"\u7de8\u8f2f","d27ecf6c3f03332b85bfb59d9faad9a7":"\u540d\u5b57","857fb9b48fc0ebcc5b632c3b3be0e0b1":"\u5132\u5b58","c8c302e51c74e12d32b2feb07e3dd275":"\u932f\u8aa4","eaf49f44e766f8d5c6b7e1ea99771e7c":"\u53d6\u6d88","e8b09bda623b2afa74f352c3ae791b4c":"\u522a\u9664","b71328d9ad614f6d52b35cef7786d438":"\u7fa4\u7d44","28b7470d06ba4f17f8345aa7dfa259b7":"\u7de8\u8f2f\u7fa4\u7d44","0a5f140005d4d476021404f97cfbe886":"\u7fa4\u7d44\u540d\u7a31","2cb30db612eddc6e7d5e99a0b657d527":"\u8acb\u9078\u64c7\u5217","2e6ca1b1f0733d95e9a48cdeee355c6c":"\u8f38\u5165\u7fa4\u7d44\u540d\u7a31","0bc80948d243937859102eedf71fc75a":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","8bccfcea7c48355198b7d13fdd3de2f6":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","54e150f626db75bf84a5e037eef091dc":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","2e5922b6b1c925e27289826a15bbb161":"\u6b0a\u9650","8391d964e04c0c30d9f19bf036136c8d":"\u932f\u8aa4","68156a5e398303b805bd96fbc6b1f8ee":"\u767b\u5165","9eba57f4ad82997225a340c5c140a869":"\u8b66\u544a","b2a3486b5105e365dae1a1796390ba42":"\u8a9e\u8a00","3b9a78188b115fa00e2285cd1047a02e":"\u5bc6\u78bc","31cfba7708e9535c79660355d0f8accf":"\u767b\u5165\u4e2d","7e698d4c146d9eefd5dcd10552b18098":"\u96fb\u90f5\u5730\u5740","b9f8e134e8143020e2eb596292c7c1d1":"\u932f\u8aa4\u767b\u51fa- \u8acb\u7e7c\u7e8c\u3002","c1b8242e54c06ad890a6a091195f7b8e":"\u767b\u9304\u5931\u6557- \u901a\u4fe1\u932f\u8aa4- \u518d\u8a66\u4e00\u6b21\u3002","54242987801741c4105cfa0435d9912e":"\u9a57\u8b49\u4f4d\u7f6e\u932f\u8aa4\u3002- \u8acb\u91cd\u65b0\u6574\u7406","5d5717e963d28007da9511d1416cbc43":"\u9019\u662f\u4e00\u500b\u958b\u653e\u7684\u7cfb\u7d71-\u8acb\u5efa\u7acb\u4e00\u500b\u7ba1\u7406\u54e1\u7528\u6236\u5bc6\u78bc\u3002","18992c0bdeaa0b7342ec00591a79a535":"\u8a3b\u92b7","f9ef4303aa266902f7f9e922f9551c69":"\u986f\u793a\u806f\u7d61\u4eba","269fa73325a695a57343080fe40f7cbf":"\u65b0\u589e","fd1423b8cbca9722889132635064d7d2":"\u50b3\u771f","9c14741283258db7d1af16cebd25626f":"\u50b3\u771f","0ca28e50f61de4393b20b4e6147daaae":"\u7de8\u8f2f","bef3175dabab54d2150e79aff2b4a595":"\u540d\u5b57","9432c95882418124c0b548a771aa07a4":"\u5132\u5b58","3e0730cc7c2c84ae875e03060cf26670":"\u932f\u8aa4","778968dd3d073e993cebe6e22b649fcf":"\u96fb\u8a71","b1cac9b4aa34b017720ca17c14b56aeb":"\u96fb\u5b50\u90f5\u4ef6","ce53d41eff32250ad73ceb7d246a951a":"\u53d6\u6d88","e7d751796ae23e109ba61fb9c6148290":"\u96fb\u8a71","bbff5ceceec2a92f3bbb68a621e7ab72":"\u522a\u9664","6f255633e7d7dc941a8458f4ba0694b7":"\u8a3b\u92b7","23c7be9614dbeeabc2d1f26f2c7034f3":"\u516c\u53f8","36c872b46617c38915ba64be2192b553":"\u8f38\u5165\u540d\u7a31","7b84507ae4168f2a00cdbd6785e68b91":"\u806f\u7d61\u4eba\u59d3\u540d","e8ab7602bb49a737339ed19f8d92386b":"\u8acb\u9078\u64c7\u5217","5c73aac2fa2c094c60dddcda78b82e4c":"\u96fb\u90f5\u5730\u5740","0575629df88fcd83085c39d2d24634ca":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","0986757350df0ee8145794f8921bf90b":"\u89d2\u8272\/\u8077\u4f4d","f7107ff3ad1d12dc0e654c10b36c912d":"\u8f38\u5165\u50b3\u771f\u865f\u78bc","e833fd5a0f3f7cee36615671528ecd50":"\u5c0d\u5916\u806f\u7d61\u4eba","43e503d47bf87a0e18c0d9bef68ad9aa":"\u4e26\u7121\u6709\u95dc\u806f\u7d61\u4eba","1297cba9ef2d1bdb5dcc9e943758c8b6":"\u8f38\u5165\u96fb\u8a71\u865f\u78bc","eb0c5e12b68c835d229e3e9fd2dfdfb1":"\u8f38\u5165\u96fb\u5b50\u90f5\u4ef6\u5730\u5740","6cb6c219344a101f0e51f16c626d80fe":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","61264f041648510e5894750615c95bff":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","574fc57586f24db120a29ece5e0c0525":"\u7de8\u8f2f\u806f\u7d61\u8cc7\u6599","2c139631f1d1a9f0e5d5c05944969e78":"\u9032\u5165\u89d2\u8272\/\u8077\u4f4d","53b3cbf6b37e18753e32cdd073471fe1":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","b4d4fe6da458e68ec1538a890aaba482":"\u806f\u7d61\u4eba\u986f\u793a {0}  - {1} \u7684  {2}","f64489a1dd6c2c8ac6dbe1d30383dd0c":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","def564d3994afa7143e78432145a21a3":"\u65b0\u589e","38730c8e62ceacc061563401beb10d68":"\u7de8\u8f2f","3a612d1307df2d4d2322ab78b932a4ed":"\u96fb\u90f5","4b29d34ab1e54cef97260f3b26abef0d":"\u932f\u8aa4","51fa71b3f0a6158632ef8fdb313c4d30":"\u96fb\u8a71","8e02921883b78e1a56a70a066526ff7d":"\u53d6\u6d88","48e1f10c09fd3d67784049d14b2e2e5a":"\u522a\u9664","d854b1d0f301f8f5c326b984570287fa":"\u5730\u5740","2854c7d8322078b77a613040594b6fd9":"\u516c\u53f8","91021d4fe16a6199e232c3ba8e1a2def":"\u8fa6\u4e8b\u8655","46d1c035d53200e6597c700be42e03c2":"\u8f38\u5165\u540d\u7a31","5e2000650640b6044936f7e1e71d2f21":"\u8f38\u5165\u50b3\u771f","603605d4bebd9210752126d718a106e7":"\u8f38\u5165\u96fb\u8a71\u865f\u78bc","5d5b6506592f847e01b1cf024a81cd74":"\u8f38\u5165\u96fb\u5b50\u90f5\u4ef6","9d23212727741657f75dbbc28d6e608c":"\u8acb\u9078\u64c7\u5217","0c10365ac8af6363d6d0381e48404c76":"\u8f38\u5165\u5730\u5740","b160aa2e1a53ed35cabda4889f889d54":"\u4e26\u7121\u6709\u95dc\u8fa6\u4e8b\u8655","3e7212819d8916b20bf9f25b165828f1":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","c13c5e734a8d76989284937b6b1c9afe":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","2875d70574b3e6fcc7e7709bf97675ad":"\u7de8\u8f2f\u8fa6\u516c\u5ba4\/\u90e8\u9580","b9781f48d722d8635b68a5b69db99bcb":"\u5132\u5b58","82ee167d4c82e7bc3aba949c99aa0ab7":"\u8acb\u9078\u64c7\u516c\u53f8\u518d\u65b0\u589e\u81f3\u8fa6\u4e8b\u8655","32da3f095584c2715370609796b526d2":"\u540d\u7a31","576796b4aba86269b7dfe52336759061":"\u50b3\u771f","a6563d2bbbf6c9c54ceccdccd77c13f7":"\u8fa6\u516c\u5ba4\/\u90e8\u9580\u540d\u7a31","feac3993717e4f28c52d48027fbe4f5f":"\u50b3\u771f","0b7c366425ffd57bf7bad0e458d6d7e4":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","aaf72e0d5339c6acf19dec97c1321427":"\u8ddf\u8e2a","145f458ebee8091b74dadd74cda85e72":"\u50b3\u771f","3f578e2f8595b162833a1998f0378ff7":"\u5132\u5b58","d314cc7b1aeb73d0c6053e1e23ede12d":"\u932f\u8aa4","0ee1729fb559dfc157772c6d21407ced":"\u53d6\u6d88","cb4de9292abe5321e4f500637e9f1ba5":"\u8f38\u5165\u50b3\u771f","055650f1ee8e3b9e74ff3acc7986a6a6":"\u8f38\u5165\u96fb\u5b50\u90f5\u4ef6","ddaa4b7b56de0756b28e3115e68fc845":"\u516c\u53f8","45c1794bb415ed7ef7b42ca2ea39747c":"\u8f38\u5165\u540d\u7a31","14100cde44e510fd8bb63baf66d426d6":"\u806f\u7e6b\u4eba\u59d3\u540d","b60233712011b758fcf0d602db4a2bd0":"\u641c\u7d22\u4e2d...","aaf4c2ce115cd45cea8d929a66a09d6d":"\u96fb\u90f5","3a605fe62cddfb32a101dbe60b5adceb":"\u8f38\u5165\u96fb\u8a71\u865f\u78bc","c172378346df27ae1a4941cfc79b640a":"\u9078\u64c7\u8fa6\u4e8b\u8655","447e7881c5548bbf8a05c543c772493b":"\u89d2\u8272\/\u8077\u4f4d","80d83216c2620dd856942be09e68b8d1":"\u8acb\u9078\u64c7\u516c\u53f8","d2237c048950c3e8c877416875d7df8d":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","4b563c6f8f58ebc335750f8a036dbbf7":"\u7de8\u8f2f\u806f\u7d61\u8cc7\u6599","2f06cf16e2cd23d49ac80f5e50a0467c":"\u9032\u5165\u89d2\u8272\/\u8077\u4f4d","9a164b716a9bfaa6eeedc5f6db05fa2c":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","e268d88b3bf396d5a6ae59f1bc98bc9e":"\u8acb\u5148\u9078\u64c7\u4e00\u9593\u516c\u53f8","d2f151735ca5fc78e25e54f60ba5d57c":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","4d25672d89b4813add942cc2fa061671":"\u65b0\u589e","47a21b9c76c8b3530ee61d8e7d0e1e1d":"\u50b3\u771f","e3f1a9c726d8d42340d86b7584f7ff12":"\u7de8\u8f2f","df6c1310e2c2b0a4147028fe9c5e0513":"\u5132\u5b58","bb9258703770bb252e39e630479986d4":"\u540d\u7a31","6943ef634b2a88104e989ac9661f9e91":"\u96fb\u90f5","73a29220db1eaf01cbccbcfe72687e29":"\u932f\u8aa4","29be3459e789762b803866070425b21e":"\u96fb\u8a71","90e813d48588c0ceb15b33d9ace30da7":"\u5168\u9ad4\u54e1\u5de5","52283b0428e38a834618775c459a24ec":"\u53d6\u6d88","612255281b387600bc0f7581487d21ae":"\u6fc0\u6d3b","4160367bc88c817e5306d28322dce3fe":"\u767c\u9001\u4e2d","d1ff44fd06b0541d6152871cfc5af0ae":"\u767b\u51fa","e189939337bb22d84f61ce8fe9e0c2f8":"\u8f38\u5165\u96fb\u5b50\u90f5\u4ef6","6eb6624e0a968c0166b8263d9712750c":"\u8f38\u5165\u540d\u7a31","fff18e30ce788a442aaca2409fb529fa":"\u641c\u7d22\u4e2d...","e28af56baf20c6306a4c248f42fdb68c":"\u932f\u8aa4\u767c\u9001\u4e2d","d111970bd6c11a2f29f34e8fdfc86a20":"Toogle\u6fc0\u6d3b","8ca3b644a1afe14d98efc589a3199656":"\u8acb\u9078\u64c7\u5217","de0c51f8e0beab945d74f431bfb062bb":"\u4e26\u7121\u6709\u95dc\u4eba\u54e1","77ef1ccfa3eadbe29085192b0362a46a":"\u89d2\u8272\/\u8b58\u4f4d","32107f123960a3c9e62585deba517e1e":"\u65b0\u589e\/\u7de8\u8f2f\u54e1\u5de5","9dce645159bb15518fb0b84cbbcda344":"\u8f38\u5165\u96fb\u8a71\u865f\u78bc","cf7de24341ac58da2a11b0ac52d2e6bc":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","af7c9da876782eddaea704c4eecd516c":"\u53ea\u9078\u64c7\u5176\u4e2d\u4e00\u5217","0561161361bd812ce39612740db2d38c":"\u9032\u5165\u89d2\u8272\/\u8077\u4f4d","c981d0b911d029c50a83e344bb0860f7":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","281f11dfd16f4e73728480e863eaf2f6":"\u5bc6\u78bc\u4e0d\u7b26","e9283ca6d004393af503c03f829b7fc3":"\u8acb\u9078\u64c7\u8fa6\u4e8b\u8655","9b5777ac19c771ac2adb99429ade15da":"\u8acb\u5148\u9078\u64c7\u4e00\u9593\u516c\u53f8","a349046e085aeda3a12064f048fedd8d":"\u5bc6\u78bc\uff08\u518d\u6b21\u8f38\u5165\u4ee5\u78ba\u8a8d\uff09","94868cd406dff570aa47f3e0fca1b963":"\u5bc6\u78bc\uff08\u7a7a\u7684\u96e2\u958b\u6c92\u6709\u4efb\u4f55\u8b8a\u5316\uff09","1640073b047d8b8e9c2fe79e5884d5e7":"\u8fa6\u516c\u5ba4\/\u90e8\u9580","e7e3caf55b60d132fd8cf5d7884e7d2e":"\u986f\u793a\/\u96b1\u85cf\u6709\u95dc\u6fc0\u6d3b","ded4df81c3a49ee4f9ac8b422cb169f1":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","64369cfb092be796cd5c203bc4e45113":"\u76ee\u524d\u9084\u6c92\u6709\u6709\u95dc\u8a9e\u8a00","20f52c7354a3fd19843e600c53121d94":"\u5c0d\u4e0d\u8d77","019a05efbba570d617821f52af96e397":"\u986f\u793a\u8fa6\u516c\u5ba4 {0} - {1} \u7684 {2}","8bda019a981f4e05eefcb679f57bf63c":"\u53c3\u8003","e432e8323cf972965f4039c85eef999d":"\u6dfb\u52a0","18e8d95d4867acd26d162b349e9a2a99":"\u7de8\u8f2f","eacf7bea713ae3fc51833b2cbb75b4ea":"\u932f\u8aa4","91af34b85027ad6770e38c899fdbb942":"\u53d6\u6d88","67f709ec7d9edc036c7285710c95d82a":"\u8a3b\u92b7","5361de6f15f537a4aee200fb65a02514":"\u78ba\u8a8d","252cd98361e698a9dbb717d45e058558":"\u8f09\u5165\u4e2d","9ba6d685daaeac919bd641cf5ec8768b":"\u522a\u53bb","2f35bed6e7c6646934895ec525d65b5f":"\u9078\u4e2d\u67d0\u884c","d101cad98e91e178d3c9fdfbb8177dea":"\u932f\u8aa4\u522a\u9664","f2fd16e8f82932e4beab40be031ea672":"\u53ea\u9078\u64c7\u4e00\u5217","1141063d4b854fa670990c068a91e59b":"\u7de8\u8f2f\u6d3b\u52d5","95cf62185537a578bf5c217305fad5ce":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","b32a23fa615cf2fc1658cf6518aa37dd":"\u4fdd\u5b58","23cc9cc4d88f1179752b43014fc53a55":"\u4e26\u7121\u6709\u95dc\u6d3b\u52d5","79774c95c6ae2552af0e8e638c11b2cf":"\u522a\u9664","c56fbf4206a96161bf6593925c5d78b3":"\u5c55\u793a\u6d3b\u52d5 {0}  -  {1} \u7684 {2}","517c855198ebd204d8448e2bd2ef7438":"\u4f60\u6e96\u5099\u597d\u8981\u522a\u9664\u9019\u4e9b\u884c","202bbea35328b73e1e3c77c05fa2177b":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","8d93180412e33610837445a165247bb1":"\u986f\u793a\u54e1\u5de5 {0}  - {1} \u7684 {2}","cc7068492735dbac239de5f09e1f5039":"\u7de8\u8f2f\/\u66f4\u6539\u8a73\u60c5","429c4c9013fa20804ec90d6c9ca558b5":"\u65b0\u7684\uff08\u4e0a\u50b3\uff09","30457a111d5cac0cc27390bbb580f46f":"\u53ea\u986f\u793a\uff1a","4bdc27a318967a4eb0358433aa6d4dc7":"\u81f3","3b8d12fbf53fab18ff7b99f4b2efbb35":"\u4e4b\u9593","f31fb8ab893e20343c7b5dbb5dba7e00":"\u6587\u4ef6=\u5faa\u74b0\/\u67e5\u770b","f4dd2fe84f3d5c3723caec581bf8205b":"\u6587\u4ef6\u8f38\u51fa=\u5faa\u74b0\/\u67e5\u770b","4e5300168c5ffeb0251c01489fbcf329":"\u65b0\u6587\u4ef6","6901a33a6e291b288d0baf0753b0f596":"\u65b0\u6587\u4ef6","969eacad1ff0d6e8303f8ea1087b7569":"\u65b0\u7684\u6587\u4ef6\u8f38\u51fa","dbb42f623f8cbfe6ddb4f36a4bee13d0":"\u9810\u89bd","b8f463f3d4645fa61636178432d5fae0":"\u65b0\u589e\u5099\u8a3b","2a05aaa82c136acdf11347b931827406":"\u9ede\u64ca\u67e5\u770b\/\u767c\u4f48","a414726ddcd0ac303ec19061a0ce9986":"\u81f3","e6647fab9e7f3c628536a60a56869d82":"\u65b0\u589e","ec0941dde9486179a23526df26e0ba43":"\u5de5\u4f5c","7ca2041d27a77a2ba8e43d574753f1c3":"\u540d\u7a31","a8c143ab7f82b2bd28dea65e1e4f2596":"\u932f\u8aa4","7e329b2fb044b3fcbf96456b6862930b":"\u53d6\u6d88","4e174bf1bc9ea40c528b1a8a6a367d6d":"\u8a73\u60c5","76ac5a8e9494a1619d75aa020b90114c":"\u8d77\u8349\u4eba","ecf57646619a01d8dff908c765bd9d9e":"\u9810\u89bd","061b6613b9345c7ebe6fa6498e3fe277":"\u6a19\u984c","1fe592ad8e96ea81d58bdc7b731c2d8f":"\u5099\u8a3b","c13c7d273285f2803526910c5a2153e8":"\u767c\u9001\u7d66\uff1a","84d1b4c9e607d2f840f5ee055b247fc3":"\u6587\u4ef6\u540d\u7a31","e7a32d3a2687ccc7092ed52e36e2102f":"\u53c3\u8003","9416a54801030a79b540e26824e92243":"\u65b0\u589e\u5099\u8a3b","2cf3763034cf9f65e7783e43b8fd1107":"\u6279\u51c6","9351c8de1d11115a58f9bac39e8e2aa8":"\u767c\u884c\u65e5\u671f","cb7906b069496f45f40b3ca256c28278":"\u5f9e\u516c\u53f8","fa6e307bc640326fab9a33b1186c49ac":"\u53c3\u8003\uff08 2 \uff09","598fbd52c8be857ae05c36da90795714":"\u53ea\u52a0\u8a55\u8a9e\uff1f","7619f174f2eec48a7c1537d14a57335d":"\u6536\u5230\u65e5\u671f","714bd289a6bc5c00edd7f57f04cb3871":"\u6587\u4ef6\u985e\u578b","0378c374117dae594f790428a039c1a5":"\u767c\u9001\/\u65b0\u589e\u8a55\u8a9e","04bb909bf9ab3e549dc38ab2e2f38856":"\u767c\u9001\u932f\u8aa4","d968375a74bcd95767f579073e0af155":"\u5206\u767c\u6587\u4ef6","b27a29d5a0d43469e05f7966364e6e1f":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","ac523419e6a3616ce65eac450e49a952":"\u767c\u4f48\u6642\u6c92\u6709\u6b0a\u9650","30359c4a7a54a6cecd1143b03dcb2ebf":"\u53ea\u6709\u65b0\u589e\u8a55\u8a9e\uff0c\u4e0d\u8981\u767c\u5e03\uff1f","d2aebc76f74d45570f8adb3656871a72":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","a9b516446dd576eb582c55bfe060f029":"\u5132\u5b58","9a95a1744c6348cdd355e067e90bc28e":"\u932f\u8aa4","d7ada1186edfc944895322f23ea936a1":"\u53d6\u6d88","8a963223a56bdb91d7a361e1ce621c46":"\u9810\u89bd","bc646c2b034c85f1a3587de0eb8ef2b3":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","da27970c3ea08e35a23fb956908b78f4":"\/","5359af676f739607431a729778549fdd":"\u767b\u51fa","1c34c8962b28be597267aef253b4694b":"\u8acb\u7a0d\u5019...","51ff98c417d79325f91861af9c61cfb3":"\u754c\u9762\u5efa\u8a2d\u4e2d","ca0fbb7c80a5900750bd2d99d0c612dc":"\u8acb\u66f4\u6b63\u6240\u6709\u932f\u8aa4","fc5a65b0612680d4c1281e38f92b82c4":"\u7bc0\u6c34\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","40e47ffb407a4d733c8536dd4e1a705c":"\u532f\u5165\u65b0\u6587\u4ef6","83bb305e4ae0a9f125add2a4c184aeb1":"\u532f\u5165\u65b0\u6587\u4ef6","fab1b3f63dbaddaaefb630f4798eb73e":"\u532f\u51fa\u65b0\u6587\u4ef6","ef2ae132f9ef2221044baf7ddf055131":"\u532f\u51fa\u65b0\u6587\u4ef6","302b2dc2147ed6adef6e12d7e10a4021":"\u7de8\u8f2f\u532f\u5165\u6587\u4ef6","c2c871cbd6e6d654d1dd12b3a5fb0bd9":"\u7de8\u8f2f\u532f\u51fa\u6587\u4ef6","1b54b9ec331d5012b14ce7a9896380c0":"\u5efa\u7acb\u532f\u5165\u6587\u4ef6","f47f8b8b0abfcc913008a82a4d5d7076":"\u5efa\u7acb\u532f\u51fa\u6587\u4ef6","86039bbc50dd504e4b9976a549cbbc8f":"\u532f\u5165\u6587\u4ef6=\u67e5\u770b\/\u767c\u884c\/\u8a55\u8ad6","cf621032c44bd39ede60c6900992cd07":"\u532f\u51fa\u6587\u4ef6=\u67e5\u770b\/\u767c\u884c\/\u8a55\u8ad6","1457916e7ae2e99eea835580f70fc399":"\u54e1\u5de5","cd1c3bce4551622600b1ec2e12190e07":"\u7fa4\u7d44","f91241b3ebf4e346cda50b2886c199f0":"\u6210\u54e1","c1f04c3535fc783dc9d97ee55d875e80":"\u8fa6\u4e8b\u8655","9cc9851b18db8400f95b0de77ab38b90":"\u7ba1\u7406\u54e1\u8868","619a20c02f44f6ef9fe6a9e9a49ba86d":"\u516c\u53f8","bda1eefb990a1862d2b19ee7b3539086":"\u6587\u4ef6","e1e5e5d7dd30f9c197a9c33f112832fa":"\u6587\u4ef6\u985e\u578b","e8a1565f85489d25e52fd06ac21df4f0":"\u9805\u76ee\uff08\u5168\u90e8\uff09","49afcee193427b46231fb165287be2cd":"\u672a\u8b80\u6587\u4ef6","e4c55eabf0e7a8667e4369682ac982d2":"\u9805\u76ee\u76ee\u9304","9b7dabeb6527227231cf285210b5c27e":"\u6587\u4ef6\u5206\u914d","d3888611a3074ca0c9a83de7bd07e736":"\u9805\u76ee\uff08\u6703\u54e1\u7684\uff09","23f9e8978056a3d1f670553e73fa2d45":"\u7de8\u865f\u3002","9f0f0f1bad7c0aa583a05b97d31b0efd":"\u901a\u77e5","9ca8d4cc079ca5d5a0ce8158703e5fe3":"\u65bc\u6240\u6709\u65b0\u6587\u4ef6\u51fa\u73fe\u901a\u77e5","8d248ce70935a2f4ba5e496524510839":"\u8d77\u8349\u4eba\/\u6838\u51c6","6a4a6d2119244f74b8d02f20ef005c5e":"\u754c\u9762\u5efa\u8a2d\u4e2d","0447a9c18f0980017c9add64d8ecbb56":"IP","9be66cd6ce6639269a52e2ae45754b6f":"\u5728","25038634453c556b97b87afac033ddc9":"\u54e1\u5de5","bde53900453526862b53ce22bf61f38c":"\u6d3b\u52d5","df286f9cb1bcd5678f6035a925c51a66":"\u5099\u8a3b","2ce3988501f86780ca717f3b1ab48d6a":"\u884c\u52d5","ac43c7106de03bceeda506efed4545fe":"\u4f55\u6642","0902cdfae7b5ebaa525d4dd4fc121adb":"\u66f4\u6539\u5bc6\u78bc","b636c0e59d884e880fb4ca5fda048cf4":"\u932f\u8aa4\u8f09\u5165\u7d30\u7bc0","39a3e0a4a6ff1d3b16ac0133704a5d0f":"\u8acb\u66f4\u6b63\u6240\u6709\u932f\u8aa4","7aabc9f3cf1f6785a4bc4dd0f1a2a321":"\u5132\u5b58\u5931\u6557= \u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","4411819afba5de2a011d9fc7e7633393":"\u6b61\u8fce\u4f86\u5230 {0} \uff08 {1}\uff09 \uff0c\u7db2\u7d61\u5efa\u8a2dv \uff08{3}\uff09\u7684\uff08{2}\uff09","e9963207acc2392ad66b84db09d58a2a":"\uff08\u9078\u64c7\u67e5\u770b\u7684\u6587\u4ef6\uff09","e94da1b3b038f54c4cfc576222e7c5b7":"\u9810\u89bd\/\u8a73\u60c5\/\u5099\u8a3b","826197f6d212a3f49bec20404b0e67e3":"\u6d3b\u52d5","12b08dd886aac228d1663f867c39d9fa":"\u7cfb\u7d71\u9ed8\u8a8d\u503c","20ff7f0b0ba69db8b87713b7cd583c0a":"\u7ba1\u7406\u4eba\u54e1","33c2039044308c0d944e0d91be191349":"\u7121\u6cd5\u522a\u9664\u8a72\u5718\u9ad4","94198f0fab1b7bdee01f28acfae7d6b8":"\u7121\u6cd5\u91cd\u65b0\u547d\u540d\u8a72\u7fa4\u7d44","3c27085091ef8b9e3e5cffb24d279066":"\u65b0\u5bc6\u78bc","34491a87c07ab9a23890ef40788292d2":"\uff08\u9078\u64c7\u6587\u4ef6\u67e5\u770b\uff09","4db53ec6234ee2d5bd74273137d172cb":"\u9810\u89bd\/\u8a73\u60c5\/\u5099\u8a3b","463c573d3aed3795e9e3145f10cd1416":"\u901a\u77e5","b2d0ea65f8ae06179a40d78e52b7833c":"\u5fd8\u8a18\u5bc6\u78bc","9055d707d0388278ceb4f35426316c1b":"\u586b\u5beb\u60a8\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740","2409934e0552cdd76753d2c11005b6b5":"\u8981\u6c42\u5bc6\u78bc\u91cd\u8a2d","de7b06c26e8b5361eb8e33d068dd2ce4":"\u8acb\u6aa2\u67e5\u95a3\u4e0b\u4e4b\u96fb\u5b50\u90f5\u4ef6\u6709\u95dc\u5bc6\u78bc\u91cd\u7f6e\u8a0a\u606f","aba0eff28858ae382e41491bf1cb62be":"\u5bc6\u78bc\u4e0d\u80fd\u5305\u542b\u4e0d\u5408\u9069\u5b57\u5b8c\u3002\u8acb\u8f38\u5165\u4e0d\u540c\u7684\u5bc6\u78bc\u3002","e8dedb70bb4def5e44bb81fbd7b43cf2":"\u5bc6\u78bc\u5fc5\u9808\u81f3\u5c116\u500b\u5b57\u7b26\u3002\u8acb\u8f38\u5165\u4e0d\u540c\u7684\u5bc6\u78bc\u3002","012e9e78bebb04e17f704c0384a2c44b":"\u5bc6\u78bc\u4e0d\u80fd\u5305\u62ec\u95a3\u4e0b\u7684ID\u7684\u4e00\u90e8\u5206\u3002\u8acb\u8f38\u5165\u4e0d\u540c\u7684\u5bc6\u78bc\u3002","b422f9d3d10e55390f8c1cca678d783f":"\u5bc6\u78bc\u4e0d\u80fd\u5305\u542b\u95a3\u4e0b\u7684\u59d3\u6c0f\u3002\u8acb\u8f38\u5165\u4e0d\u540c\u7684\u5bc6\u78bc\u3002","1a88d2ecf056abdaf0b9a2b32afc8059":"\u8acb\u8f38\u5165\u5bc6\u78bc\uff0c\u7136\u5f8c\u91cd\u65b0\u8f38\u5165\u4ee5\u78ba\u8a8d\u3002","c387b4b2a7852e86ef26cd6dd4132dbb":"\u5bc6\u78bc\u4fdd\u5bc6\u6027\u4e0d\u8db3\u3002","2a5d547899f8f5356e797092ff583fe5":"\u592a\u5f31","658372f46bf54ab96dd56f3e87e8f93c":"\u8f03\u5f37","0ab94e0bc51ea7ea092a017c47164964":"\u4e2d\u7b49","1442d5f188b9f17919e85e0df228e98b":"\u8f03\u5f31","6f52a45578b8376c688a75ddc7888122":"\u65b0\u5bc6\u78bc\uff08\u9375\u5165\u518d\u6b21\u78ba\u8a8d\uff09","23b47796783d663d3113bde8469f9202":"\u8acb\u66f4\u6b63\u6240\u6709\u932f\u8aa4","78a7430d961bec5b3d4759206ebc2b04":"\u8f38\u5165\u5bc6\u78bc\u65bc\u5169\u500b\u65b9\u584a\u5167","25092a9a028d282401e526d9252c734d":"\u5132\u5b58\u5931\u6557=\u4fee\u6b63\u932f\u8aa4\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21","39b3f1da7208ad35ea991d47bb460b30":"\u932f\u8aa4\u8f09\u5165\u8cc7\u6599","eadd75daa6471a87eb75121dd5eab06a":"\u66f4\u6539\u5bc6\u78bc","1b6ed9a99ae0f49a874fab476d0e70c4":"\u65b0\u5bc6\u78bc","db88368227b739ed12b165005f43d2c9":"\u932f\u8aa4","9b6839c225da5cb93c3bf29720e0531d":"\u53d6\u6d88","93e83e34ea66ffe81f50a7e5d5dd1c05":"\u5bc6\u78bc\u5f37\u5ea6\uff1a","f7c61a97b669d7f5128b51c8644c400c":"\u5132\u5b58","3cdf7887c86019f7e5bdff4bb7e04df5":"\u5bc6\u78bc\u4e0d\u80fd\u5305\u542b\u8d85\u904e16\u500b\u5b57\u7b26\u3002\u8acb\u8f38\u5165\u4e0d\u540c\u7684\u5bc6\u78bc\u3002","a217bd43e7427e981bc8dbf18998faed":"\u5bc6\u78bc\u4e0d\u7b26","c84f415dbfa05999e600cd94fdfe5746":"\u5bc6\u78bc\u4e0d\u80fd\u5305\u542b\u95a3\u4e0b\u7684\u540d\u5b57\u3002\u8acb\u8f38\u5165\u4e0d\u540c\u7684\u5bc6\u78bc\u3002","b15687e4d1da118c2d9d1daff85edf1f":"\u65b0\u589e\u54e1\u5de5\u5230\u9805\u76ee","c6b882815deece5fc4af182308b4d2fd":"\u767c\u9001\u7d66\uff1a","d1b697435d0ea4379356aa54de420c38":"CI \/ CO","0a57bec14576ce5935189bb22f6703bb":"CI \/ CO","cf2c3800960d8c2adbde948508559fcc":"CID \/ COD","176ba486e0bcabc5c17ea417d7eb9f53":"EN","11637a8c42ebde773f7f5a7fe41484a3":"\u5df2\u5b8c\u6210","ad6097000b6378a87dc4e575aae3be72":"\u540d\u7a31","49b23ce333bb07f879f390407d9d0fc2":"\u932f\u8aa4","50c979ca00e855ebc637adca2a8dc826":"\u767b\u51fa","618aae5b039067acad42ceaeedb1fc5b":"\u539f\u4ef6","fa51d6a52a783767a47cba8c967a1c4f":"\u7ffb\u8b6f","be0f00b354dd94a40191b8b898176014":"\u7ffb\u8b6f","b592b4ecc8b4276ac1410d8ce9da486b":"\u7ffb\u8b6f","a87c51605d9e2e0e949254201040f55c":"\u540c\u6b65\u7ffb\u8b6f","119873b418b9abfe9f6297413dc9a56c":"\u7ffb\u8b6f\uff08\u9ede\u64ca\u4fee\u6539\uff09","5cd1443be43e76056ea8ebfeaba45a5d":"\u5132\u5b58\u6578\u64da\u6642\u767c\u751f\u932f\u8aa4 - \u5617\u8a66\u91cd\u65b0\u6574\u7406","88e32f3c8eac49f0e3c95e188b84538d":"\u3002 PDF\u683c\u5f0f"};
\ No newline at end of file
diff --git a/data/oldeng.js b/data/oldeng.js
new file mode 100644 (file)
index 0000000..ab1e73f
--- /dev/null
@@ -0,0 +1 @@
+{"88d66c37128476736b8c2a9cd9a87917":"","67f1f4feaaa7e7ea52e524c00b027797":"Fax","da27970c3ea08e35a23fb956908b78f4":" of ","2cbebab614b8ed2d39315ca3c3178ad4":"Admin","cf72aae865f3f0be736987f7dc390e25":"Error","662a91040931a70162aa24ef32ed949c":"Faxes","5359af676f739607431a729778549fdd":"Logout","cd4b091c7fe3281497a3b47dfb18e9d9":"Confirm","02e3cddd44d16389541b6aeb8c790ecc":"Deleting","1bbff82eb64f912dea3597cea30b34df":"Projects","db5bcee357f39cbe65aaa87879680848":"Write Email","61cc28efb8cdb7dc6efeaceeb706e470":"New Document","7b085783b608ea949c9fb9de84016b78":"Error Sending","e84cbf769d01c3cf5f2470839353035a":"Error Deleting","1c34c8962b28be597267aef253b4694b":"Please wait...","852039f0b664305547a9ce2768a131a4":"invalid in_out","52a960f47139e4edffb1f8491d8079fd":"&#160; Building","0902cdfae7b5ebaa525d4dd4fc121adb":"Change Password","40e47ffb407a4d733c8536dd4e1a705c":"New Document IN","83bb305e4ae0a9f125add2a4c184aeb1":"New Document In","853a8322564e73c79d25f6053edd6397":"Document Manager","fab1b3f63dbaddaaefb630f4798eb73e":"New Document OUT","ef2ae132f9ef2221044baf7ddf055131":"New Document Out","5a343f94a3d71bc8370f073f0f3c7f7c":"New Document Wip","51ff98c417d79325f91861af9c61cfb3":"Building Interface ","4177e7e2dbe28af7f72338aaeb603afd":"Problem Loading Data","6a4a6d2119244f74b8d02f20ef005c5e":"Building Interface...","b636c0e59d884e880fb4ca5fda048cf4":"Error loading details","b5f19c6de6e6bde8526a37c2a842e149":"Loading Document details","39a3e0a4a6ff1d3b16ac0133704a5d0f":"Please Correct all the errors","6c00e3d6173c7317d8b9dc9b0ebbaef5":"New Document - Work In Progress","9541c362ba7c5444620fc19601a3372d":"Select at least one Row to delete","d062a6fe1b74c46d5384e0e4595db834":"Are you sure you want to delete that?","7aabc9f3cf1f6785a4bc4dd0f1a2a321":"Saving failed = fix errors and try again","d82df0fe54ecdc0bd85bea3f03d7301f":"Welcome <b>{0} ({1})</b> to {4} v{3} for <b>{2}</b>","626434c27546f821700d2113412f217b":"Add","23ae09c64db8dec497f5624af73362ad":"Fax","0a1c7fe7d40f8c02f06e6e059543a876":"Tel","896d5e68ff54a3adeb1fb2626e15aa61":"fax","14e570036be0c6392cc3754a2eed1848":"Edit","a0eeb1fa20b9f07a5e45f2d6b151b08c":"Name","f9ea6f84c6986c5d0ebaa617c56efc3f":"Save","de21f69162c62fbfd9216a4f2e8e77ef":"Email","03f1e3da38f4fc8a3e7c47184d3bad57":"Error","8fc4b87ad6c7bcf2f4f2b373510bc36c":"Phone","a0c2bac69a54727af53708085fabc273":"Cancel","50c493dc4c8b3f232a2e4325f3e7da87":"Delete","69e56c04bfd11759fc68304f6bb18d0c":"Address","71123d5c432df83889d7ca43e8197811":"Offices","1134ecf394487a64679d529e070ea5ea":"Remarks","40c2616bd3e32c849d5ec77f78efc9ee":"Companies","6cb3308eae6d9ed2b9ebb10bcccf5544":"Reference","c8ecbe6867f2f0101cb8640530e0dbb5":"Enter code","99021504d0c159ea83dae35df26b4245":"Add Company","9976254dc68ab1f1f8502e55ff33716b":"Company Name","317d12ac6522b762d62ae8c01d709a63":"Edit Company","82264ee7274fc7ed48a2dbaec40dc358":"Select a Row","d863ba3ca820b68e432d05f587120c22":"Enter Address","48f9d29d02a96bf47ad358cf9b7da512":"Enter remarks","6f00d554e63504932897a28616dfa4eb":"Edit Companies","39068f40676e9592b65b34c8fbd40739":"Enter fax Number","aea1103ddab0b40b14d439e6fe418209":"Enter Company Name","ee9a7b4d5ffa537520840ca04a659c0b":"Enter Phone Number","d59ad4353a277c017ac9786d7db35c5d":"No Companies found","5c6c8dff18260ac6f51c3ca832e98dfb":"Enter Email Address","621c880ea3f2ef414bc10e94a2de6f35":"Select only one Row","0955e7d3ad80c4d4626d0689c31f3cad":"Your Company Details","ed447e9e305d7511a4fc52333727c664":"Company ID (for filing Ref.)","24ab6b3706b93c27b8926f0504f39b94":"Displaying Companies {0} - {1} of {2}","da305b6aeec96025787cb01f0201a4fb":"ID","4bdc27a318967a4eb0358433aa6d4dc7":"To","e1b7fb69e1459d023ee0856bd1a52e77":"File","3afd10626465f85439f9d17cb81da3a9":"Open","5907ee8666b08970af6a623c014d2df2":"Type","91f526392b3fc95bb13abb6fc7f24d58":"Error","07ec296e7fd87e3df8fd3d839d3ec17f":"Owner","c29d5f16220a84721e04c1214dfda21c":"&nbsp;","b3d8947cb04abca0f6fce258b9f7a617":"Closed","a0467ec71187c4a4c84ec79f1d0d5706":"Images","15379e0afc58222a6880e9cd7d0e287f":"In/Out","e842ab3ddd99d254dd059a7e64975c61":"Locked","b2453597fc7b92e20c53d7a3ef0400f2":"Search","3b8d12fbf53fab18ff7b99f4b2efbb35":"Between","2f6755de408bbbc1fdfd95eeab406462":"Created","de02c421a7c2cddd315c949dc90d7996":"Project","8adf77c03cf2906aa5757ac3ce59996f":"Sent By","13fa15f80c0a0285d547c079b5325e96":"Sent To","95fdc3d2d5a02f85cadc8f0ea5f823ee":"Subject","fc96c58dd36f64d8ffb211f4f4dfadf1":"Add File","b1716b9c5e9ce281bd9951db6e6fd625":"Filename","cf4141cfb59641f4e32359e65122f903":"Initials","8f658257d977bb1aab94ecb1a00f7da5":"Template","c8fdffb9c7813478987956020317a8e7":"Icon View","c26feb5953a24b5f05966da5647e7404":"List View","921549bcf70afd971d0ec09b5b611753":"Reference","0364723536845e221318c572ceb57aaa":"Search : ","979a3aa7c51eb24bcccef011157abfb6":"Date Recv.","3557b8f864ba487dd4bdb58319d9cbe3":"Date Issued","30457a111d5cac0cc27390bbb580f46f":"Show Only: ","3e91fb638ae80beacea9cc99e1f5d0da":"Documents In","216c01fa09ccdfb64a9aaf20baa6186d":"Last Updated","4f94832b8a2d286761fd98b95f0db4c3":"Reference(2)","49728ecd775e27155dbccb172a5fdfea":"Reset Search","56230157f3cf9ad9da5ef72c9c621467":"Searching...","ab399032154eb912c79c663e390303b9":"Date Recieved","ff6d5c19f00a25ffce75ec31577a1bbc":"Documents Out","6a94112b604de275d5ebaf7b7e7dfe5a":"Enter Sent By","d97da7b061cd3941e4b980683c1dcfb1":"Enter Sent To","0605b9c1a5699ef5af5f2c5a796a3e01":"Enter Subject","e7a50d94d15354b2c2e87ffaeb8ce6d1":"Reference (2)","df3b8c56e3ef341cbe61ea4d57d677af":"Upload a file","59410fa1bd32e7cb953debc37306b5be":"Use a the WIP","d1abeda0cf6e66a8886511b17130fe28":"Enter Initials","d44e0d48fe654839aa01c39eb9cd136a":"Select Project","e4d55ad926d29e1f06374e24e4ec260e":"Use a template","b3da063a9329a84c868bbd98b10a9c24":"Enter Reference","22dc8c672431cad3fe501bce67711f00":"Export to Excel","b09d68d4090703b4dc61fca5417bad4f":"Select Template","302b2dc2147ed6adef6e12d7e10a4021":"Edit Document In","0b9128f1edb25b2bbc3f08a261801411":"Work In Progress","c2c871cbd6e6d654d1dd12b3a5fb0bd9":"Edit Document Out","2f0380e0fe96168fe6b9cbb22837e29b":"Enter Date Issued","1b54b9ec331d5012b14ce7a9896380c0":"Create Document In","c65e0ee48ec011444b56cb74cf4ca917":"Enter Reference(2)","7481c432209462346b0b9810413b804b":"No Documents found","f47f8b8b0abfcc913008a82a4d5d7076":"Create Document Out","30a55ca6ec4cdc6ca482156481c01377":"Enter Date Recieved","9c749e2cd69e74c62f12519253bffc63":"Select Document Type","f8315842b585de9eaadd2fa4c3ebee6b":"Edit Work In Progress","78b415ef3a68650fae89eec57d485d87":"Select a project first","9d83fb182bbb420d05ba45c91f3a440c":"Create Work In Progress","2119c03f3df5e36bda3b9cb740636740":"Select An Project First","e9963207acc2392ad66b84db09d58a2a":"(Select Document to View)","e94da1b3b038f54c4cfc576222e7c5b7":"Preview / Details / Remarks","02d67344f10da2fa2a74fb7685013fbe":"Create Document Out (From WIP)","74c17995e10ec81f1623a306a4479ce4":"Displaying Documents {0} - {1} of {2}","86039bbc50dd504e4b9976a549cbbc8f":"Document In = View / Circulate / Comment","cf621032c44bd39ede60c6900992cd07":"Document Out = View / Circulate / Comment","98ec2f77bbeb48d3a9aa88e30716f1a7":"Work In Progress = View / Circulate / Comment ","08bdbb08af2ad3580621243cf11e7673":"Add","614efef301b8ed0fc220250d15317a6d":"Code","cc6fa92cb4fd0f242d4fdf1cc8d1594d":"Edit","a774f9cebbca86c2c0a2755b3b3293e0":"Save","91d2053d6ed89a82bdcd1135aa3003a8":"Error","e62ef7df7d2c826f2d1bbdd17edd6c95":"Cancel","0b8c4cefae65755a2a94492377b87e1e":"Delete","6cb6b18c3aa9e2e5efacdb1b53bd0833":"Remarks","9dc55770a0ac10da80d90152e2788534":"Enter code","ff62011ce3b6f176d275cbcd2a16e7f6":"Select a Row","9ab8d2b79fe7c8734cf4d5af399801be":"Document Type","5272e044d08bd444d6087e2890ec6e48":"Enter remarks","f26795616f04f00bbfff642d8ef6cdd0":"Document Types","7fb8d76e66be8390c220f0c6b5847e8a":"Edit Document Type","6530a62b6acef6d4ce7d9ffb3f6afd00":"Enter Document Type","f2e24d6b8606ba4ffd9f02afd0c70846":"Select only one Row","ed1c37a89d97e107d6ec490ad157012e":"No Document Types found","018350df3629f8bfa9f344dbb395e284":"Displaying Document Types {0} - {1} of {2}","2706014df1955fc8057a049486069a69":"","91b3447b3245f95c3626e5463da39aa0":"Add","6ce13b937dad11c084240c9ec8797a31":"Fax","b44692243232a3ed15031580566dad96":"Edit","fef2188435d72bba15f1e6f93aadc20f":"Save","2b0737b9778cef63912e254320204aeb":"Email","1457916e7ae2e99eea835580f70fc399":"Staff","8daea3c9b95aa92083e03c48d43f136c":"[All]","3e776bd142c2a4cd6bd9517eebac2b0d":"Delete","826197f6d212a3f49bec20404b0e67e3":"Events","cd1c3bce4551622600b1ec2e12190e07":"Groups","f91241b3ebf4e346cda50b2886c199f0":"Person","d7cfa9dc0e21c6b7c9d8b6dbb56f7135":"Reload","48deee385f013b60aca5c8fe978b57ad":"Rights","c1f04c3535fc783dc9d97ee55d875e80":"Offices","9cc9851b18db8400f95b0de77ab38b90":"Admin Tab","619a20c02f44f6ef9fe6a9e9a49ba86d":"Companies","bda1eefb990a1862d2b19ee7b3539086":"Documents","23b1130b6064ec1eba6e9c0b8cce95bc":"List/View","2a7716c54827ffce5956db0ad7dc3359":"Timesheet","318dbc7acbfb642f02288a7bd16d4d2f":"Permission","e1e5e5d7dd30f9c197a9c33f112832fa":"Document Types","669465be045dcc6d6802336bb2bc35e9":"Print / Export","e8a1565f85489d25e52fd06ac21df4f0":"Projects (All)","ee775f51898d23dcc5b5e8350be968f0":"Document Manager","49afcee193427b46231fb165287be2cd":"Unread Documents","de7865cfe60984f8532d68140c754958":"Work In Progress","e4c55eabf0e7a8667e4369682ac982d2":"Project Directory","9b7dabeb6527227231cf285210b5c27e":"Distribute Documents","d3888611a3074ca0c9a83de7bd07e736":"Projects (Member Of)","b626b2cb2185981662611f725cb30053":"There was a problem saving the data","361d5608d5f9bb63626db4bd0c835775":"You can not set permissions for that group","a1391b4a751b8530e0bd60f08b14af4f":"","c43b6fc7116389204759066319de9954":"Add","d58415a6d14d553c3828638d02fb19a1":"Edit","d27ecf6c3f03332b85bfb59d9faad9a7":"Name","857fb9b48fc0ebcc5b632c3b3be0e0b1":"Save","c8c302e51c74e12d32b2feb07e3dd275":"Error","2c3916b18ce029b7208b4fdeae495e47":"Teams","eaf49f44e766f8d5c6b7e1ea99771e7c":"Cancel","e8b09bda623b2afa74f352c3ae791b4c":"Delete","b71328d9ad614f6d52b35cef7786d438":"Groups","ec712572a6007aafc60e887f999097eb":"Leader","5aec53f951392b5acc383d43680450f4":"All Staff","8ef4bc43474e6e2c3801c256628578dc":"Edit Team","28b7470d06ba4f17f8345aa7dfa259b7":"Edit Group","0a5f140005d4d476021404f97cfbe886":"Group Name","6388b5790ad9f2b74d15a5ff6ae67909":"Searching...","2cb30db612eddc6e7d5e99a0b657d527":"Select a Row","efd9d457fab402d0196bd85f82a1ad15":"Adminstrators","ba5d59ba349814f5f362dd0c9aa8508c":"Not in a Group","2e6ca1b1f0733d95e9a48cdeee355c6c":"Enter Group name","0bc80948d243937859102eedf71fc75a":"Select only one Row","a2dc9d40b46496cb925d0b944021cd81":"Select Person Who opened","33c2039044308c0d944e0d91be191349":"You can not delete that group","94198f0fab1b7bdee01f28acfae7d6b8":"You can not rename that group","541450a2bfc16c46cb7a5df70985c78c":"All Staff (Default Permissions)","0447a9c18f0980017c9add64d8ecbb56":"IP","9be66cd6ce6639269a52e2ae45754b6f":"On","ac43c7106de03bceeda506efed4545fe":"When","25038634453c556b97b87afac033ddc9":"Staff","2ce3988501f86780ca717f3b1ab48d6a":"Action","bde53900453526862b53ce22bf61f38c":"Events","df286f9cb1bcd5678f6035a925c51a66":"Remarks","23cc9cc4d88f1179752b43014fc53a55":"No Events found","c56fbf4206a96161bf6593925c5d78b3":"Displaying Events {0} - {1} of {2}","74db4ca67d11a6aef26c11ffeada6be8":"","7898b635cfeaea17e8033d9e5d59eedb":"By","6270248531ab8c9eeff32b0cd99b59cb":"Add","cbad61e803f6815d1f7edadc5545de9f":"All","08e0cbbba1b743ef6424bfd10b6e9fe4":"Code","23515bccc5d489af2dabcb784dde3312":"Date","aac7ac6c3b2737079fe150daf5d4aa95":"Edit","8bf6dcfc1d67cbeb3988af3c95d9a087":"Save","09b9eccfcafa4fe7eafd6197211a79c5":"Team","815e7766c158278c93df7bd593e8f6ed":"Type","49d16175b68984c7e8f12d239335ea18":"Error","620c15e6fe40321af884967f83f4b186":"Cancel","f7c635c96bb3960b4e0b67f160dd5196":"Client","4101e46ff9b4848a9cc24bfbef93cf7d":"Closed","19d0e412088dcaab06f1dd2a3d495774":"Search","db9d85e407b7e706ff9dfe945b20a47f":"Project","a0aac1883a15cb863c1bbe30da3e4d6d":"Remarks","be481f704a94d3ed774855ec359e74e8":"Projects","2aa7db810572b4f255fe7509dca994c7":"Non-Project","e3154c3a4140a50860cf6222bce93522":"Select Team","93e23f98d527bd3afef6bcba5fdd35e5":"Edit Project","ccd385037d361a56b15d19fef1992d2d":"Non-Projects","0e525c273540ccb06218c8b9f7d3d950":"Project Name","5c51500e266c9bc53644a39fecf58845":"Project type","a231825bd1b61fb68e9634368c9d3703":"Reset Search","06f50746eb54ee9f3df938e57855c2a8":"Searching...","af2aad94fe0436c55e182d960081dc2e":"Select a Row","aab18b754165ad1163070776e2c527df":"File Location","9ed678c5fd3fbe1d661547e5b643241f":"Select Client","801b5fd9a1090496951c4d4cfba8808e":"Project (Closed)","94fb5d0e8b8c2e6b3ba7c07bf7c373c3":"Enter Date Opened","28c83e01f44f9bcfc225913cb83d5f0e":"Enter Project Code","e624c03c9f86a60fccf8ef5d11324802":"Enter Project Name","10d8d0632c0fb434acb9685465f2f40e":"Select only one Row","a855eb12b0648443f700e4b46f990d30":"Non-Project (Closed)","2814aa64aee4356b17def9612b9788fb":"Enter Project Remarks","5eb44284bd086453fe6446fa48db7530":"Project (Unconfirmed)","90f13f2c86a68c1d7ef6e1ab9b3b84c0":"Select Person Who opened","f41d5f769a9798900af9a920fdd0253d":"Where are the files stored?","145f458ebee8091b74dadd74cda85e72":"Fax","3f578e2f8595b162833a1998f0378ff7":"Save","aaf4c2ce115cd45cea8d929a66a09d6d":"Email","d314cc7b1aeb73d0c6053e1e23ede12d":"Error","401e958ef11f33a4fc16a2938cf72e6a":"Phone","0ee1729fb559dfc157772c6d21407ced":"Cancel","8168d0bda40967cfc01493d0d090dd38":"Office","ddaa4b7b56de0756b28e3115e68fc845":"Company","55c29707ba006ebd8fe10593c5715876":"Project","cb4de9292abe5321e4f500637e9f1ba5":"Enter fax","45c1794bb415ed7ef7b42ca2ea39747c":"Enter name","063a5d5f05309589cdc1a715f80997aa":"beforeload","055650f1ee8e3b9e74ff3acc7986a6a6":"Enter email","14100cde44e510fd8bb63baf66d426d6":"Contact Name","b60233712011b758fcf0d602db4a2bd0":"Searching...","845dc29f655c73313a2dcdcfd4da272e":"New Password ","c172378346df27ae1a4941cfc79b640a":"Select Office","03324672e79197559427dc88f3c5859c":"Select Company","447e7881c5548bbf8a05c543c772493b":"Role / Position","515fe76fa604ceaf52b620333641ed8e":"Add / Edit Staff","80d83216c2620dd856942be09e68b8d1":"Select a Company","f6c2251ffa170082a5a77985e5643e8c":"Enter phone Number","1b162a10d92a25610f6ec8edcfd2b119":"New Contact Details","d2237c048950c3e8c877416875d7df8d":"Office / Department","4b563c6f8f58ebc335750f8a036dbbf7":"Edit Contact Details","2f06cf16e2cd23d49ac80f5e50a0467c":"Enter Role / Position","8a6e51ec9022b345fef84fbb529bdec2":"Passwords do not match","e268d88b3bf396d5a6ae59f1bc98bc9e":"Select An Company First","9c7e2a5e6d7633cc71b5a350c23e1e23":"Password (type again to confirm)","769d2001ca0478eeaa928b192d73a275":"Always File Messages from this Person in Project","e9a4b6442dcab2b0ed83bdaf176c97ae":"You must create a password for the admin account","4d25672d89b4813add942cc2fa061671":"Add","47a21b9c76c8b3530ee61d8e7d0e1e1d":"Fax","e3f1a9c726d8d42340d86b7584f7ff12":"Edit","bb9258703770bb252e39e630479986d4":"Name","6943ef634b2a88104e989ac9661f9e91":"Email","73a29220db1eaf01cbccbcfe72687e29":"Error","29be3459e789762b803866070425b21e":"Phone","90e813d48588c0ceb15b33d9ace30da7":"Staff","612255281b387600bc0f7581487d21ae":"Active","6f6ce9bf1ac00869a2dcde30af0bae93":"Search","4160367bc88c817e5306d28322dce3fe":"Sending","133f41b2a5517c2d8de895b9cb31abd1":"Reset Search","8ca3b644a1afe14d98efc589a3199656":"Select a Row","e28af56baf20c6306a4c248f42fdb68c":"Error Sending","d111970bd6c11a2f29f34e8fdfc86a20":"Toogle Active","2e1568b092e1ae413ec0f98073358b47":"Hide old staff","de0c51f8e0beab945d74f431bfb062bb":"No Staff found","1640073b047d8b8e9c2fe79e5884d5e7":"Office / Dept.","9ad56766a737df068faf3b0748485f86":"Show old staff","77ef1ccfa3eadbe29085192b0362a46a":"Role / Position","af7c9da876782eddaea704c4eecd516c":"Select only one Row","8d93180412e33610837445a165247bb1":"Displaying Staff {0} - {1} of {2}","a8fa36d1ab3800a4ebca55eb62e4f19c":"Drag staff to add or remove from team","877bd34f9ea9dc47fae59e8874aaa0a3":"Drag staff to add or remove from group","19c643362cbed34bb630083132c6cb89":"ID","9a5ac2b06cdd7af48d562800d25342f7":"To","a6e4a00c3b7af5a1ab0a2aca6adbab33":"Date","9e7d970cd3d93440c9b122eb7c3982fd":"From","74b736f1709f359fbeeb003fe077e50d":"Open","23f9e8978056a3d1f670553e73fa2d45":"Ref.","e04f5ffe058380ed0209db2c0c4af642":"Type","6ad257f0a30cba53e539cf12c94a353b":"Locked","0db9141d575d689477371bc0fd4ad02e":"Project","4ae2250d6c21f80e5a9431da2c3c91a2":"Subject","d88c17f9a36d4ae5e2b750d9638fa8e3":"Action Required","c2a0770644faf2fa1945b3cb8155e372":"For Action / Review","5a654f57c8e63dc83af9b7168bb3a5d0":"No Document Types found","34491a87c07ab9a23890ef40788292d2":"(Select Document to View)","4db53ec6234ee2d5bd74273137d172cb":"Preview / Details / Remarks ","f876da203fff3aba0657805508aca5f0":"Displaying Document Types {0} - {1} of {2}","063a04a916f44204c50b707c3cf7b1e3":"ID","3a8a05b24bafa01d7258736852131f6c":"Sent","8fcd914af8a5f9569032f9dc2d0882af":"Type","2a6082ef86ba417c0f69e110a3f98238":"Project","f0338d29a214fd93842d97f74ae5d505":"Sent By","eb137e2d226bf56a8e15e7ea913548cd":"Sent To","bba72f825a12b1141968d49d9e974be0":"Subject","6160a520a83f6096bb6211944657ffb5":"Unread By","5a2d7715adec7124134312f4c6578508":"Action Required","e66ba3fd8515d1244fc58dec98ee5a81":"No Document are Unread","5212be7f6511dd4055d425d26e693cbf":"Unread Documents (Office)","3e00703b3d45a69033c58b2b00389e7e":"Displaying Unread Document Tracking{0} - {1} of {2}","2e5922b6b1c925e27289826a15bbb161":"Permissions","8391d964e04c0c30d9f19bf036136c8d":"Error","68156a5e398303b805bd96fbc6b1f8ee":"Login","20f52c7354a3fd19843e600c53121d94":"Sorry","463c573d3aed3795e9e3145f10cd1416":"Notice","9eba57f4ad82997225a340c5c140a869":"Warning","b2a3486b5105e365dae1a1796390ba42":"Language","3b9a78188b115fa00e2285cd1047a02e":"Password","31cfba7708e9535c79660355d0f8accf":"Logging in","7e698d4c146d9eefd5dcd10552b18098":"Email Address","b2d0ea65f8ae06179a40d78e52b7833c":"Forgot Password","9055d707d0388278ceb4f35426316c1b":"Fill in your email address","64369cfb092be796cd5c203bc4e45113":"Language not available yet","2409934e0552cdd76753d2c11005b6b5":"Problem Requesting Password Reset","b9f8e134e8143020e2eb596292c7c1d1":"Error logging out. - continuing anyway.","c1b8242e54c06ad890a6a091195f7b8e":"Login failed - communication error - try again.","54242987801741c4105cfa0435d9912e":"Error getting authentication status. - try reloading","de7b06c26e8b5361eb8e33d068dd2ce4":"Please check you email for the Password Reset message","5d5717e963d28007da9511d1416cbc43":"This is an open system - please set up a admin user with a password.","561d7eec3a547c00e57dd2c51778c9d3":"x-form-field-wrap","ae23db9b2359887bd79ec21dfcabcaa7":"","3db7ae45913582e812cc951bc986b506":"Add","641faed5e096dd2d5818d51fd26a23ff":"Fax","29014e5e67cebcf3f663d0796256a3f3":"Job","832a30e98dc16935a487775cadacf995":"Edit","3dea5092f7ad295132ec0cf2d99ed937":"Save","36e07b222dd5d76a015bfd205c0fd3b3":"Email","17783c7f963137434a369f4ac88e7c6c":"Error","532dc1377dbf55808e205b410bc6dc50":"Phone","edb6186549c180cafcf087d505ac31c2":"Cancel","de598e4bac2b020ccc9ee40d35d0b786":"Delete","9f0f0f1bad7c0aa583a05b97d31b0efd":"Notify","e1eb48b41c1e2b1347101a68af53aa17":"Office","329e12148f755eb1177616440538f2a1":"Address","1ae7097f9175ba60f0aedf3611f3bdc8":"Company","f4f85d6e6859e4549b50a604c7cd1a98":"Details","e72d66b2895cb32b4938cbfd80caa8ca":"Project","ba8f685e8aa959a4f34334fd0b40821c":"Enter Role","dc73ac4b2c3d14ab6699d9f9b75101e7":"Enter ispm","25dd25e5438a8fc3da7c1f76473135d8":"Role / Pos.","4f7d2c5b74d9f69eab59578fb95afcb2":"Contact Name","8a7ef992587b8c38be9acc9d968a7820":"Searching...","fb7ccd4bfecb54edcf30753be71d10fa":"Select a Row","2b31f09a9b5806577379d954d1731936":"Select Office","007745517f6788d1fe96f6d3b8027108":"Contact Person","2af36ca888981d315fca3dfa900a6b16":"Select Company","db6ef9d200a601a8d1939231e332bdca":"Select Project","d20fc5ebae1c642e3d69034299da864a":"Role / Position","886433e30870da7802bbf05754a95118":"No Contacts found","412647f47f77fe9f808fa4baf9df0d67":"Project Directory","f9ef4303aa266902f7f9e922f9551c69":"Displaying Contacts","3df1c640c550be5ee4f3253dd942e054":"Office / Department","a6ef9dd4e02810677d667ded0350cb3f":"Select only one Row","d97d53e63c742a7a25c57d7664847335":"Select Contact Person","9efe46753451cc2df39f8b65be75e597":"Select An Company First","280b033d22832e1b89f01af07426b42c":"(Select Contact to View)","9ca8d4cc079ca5d5a0ce8158703e5fe3":"Notify About All New Documents","9393328b54300cccba93f6e3101e9895":"Edit / Add Project Directory Details","649b5877701bcab7f894002d113a97d7":"You can not add to your own company.","269fa73325a695a57343080fe40f7cbf":"Add","fd1423b8cbca9722889132635064d7d2":"fax","0ca28e50f61de4393b20b4e6147daaae":"Edit","bef3175dabab54d2150e79aff2b4a595":"Name","5a042dd0f2b996b1042e2b9a7bbb3d85":"Email","3e0730cc7c2c84ae875e03060cf26670":"Error","778968dd3d073e993cebe6e22b649fcf":"Phone","bbff5ceceec2a92f3bbb68a621e7ab72":"Delete","23c7be9614dbeeabc2d1f26f2c7034f3":"Company","e8ab7602bb49a737339ed19f8d92386b":"Select a Row","0575629df88fcd83085c39d2d24634ca":"Office / Dept.","0986757350df0ee8145794f8921bf90b":"Role / Position","e833fd5a0f3f7cee36615671528ecd50":"External Contacts","43e503d47bf87a0e18c0d9bef68ad9aa":"No Contacts found","61264f041648510e5894750615c95bff":"Select only one Row","b4d4fe6da458e68ec1538a890aaba482":"Displaying Contacts {0} - {1} of {2}","def564d3994afa7143e78432145a21a3":"Add","feac3993717e4f28c52d48027fbe4f5f":"Fax","576796b4aba86269b7dfe52336759061":"fax","38730c8e62ceacc061563401beb10d68":"Edit","b9781f48d722d8635b68a5b69db99bcb":"Save","3a612d1307df2d4d2322ab78b932a4ed":"Email","4b29d34ab1e54cef97260f3b26abef0d":"Error","51fa71b3f0a6158632ef8fdb313c4d30":"Phone","8e02921883b78e1a56a70a066526ff7d":"Cancel","48e1f10c09fd3d67784049d14b2e2e5a":"Delete","d854b1d0f301f8f5c326b984570287fa":"Address","2854c7d8322078b77a613040594b6fd9":"Company","5e2000650640b6044936f7e1e71d2f21":"Enter fax","46d1c035d53200e6597c700be42e03c2":"Enter name","5d5b6506592f847e01b1cf024a81cd74":"Enter email","603605d4bebd9210752126d718a106e7":"Enter phone","9d23212727741657f75dbbc28d6e608c":"Select a Row","0c10365ac8af6363d6d0381e48404c76":"Enter address","b160aa2e1a53ed35cabda4889f889d54":"No Offices found","3e7212819d8916b20bf9f25b165828f1":"Select only one Row","cf07603973f5e5383ea0605f4a438c32":"Name / Department / Sub Comp.","019a05efbba570d617821f52af96e397":"Displaying Offices {0} - {1} of {2}","82ee167d4c82e7bc3aba949c99aa0ab7":"Select a company to add a office to","39d5ce834592356342dda9705f3cd432":"Office / Department / Sub Comp. Name","afc839ddf51ec1787642fba6bc2686eb":"Offices / Departments / Sub-Companies","d25bb89452107e1bc578b8ee41e59c45":"Edit Office / Department / Sub Company","3888ce137a3d8e0848be27d8241ea7ca":"To","77af7f5d42451be55f3042157335d2dc":"Job","7aeb5b2eb9720584dda6af3ac83fd1d3":"Created","75addef7bf5a2ac50d7a295063c7fa3a":"Details","dbb42f623f8cbfe6ddb4f36a4bee13d0":"Preview","35463ec16a53ba9b350f84ce8d669dad":"Subject","42700d2828fdd2e2205009a6016b4897":"File Name","8bda019a981f4e05eefcb679f57bf63c":"Reference","f4ade129d45a329b0211ca3e8fae4502":"Date Issued","dc544193dc89cfbd7e527a86756f2b39":"Document In","b0a8f7266545c18452e5cc516805ae6c":"Document Out","0b20b62b95e317ca14faa9e3c9317b8d":"From Company","509ea13c14a1a97bdc05945e2a731125":"Date Recieved","7f8bc76d43c4b5df70cf5a438127b6f1":"Document Type","c80b5fe1edba495d4c3a81b5e7633097":"Work In Progress","d8f0356105e4bcca06f603a35dcef04c":"Drafter / Approved","04a59b0dced3f123d9934afbf66bf7be":"Remarks / Tracking","2a05aaa82c136acdf11347b931827406":"Click to View / Distribute","ee1890dbc97522e0978cf52d82baf846":"OK","a414726ddcd0ac303ec19061a0ce9986":"To","ec0941dde9486179a23526df26e0ba43":"Job","7ca2041d27a77a2ba8e43d574753f1c3":"Name","a8c143ab7f82b2bd28dea65e1e4f2596":"Error","40fdf00b0a12061637852cfbfe4ba0ad":"Action","7e329b2fb044b3fcbf96456b6862930b":"Cancel","5760e1902915199f18e53f30830fadff":"Review","9bf26d8b26991a7699df16e3afb910b0":"Saving","e380bbb66513bccd2e3a556d9e7759b7":"Unlock","dc6f23ab5bb959d2077ef7ab0d31097d":"Upload","4e174bf1bc9ea40c528b1a8a6a367d6d":"Details","ecf57646619a01d8dff908c765bd9d9e":"Preview","1fe592ad8e96ea81d58bdc7b731c2d8f":"Remarks","061b6613b9345c7ebe6fa6498e3fe277":"Subject","c13c7d273285f2803526910c5a2153e8":"Send To:","84d1b4c9e607d2f840f5ee055b247fc3":"File Name","e7a32d3a2687ccc7092ed52e36e2102f":"Reference","d087b9d1905c2d299d4648d2ef53196a":"Add Comment","9416a54801030a79b540e26824e92243":"Add Remarks","9351c8de1d11115a58f9bac39e8e2aa8":"Date Issued","7fe0257ccd9ee55f08c165190d6e2a1a":"Create Reply","cb7906b069496f45f40b3ca256c28278":"From Company","69659dc781b9436d662bb79df6838683":"Mark as Read","ac3ef997239bd2c3c094924ab5e79f4f":"Searching...","7619f174f2eec48a7c1537d14a57335d":"Date Recieved","714bd289a6bc5c00edd7f57f04cb3871":"Document Type","d7a8f09e10617f2239d2e2514732c42f":"Select Action","df0a37db754211405f9e14fae2cd0476":"Select Template","3e6e5d13042ee75c830334b0d62c6fcd":"New Document Out","f79d308260a51dedbbe8f99bf968edd7":"Select an Action","d7a087d8809985a4c47114b83411b3b9":"Select a Tempalte","8d248ce70935a2f4ba5e496524510839":"Drafter / Approved","9fe36c301b2d5ac2c77561b0a23f327c":"Flag For My Action","a43ae74c8da86e4464fdcfec634400f1":"Upload New Revision","b15687e4d1da118c2d9d1daff85edf1f":"Add Staff To Project","122095d8c4ff91243c38f61a1bb1330a":"Reply using Template","4c8aa06f5aea1ef397daa7f06a01213a":"Lock (Prevent Changes)","d1fb0996da2e31d0c2360b0f7ad44380":"Check OUT - for editing","7eb28c47b5f4cc126d106834363d8831":"Select who to send it to","4e704a8763981c212530e02dcad2f354":"Send for Approval / Issue","e07bd460f569451822326eb0de968bbb":"Close / No Action Required","04ec25ec16249794e9dccda85d4a9b16":"Check IN - Add new revision","1083d32ccb551642d22aa9ccfb18945f":"Issued - Create Document Out","ac523419e6a3616ce65eac450e49a952":"No Permissions for Distribution","8cb5d3d673088bc864253f2b752b536d":"Send for Review / Assign to Staff","a9b516446dd576eb582c55bfe060f029":"Save","d7ada1186edfc944895322f23ea936a1":"Cancel","0a6a3cfd0de5fdb4fbba12b67a3a6b06":"Saving","8a963223a56bdb91d7a361e1ce621c46":"Preview","e4fe205ae80b87b90434e12e5e3a4c9b":"Click to view PDF","f7c61a97b669d7f5128b51c8644c400c":"Save","db88368227b739ed12b165005f43d2c9":"Error","9b6839c225da5cb93c3bf29720e0531d":"Cancel","1b6ed9a99ae0f49a874fab476d0e70c4":"New Password ","eadd75daa6471a87eb75121dd5eab06a":"Change Password","39b3f1da7208ad35ea991d47bb460b30":"Error loading details","a217bd43e7427e981bc8dbf18998faed":"Passwords do not match","78a7430d961bec5b3d4759206ebc2b04":"Enter Passwords in both boxes","23b47796783d663d3113bde8469f9202":"Please Correct all the errors","6f52a45578b8376c688a75ddc7888122":"New Password (type again to confirm)","25092a9a028d282401e526d9252c734d":"Saving failed = fix errors and try again","1442d5f188b9f17919e85e0df228e98b":"Weak","0ab94e0bc51ea7ea092a017c47164964":"Medium","658372f46bf54ab96dd56f3e87e8f93c":"Strong","2a5d547899f8f5356e797092ff583fe5":"Too Weak","93e83e34ea66ffe81f50a7e5d5dd1c05":"Password strength:","c387b4b2a7852e86ef26cd6dd4132dbb":"Your password is Too Weak.","1a88d2ecf056abdaf0b9a2b32afc8059":"Please type a password, and then retype it to confirm.","b422f9d3d10e55390f8c1cca678d783f":"Your password can't contain your last name. Please type a different password.","c84f415dbfa05999e600cd94fdfe5746":"Your password can't contain your first name. Please type a different password.","012e9e78bebb04e17f704c0384a2c44b":"Your password can't include the part of your ID. Please type a different password.","e8dedb70bb4def5e44bb81fbd7b43cf2":"Your password must be at least 6 characters long. Please type a different password.","3cdf7887c86019f7e5bdff4bb7e04df5":"Your password can't contain more than 16 characters. Please type a different password.","aba0eff28858ae382e41491bf1cb62be":"The password contains characters that aren't allowed. Please type a different password.","107299497ef1ee384505cdd9bfb60bd6":"#Pg","01ff27ce4e349b792085a43fcb0535c1":"From","453f25a9ad5b8eb0e573d57392a2a937":"Junk","7874cecc41ed0f10acb2d88cf59fbe4d":"Queue","d6c628505b071ea3a1a2d73d3d66665f":"Arrived","53b5195e5f9563b20278a3e6ce77b28c":"Select Fax","4a0518831689aa53bdb5c07ec822ea03":"Queue ({0})","db1de48df81f55fa9c055b09a3840e6c":"Already Filed","526b8befd133b2775ee9bddf3f2ec9b6":"From","d4aaec75240d3d4a0812635f6f42a13c":"READ","2313df7e1f008e1d61114c9d4be39f21":"click","43934a304a927e692ca2cff9dcce0860":"CLOSED","943b27b66761aa19e56da9ac6ae40528":"UNREAD","4f0bf0a4e5fe710b2f3d7f1455304110":"REPLIED","9c0a6fe3d1927f08f8a487a2e7af3f31":"replyid","b6a9a836f11e44c8665aaa454c072050":"CHECKIN:","392d7f05de14ef344e664bda50f9a705":"CREATED:","d8e2d3b12fa3f6530695956ee7338a2b":"No Remarks","db70085778a92418c1fa5327f871298c":"IN REPLY TO:","16ff2d605fef91aa32db3de1f98e9fd2":"CREATED FROM:","3f5efe2a098dec72af34ec7443717250":"ACTION REQUIRED","d4f78bb51eb1735bc6314db1d72ac1b5":"Download Original","ab724e41eb8b76f383666440b89cb066":"NO FURTHER ACTION","aefc697ce9458933779e87acf9fde1d5":"Download Revision ","62038511637f2d0bedbda08c64278fe0":"SENT FOR ACTION TO:","4185b99f3d115ee9ba563fd47dd5a0f3":"SENT FOR INFORMATION TO:","4e97b1a878504788cc41fad3c5ca3269":"td","c235de70419e8178d48e0ae8b1c28549":"input","27a473c0631b30963684dc593465dc17":"hidden","3c1e2d65977b651145b683271a097db8":"","84688dcaccbfe0650a89fc37cc4ba6b9":"??","eb772157ebdd011f0378e3193dba03e8":"A/N","b80cac73e3e77310b4eb9197bfb5e6be":"Fri","1b6c0c112f3e65b420a9a805f6064057":"Mon","4deedb1a787fd22f049597f1da6503b6":"Q.C","bfe9585b4b46134ca4435ce21628c42f":"Sat","b93119a08aa153c0934f377d5add3d11":"Sun","b20d56cc8afd0df818ccee88c63dac2f":"Thu","f81156242fa79676b79feadd15bdfa93":"Tue","d5966b5681c448d3f59274b162098197":"Wed","22840d62bce5f5c5a5ef7955f8b949b3":"d/M","911b1a03e0dea0e5e50add8adf9c3c40":"Item","d8fb4a0a21f43c1174a8fbd846c4d9ed":"O.T.","f5fefe96be0068d969f22ef5cb468c4d":"Save","6aba7ee1fa9dab62a0c8f69ec139f083":"W.I.","381c1998a437eced4cddd24d51f8833c":"W.S.","9a80a4327a169fc990595efba7c31676":"Total","2657ed91f021de1ddca21a7848925f10":"Add Row","8325beabc01a048e327b913645ed8964":"Project","7c7c55ddd92057a9ebdc4d9eb5f03739":"Inception","9c6eee69becf7a0549041dd4f93e9db6":"Landscape","253f8710a194319adf5f68018fc0689e":"Printable","94e7e34df8ef934f1366516073b7e5f5":"-- None --","689532afc5b5f48e616f03d37a538c73":"Elevations","00276505d8920272777737e9787f26be":"Timesheets","195ae2b6dcbc232709225c78776ee584":"Work Stage","e186b680dbd45e196bb90285adb02e5e":"<B>Total</B>","3b482cb6b1434c2ed77997cea88a6921":"Perspectives","7a5834c78f2a7f33768d656e6d61cc37":"Presentation","7be0f04a19493f9962e6ae0d1b41b25e":"Searching...","9e0efe9738b240cfe3ce49379f26fa11":"Legal Matters","917c5d2f5b6dad7871564a43d9cb38fe":"Project Design","40ea3ea0c455b23875e266c9fa4ffa01":"Select Project","a6aef0efa118d93400e212821bdd65bc":"Additional Fees?","e8cdef891ceb2f7357bd07020470d5ee":"First Submission","450197b85421364edd8bdf9e1606e557":"Send For Approval","bdea7ec2efe149c448d91edb3f3cbf3b":"Within normal fee","e158b338779a3abc5c31a69e3a3e692e":"<B>Non-Project</B>","6c48bee30ccffc4f5fa4404b06decad2":"Contract Documents","ca3bf44642fa51b7d9df6cced09c9841":"Feasibility Studies","a148648536a0ad453f6bb04ae91361f2":"First Detail Design","5bcbaeb4d52e9c169176d764fb437740":"Tender Specification","cad2a6daa067f99ea73a2c1d21321bfb":"Building Construction","1ac79752e42b695e1ebd61c665026699":"First Working Drawings","0c0d443cd2fe13ee0c64dd5a8b5fcdc9":"Project Administration","69ae849c9db9f4c4bcd9a215bdb8b1c4":"Defect & Liability Period","0134265d28364ae2f7b749afc332f44d":"Site Inspection & Meeting","c95173c5e21488d4f1c4a4e6c5da1e27":"<B>Your Teams Projects</B>","0c8699bc5bb9c83f4d7bde593cad63ff":"Amendment to Detail Design","55c52f4a8de5c6460289377b9d4c792c":"<B>Other Teams Projects</B>","cf781c1bf5a2c1cec59965a75082fb84":"Amendment to Drainage Plans","42d0046efe19193c628d94f378f168db":"Outline Schematic Proposals","f72989493dff770d5a04be30ef769dcc":"Amendment to Working Drawings","05b281fe94722a60c4bda7d282460d9d":"Possibility for additional fee","71e5cda1dce07edc23ad2fcf039146ce":"Feasibility & Preliminary Design","3f01b7b262603a508632c3d158769126":"Hoarding Plans & Demolition Plan","05dbbf9d2083981a5e600e3f1847c234":"Assignment & Tenancy Survey Plans","3cb872a95f2678a58b42a5f425aad558":"Amendment to General Building Plans","28d8e2f4d203c2a3aa80fa8e07304940":"Sample Board, Model, Graphic & Signage","8c4fc057e25e39d2831d62fbc0c0fdd8":"First Submission of General Building Plan","538b13494f0bc610547cd1c7f11ebe49":"Staff / Teams","10a3a76bbf2e29685abf0dad49033c3d":"To","3fc551b35ed7f1d19887ac07a8bf7fd5":"Type","ebccd29e3560239210ce61e64ec5f41f":"Error","972c61580e67dc93a7741a4f75d16cc2":"Project","c874e0a13861fac801a987662beb994c":"Send It","f515eb0c3e9be4b3b18f890fb35fbb0b":"Send To","c870a24a3821feffb871a860ba3fb725":"Sent By","2afd844fd3733927bbe9d501383e427d":"Sent To","0029da40d11e5ac1d96cda87ffa7ffeb":"Subject","7fcd2062edf490bde5be78ac2696bf91":"Junk Fax","85aeea038e4fa24c11afcc44dd2acbc6":"Reference","8a9979e903a0e391dddf56e437fd572c":"File the fax","179dd694c087021cc487c221fc5ae7ab":"Searching...","67a24505ccaf2201d6a99259bdc05a76":"Enter Sent By","358c3ebef5ce7c44bec9adbf651ebdc2":"Enter Sent To","1641f2f45b2606de8bbee65b0d32086b":"Enter Subject","9b5b65834e75e457e3fbc62d8f498046":"Save and Send","1d1c6797a0cee2db01e62e01e2cbceb0":"Enter Reference","23c75b4a33433bdb3de5112cfe15cedf":"Previously sent to","91551428a68b1ac3cc545c2d3d9dcd52":"Select a project first","b1924853ad71964aaf6c27f4df7b4bc5":"Select An Project First","0aa1f0060da5e2b9a9d245f7bdc3c957":"Select who to send it to","229e868070e8d1667e5824c058ee16c9":"Email it to staff members","15182c0445497fd5b781aec0f54f7d4f":"Select an address to add.","eae70a1fb4b3c9b46d4c928030ae14a0":"Select who will get the fax","8e6ede26ac46f215ca451383735e5550":"Only email it to staff members","b9c8e331e864d7960ff8a785332aa961":"This Fax is Junk - Just Delete it","4e95ae4be8d76b27a22853af379aa118":"Primary Intended Recipient Company","b8ee82635975c18018383ef8cc1b0408":"View Fax (click to load PDF Viewer)","2c498bacb80cf573266bdd0174f4830e":"Email it to project circulation list","2debf9761830e07f9d02ec5344a41ef8":"To","94210058e133f33aa114a57b7673c3e6":"to","68d213778056cd8c2f501f73b4532802":"Ref","9702d627a00ed78ed6cbb15e10393a95":"Circ","a5d41c37d91075656858213f6f26f7bb":"From","67390601601f5765ce53ca5e274dadbc":"Junk","3bac0a6c248aefe13f3e7d3e5016c62d":"Type","4a57e62c43933329c3a1f7e86f643dc6":"Dates","6c8774cf481eeef5dd8f11f964f8fc99":"Error","2ac8365d47cb044e83cd3515e0e5ddec":"Filed","556a18f585ea730bfbc15c6613de758c":"Pages","f40df8800c523c132b1d6ceed7ff859f":"Search","4f1edd9ecc16b5d4d6323f95ec10ab6c":"Arrived","4b43f17e8c12437ecbbe2f0000837d94":"Details","06dd6979a527c9b1fe9703b1bfcd154e":"Preview","41a4722f28b387ab21a556272bf1386a":"Printed","48407e82426e6014cf703d24eea45dce":"Sent By","07be7ac1d379fe1329cbff7309edbacc":"Sent To","23afc1b308d3223a55b0147fc09197da":"Subject","fab104b5cbc3caa6406acfa364a2d73f":"Reset Search","0f78053722e92006bc294bc4e5201a7c":"Searching...","a143140d1a10563b925d8a9ae3d4bfb0":"Enter Sent By","987399c82f5129f2fa1218e32678d53c":"Enter Sent To","822347402bfd226994283f3004bf6b14":"Select An Project First","7dd52143372d40f9aeee70091d50360a":"View Fax (click to load PDF Viewer)","598019e7959f1116408eac357427ce64":"Add","9f659fd55fcdef129e7e36229dcc53a9":"Re: ","479992edc244d5f29b041f32edd5f372":"Save","0b2b08ac0322b7f7aa5a9e8cfcd78711":"Close","a5d638766382732eacfed42004aa16c3":"Error","36870a37b07bd471157f35e491c67c92":"From:","90c1050bd2393b6101e784b93fb0a2ca":"Reply","d5d4ca3c1dc3987ddd177b92b7b48946":"Saving","af0455e745ff40ed9f525379da0c28d5":"Download","30b249e8b4f3d0c3fa58da0680f657b0":"Project:","1d6797c792528793e1be70c72f3a7c23":"Subject:","8d093678bd4e60d820c209c97982ce97":"Searching","da435378af33ec5e0eab0f4e7b3c5df8":"Add Remark","fb2b9aac618ee454640824e9e5b8daba":"Add Remark:","939bc9769ac529535cbb8ac8f137f505":"Edit Details","714e82dcab2c8bc93e03959a5363954e":"Searching...","a7d49446d5b354024c2db13cdc9c093d":"Enter Remarks","e8f4f8f063405c40df146f04718bd286":"Enter Sent By","57f1c107e63dff5987f21836ac8c4135":"Enter Subject","4c7866c41be1509e316d0cab67b60c9e":"Select Sender","290ce67fd152981ae4ded1cd6bc2a106":"Select Project","d4de309f4ee31666ac5622023963901e":"Fill in Subject","6f28ddad31e2f4a0156742a5b1ce41f1":"Fill in comment","116be1cc0d4301b456e538bd2f0a1178":"Reason to close:","8b0c527c2ffd9f5272995c70a2d9c160":"Save &amp; Close","14a14474c93fe517b0c2922d2c6338ab":"Select a project first","5fce0c4dcaa7d8d0d048d8e8aa62ca89":"View / Circulate / Act","adef32487d14920693eaa747ae93e8b0":"Select An Project First","bff61885ff080850b54697fddd3224fa":"Close / No Further Action","924e0e2a7061bbf5bc26abaed9cfe822":"This Message Needs Filing First","c6eccc3c7a768fba348a244d0f57e977":"You can only Save and Close non-project emails","7c90092e7f2bd65967a7918f596e6816":"Loading","df0e013ef2ad420a5d0194d6cfcacafc":"Message View","f6551e5409cd0bd1293c73466c0d5a71":"To","adaa177b337c92793900a09979b7644f":"Type","e82288f1b4eba83e3912993b59e9874c":"Project","993475eb7faf2229459aa6ca1c3745e9":"Sent To","dacaeb74293d8e9bb58c28681b02c321":"Searching...","f7e6a2016c5b5f0113b18708d84db782":"Enter Sent To","2b617d7e2e8fdfe8fee08f5086f6e7b7":"Select Office","8e24b2c00ecb83fdbedee6634dbe7a6e":"Select Project","964610e35dbc2d5e2ef34f1492eff1c7":"Office / Department","f3ae3d381d60864b13244e2ac16c12fe":"Select Document Type","397925800f038e68f28adacc0c39d6ca":"Select an address to add.","0e4872a211ed50be094d8804d46e8454":"","361587a18ae726019e01dd302d34c40e":"Cc","90cd49bfa80009ceff658090244bf0bd":"To","66ef40c3ccc9910a3ea9601960454edd":"Send","4c652cc8d05bdbdf365621910b9e00e7":"d/M/Y","70eae6fa5a6cac7cd99707c939cbfa0f":"Cancel","9f95f9f580615b427b60a6728c3545dc":"Project","0ab904eb89fe3980a665ea5c1b0b573b":"Sending","1ae059ca15acd317668628b9b5279216":"Subject","0d3dbea8883f94aa9a951ac7831c7a97":"Enter name","004212f1f3b8ddfdf6b8d6d8934d62da":"Send Message","bcc0b044a7bdb21959409823556c77b5":"Enter Subject","dee87d27157b51d5fdcc208355e78bd5":"Confirm Cancel","7b64d05eb2225789cd03488747bff395":" --- On {0}, {1} wrote: ","d1c604eadb8e40dcae04bf47f76dd2cb":"Select an address to add.","5fbef42c3bc469943e3fc09bfd268a32":"Are you sure you want to cancel this message","8300df34b2bee92d009c0a9e3e971563":"div"}